Commit f91c9626 authored by Wichert Akkerman's avatar Wichert Akkerman

Handle systems with pkg_resources but without setuptools (I am looking at you...

Handle systems with pkg_resources but without setuptools (I am looking at you Ubuntu.. grrr). Fixes LP#410528
parent 7e71906d
...@@ -42,6 +42,10 @@ New Features: ...@@ -42,6 +42,10 @@ New Features:
* The buildout script generated by bootstrap honors more of the settings * The buildout script generated by bootstrap honors more of the settings
in the designated configuration file (e.g., buildout.cfg). in the designated configuration file (e.g., buildout.cfg).
* Correcly handle systems where pkg_resources is present but the rest of
setuptools is missing (like Ubuntu installs).
https://bugs.launchpad.net/zc.buildout/+bug/410528
- You can develop zc.buildout using Distribute instead of Setuptools. Use - You can develop zc.buildout using Distribute instead of Setuptools. Use
the --distribute option on the dev.py script. (Releases should be tested the --distribute option on the dev.py script. (Releases should be tested
with both Distribute and Setuptools.) The tests for zc.buildout pass with both Distribute and Setuptools.) The tests for zc.buildout pass
......
...@@ -53,11 +53,10 @@ else: ...@@ -53,11 +53,10 @@ else:
USE_DISTRIBUTE = options.distribute USE_DISTRIBUTE = options.distribute
args = args + ['bootstrap'] args = args + ['bootstrap']
to_reload = False
try: try:
import pkg_resources import pkg_resources
import setuptools
if not hasattr(pkg_resources, '_distribute'): if not hasattr(pkg_resources, '_distribute'):
to_reload = True
raise ImportError raise ImportError
except ImportError: except ImportError:
ez = {} ez = {}
...@@ -70,10 +69,8 @@ except ImportError: ...@@ -70,10 +69,8 @@ except ImportError:
).read() in ez ).read() in ez
ez['use_setuptools'](to_dir=tmpeggs, download_delay=0) ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
if to_reload: reload(sys.modules['pkg_resources'])
reload(pkg_resources) import pkg_resources
else:
import pkg_resources
if sys.platform == 'win32': if sys.platform == 'win32':
def quote(c): def quote(c):
......
...@@ -134,12 +134,10 @@ args = args + ['bootstrap'] ...@@ -134,12 +134,10 @@ args = args + ['bootstrap']
try: try:
to_reload = False
import pkg_resources import pkg_resources
to_reload = True import setuptools # A flag. Sometimes pkg_resources is installed alone.
if not hasattr(pkg_resources, '_distribute'): if not hasattr(pkg_resources, '_distribute'):
raise ImportError raise ImportError
import setuptools # A flag. Sometimes pkg_resources is installed alone.
except ImportError: except ImportError:
ez_code = urllib2.urlopen( ez_code = urllib2.urlopen(
options.setup_source).read().replace('\r\n', '\n') options.setup_source).read().replace('\r\n', '\n')
...@@ -151,10 +149,8 @@ except ImportError: ...@@ -151,10 +149,8 @@ except ImportError:
if options.use_distribute: if options.use_distribute:
setup_args['no_fake'] = True setup_args['no_fake'] = True
ez['use_setuptools'](**setup_args) ez['use_setuptools'](**setup_args)
if to_reload: reload(sys.modules['pkg_resources'])
reload(pkg_resources) import pkg_resources
else:
import pkg_resources
# This does not (always?) update the default working set. We will # This does not (always?) update the default working set. We will
# do it. # do it.
for path in sys.path: for path in sys.path:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment