summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTarek Ziadé <ziade.tarek@gmail.com>2009-04-05 22:57:21 (GMT)
committerTarek Ziadé <ziade.tarek@gmail.com>2009-04-05 22:57:21 (GMT)
commitf637050f79c37701fa77dd6e424a5f3338243e81 (patch)
treea5f5a74f1fe2e7201bf7f88151046557576715ab
parent0d8f07305d7ddcf684c3db5680263c98cf70c067 (diff)
downloadcpython-f637050f79c37701fa77dd6e424a5f3338243e81.zip
cpython-f637050f79c37701fa77dd6e424a5f3338243e81.tar.gz
cpython-f637050f79c37701fa77dd6e424a5f3338243e81.tar.bz2
Merged revisions 71291 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r71291 | tarek.ziade | 2009-04-06 00:51:09 +0200 (Mon, 06 Apr 2009) | 1 line Fixed #5095: msi missing from Distutils bdist formats ........
-rw-r--r--Doc/distutils/builtdist.rst11
-rw-r--r--Lib/distutils/command/bdist.py35
-rw-r--r--Lib/distutils/tests/test_bdist.py43
-rw-r--r--Misc/NEWS3
4 files changed, 67 insertions, 25 deletions
diff --git a/Doc/distutils/builtdist.rst b/Doc/distutils/builtdist.rst
index 672faee..6e7e51c 100644
--- a/Doc/distutils/builtdist.rst
+++ b/Doc/distutils/builtdist.rst
@@ -80,7 +80,7 @@ The available formats for built distributions are:
+-------------+------------------------------+---------+
| ``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 @@ The available formats for built distributions are:
+-------------+------------------------------+---------+
| ``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 @@ Notes:
(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 @@ generates all the "dumb" archive formats (``tar``, ``ztar``, ``gztar``, and
+--------------------------+-----------------------+
| :command:`bdist_wininst` | wininst |
+--------------------------+-----------------------+
+| :command:`bdist_msi` | msi |
++--------------------------+-----------------------+
The following sections give details on the individual :command:`bdist_\*`
commands.
diff --git a/Lib/distutils/command/bdist.py b/Lib/distutils/command/bdist.py
index e3b047c..1a360b5 100644
--- a/Lib/distutils/command/bdist.py
+++ b/Lib/distutils/command/bdist.py
@@ -49,35 +49,28 @@ class bdist(Command):
]
# 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")
}
diff --git a/Lib/distutils/tests/test_bdist.py b/Lib/distutils/tests/test_bdist.py
new file mode 100644
index 0000000..f2849a9
--- /dev/null
+++ b/Lib/distutils/tests/test_bdist.py
@@ -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 = list(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())
diff --git a/Misc/NEWS b/Misc/NEWS
index 815081b..cbf6d75 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -327,6 +327,9 @@ Core and Builtins
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.