From ecdc8e7010633eba0ffb3261b35a358c644a247f Mon Sep 17 00:00:00 2001 From: Faik Uygur Date: Tue, 2 May 2006 16:19:20 +0000 Subject: [PATCH] * add pisi package compression method selection --- pisi/archive.py | 5 ++++- pisi/cli/commands.py | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pisi/archive.py b/pisi/archive.py index fe1a8418..49812634 100644 --- a/pisi/archive.py +++ b/pisi/archive.py @@ -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: diff --git a/pisi/cli/commands.py b/pisi/cli/commands.py index 69615b71..1134d33e 100644 --- a/pisi/cli/commands.py +++ b/pisi/cli/commands.py @@ -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: