diff options
author | Robert Kern <robert.kern@gmail.com> | 2008-09-18 21:48:57 +0000 |
---|---|---|
committer | Robert Kern <robert.kern@gmail.com> | 2008-09-18 21:48:57 +0000 |
commit | 4abde4ab7cd688e38dc2b935eac07594a06db286 (patch) | |
tree | f679d252b32d5030abd9d9d5f750acfc2064f20c /numpy/distutils/command/install.py | |
parent | cfc88c90c9536dac8c739be22c87769c6e2bda4a (diff) | |
download | numpy-4abde4ab7cd688e38dc2b935eac07594a06db286.tar.gz |
BUG: Override setuptools' install.run() method to correctly allow 'python setup.py install' to work.
Diffstat (limited to 'numpy/distutils/command/install.py')
-rw-r--r-- | numpy/distutils/command/install.py | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/numpy/distutils/command/install.py b/numpy/distutils/command/install.py index 36e6b5a66..87b549da8 100644 --- a/numpy/distutils/command/install.py +++ b/numpy/distutils/command/install.py @@ -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 @@ class install(old_install): 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 |