Kaydet (Commit) f194878d authored tarafından Greg Ward's avatar Greg Ward

Harry Henry Gebel:

Adds bztar format to generate .tar.bz2 tarballs

Uses the -f argument to overright old tarballs automatically, I am
assuming that if the old tarball was wanted it would have been moved or
else the version number would have been changed.

Uses the -9 argument to bzip2 and gzip to use maximum
compression. Compress uses the maximum compression by default.

Tests for correct value for the 'compress' argument of make_tarball. This
is one less place for someone adding new compression programs to forget to
change.
üst 464023fb
......@@ -15,12 +15,12 @@ from distutils.spawn import spawn
def make_tarball (base_name, base_dir, compress="gzip",
verbose=0, dry_run=0):
"""Create a (possibly compressed) tar file from all the files under
'base_dir'. 'compress' must be "gzip" (the default), "compress", or
None. Both "tar" and the compression utility named by 'compress'
must be on the default program search path, so this is probably
Unix-specific. The output tar file will be named 'base_dir' +
".tar", possibly plus the appropriate compression extension
(".gz" or ".Z"). Return the output filename."""
'base_dir'. 'compress' must be "gzip" (the default), "compress",
"bzip2", or None. Both "tar" and the compression utility named by
'compress' must be on the default program search path, so this is
probably Unix-specific. The output tar file will be named 'base_dir'
+ ".tar", possibly plus the appropriate compression extension (".gz",
".bz2" or ".Z"). Return the output filename."""
# XXX GNU tar 1.13 has a nifty option to add a prefix directory.
# It's pretty new, though, so we certainly can't require it --
......@@ -29,9 +29,15 @@ def make_tarball (base_name, base_dir, compress="gzip",
# detect GNU tar to use its 'z' option and save a step.)
compress_ext = { 'gzip': ".gz",
'bzip2': '.bz2',
'compress': ".Z" }
# flags for compression program, each element of list will be an argument
compress_flags = {'gzip': ["-f9"],
'compress': ["-f"],
'bzip2': ['-f9']}
if compress is not None and compress not in ('gzip', 'compress'):
if compress is not None and compress not in compress_ext.keys():
raise ValueError, \
"bad value for 'compress': must be None, 'gzip', or 'compress'"
......@@ -40,7 +46,8 @@ def make_tarball (base_name, base_dir, compress="gzip",
spawn (cmd, verbose=verbose, dry_run=dry_run)
if compress:
spawn ([compress, archive_name], verbose=verbose, dry_run=dry_run)
spawn ([compress] + compress_flags[compress] + [archive_name],
verbose=verbose, dry_run=dry_run)
return archive_name + compress_ext[compress]
else:
return archive_name
......@@ -104,6 +111,7 @@ def make_zipfile (base_name, base_dir, verbose=0, dry_run=0):
ARCHIVE_FORMATS = {
'gztar': (make_tarball, [('compress', 'gzip')]),
'bztar': (make_tarball, [('compress', 'bzip2')]),
'ztar': (make_tarball, [('compress', 'compress')]),
'tar': (make_tarball, [('compress', None)]),
'zip': (make_zipfile, [])
......
......@@ -18,7 +18,8 @@ class bdist (Command):
description = "create a built (binary) distribution"
user_options = [('format=', 'f',
"format for distribution (tar, ztar, gztar, zip, ... )"),
"format for distribution " +
"(tar, ztar, gztar, bztar, zip, ... )"),
]
# This won't do in reality: will need to distinguish RPM-ish Linux,
......@@ -27,6 +28,7 @@ class bdist (Command):
'nt': 'zip', }
format_command = { 'gztar': 'bdist_dumb',
'bztar': 'bdist_dumb',
'ztar': 'bdist_dumb',
'tar': 'bdist_dumb',
'zip': 'bdist_dumb', }
......
......@@ -33,9 +33,8 @@ class sdist (Command):
"just regenerate the manifest and then stop"),
('force-manifest', None,
"forcibly regenerate the manifest and carry on as usual"),
('formats=', None,
"formats for source distribution (tar, ztar, gztar, or zip)"),
"formats for source distribution (tar, ztar, gztar, bztar, or zip)"),
('keep-tree', 'k',
"keep the distribution tree around after creating " +
"archive file(s)"),
......
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