* add pisi package compression method selection
This commit is contained in:
+4
-1
@@ -26,6 +26,7 @@ _ = __trans.ugettext
|
||||
# PiSi modules
|
||||
import pisi
|
||||
import pisi.util as util
|
||||
import pisi.context as ctx
|
||||
|
||||
class ArchiveError(pisi.Error):
|
||||
pass
|
||||
@@ -101,6 +102,7 @@ class ArchiveZip(ArchiveBase):
|
||||
zip archives."""
|
||||
|
||||
symmagic = 2716663808 #long of hex val '0xA1ED0000L'
|
||||
comp_method = {'lzma': zipfileext.ZIP_LZMA, 'deflated': zipfileext.ZIP_DEFLATED}
|
||||
|
||||
def __init__(self, file_path, arch_type = "zip", mode = 'r'):
|
||||
super(ArchiveZip, self).__init__(file_path, arch_type)
|
||||
@@ -130,7 +132,8 @@ class ArchiveZip(ArchiveBase):
|
||||
attr.external_attr = self.symmagic
|
||||
self.zip_obj.writestr(attr, dest)
|
||||
else:
|
||||
self.zip_obj.write(file_name, arc_name, zipfileext.ZIP_LZMA)
|
||||
self.zip_obj.write(file_name, arc_name,
|
||||
self.comp_method[ctx.get_option('compression_method')])
|
||||
if not arc_name:
|
||||
zinfo = self.zip_obj.getinfo(file_name)
|
||||
else:
|
||||
|
||||
@@ -344,6 +344,8 @@ unpack, setup, build, install, package
|
||||
name = ("build", "bi")
|
||||
|
||||
steps = ('unpack', 'setup', 'build', 'install', 'package')
|
||||
|
||||
compression_methods = ('deflated', 'lzma')
|
||||
|
||||
def options(self):
|
||||
buildno_opts(self)
|
||||
@@ -355,6 +357,8 @@ unpack, setup, build, install, package
|
||||
# help=_("perform only specified step"))
|
||||
self.parser.add_option("-U", "--until", action="store", default=None,
|
||||
help=_("perform until and including specified step"))
|
||||
self.parser.add_option("-C", "--compression-method", action="store", default='lzma',
|
||||
help=_("package compression method"))
|
||||
self.parser.add_option("-A", "--ignore-action-errors",
|
||||
action="store_true", default=False,
|
||||
help=_("bypass errors from ActionsAPI"))
|
||||
@@ -384,6 +388,9 @@ unpack, setup, build, install, package
|
||||
else:
|
||||
self.init()
|
||||
|
||||
if ctx.get_option('compression_method') not in Build.compression_methods:
|
||||
raise Error(_('compression_method must be one of %s ') % pisi.util.strlist(Build.compression_methods))
|
||||
|
||||
if ctx.get_option('output_dir'):
|
||||
ctx.ui.info(_('Output directory: %s') % ctx.config.options.output_dir)
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user