12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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
|