Spaces:
Running
Running
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 | |
from distutils.file_util import write_file | |
old_install = old_install_mod.install | |
class install(old_install): | |
# Always run install_clib - the command is cheap, so no need to bypass it; | |
# but it's not run by setuptools -- so it's run again in install_data | |
sub_commands = old_install.sub_commands + [ | |
('install_clib', lambda x: True) | |
] | |
def finalize_options (self): | |
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. | |
""" | |
from distutils.command.install import install as distutils_install | |
# Explicit request for old-style install? Just do it | |
if self.old_and_unmanageable or self.single_version_externally_managed: | |
return distutils_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. | |
distutils_install.run(self) | |
else: | |
self.do_egg_install() | |
def 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 | |
# with double-quotes. | |
with open(self.record, 'r') as f: | |
lines = [] | |
need_rewrite = False | |
for l in f: | |
l = l.rstrip() | |
if ' ' in l: | |
need_rewrite = True | |
l = '"%s"' % (l) | |
lines.append(l) | |
if need_rewrite: | |
self.execute(write_file, | |
(self.record, lines), | |
"re-writing list of installed files to '%s'" % | |
self.record) | |
return r | |