[Distutils] zc.buildout 2.0.0a6 released: updated config-file syntax

Maurits van Rees m.van.rees at zestsoftware.nl
Sat Jan 12 00:05:44 CET 2013


Op 11-01-13 17:30, Jim Fulton schreef:
> I've just released zc.buildout-2.0.0a6.
>
> The primary change in this release is that the configuration-file
> syntax has changed:
>
> - Relative indentation in option values is retained if the first
>    line is blank. (IOW, if the non-blank text is on the continuation
>    lines.) As in::
>
>       [mysection]
>       tree =
>         /root
>           /branch
>
>    In such cases, internal blank lines are also retained.
>
> - The configuration syntax is more tightly defined, allowing fewer
>    syntax definitions.
>
>    Buildout 1 configuration files were parsed with the Python
>    ConfigParser module. The ConfigParser module's format is poorly
>    documented and wildly flexible. For example:
>
>    - Any characters other than left square brackets were allowed in
>      section names.
>
>    - Arbitrary text was allowed and ignored after the closing bracket on
>      section header lines.
>
>    - Any characters other than equal signs or colons were allowed in an
>      option name.
>
>    - Configuration options could be spelled as RFC 822 mail headers
>      (using a colon, rather than an equal sign).
>
>    - Comments could begin with "rem".
>
>    - Semicolons could be used to start inline comments, but only if
>      preceeded by a whitespace character.
>
> See http://pypi.python.org/pypi/zc.buildout/2.0.0a6#configuration-file-syntax
>
> This potentially the most controversial backward-incompatible
> change in buildout 2, so try it out and let me know if the
> changes present any serious problems.

It fails when the first non-comment line after a section (even an 
otherwise empty section) is blank.  For example:

===============================
$ cat buildout.cfg
[buildout]

parts = hello
versions = versions

[versions]
# Add any version pins here.

[hello]

recipe = collective.recipe.cmd
on_install = true

on_update = true
cmds = echo Hello
===============================

For this file, three of the five empty lines give a problem:

===============================
$ bin/buildout
While:
   Initializing.

An internal error occured due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
   File 
"/Users/mauritsvanrees/shared-eggs/zc.buildout-2.0.0a6-py2.7.egg/zc/buildout/buildout.py", 
line 1743, in main
     command, args)
   File 
"/Users/mauritsvanrees/shared-eggs/zc.buildout-2.0.0a6-py2.7.egg/zc/buildout/buildout.py", 
line 202, in __init__
     data['buildout'].copy(), override, set()))
   File 
"/Users/mauritsvanrees/shared-eggs/zc.buildout-2.0.0a6-py2.7.egg/zc/buildout/buildout.py", 
line 1384, in _open
     result = zc.buildout.configparser.parse(fp, filename)
   File 
"/Users/mauritsvanrees/shared-eggs/zc.buildout-2.0.0a6-py2.7.egg/zc/buildout/configparser.py", 
line 153, in parse
     raise e
ParsingError: File contains parsing errors: 
/Users/mauritsvanrees/tmp/b22/buildout.cfg
	[line  2]: '\n'
	[line  8]: '\n'
	[line 10]: '\n'
===============================

These empty lines are not truly necessary, but they can make files more 
readable, so it would be good if buildout could be more forgiving here.


Other than that, my standard Plone buildout setup for clients, with 
several config files, finishes without error and seems to work fine. 
(Python 2.7, Mac OSX 10.8.2.)

Thanks!


-- 
Maurits van Rees: http://maurits.vanrees.org/
Zest Software: http://zestsoftware.nl



More information about the Distutils-SIG mailing list