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

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)