[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