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)]