[Checkins] SVN: zc.buildout/trunk/src/zc/buildout/ You can now
create develop eggs for setup scripts that don't use setuptools.
Jim Fulton
jim at zope.com
Mon Oct 16 16:27:50 EDT 2006
Log message for revision 70725:
You can now create develop eggs for setup scripts that don't use setuptools.
Changed:
U zc.buildout/trunk/src/zc/buildout/buildout.py
U zc.buildout/trunk/src/zc/buildout/tests.py
-=-
Modified: zc.buildout/trunk/src/zc/buildout/buildout.py
===================================================================
--- zc.buildout/trunk/src/zc/buildout/buildout.py 2006-10-16 20:27:47 UTC (rev 70724)
+++ zc.buildout/trunk/src/zc/buildout/buildout.py 2006-10-16 20:27:49 UTC (rev 70725)
@@ -420,16 +420,7 @@
setup = os.path.join(setup, 'setup.py')
self._logger.info("Develop: %s", setup)
- os.chdir(os.path.dirname(setup))
- args = [
- zc.buildout.easy_install._safe_arg(setup),
- '-q', 'develop', '-mxN',
- '-f', zc.buildout.easy_install._safe_arg(
- ' '.join(self._links)
- ),
- '-d', zc.buildout.easy_install._safe_arg(dest),
- ]
if self._log_level <= logging.DEBUG:
if self._log_level == logging.DEBUG:
@@ -439,10 +430,32 @@
self._logger.debug("in: %s\n%r",
os.path.dirname(setup), args)
- args.append(env)
- assert os.spawnle(
- os.P_WAIT, sys.executable, sys.executable, *args
- ) == 0
+ fd, tsetup = tempfile.mkstemp()
+ try:
+ os.write(fd, runsetup_template % dict(
+ setuptools=pkg_resources_loc,
+ setupdir=os.path.dirname(setup),
+ setup=setup,
+ __file__ = setup,
+ ))
+
+ args = [
+ zc.buildout.easy_install._safe_arg(tsetup),
+ '-q', 'develop', '-mxN',
+ '-f', zc.buildout.easy_install._safe_arg(
+ ' '.join(self._links)
+ ),
+ '-d', zc.buildout.easy_install._safe_arg(dest),
+ ]
+
+ assert os.spawnl(
+ os.P_WAIT, sys.executable, sys.executable,
+ *args) == 0
+
+ finally:
+ os.close(fd)
+ os.remove(tsetup)
+
except:
# if we had an error, we need to roll back changes, by
# removing any files we created.
@@ -452,6 +465,8 @@
for f in os.listdir(dest)
if f not in old_files
]))
+ raise
+
else:
self._sanity_check_develop_eggs_files(dest, old_files)
return '\n'.join([os.path.join(dest, f)
@@ -725,15 +740,10 @@
self._logger.info("Running setup script %s", setup)
setup = os.path.abspath(setup)
- setuptools = pkg_resources.working_set.find(
- pkg_resources.Requirement.parse('setuptools')
- ).location
-
-
fd, tsetup = tempfile.mkstemp()
try:
os.write(fd, runsetup_template % dict(
- setuptools=setuptools,
+ setuptools=pkg_resources_loc,
setupdir=os.path.dirname(setup),
setup=setup,
__file__ = setup,
Modified: zc.buildout/trunk/src/zc/buildout/tests.py
===================================================================
--- zc.buildout/trunk/src/zc/buildout/tests.py 2006-10-16 20:27:47 UTC (rev 70724)
+++ zc.buildout/trunk/src/zc/buildout/tests.py 2006-10-16 20:27:49 UTC (rev 70725)
@@ -25,6 +25,33 @@
if os_path_sep == '\\':
os_path_sep *= 2
+
+def develop_w_non_setuptools_setup_scripts():
+ """
+We should be able to deal with setup scripts that aren't setuptools based.
+
+ >>> mkdir('foo')
+ >>> write('foo', 'setup.py',
+ ... '''
+ ... from distutils.core import setup
+ ... setup(name="foo")
+ ... ''')
+
+ >>> write('buildout.cfg',
+ ... '''
+ ... [buildout]
+ ... develop = foo
+ ... parts =
+ ... ''')
+
+ >>> print system(join('bin', 'buildout')),
+ buildout: Develop: /sample-buildout/foo/setup.py
+
+ >>> ls('develop-eggs')
+ - foo.egg-link
+
+ """
+
def buildout_error_handling():
r"""Buildout error handling
More information about the Checkins
mailing list