aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gbp/pkg/compressor.py26
-rwxr-xr-xgbp/scripts/export_orig.py3
-rw-r--r--tests/component/deb/test_export_orig.py5
3 files changed, 24 insertions, 10 deletions
diff --git a/gbp/pkg/compressor.py b/gbp/pkg/compressor.py
index b1b795fb..285f6a29 100644
--- a/gbp/pkg/compressor.py
+++ b/gbp/pkg/compressor.py
@@ -26,14 +26,21 @@ class Compressor(object):
'lzma': '',
'xz': ''}
+ ParallelOpts = {'lzma': '-T0',
+ 'xz': '-T0'}
+
Exts = {'gzip': 'gz',
'bzip2': 'bz2',
'lzma': 'lzma',
'xz': 'xz'}
- def __init__(self, type_, level=None):
+ def __init__(self, type_, level=None, parallel=False):
self._type = type_
self._level = int(level) if level not in [None, ''] else None
+ self._more_opts = self.Opts.get(self._type, '')
+ self._parallel = parallel
+ if parallel:
+ self._more_opts += self.ParallelOpts.get(self._type, '')
def is_known(self):
return self.type in self.Opts.keys()
@@ -47,12 +54,12 @@ class Compressor(object):
return self._level
@property
- def _level_opt(self):
- return '-%d' % self.level if self.level is not None else ''
+ def parallel(self):
+ return self._parallel
@property
- def _more_opts(self):
- return self.Opts.get(self._type, '')
+ def _level_opt(self):
+ return '-%d' % self.level if self.level is not None else ''
def cmdline(self, stdout=True):
"""
@@ -67,9 +74,12 @@ class Compressor(object):
def __repr__(self):
"""
>>> Compressor('gzip').__repr__()
- "<compressor type='gzip' >"
+ "<compressor type='gzip'>"
>>> Compressor('gzip', 9).__repr__()
"<compressor type='gzip' level=9>"
+ >>> Compressor('xz', 9, True).__repr__()
+ "<compressor type='xz' level=9 parallel=True>"
"""
- level_str = "level=%s" % self.level if self.level is not None else ''
- return "<compressor type='%s' %s>" % (self.type, level_str)
+ opts_str = " level=%s" % self.level if self.level is not None else ""
+ opts_str += " parallel=True" if self.parallel else ""
+ return "<compressor type='%s'%s>" % (self.type, opts_str)
diff --git a/gbp/scripts/export_orig.py b/gbp/scripts/export_orig.py
index 95b83da5..01bf33cc 100755
--- a/gbp/scripts/export_orig.py
+++ b/gbp/scripts/export_orig.py
@@ -202,7 +202,8 @@ def git_archive_build_origs(repo, source, output_dir, options):
@param options: the parsed options
@type options: C{dict} of options
"""
- comp = Compressor(options.comp_type, options.comp_level)
+ parallel = not options.pristine_tar
+ comp = Compressor(options.comp_type, options.comp_level, parallel)
upstream_tree = git_archive_get_upstream_tree(repo, source, options)
gbp.log.info("Creating %s from '%s'" % (source.upstream_tarball_name(comp.type),
upstream_tree))
diff --git a/tests/component/deb/test_export_orig.py b/tests/component/deb/test_export_orig.py
index e42a1fc2..e3d69571 100644
--- a/tests/component/deb/test_export_orig.py
+++ b/tests/component/deb/test_export_orig.py
@@ -44,16 +44,19 @@ class TestExportOrig(ComponentTestBase):
tarballs = ["../%s_2.8.orig-foo.tar.gz" % pkg,
"../%s_2.8.orig.tar.gz" % pkg]
- assert import_dsc(['arg0', '--no-pristine-tar', dsc]) == 0
+ assert import_dsc(['arg0', '--no-pristine-tar', '--verbose', dsc]) == 0
repo = ComponentTestGitRepository(pkg)
os.chdir(pkg)
assert_false(repo.has_branch('pristine-tar'), "Pristine-tar branch must not exist")
for t in tarballs:
self.assertFalse(os.path.exists(t), "Tarball %s must not exist" % t)
ret = export_orig(['arg0',
+ '--verbose',
'--component=foo',
'--no-pristine-tar'])
ok_(ret == 0, "Exporting tarballs failed")
+ self._check_in_info_log(".*Building upstream tarball with compression "
+ "<compressor type='gzip' parallel=True>")
for t in tarballs:
self.assertTrue(os.path.exists(t), "Tarball %s not found" % t)