[Numpy-svn] r5956 - branches/1.2.x/numpy/distutils/command

numpy-svn at scipy.org numpy-svn at scipy.org
Sun Oct 26 04:51:30 EDT 2008


Author: jarrod.millman
Date: 2008-10-26 03:51:27 -0500 (Sun, 26 Oct 2008)
New Revision: 5956

Modified:
   branches/1.2.x/numpy/distutils/command/install.py
Log:
back ported Robert Kern's fix for setuptools (see r5833)


Modified: branches/1.2.x/numpy/distutils/command/install.py
===================================================================
--- branches/1.2.x/numpy/distutils/command/install.py	2008-10-22 05:45:42 UTC (rev 5955)
+++ branches/1.2.x/numpy/distutils/command/install.py	2008-10-26 08:51:27 UTC (rev 5956)
@@ -1,8 +1,10 @@
 import sys
 if 'setuptools' in sys.modules:
     import setuptools.command.install as old_install_mod
+    have_setuptools = True
 else:
     import distutils.command.install as old_install_mod
+    have_setuptools = False
 old_install = old_install_mod.install
 from distutils.file_util import write_file
 
@@ -12,8 +14,41 @@
         old_install.finalize_options(self)
         self.install_lib = self.install_libbase
 
+    def setuptools_run(self):
+        """ The setuptools version of the .run() method.
+
+        We must pull in the entire code so we can override the level used in the
+        _getframe() call since we wrap this call by one more level.
+        """
+        # Explicit request for old-style install?  Just do it
+        if self.old_and_unmanageable or self.single_version_externally_managed:
+            return old_install_mod._install.run(self)
+
+        # Attempt to detect whether we were called from setup() or by another
+        # command.  If we were called by setup(), our caller will be the
+        # 'run_command' method in 'distutils.dist', and *its* caller will be
+        # the 'run_commands' method.  If we were called any other way, our
+        # immediate caller *might* be 'run_command', but it won't have been
+        # called by 'run_commands'.  This is slightly kludgy, but seems to
+        # work.
+        #
+        caller = sys._getframe(3)
+        caller_module = caller.f_globals.get('__name__','')
+        caller_name = caller.f_code.co_name
+
+        if caller_module != 'distutils.dist' or caller_name!='run_commands':
+            # We weren't called from the command line or setup(), so we
+            # should run in backward-compatibility mode to support bdist_*
+            # commands.
+            old_install_mod._install.run(self)
+        else:
+            self.do_egg_install()
+
     def run(self):
-        r = old_install.run(self)
+        if not have_setuptools:
+            r = old_install.run(self)
+        else:
+            r = self.setuptools_run()
         if self.record:
             # bdist_rpm fails when INSTALLED_FILES contains
             # paths with spaces. Such paths must be enclosed




More information about the Numpy-svn mailing list