[Distutils] setuptools 8 changes are great, but ...

Chris Withers chris at simplistix.co.uk
Wed Dec 17 11:09:56 CET 2014


On 16/12/2014 12:02, Marius Gedminas wrote:
>> Is there something I’m not aware that is broken currently? I thought the
>> transition was going pretty smoothly overall considering that a core piece
>> of code inside of setuptools was touched.
>
> ~80 zope.* test builds are currently failing, for mysterious reasons due
> to setuptools 8.0.x not interacting well with zc.buildout:
> https://mail.zope.org/pipermail/zope-dev/2014-December/046509.html
>
> Here's a summary of the various errors:
> https://mail.zope.org/pipermail/zope-dev/2014-December/046508.html
>
> Newer builds also added a bunch of warnings of the form
> /var/lib/jenkins/jobs/zopetoolkit_trunk/workspace/lib/python2.7/site-packages/pkg_resources.py:2425:
> RuntimeWarning: 'zc.recipe.testrunner-1.0.5 ()' is being parsed as a
> legacy, non PEP 440, version. You may find odd behavior and sort order.
> In particular it will be sorted as less than 0.0. It is recommend to
> migrate to PEP 440 compatible versions.
>
> Recent threads on distutils-sig@ help explain some of what's happening.
> E.g. the 'zope.app.wsgi<3.11,<4.0dev,>=3.12' probably used to be
> interpreted as an "<3.11 or >=3.12" and just needs to be hunted down and
> replaced with "!=3.11.*", or something like that.
>
> (It's painful when you get requirement conflict errors with no
> indication about the source of those requirements.)

FWIW, I've also been seeing failures in all of my buildout-based library 
testing Jenkins jobs:

This one only on Windows and Python 2.7 only, NOT Python 2.6:

C:\Jenkins\workspace\checker-buildout\aeb5917b>C:\Python27\python.exe 
bootstrap.py
Downloading 
https://pypi.python.org/packages/source/s/setuptools/setuptools-8.0.4.zip
Extracting in c:\users\jenkins\appdata\local\temp\tmp1hy01w
Now working in 
c:\users\jenkins\appdata\local\temp\tmp1hy01w\setuptools-8.0.4
Building a Setuptools egg in c:\users\jenkins\appdata\local\temp\tmpzl12vj
warning: no files found matching 'entries*' under directory 
'setuptools\tests'
warning: no files found matching 'Makefile' under directory 'docs'
warning: no files found matching 'indexsidebar.html' under directory 'docs'
c:\users\jenkins\appdata\local\temp\tmpzl12vj\setuptools-8.0.4-py2.7.egg
Traceback (most recent call last):
   File "bootstrap.py", line 92, in <module>
     ez['use_setuptools'](**setup_args)
   File "<string>", line 140, in use_setuptools
   File "<string>", line 128, in _do_download
   File "build\bdist.win-amd64\egg\setuptools\__init__.py", line 5, in 
<module>
   File "C:\Python27\lib\distutils\core.py", line 20, in <module>
     from distutils.dist import Distribution
   File "C:\Python27\lib\distutils\dist.py", line 10, in <module>
     from email import message_from_file
ImportError: No module named email

...which I see on a couple of jobs, also this, on Python 3, Linux:

Downloading 
https://pypi.python.org/packages/source/s/setuptools/setuptools-8.0.1.zip
Extracting in /tmp/tmp71bne9
Now working in /tmp/tmp71bne9/setuptools-8.0.1
Building a Setuptools egg in /tmp/tmpdgs_c0
/tmp/tmpdgs_c0/setuptools-8.0.1-py3.3.egg
Creating directory 
'/var/lib/jenkins/slave/workspace/mush-buildout/0321cca2/bin'.
Creating directory 
'/var/lib/jenkins/slave/workspace/mush-buildout/0321cca2/parts'.
Creating directory 
'/var/lib/jenkins/slave/workspace/mush-buildout/0321cca2/develop-eggs'.
Generated script 
'/var/lib/jenkins/slave/workspace/mush-buildout/0321cca2/bin/buildout'.
/tmp/tmpdgs_c0/setuptools-8.0.1-py3.3.egg/pkg_resources.py:130: 
RuntimeWarning: You have iterated over the result of 
pkg_resources.parse_version. This is a legacy behavior which is 
inconsistent with the new version class introduced in setuptools 8.0. 
That class should be used directly instead of attempting to iterate over 
the result.
/var/lib/jenkins/.buildout/eggs/setuptools-8.0.1-py3.3.egg/pkg_resources.py:130: 
RuntimeWarning: You have iterated over the result of 
pkg_resources.parse_version. This is a legacy behavior which is 
inconsistent with the new version class introduced in setuptools 8.0. 
That class should be used directly instead of attempting to iterate over 
the result.
While:
   Installing.
   Checking for upgrades.
   Getting distribution for 'zc.buildout>=2.2.5'.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
   File 
