[Product-Developers] Re: [Zope-dev] zc.buildout, substitution and templating

Encolpe Degoute encolpe.degoute at free.fr
Fri Aug 28 10:15:13 UTC 2009


Jim Fulton a écrit :
> On Thu, Aug 27, 2009 at 9:14 AM, Encolpe Degoute<encolpe.degoute at free.fr> wrote:
>   
>> Hello,
>>
>> These last days I was using collective.recipe.template and
>> gocept.recipe.env.
>>
>> The second one just update options with os.environ.
>> Unix shell having their own substitution methods then '${' appearing in
>> the .installed.cfg. It just blows if you try to rerun 'bin/buildout.
>>     
>
> What error did you get?
>   

$ bin/buildout

...

Uninstalling plonesite.

Uninstalling _mr.developer.

Installing _mr.developer.

Generated script '/opt/python-envs/generic2.4/bolt-dev_gd/bin/develop'.

While:

Installing _mr.developer.

Getting option env:PS1.

Error: The option name in substitution, ${debian_chroot:+($debian_chroot)},

has invalid characters.

$ cat .installed.cfg

[buildout]

installed_develop_eggs =
/opt/python-envs/generic2.4/bolt-dev_gd/develop-eggs/plone.recipe.apache.egg-link

parts = env lxml zope2 zeoserver instance supervisor apache initd zopepy
test omelette pydev _mr.developer

[env]

$ bin/buildout

...

While:

Installing.

An internal error occured due to a bug in either zc.buildout or in a

recipe being used:

Traceback (most recent call last):

File
"/opt/python-envs/generic2.4/flsh-dev_gd/eggs/zc.buildout-1.2.1-py2.4.egg/zc/buildout/buildout.py",
line 1509, in main

getattr(buildout, command)(args)

File
"/opt/python-envs/generic2.4/flsh-dev_gd/eggs/zc.buildout-1.2.1-py2.4.egg/zc/buildout/buildout.py",
line 378, in install

old_options = installed_part_options[part].copy()

KeyError: '_mr.developer'


At that point I can only remove the .installed.cfg file.
>   
>> As zc.buildout is using something near string.template I patched
>> gocept.recipe.env to replace '$' by '$$' and collective.recipe.template
>> to replace '$$' by '$'.
>> As _sub method in builout just split text around '$$' and join it again
>> with '$$' we need to make the replacement with the result of this method.
>>
>> Is it the good way to deal with escaping data ?
>> Or is this a bug of zc.buildout ?
>>     
>
> That's a good question.  Buildout substitutions are always of the form
> ${section:option}, so conceivably buildout could ignore substitutions
> without a colon.  I suspect it would be better to always require
> escaping and make sure buildout provides a documented way to do so.
> OTOH, I can see the convenience of not requiring escaping variable
> substitutions wo colons.
>   
I will push that in launchpad.

-- 
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales





More information about the Product-Developers mailing list