[Distutils] upgrading buildout
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.
More information about the Distutils-SIG