You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							80 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
	
	
							80 lines
						
					
					
						
							3.0 KiB
						
					
					
				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
 |