NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

build.py (3741B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\distutils\command\build.py
      2 __revision__ = '$Id: build.py 82110 2010-06-20 13:38:51Z kristjan.jonsson $'
      3 import sys, os
      4 from distutils.util import get_platform
      5 from distutils.core import Command
      6 from distutils.errors import DistutilsOptionError
      7 
      8 def show_compilers():
      9     from distutils.ccompiler import show_compilers
     10     show_compilers()
     11 
     12 
     13 class build(Command):
     14     description = 'build everything needed to install'
     15     user_options = [('build-base=', 'b', 'base directory for build library'),
     16      ('build-purelib=', None, 'build directory for platform-neutral distributions'),
     17      ('build-platlib=', None, 'build directory for platform-specific distributions'),
     18      ('build-lib=', None, 'build directory for all distribution (defaults to either ' + 'build-purelib or build-platlib'),
     19      ('build-scripts=', None, 'build directory for scripts'),
     20      ('build-temp=', 't', 'temporary build directory'),
     21      ('plat-name=', 'p', 'platform name to build for, if supported (default: %s)' % get_platform()),
     22      ('compiler=', 'c', 'specify the compiler type'),
     23      ('debug', 'g', 'compile extensions and libraries with debugging information'),
     24      ('force', 'f', 'forcibly build everything (ignore file timestamps)'),
     25      ('executable=', 'e', 'specify final destination interpreter path (build.py)')]
     26     boolean_options = ['debug', 'force']
     27     help_options = [('help-compiler',
     28       None,
     29       'list available compilers',
     30       show_compilers)]
     31 
     32     def initialize_options(self):
     33         self.build_base = 'build'
     34         self.build_purelib = None
     35         self.build_platlib = None
     36         self.build_lib = None
     37         self.build_temp = None
     38         self.build_scripts = None
     39         self.compiler = None
     40         self.plat_name = None
     41         self.debug = None
     42         self.force = 0
     43         self.executable = None
     44 
     45     def finalize_options(self):
     46         if self.plat_name is None:
     47             self.plat_name = get_platform()
     48         elif os.name != 'nt':
     49             raise DistutilsOptionError("--plat-name only supported on Windows (try using './configure --help' on your platform)")
     50         plat_specifier = '.%s-%s' % (self.plat_name, sys.version[0:3])
     51         if hasattr(sys, 'gettotalrefcount'):
     52             plat_specifier += '-pydebug'
     53         if self.build_purelib is None:
     54             self.build_purelib = os.path.join(self.build_base, 'lib')
     55         if self.build_platlib is None:
     56             self.build_platlib = os.path.join(self.build_base, 'lib' + plat_specifier)
     57         if self.build_lib is None:
     58             if self.distribution.ext_modules:
     59                 self.build_lib = self.build_platlib
     60             else:
     61                 self.build_lib = self.build_purelib
     62         if self.build_temp is None:
     63             self.build_temp = os.path.join(self.build_base, 'temp' + plat_specifier)
     64         if self.build_scripts is None:
     65             self.build_scripts = os.path.join(self.build_base, 'scripts-' + sys.version[0:3])
     66         if self.executable is None:
     67             self.executable = os.path.normpath(sys.executable)
     68 
     69     def run(self):
     70         for cmd_name in self.get_sub_commands():
     71             self.run_command(cmd_name)
     72 
     73     def has_pure_modules(self):
     74         return self.distribution.has_pure_modules()
     75 
     76     def has_c_libraries(self):
     77         return self.distribution.has_c_libraries()
     78 
     79     def has_ext_modules(self):
     80         return self.distribution.has_ext_modules()
     81 
     82     def has_scripts(self):
     83         return self.distribution.has_scripts()
     84 
     85     sub_commands = [('build_py', has_pure_modules),
     86      ('build_clib', has_c_libraries),
     87      ('build_ext', has_ext_modules),
     88      ('build_scripts', has_scripts)]