[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