bdist_dumb.py (3899B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\distutils\command\bdist_dumb.py 2 __revision__ = '$Id: bdist_dumb.py 82110 2010-06-20 13:38:51Z kristjan.jonsson $' 3 import os 4 from sysconfig import get_python_version 5 from distutils.util import get_platform 6 from distutils.core import Command 7 from distutils.dir_util import remove_tree, ensure_relative 8 from distutils.errors import DistutilsPlatformError 9 from distutils import log 10 11 class bdist_dumb(Command): 12 description = 'create a "dumb" built distribution' 13 user_options = [('bdist-dir=', 'd', 'temporary directory for creating the distribution'), 14 ('plat-name=', 'p', 'platform name to embed in generated filenames (default: %s)' % get_platform()), 15 ('format=', 'f', 'archive format to create (tar, ztar, gztar, zip)'), 16 ('keep-temp', 'k', 'keep the pseudo-installation tree around after ' + 'creating the distribution archive'), 17 ('dist-dir=', 'd', 'directory to put final built distributions in'), 18 ('skip-build', None, 'skip rebuilding everything (for testing/debugging)'), 19 ('relative', None, 'build the archive using relative paths(default: false)'), 20 ('owner=', 'u', 'Owner name used when creating a tar file [default: current user]'), 21 ('group=', 'g', 'Group name used when creating a tar file [default: current group]')] 22 boolean_options = ['keep-temp', 'skip-build', 'relative'] 23 default_format = {'posix': 'gztar', 24 'nt': 'zip', 25 'os2': 'zip'} 26 27 def initialize_options(self): 28 self.bdist_dir = None 29 self.plat_name = None 30 self.format = None 31 self.keep_temp = 0 32 self.dist_dir = None 33 self.skip_build = 0 34 self.relative = 0 35 self.owner = None 36 self.group = None 37 38 def finalize_options(self): 39 if self.bdist_dir is None: 40 bdist_base = self.get_finalized_command('bdist').bdist_base 41 self.bdist_dir = os.path.join(bdist_base, 'dumb') 42 if self.format is None: 43 try: 44 self.format = self.default_format[os.name] 45 except KeyError: 46 raise DistutilsPlatformError, ("don't know how to create dumb built distributions " + 'on platform %s') % os.name 47 48 self.set_undefined_options('bdist', ('dist_dir', 'dist_dir'), ('plat_name', 'plat_name')) 49 50 def run(self): 51 if not self.skip_build: 52 self.run_command('build') 53 install = self.reinitialize_command('install', reinit_subcommands=1) 54 install.root = self.bdist_dir 55 install.skip_build = self.skip_build 56 install.warn_dir = 0 57 log.info('installing to %s' % self.bdist_dir) 58 self.run_command('install') 59 archive_basename = '%s.%s' % (self.distribution.get_fullname(), self.plat_name) 60 if os.name == 'os2': 61 archive_basename = archive_basename.replace(':', '-') 62 pseudoinstall_root = os.path.join(self.dist_dir, archive_basename) 63 if not self.relative: 64 archive_root = self.bdist_dir 65 elif self.distribution.has_ext_modules() and install.install_base != install.install_platbase: 66 raise DistutilsPlatformError, "can't make a dumb built distribution where base and platbase are different (%s, %s)" % (repr(install.install_base), repr(install.install_platbase)) 67 else: 68 archive_root = os.path.join(self.bdist_dir, ensure_relative(install.install_base)) 69 filename = self.make_archive(pseudoinstall_root, self.format, root_dir=archive_root, owner=self.owner, group=self.group) 70 if self.distribution.has_ext_modules(): 71 pyversion = get_python_version() 72 else: 73 pyversion = 'any' 74 self.distribution.dist_files.append(('bdist_dumb', pyversion, filename)) 75 if not self.keep_temp: 76 remove_tree(self.bdist_dir, dry_run=self.dry_run)