distribute leaves system setuptools in inconsistent state

Create issue
Issue #63 resolved
Reinout van Rees created an issue

Distribute reliably leaves my python's setuptools egg in a non-workable state when triggered from within buildout. It happens if the python I ran my (non-distribute) bootstrap with doesn't yet include distribute and the buildout finds something that depends on distribute. In that case the system python's setuptools is somehow also adjusted in addition to buildout's shared setuptools egg.

Somehow (I don't know the cause, but the output is appended at the end of this bug report), there's some error in grabbing distribute. The result is that there's only a virtually-empty setuptools egg but no distribute egg to replace it. The result when doing some other setuptools activity afterwards:

{{{ Downloading http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c9-py2.5.egg usage: -c [options] requirement_or_url ... or: -c --help

error: invalid command 'easy_install' Traceback (most recent call last): File "bootstrap.py", line 49, in <module> ) == 0 AssertionError


"setuptools activity" means that an "easy_install distribute" ALSO fails.

To get it working again I have to rename the .OLD setuptools egg and THEN I can run "easy_install distribute". Aargh.

This is what happened when I buildBOT ran bin/buildout inside a virtualenv, which is the only time I could actually get SOME output on what went wrong. Note that this also occured on an osx machine and on a linux machine. In every case buildout was involved, however:


Getting distribution for 'distribute'. Getting distribution for 'distribute'. ... Getting distribution for 'distribute'. While: Installing. Checking for upgrades. Getting distribution for 'distribute'. Getting distribution for 'distribute'. ... Getting distribution for 'distribute'.

An internal error occured due to a bug in either zc.buildout or in a recipe being used: Traceback (most recent call last): File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/buildout.py", line 1659, in main File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/buildout.py", line 381, in install File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/buildout.py", line 804, in _maybe_upgrade File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/easy_install.py", line 800, in install File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/easy_install.py", line 646, in install File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/easy_install.py", line 543, in _get_dist File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/easy_install.py", line 301, in _call_easy_install File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/easy_install.py", line 543, in _get_dist ... File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/easy_install.py", line 301, in _call_easy_install File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/easy_install.py", line 475, in _get_dist File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/easy_install.py", line 243, in _satisfied File "/tmp/tmp_v606n/zc.buildout-1.4.1-py2.5.egg/zc/buildout/easy_install.py", line 399, in _obtain File "build/bdist.linux-i686/egg/setuptools/package_index.py", line 322, in obtain self.prescan(); self.find_packages(requirement) File "build/bdist.linux-i686/egg/setuptools/package_index.py", line 307, in find_packages self.scan_url(self.index_url + requirement.unsafe_name+'/') File "build/bdist.linux-i686/egg/setuptools/package_index.py", line 635, in scan_url self.process_url(url, True) File "build/bdist.linux-i686/egg/setuptools/package_index.py", line 175, in process_url dists = list(distros_for_url(url)) File "build/bdist.linux-i686/egg/setuptools/package_index.py", line 51, in distros_for_url base, fragment = egg_info_for_url(url) File "build/bdist.linux-i686/egg/setuptools/package_index.py", line 44, in egg_info_for_url scheme, server, path, parameters, query, fragment = urlparse.urlparse(url) File "/home/zope/localpythonbuildout/parts/opt/lib/python2.5/urlparse.py", line 154, in urlparse tuple = urlsplit(url, scheme, allow_fragments) File "/home/zope/localpythonbuildout/parts/opt/lib/python2.5/urlparse.py", line 187, in urlsplit cached = _parse_cache.get(key, None) RuntimeError: maximum recursion depth exceeded in cmp


Comments (4)

  1. Log in to comment