Kaydet (Commit) 64408fb4 authored tarafından Tarek Ziadé's avatar Tarek Ziadé

Fixed #5095: msi missing from Distutils bdist formats

üst d9e221d2
......@@ -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
"""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())
......@@ -213,6 +213,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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment