home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 June / maximum-cd-2011-06.iso / DiscContents / LibO_3.3.1_Win_x86_install_multi.exe / libreoffice1.cab / bdist_dumb.py < prev    next >
Encoding:
Python Source  |  2011-02-15  |  4.8 KB  |  136 lines

  1. """distutils.command.bdist_dumb
  2.  
  3. Implements the Distutils 'bdist_dumb' command (create a "dumb" built
  4. distribution -- i.e., just an archive to be unpacked under $prefix or
  5. $exec_prefix)."""
  6.  
  7. # This module should be kept compatible with Python 2.1.
  8.  
  9. __revision__ = "$Id: bdist_dumb.py 61000 2008-02-23 17:40:11Z christian.heimes $"
  10.  
  11. import os
  12. from distutils.core import Command
  13. from distutils.util import get_platform
  14. from distutils.dir_util import remove_tree, ensure_relative
  15. from distutils.errors import *
  16. from distutils.sysconfig import get_python_version
  17. from distutils import log
  18.  
  19. class bdist_dumb (Command):
  20.  
  21.     description = "create a \"dumb\" built distribution"
  22.  
  23.     user_options = [('bdist-dir=', 'd',
  24.                      "temporary directory for creating the distribution"),
  25.                     ('plat-name=', 'p',
  26.                      "platform name to embed in generated filenames "
  27.                      "(default: %s)" % get_platform()),
  28.                     ('format=', 'f',
  29.                      "archive format to create (tar, ztar, gztar, zip)"),
  30.                     ('keep-temp', 'k',
  31.                      "keep the pseudo-installation tree around after " +
  32.                      "creating the distribution archive"),
  33.                     ('dist-dir=', 'd',
  34.                      "directory to put final built distributions in"),
  35.                     ('skip-build', None,
  36.                      "skip rebuilding everything (for testing/debugging)"),
  37.                     ('relative', None,
  38.                      "build the archive using relative paths"
  39.                      "(default: false)"),
  40.                    ]
  41.  
  42.     boolean_options = ['keep-temp', 'skip-build', 'relative']
  43.  
  44.     default_format = { 'posix': 'gztar',
  45.                        'nt': 'zip',
  46.                        'os2': 'zip' }
  47.  
  48.  
  49.     def initialize_options (self):
  50.         self.bdist_dir = None
  51.         self.plat_name = None
  52.         self.format = None
  53.         self.keep_temp = 0
  54.         self.dist_dir = None
  55.         self.skip_build = 0
  56.         self.relative = 0
  57.  
  58.     # initialize_options()
  59.  
  60.  
  61.     def finalize_options (self):
  62.  
  63.         if self.bdist_dir is None:
  64.             bdist_base = self.get_finalized_command('bdist').bdist_base
  65.             self.bdist_dir = os.path.join(bdist_base, 'dumb')
  66.  
  67.         if self.format is None:
  68.             try:
  69.                 self.format = self.default_format[os.name]
  70.             except KeyError:
  71.                 raise DistutilsPlatformError, \
  72.                       ("don't know how to create dumb built distributions " +
  73.                        "on platform %s") % os.name
  74.  
  75.         self.set_undefined_options('bdist',
  76.                                    ('dist_dir', 'dist_dir'),
  77.                                    ('plat_name', 'plat_name'))
  78.  
  79.     # finalize_options()
  80.  
  81.  
  82.     def run (self):
  83.  
  84.         if not self.skip_build:
  85.             self.run_command('build')
  86.  
  87.         install = self.reinitialize_command('install', reinit_subcommands=1)
  88.         install.root = self.bdist_dir
  89.         install.skip_build = self.skip_build
  90.         install.warn_dir = 0
  91.  
  92.         log.info("installing to %s" % self.bdist_dir)
  93.         self.run_command('install')
  94.  
  95.         # And make an archive relative to the root of the
  96.         # pseudo-installation tree.
  97.         archive_basename = "%s.%s" % (self.distribution.get_fullname(),
  98.                                       self.plat_name)
  99.  
  100.         # OS/2 objects to any ":" characters in a filename (such as when
  101.         # a timestamp is used in a version) so change them to hyphens.
  102.         if os.name == "os2":
  103.             archive_basename = archive_basename.replace(":", "-")
  104.  
  105.         pseudoinstall_root = os.path.join(self.dist_dir, archive_basename)
  106.         if not self.relative:
  107.             archive_root = self.bdist_dir
  108.         else:
  109.             if (self.distribution.has_ext_modules() and
  110.                 (install.install_base != install.install_platbase)):
  111.                 raise DistutilsPlatformError, \
  112.                       ("can't make a dumb built distribution where "
  113.                        "base and platbase are different (%s, %s)"
  114.                        % (repr(install.install_base),
  115.                           repr(install.install_platbase)))
  116.             else:
  117.                 archive_root = os.path.join(self.bdist_dir,
  118.                                    ensure_relative(install.install_base))
  119.  
  120.         # Make the archive
  121.         filename = self.make_archive(pseudoinstall_root,
  122.                                      self.format, root_dir=archive_root)
  123.         if self.distribution.has_ext_modules():
  124.             pyversion = get_python_version()
  125.         else:
  126.             pyversion = 'any'
  127.         self.distribution.dist_files.append(('bdist_dumb', pyversion,
  128.                                              filename))
  129.  
  130.         if not self.keep_temp:
  131.             remove_tree(self.bdist_dir, dry_run=self.dry_run)
  132.  
  133.     # run()
  134.  
  135. # class bdist_dumb
  136.