[Grok-dev] Re: solving buildout problems - pinning down eggs
Philipp von Weitershausen
philipp at weitershausen.de
Thu Sep 20 16:42:43 EDT 2007
Jan-Wijbrand Kolman wrote:
> Since we were in a hurry, we didn't give ourselves enough time to really
> dig into the cause of the failures (most of'em were version conflicts,
> or things like pulling in zope packages of some 3.5(!) alpha version, or
> lxml 2.0a that broke something somehow on OS X, etc.).
Part of the problem is that we're not yet using the prefer-final flag in
buildout. The problem is that it doesn't really make a difference right
now because most eggs aren't yet final, so a 3.4.0b2 and 3.5.0a1 version
of the same egg will both look like development versions to buildout, so
it will never prefer the 3.4.x one, even though we'd like that.
I really hope we can soon get towards stable eggs. Anybody's welcome to
help out. http://wiki.zope.org/zope3/StabilizeEggPackages
> At that point we just started semi-randomly throwing away eggs from the
> egg cache,
You shouldn't have to do that.
> pinning versions in our package's setup.py, etc. etc.
When you're using buildout, you don't have to do that either. Though you
> * What is the best way of dealing with a version conflict, if it happens?
Usually a conflict occurs because setuptools/buildout isn't smart
enough. Let's say one package depends on the ZODB3 without any version
requirement and another package also depends on the ZODB3, but with a
specific version. In the first case, buildout will download the newest
ZODB3 version it can find (that's the usual behaviour). Then it'll
download the version that second package depends on, and voila, you have
Pinning egg versions down using buildout's version mechanism helps in
> * Is an egg cache really that helpful (besides saving bandwidth)? And is
> there a difference in this regards between development and production
A central eggs-directory (also dubbed "egg cache) in combination with
"newest=false" can sometimes lead to interesting effects. If you have
pinned down the versions of your eggs, this shouldn't be an issue, though.
> * If you're developing a series of applications, at what level in the
> dependency tree do want to have versions pinned down (in whatever fashion)?
Preferrably all eggs are pinned down...
> * How do "other people" in the Zope world esp. deal with this.
Currently, I know that the early adopters of eggs+buildout (meaning,
they use it in production), pin down the versions using the buildout
versions = versions
ZODB3 = 3.8.0b2
zope.traversing = 3.4.1
zope.component = 3.4.0
http://worldcookery.com -- Professional Zope documentation and training
More information about the Grok-dev