[Zope-dev] zope-tests - FAILED: 119, OK: 8

Maurits van Rees m.van.rees at zestsoftware.nl
Thu Dec 18 22:09:47 CET 2014


Marius Gedminas schreef op 17-12-14 10:14:
> The variety of errors has decreased somewhat.  Most of the builds
> fail with
>
>    Error: Couldn't find a distribution for 'zc.recipe.egg<2dev,==1.3.0,>1.3.0'.

I wondered about this one.  Grepping in my eggs directory in 
*/EGG-INFO/requires.txt for zc.recipe.egg I only find
z3c.recipe.scripts 1.0.1 that has 'zc.recipe.egg >=1.3.0'.

I wonder if somehow this wrongly gets split into the contradicting 
'==1.3.0,>1.3.0'.

Trying it locally for such a failing build (zope.traversing before I 
pinned setuptools), I see that zc.buildout 1.7.1 is used, which has this 
in buildout.py:

         self.versions = {
             'zc.recipe.egg': '<2dev',
             'zc.recipe.testrunner': '<2dev',
             }

So that is where the '<2dev' comes from.

zc/buildout/easy_install.py then has an install method, which combines 
the version restriction with the requirement in this call:

_constrained_requirement_constraint(
     '<2dev', Requirement.parse('zc.recipe.egg>=1.3.0'))

The result of that call is:

'<2dev,>1.3.0,==1.3.0'

This is silly but it works fine for setuptools before version 8.  With 
setuptools 8 it fails to find any distributions that match this specifier.

This stuff was fixed in zc.buildout 2.3.0 with this commit:
https://github.com/buildout/buildout/commit/dc32780e7320caed5baf87e2068f693b58125572

BTW, note that pinning zc.recipe.egg in a buildout config would help 
here.  _constrained_requirement_constraint('==1.3.2', requirement) has 
as result '==1.3.2'.

I also wondered why zc.buildout was not getting upgraded.  Of course 
first the current bootstrap.py gets zc.buildout<2dev, so you get 
zc.buildout 1.7.1.  Then when running buildout it calls _maybe_upgrade 
and this has a check to prevent upgrading to 2.x unless a specific 
version is requested.

So: some puzzles (for me at least) solved.

Going forward, it would be nice to either backport the mentioned commit 
to zc.buildout 1.x (not going to happen I guess) or have an updated 
bootstrap.py for 1.x that restricts setuptools<8dev.

But as said earlier, for projects that do not require zc.buildout 1.x, 
the latest bootstrap from https://bootstrap.pypa.io should be fine.


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



More information about the Zope-Dev mailing list