Fixed #5095: msi missing from Distutils bdist formats
This commit is contained in:
parent
d9e221d232
commit
64408fb4c5
|
@ -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.
|
||||
|
|
|
@ -12,7 +12,7 @@ from distutils.errors import *
|
|||
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 @@ def show_formats ():
|
|||
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 @@ 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")
|
||||
}
|
||||
|
||||
|
||||
|
@ -89,9 +82,6 @@ class bdist (Command):
|
|||
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 @@ class bdist (Command):
|
|||
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 @@ class bdist (Command):
|
|||
if cmd_name in commands[i+1:]:
|
||||
sub_cmd.keep_temp = 1
|
||||
self.run_command(cmd_name)
|
||||
|
||||
# run()
|
||||
|
||||
# class bdist
|
||||
|
|
|
@ -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())
|
Loading…
Reference in New Issue