From: Markus Lehtonen Date: Thu, 6 Jun 2013 12:19:37 +0000 (+0300) Subject: UpstreamSource.unpack: return UpstreamSource instance X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d57c8954482ace83b80b47136ec0bb87b6f6786b;p=tools%2Fgit-buildpackage.git UpstreamSource.unpack: return UpstreamSource instance Trying to keep UpstreamSource in consistent state so that unpacked and packed sources are kept in sync. Signed-off-by: Markus Lehtonen --- diff --git a/gbp/pkg/__init__.py b/gbp/pkg/__init__.py index 0512df7a..567d5c2d 100644 --- a/gbp/pkg/__init__.py +++ b/gbp/pkg/__init__.py @@ -469,19 +469,27 @@ class UpstreamSource(object): if type(filters) != type([]): raise GbpError("Filters must be a list") - self._unpack_archive(dir, filters) + if self._unpack_archive(dir, filters): + ret = type(self)(dir, prefix=self._prefix) + else: + ret = self src_dir = os.path.join(dir, self._prefix) - self.unpacked = src_dir if os.path.isdir(src_dir) else dir + ret.unpacked = src_dir if os.path.isdir(src_dir) else dir + return ret def _unpack_archive(self, dir, filters): """ - Unpack packed upstream sources into a given directory. + Unpack packed upstream sources into a given directory. Return True if + the output was filtered, otherwise False. """ ext = os.path.splitext(self.path)[1] if ext in [ ".zip", ".xpi" ]: self._unpack_zip(dir) else: self._unpack_tar(dir, filters) + if filters: + return True + return False def _unpack_zip(self, dir): try: diff --git a/gbp/scripts/common/import_orig.py b/gbp/scripts/common/import_orig.py index abcecc49..00052229 100644 --- a/gbp/scripts/common/import_orig.py +++ b/gbp/scripts/common/import_orig.py @@ -117,7 +117,7 @@ def repack_source(source, new_name, unpack_dir, filters, new_prefix=None): if source.is_tarball(): # the tarball was filtered on unpack repacked.unpacked = source.unpacked else: # otherwise unpack the generated tarball get a filtered tree - repacked.unpack(unpack_dir, filters) + repacked.unpack(unpack_dir) return repacked diff --git a/gbp/scripts/import_dsc.py b/gbp/scripts/import_dsc.py index 1fb8413e..38cf9995 100644 --- a/gbp/scripts/import_dsc.py +++ b/gbp/scripts/import_dsc.py @@ -330,7 +330,7 @@ def main(argv): dirs['tmp'] = os.path.abspath(tempfile.mkdtemp(dir='..')) upstream = DebianUpstreamSource(src.tgz) - upstream.unpack(dirs['tmp'], options.filters) + upstream = upstream.unpack(dirs['tmp'], options.filters) format = [(options.upstream_tag, "Upstream"), (options.debian_tag, "Debian")][src.native] tag = repo.version_to_tag(format[0], src.upstream_version) diff --git a/gbp/scripts/import_orig.py b/gbp/scripts/import_orig.py index d6715dfb..687b430a 100644 --- a/gbp/scripts/import_orig.py +++ b/gbp/scripts/import_orig.py @@ -334,7 +334,7 @@ def main(argv): if not source.is_dir(): unpack_dir = tempfile.mkdtemp(prefix='unpack', dir=tmpdir) - source.unpack(unpack_dir, options.filters) + source = source.unpack(unpack_dir, options.filters) gbp.log.debug("Unpacked '%s' to '%s'" % (source.path, source.unpacked)) if orig_needs_repack(source, options): diff --git a/gbp/scripts/import_srpm.py b/gbp/scripts/import_srpm.py index a9e2ee76..c7a866d2 100755 --- a/gbp/scripts/import_srpm.py +++ b/gbp/scripts/import_srpm.py @@ -309,7 +309,7 @@ def main(argv): if spec.orig_src: orig_tarball = os.path.join(dirs['src'], spec.orig_src['filename']) sources = RpmUpstreamSource(orig_tarball) - sources.unpack(dirs['origsrc'], options.filters) + sources = sources.unpack(dirs['origsrc'], options.filters) else: sources = None