[Checkins] SVN: zc.buildout/trunk/ Bugs Fixed
Jim Fulton
jim at zope.com
Tue Oct 24 19:56:42 EDT 2006
Log message for revision 70907:
Bugs Fixed
----------
- We treat setuptools as a dependency of any distribution that
(declares that it) uses namespace packages, whether it declares
setuptools as a dependency or not. This wasn't working for eggs
intalled by virtue of being dependencies.
Changed:
U zc.buildout/trunk/CHANGES.txt
U zc.buildout/trunk/setup.py
U zc.buildout/trunk/src/zc/buildout/easy_install.py
U zc.buildout/trunk/src/zc/buildout/tests.py
-=-
Modified: zc.buildout/trunk/CHANGES.txt
===================================================================
--- zc.buildout/trunk/CHANGES.txt 2006-10-24 23:31:47 UTC (rev 70906)
+++ zc.buildout/trunk/CHANGES.txt 2006-10-24 23:56:42 UTC (rev 70907)
@@ -20,6 +20,18 @@
Change History
**************
+1.0.0b12 (2006-10-?)
+=====================
+
+Bugs Fixed
+----------
+
+- We treat setuptools as a dependency of any distribution that
+ (declares that it) uses namespace packages, whether it declares
+ setuptools as a dependency or not. This wasn't working for eggs
+ intalled by virtue of being dependencies.
+
+
1.0.0b12 (2006-10-24)
=====================
Modified: zc.buildout/trunk/setup.py
===================================================================
--- zc.buildout/trunk/setup.py 2006-10-24 23:31:47 UTC (rev 70906)
+++ zc.buildout/trunk/setup.py 2006-10-24 23:56:42 UTC (rev 70907)
@@ -7,7 +7,7 @@
name = "zc.buildout"
setup(
name = name,
- version = "1.0.0b12",
+ version = "1.0.0b13",
author = "Jim Fulton",
author_email = "jim at zope.com",
description = "System for managing development buildouts",
Modified: zc.buildout/trunk/src/zc/buildout/easy_install.py
===================================================================
--- zc.buildout/trunk/src/zc/buildout/easy_install.py 2006-10-24 23:31:47 UTC (rev 70906)
+++ zc.buildout/trunk/src/zc/buildout/easy_install.py 2006-10-24 23:56:42 UTC (rev 70907)
@@ -298,7 +298,28 @@
links.append(link)
return dist
+
+def _maybe_add_setuptools(ws, dist, env, dest, links, index, executable):
+ if dist.has_metadata('namespace_packages.txt'):
+ for r in dist.requires():
+ if r.project_name == 'setuptools':
+ break
+ else:
+ # We have a namespace package but no requirement for setuptools
+ if dist.precedence == pkg_resources.DEVELOP_DIST:
+ logger.warn(
+ "Develop distribution for %s\n"
+ "uses namespace packages but the distribution "
+ "does not require setuptools.",
+ dist)
+ requirement = pkg_resources.Requirement.parse('setuptools')
+ if ws.find(requirement) is None:
+ dist = _get_dist(requirement, env, ws,
+ dest, links, index, executable,
+ False)
+ ws.add(dist)
+
def install(specs, dest,
links=(), index=None,
executable=sys.executable, always_unzip=False,
@@ -330,25 +351,8 @@
dist = _get_dist(requirement, env, ws,
dest, links, index, executable, always_unzip)
ws.add(dist)
- if dist.has_metadata('namespace_packages.txt'):
- for r in dist.requires():
- if r.project_name == 'setuptools':
- break
- else:
- # We have a namespace package but no requirement for setuptools
- if dist.precedence == pkg_resources.DEVELOP_DIST:
- logger.warn(
- "Develop distribution for %s\n"
- "uses namespace packages but the distribution "
- "does not require setuptools.",
- dist)
- requirement = pkg_resources.Requirement.parse('setuptools')
- if ws.find(requirement) is None:
- dist = _get_dist(requirement, env, ws,
- dest, links, index, executable,
- False)
- ws.add(dist)
-
+ _maybe_add_setuptools(ws, dist,
+ env, dest, links, index, executable)
# OK, we have the requested distributions and they're in the working
# set, but they may have unmet requirements. We'll simply keep
@@ -365,9 +369,11 @@
[requirement] = err
if dest:
logger.debug('Getting required %s', requirement)
- ws.add(_get_dist(requirement, env, ws,
+ dist = _get_dist(requirement, env, ws,
dest, links, index, executable, always_unzip)
- )
+ ws.add(dist)
+ _maybe_add_setuptools(ws, dist,
+ env, dest, links, index, executable)
else:
break
Modified: zc.buildout/trunk/src/zc/buildout/tests.py
===================================================================
--- zc.buildout/trunk/src/zc/buildout/tests.py 2006-10-24 23:31:47 UTC (rev 70906)
+++ zc.buildout/trunk/src/zc/buildout/tests.py 2006-10-24 23:56:42 UTC (rev 70907)
@@ -581,11 +581,9 @@
declare setuptools as a dependency. This is a mistake, but,
unfortunately, a common one that we need to work around. If an egg
uses namespace packages and does not include setuptools as a depenency,
-we willll still include setuptools in the working set. If we see this for
+we will still include setuptools in the working set. If we see this for
a devlop egg, we will also generate a warning.
- >>> cd(sample_buildout)
-
>>> mkdir('foo')
>>> mkdir('foo', 'src')
>>> mkdir('foo', 'src', 'stuff')
@@ -664,8 +662,46 @@
>>> print handler,
+We get the same behavior if the it is a depedency that uses a
+namespace package.
+
+
+ >>> mkdir('bar')
+ >>> write('bar', 'setup.py',
+ ... """
+ ... from setuptools import setup
+ ... setup(name='bar', install_requires = ['foox'])
+ ... """)
+ >>> write('bar', 'README.txt', '')
+
+ >>> write('buildout.cfg',
+ ... """
+ ... [buildout]
+ ... develop = foo bar
+ ... parts =
+ ... """)
+
+ >>> print system(join('bin', 'buildout')),
+ buildout: Develop: /sample-buildout/foo/setup.py
+ buildout: Develop: /sample-buildout/bar/setup.py
+
+ >>> [dist.project_name
+ ... for dist in zc.buildout.easy_install.working_set(
+ ... ['bar'], sys.executable,
+ ... [join(sample_buildout, 'eggs'),
+ ... join(sample_buildout, 'develop-eggs'),
+ ... ])]
+ ['bar', 'foox', 'setuptools']
+
+ >>> print handler,
+ zc.buildout.easy_install WARNING
+ Develop distribution for foox 0.0.0
+ uses namespace packages but the distribution does not require setuptools.
+
+
>>> logging.getLogger('zc').propagate = True
>>> handler.uninstall()
+
'''
def create_sample_eggs(test, executable=sys.executable):
More information about the Checkins
mailing list