[Zope-dev] Re: ploneout - Or how using zc.buildout for a common Zope2 project might look like

Jim Fulton jim at zope.com
Fri Jan 26 08:28:11 EST 2007

Ian Bicking wrote:
> Jim Fulton wrote:
>>> If *Plone* becomes incompatible with workingenv that'd be bothersome
>> I agree.
>>> But if a buildout is incompatible, eh... who knows,
>> I would hope that buildout would not have to be compatible with 
>> workingenv, whatever that means, in order for Plone to be compatible.  
>> Then again, I'm not sure what compatibility means in this context.
> It would be a concern if, for instance, Plone started depending on 
> buildout recipes for installation, without "plain" distutils recipes. Of 
> course right now there are no distutils recipes for old-style Products.  
> So actually it's an active issue -- if buildout enables Plone to keep 
> from moving to distutils/setuptools/egg-style package deployment 
> (because buildout is flexible enough to support the old patterns) then 
> that would make it harder for workingenv.  But I don't think anyone is 
> proposing that buildout means that Plone (and Zope 2/Five) shouldn't 
> continue its move towards traditional Python packaging.
> So basically I would just hope that Plone doesn't lean to heavily on 
> buildout.

Certainly buildout encourages the use of eggs.  I think we're all moving
toward the use of eggs pretty aggressively.

Of course, a Zope installation, most notably instance creation, has
requirements beyond the scope of eggs.  Buildout addresses those

>>> it might even make sense to create something like a "freeze this 
>>> workingenv as a buildout" script.  That one directory structure can't 
>>> be both at the same time isn't a huge problem in my mind.
>> Deployment involves far more than getting the software installed.
> Yes; in a workingenv model you start with an environment, then you 
> actually make your deployment using tools of your choice.  workingenv 
> doesn't deploy for you.  Admittedly "your choice" isn't always good, 
> because maybe you didn't want to make a choice ;)

And buildout is one such tool.

>>> Path names aren't really the problem.  We got a little guerrilla war 
>>> going on over the setuptools' script-generating monkey patches.  We'd 
>>> both probably prefer a proper way to change how setuptools generates 
>>> scripts, but it's not clear that we could really be compatible -- 
>>> enumeration vs. changing the path is a totally different strategy.
>> Um, we're both changing the path -- just in different ways.
> Maybe "enumeration vs adding a directory of eggs" is a better 
> description.  Setuptools controls the directory of eggs (via 
> easy-install.pth), while buildout controls the scripts and doesn't give 
> setuptools that control.

No, the user controls the directory of eggs using easy_install, workingenv, or
buildout.  easy_install goes further by creating .pth files.  A .pth contains
a single static path.  This is really no-different than a single static path
baked into a script by buildout.  In both cases, the user has some control
over how this path is baked.  I chose to include the path in the script because
it makes the script more independent of it's environment.  Once created, the
script can be moved or linked anywhere and run from anywhere without any
brittle rules for finding the .pth file.  Phillip Eby suggested that script-
dependent .pth files might be put alongside the script, but I think just
including the path in the script is cleaner.


Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org

More information about the Zope-Dev mailing list