[Distutils] change in setuptools 8.0

Maurits van Rees m.van.rees at zestsoftware.nl
Tue Dec 16 01:05:53 CET 2014


Jim Fulton schreef op 15-12-14 19:15:
> Buildout doesn't try to merge dependency requirements from different packages.
> It just installs packages and their dependencies and builds up a working set.
>
> It does merge constraints from the versions section (if any) with
> whatever requirement
> it's working on at any point in time.
>
> I'm guessing that the requirement: zc.buildout==2.2.5,>=1.5.0
> is coming from a setup spec or from some buildout section.  It was a
> valid spec once
> but isn't any more.

Let's try a buildout with Plone.  This one goes fine (except for 
possible warnings about legacy versions):

$ curl -O https://bootstrap.pypa.io/bootstrap-buildout.py
$ cat buildout.cfg
[buildout]
extends = http://dist.plone.org/release/4.3-latest/versions.cfg
versions = versions
parts = instance

[versions]
# Override version pins that are in the file of the extends line.
zc.buildout = 2.3.0
setuptools = 8.0.4

[instance]
recipe = plone.recipe.zope2instance
user = admin:admin
http-address = 8080
eggs =
     Plone

$ python bootstrap-buildout.py
$ bin/buildout

All is well.

Now edit buildout.cfg and add this line in the [buildout] section:

   allow-picked-versions = false

$ bin/buildout
...
While:
   Installing.
   Getting section instance.
   Initializing section instance.
   Installing recipe plone.recipe.zope2instance.
   Getting distribution for 'ZODB3==3.10.5,>=3.9'.
Error: Picked: ZODB3 = 3.10.5

Somehow a problem appears because the buildout config pins ZODB3 to 
3.10.5, and buildout installs plone.recipe.zope2instance which requires 
'ZODB3 >= 3.9'.  (I wonder if this behaviour is specific for recipes, 
but I guess not.)

Now revert the change, and instead add this line in the [buildout] section:

   show-picked-versions = true

$ bin/buildout
...
Versions had to be automatically picked.
The following part definition lists the versions picked:
[versions]
AccessControl = 3.0.8
Markdown = 2.0.3
Products.ATContentTypes = 2.1.14
Products.OFSP = 2.13.2
Products.PlonePAS = 4.1.4
ZODB3 = 3.10.5
Zope2 = 2.13.22
archetypes.schemaextender = 2.1.4
collective.z3cform.datetimewidget = 1.2.6
diazo = 1.0.6
lxml = 2.3.6
mechanize = 0.2.5
plone.app.contentmenu = 2.0.10
plone.app.imaging = 1.0.11
plone.app.jquery = 1.7.2
plone.app.linkintegrity = 1.5.5
plone.app.registry = 1.2.3
plone.app.z3cform = 0.7.7
plone.autoform = 1.6.1
plone.behavior = 1.0.2
plone.browserlayer = 2.1.3
plone.dexterity = 2.2.4
plone.keyring = 2.0.1
plone.namedfile = 2.0.7
plone.registry = 1.0.2
plone.resource = 1.0.3
plone.scale = 1.3.4
plone.schemaeditor = 1.3.8
plone.supermodel = 1.2.6
plone.z3cform = 0.8.0
python-gettext = 1.2
python-openid = 2.2.5
repoze.xmliter = 0.5
transaction = 1.1.1
z3c.form = 3.2.1
zope.app.locales = 3.6.2
zope.tales = 3.5.3

All these versions are definitely pinned in the file we extend (or in 
files that this file extends):
http://dist.plone.org/release/4.3-latest/versions.cfg

So: strange behaviour.

-- 
Maurits van Rees: http://maurits.vanrees.org/
Zest Software: http://zestsoftware.nl



More information about the Distutils-SIG mailing list