[Distutils] upgrading buildout

Jim Fulton jim at zope.com
Tue Jul 29 17:30:00 CEST 2008

On Jul 29, 2008, at 10:39 AM, whit morriss wrote:

> whit morriss wrote:
>> I'm perhaps running buildout in a bit of unusual fashion (from my  
>> virtual env bin rather than the builds bin) and updated it recently  
>> from 1.0.2 to 1.1.0 to debug some issue folks were having with  
>> fresh checkouts of one of my builds (see previous message).
> as a caveat for others, we also noticed a number of older recipes  
> which are cached don't take the new allowed hosts arg.  It looks  
> like older copies (in this case zc.recipe.egg) got installed in the  
> virtualenv sitepackages (probably for the purposes of investigation)  
> or egg caches and did not get updated.

This sounds like a bug. I expect buildout to get and use the newest  
distributions that satisfy its requirements regardless of whether  
older versions are in site-packages. One way that this would fail is  
if eggs are installed into site-packages as develop eggs, aka "single- 
version-externally-managed".  buildout gives preference to develop  
eggs even if there are newer non-develop eggs. Distributions installed  
using -single-version-externally-managed are tagged by setuptools as  
develop eggs.  I really wish setuptools made a distinction between  
single-version-externally-managed and develop eggs.

Was the zc.recipe.egg distribution installed into your site- packages  
using -single-version-externally-managed? (This will be the case if  
the egg contents are stored directly in site-packages rather than  
having egg files or directories.)

> In systems like buildout where every buildout is necessarily a patch  
> work of called dependencies (most frameworks or component systems  
> are like this in one way or another, sometimes referred as what  
> separates frameworks from libs), it would be useful to have some  
> mechanism for propagate an update of a downstream component.

By "downstream", do you mean a dependency?

>  Does setuptool support anything like this (I'm doubting it?)?   
> could or does zc.buildout?
> for builds, I could see this being handled more as a migration.   
> Update the framework library, run a migration to upgrade all the  
> component libraries, rebuild.

As a general rule, buildout always tries to find the latest versions  
of all distributions used, including dependencies.  One exception to  
this is that it prefers develop eggs.


Jim Fulton
Zope Corporation

More information about the Distutils-SIG mailing list