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