[Python-checkins] r71291 - in python/trunk: Doc/distutils/builtdist.rst Lib/distutils/command/bdist.py Lib/distutils/tests/test_bdist.py Misc/NEWS

tarek.ziade python-checkins at python.org
Mon Apr 6 00:51:09 CEST 2009


Author: tarek.ziade
Date: Mon Apr  6 00:51:09 2009
New Revision: 71291

Log:
Fixed #5095: msi missing from Distutils bdist formats

Added:
   python/trunk/Lib/distutils/tests/test_bdist.py   (contents, props changed)
Modified:
   python/trunk/Doc/distutils/builtdist.rst
   python/trunk/Lib/distutils/command/bdist.py
   python/trunk/Misc/NEWS

Modified: python/trunk/Doc/distutils/builtdist.rst
==============================================================================
--- python/trunk/Doc/distutils/builtdist.rst	(original)
+++ python/trunk/Doc/distutils/builtdist.rst	Mon Apr  6 00:51:09 2009
@@ -80,7 +80,7 @@
 +-------------+------------------------------+---------+
 | ``tar``     | tar file (:file:`.tar`)      | \(3)    |
 +-------------+------------------------------+---------+
-| ``zip``     | zip file (:file:`.zip`)      | \(4)    |
+| ``zip``     | zip file (:file:`.zip`)      | (2),(4) |
 +-------------+------------------------------+---------+
 | ``rpm``     | RPM                          | \(5)    |
 +-------------+------------------------------+---------+
@@ -90,9 +90,12 @@
 +-------------+------------------------------+---------+
 | ``rpm``     | RPM                          | \(5)    |
 +-------------+------------------------------+---------+
-| ``wininst`` | self-extracting ZIP file for | (2),(4) |
+| ``wininst`` | self-extracting ZIP file for | \(4)    |
 |             | Windows                      |         |
 +-------------+------------------------------+---------+
+| ``msi``     | Microsoft Installer.         |         |
++-------------+------------------------------+---------+
+
 
 Notes:
 
@@ -102,8 +105,6 @@
 (2)
    default on Windows
 
-   **\*\*** to-do! **\*\***
-
 (3)
    requires external utilities: :program:`tar` and possibly one of :program:`gzip`,
    :program:`bzip2`, or :program:`compress`
@@ -133,6 +134,8 @@
 +--------------------------+-----------------------+
 | :command:`bdist_wininst` | wininst               |
 +--------------------------+-----------------------+
+| :command:`bdist_msi`     | msi                   |
++--------------------------+-----------------------+
 
 The following sections give details on the individual :command:`bdist_\*`
 commands.

Modified: python/trunk/Lib/distutils/command/bdist.py
==============================================================================
--- python/trunk/Lib/distutils/command/bdist.py	(original)
+++ python/trunk/Lib/distutils/command/bdist.py	Mon Apr  6 00:51:09 2009
@@ -12,7 +12,7 @@
 from distutils.util import get_platform
 
 
-def show_formats ():
+def show_formats():
     """Print list of available formats (arguments to "--format" option).
     """
     from distutils.fancy_getopt import FancyGetopt
@@ -24,7 +24,7 @@
     pretty_printer.print_help("List of available distribution formats:")
 
 
-class bdist (Command):
+class bdist(Command):
 
     description = "create a built (binary) distribution"
 
@@ -50,35 +50,28 @@
         ]
 
     # The following commands do not take a format option from bdist
-    no_format_option = ('bdist_rpm',
-                        #'bdist_sdux', 'bdist_pkgtool'
-                        )
+    no_format_option = ('bdist_rpm',)
 
     # This won't do in reality: will need to distinguish RPM-ish Linux,
     # Debian-ish Linux, Solaris, FreeBSD, ..., Windows, Mac OS.
-    default_format = { 'posix': 'gztar',
-                       'nt': 'zip',
-                       'os2': 'zip', }
+    default_format = {'posix': 'gztar',
+                      'nt': 'zip',
+                      'os2': 'zip'}
 
     # Establish the preferred order (for the --help-formats option).
     format_commands = ['rpm', 'gztar', 'bztar', 'ztar', 'tar',
-                       'wininst', 'zip',
-                       #'pkgtool', 'sdux'
-                       ]
+                       'wininst', 'zip', 'msi']
 
     # And the real information.
