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