"/var/lib/jenkins/.buildout/eggs/zc.buildout-2.2.5-py3.3.egg/zc/buildout/buildout.py", 
line 1946, in main
     getattr(buildout, command)(args)
   File 
"/var/lib/jenkins/.buildout/eggs/zc.buildout-2.2.5-py3.3.egg/zc/buildout/buildout.py", 
line 475, in install
     self._maybe_upgrade()
   File 
"/var/lib/jenkins/.buildout/eggs/zc.buildout-2.2.5-py3.3.egg/zc/buildout/buildout.py", 
line 910, in _maybe_upgrade
     allow_hosts = self._allow_hosts
   File 
"/var/lib/jenkins/.buildout/eggs/zc.buildout-2.2.5-py3.3.egg/zc/buildout/easy_install.py", 
line 844, in install
     return installer.install(specs, working_set)
   File 
"/var/lib/jenkins/.buildout/eggs/zc.buildout-2.2.5-py3.3.egg/zc/buildout/easy_install.py", 
line 631, in install
     for_buildout_run=for_buildout_run):
   File 
"/var/lib/jenkins/.buildout/eggs/zc.buildout-2.2.5-py3.3.egg/zc/buildout/easy_install.py", 
line 473, in _get_dist
     dist, avail = self._satisfied(requirement)
   File 
"/var/lib/jenkins/.buildout/eggs/zc.buildout-2.2.5-py3.3.egg/zc/buildout/easy_install.py", 
line 268, in _satisfied
     best_available = self._obtain(req, source)
   File 
"/var/lib/jenkins/.buildout/eggs/zc.buildout-2.2.5-py3.3.egg/zc/buildout/easy_install.py", 
line 427, in _obtain
     if distv > bestv:
TypeError: unorderable types: SetuptoolsVersion() > tuple()

...and this one on Windows Python 3:

C:\Jenkins\workspace\mush-buildout\a1017537>C:\Python33\python.exe 
bootstrap.py
Downloading 
https://pypi.python.org/packages/source/s/setuptools/setuptools-8.0.1.zip
Extracting in c:\users\jenkins\appdata\local\temp\tmpkij7_u
Now working in 
c:\users\jenkins\appdata\local\temp\tmpkij7_u\setuptools-8.0.1
Building a Setuptools egg in c:\users\jenkins\appdata\local\temp\tmpgy_a7q
c:\users\jenkins\appdata\local\temp\tmpgy_a7q\setuptools-8.0.1-py3.3.egg
Traceback (most recent call last):
   File "<string>", line 138, in use_setuptools
ImportError: No module named 'pkg_resources'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
   File "bootstrap.py", line 92, in <module>
     ez['use_setuptools'](**setup_args)
   File "<string>", line 140, in use_setuptools
   File "<string>", line 128, in _do_download
   File 
"c:\users\jenkins\appdata\local\temp\tmpgy_a7q\setuptools-8.0.1-py3.3.egg\setuptools\__init__.py", 
line 5, in <module>
   File "C:\Python33\lib\distutils\core.py", line 17, in <module>
     from distutils.dist import Distribution
   File "C:\Python33\lib\distutils\dist.py", line 15, in <module>
     from distutils.fancy_getopt import FancyGetopt, translate_longopt
   File "C:\Python33\lib\distutils\fancy_getopt.py", line 12, in <module>
     import getopt
ImportError: No module named 'getopt'

Links to these builds are here, if you're familiar with Jenkins:

http://jenkins.simplistix.co.uk/job/mush-buildout/
http://jenkins.simplistix.co.uk/job/checker-buildout/

cheers,

Chris


More information about the Distutils-SIG mailing list