-    format_command = { 'rpm':   ('bdist_rpm',  "RPM distribution"),
-                       'zip':   ('bdist_dumb', "ZIP file"),
-                       'gztar': ('bdist_dumb', "gzip'ed tar file"),
-                       'bztar': ('bdist_dumb', "bzip2'ed tar file"),
-                       'ztar':  ('bdist_dumb', "compressed tar file"),
-                       'tar':   ('bdist_dumb', "tar file"),
-                       'wininst': ('bdist_wininst',
-                                   "Windows executable installer"),
-                       'zip':   ('bdist_dumb', "ZIP file"),
-                       #'pkgtool': ('bdist_pkgtool',
-                       #            "Solaris pkgtool distribution"),
-                       #'sdux':  ('bdist_sdux', "HP-UX swinstall depot"),
+    format_command = {'rpm':   ('bdist_rpm',  "RPM distribution"),
+                      'gztar': ('bdist_dumb', "gzip'ed tar file"),
+                      'bztar': ('bdist_dumb', "bzip2'ed tar file"),
+                      'ztar':  ('bdist_dumb', "compressed tar file"),
+                      'tar':   ('bdist_dumb', "tar file"),
+                      'wininst': ('bdist_wininst',
+                                  "Windows executable installer"),
+                      'zip':   ('bdist_dumb', "ZIP file"),
+                      'msi':   ('bdist_msi',  "Microsoft Installer")
                       }
 
 
@@ -89,9 +82,6 @@
         self.dist_dir = None
         self.skip_build = 0
 
-    # initialize_options()
-
-
     def finalize_options (self):
         # have to finalize 'plat_name' before 'bdist_base'
         if self.plat_name is None:
@@ -120,10 +110,7 @@
         if self.dist_dir is None:
             self.dist_dir = "dist"
 
-    # finalize_options()
-
     def run (self):
-
         # Figure out which sub-commands we need to run.
         commands = []
         for format in self.formats:
@@ -144,7 +131,3 @@
             if cmd_name in commands[i+1:]:
                 sub_cmd.keep_temp = 1
             self.run_command(cmd_name)
-
-    # run()
-
-# class bdist

Added: python/trunk/Lib/distutils/tests/test_bdist.py
==============================================================================
--- (empty file)
+++ python/trunk/Lib/distutils/tests/test_bdist.py	Mon Apr  6 00:51:09 2009
@@ -0,0 +1,43 @@
+"""Tests for distutils.command.bdist."""
+import unittest
+import sys
+import os
+import tempfile
+import shutil
+
+from distutils.core import Distribution
+from distutils.command.bdist import bdist
+from distutils.tests import support
+from distutils.spawn import find_executable
+from distutils import spawn
+from distutils.errors import DistutilsExecError
+
+class BuildTestCase(support.TempdirManager,
+                    unittest.TestCase):
+
+    def test_formats(self):
+
+        # let's create a command and make sure
+        # we can fix the format
+        pkg_pth, dist = self.create_dist()
+        cmd = bdist(dist)
+        cmd.formats = ['msi']
+        cmd.ensure_finalized()
+        self.assertEquals(cmd.formats, ['msi'])
+
+        # what format bdist offers ?
+        # XXX an explicit list in bdist is
+        # not the best way to  bdist_* commands
+        # we should add a registry
+        formats = ['rpm', 'zip', 'gztar', 'bztar', 'ztar',
+                   'tar', 'wininst', 'msi']
+        formats.sort()
+        founded = cmd.format_command.keys()
+        founded.sort()
+        self.assertEquals(founded, formats)
+
+def test_suite():
+    return unittest.makeSuite(BuildTestCase)
+
+if __name__ == '__main__':
+    test_support.run_unittest(test_suite())

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Mon Apr  6 00:51:09 2009
@@ -213,6 +213,9 @@
 Library
 -------
 
+- Issue #5095: Added bdist_msi to the list of bdist supported formats.
+  Initial fix by Steven Bethard.
+
 - Issue #1491431: Fixed distutils.filelist.glob_to_re for edge cases.
   Initial fix by Wayne Davison.
 


More information about the Python-checkins mailing list