]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/distutils/command/bdist.py
   1 """distutils.command.bdist 
   3 Implements the Distutils 'bdist' command (create a built [binary] 
   6 # This module should be kept compatible with Python 1.5.2. 
  12 from distutils
.core 
import Command
 
  13 from distutils
.errors 
import * 
  14 from distutils
.util 
import get_platform
 
  18     """Print list of available formats (arguments to "--format" option). 
  20     from distutils
.fancy_getopt 
import FancyGetopt
 
  22     for format 
in bdist
.format_commands
: 
  23         formats
.append(("formats=" + format
, None, 
  24                         bdist
.format_command
[format
][1])) 
  25     pretty_printer 
= FancyGetopt(formats
) 
  26     pretty_printer
.print_help("List of available distribution formats:") 
  29 class bdist (Command
): 
  31     description 
= "create a built (binary) distribution" 
  33     user_options 
= [('bdist-base=', 'b', 
  34                      "temporary directory for creating built distributions"), 
  36                      "platform name to embed in generated filenames " 
  37                      "(default: %s)" % get_platform()), 
  39                      "formats for distribution (comma-separated list)"), 
  41                      "directory to put final built distributions in " 
  44                      "skip rebuilding everything (for testing/debugging)"), 
  47     boolean_options 
= ['skip-build'] 
  50         ('help-formats', None, 
  51          "lists available distribution formats", show_formats
), 
  54     # The following commands do not take a format option from bdist 
  55     no_format_option 
= ('bdist_rpm', 
  56                         #'bdist_sdux', 'bdist_pkgtool' 
  59     # This won't do in reality: will need to distinguish RPM-ish Linux, 
  60     # Debian-ish Linux, Solaris, FreeBSD, ..., Windows, Mac OS. 
  61     default_format 
= { 'posix': 'gztar', 
  65     # Establish the preferred order (for the --help-formats option). 
  66     format_commands 
= ['rpm', 'gztar', 'bztar', 'ztar', 'tar', 
  71     # And the real information. 
  72     format_command 
= { 'rpm':   ('bdist_rpm',  "RPM distribution"), 
  73                        'zip':   ('bdist_dumb', "ZIP file"), 
  74                        'gztar': ('bdist_dumb', "gzip'ed tar file"), 
  75                        'bztar': ('bdist_dumb', "bzip2'ed tar file"), 
  76                        'ztar':  ('bdist_dumb', "compressed tar file"), 
  77                        'tar':   ('bdist_dumb', "tar file"), 
  78                        'wininst': ('bdist_wininst', 
  79                                    "Windows executable installer"), 
  80                        'zip':   ('bdist_dumb', "ZIP file"), 
  81                        #'pkgtool': ('bdist_pkgtool',  
  82                        #            "Solaris pkgtool distribution"), 
  83                        #'sdux':  ('bdist_sdux', "HP-UX swinstall depot"), 
  87     def initialize_options (self
): 
  88         self
.bdist_base 
= None 
  94     # initialize_options() 
  97     def finalize_options (self
): 
  98         # have to finalize 'plat_name' before 'bdist_base' 
  99         if self
.plat_name 
is None: 
 100             self
.plat_name 
= get_platform() 
 102         # 'bdist_base' -- parent of per-built-distribution-format 
 103         # temporary directories (eg. we'll probably have 
 104         # "build/bdist.<plat>/dumb", "build/bdist.<plat>/rpm", etc.) 
 105         if self
.bdist_base 
is None: 
 106             build_base 
= self
.get_finalized_command('build').build_base
 
 107             self
.bdist_base 
= os
.path
.join(build_base
, 
 108                                            'bdist.' + self
.plat_name
) 
 110         self
.ensure_string_list('formats') 
 111         if self
.formats 
is None: 
 113                 self
.formats 
= [self
.default_format
[os
.name
]] 
 115                 raise DistutilsPlatformError
, \
 
 116                       "don't know how to create built distributions " + \
 
 117                       "on platform %s" % os
.name
 
 119         if self
.dist_dir 
is None: 
 120             self
.dist_dir 
= "dist" 
 127         # Figure out which sub-commands we need to run. 
 129         for format 
in self
.formats
: 
 131                 commands
.append(self
.format_command
[format
][0]) 
 133                 raise DistutilsOptionError
, "invalid format '%s'" % format
 
 135         # Reinitialize and run each command. 
 136         for i 
in range(len(self
.formats
)): 
 137             cmd_name 
= commands
[i
] 
 138             sub_cmd 
= self
.reinitialize_command(cmd_name
) 
 139             if cmd_name 
not in self
.no_format_option
: 
 140                 sub_cmd
.format 
= self
.formats
[i
] 
 142             # If we're going to need to run this command again, tell it to 
 143             # keep its temporary files around so subsequent runs go faster. 
 144             if cmd_name 
in commands
[i
+1:]: 
 145                 sub_cmd
.keep_temp 
= 1 
 146             self
.run_command(cmd_name
)