From 70c5b22006fcf56933e66480a61bdf4d00a2475a Mon Sep 17 00:00:00 2001 From: Guido Günther Date: Tue, 14 Sep 2010 10:34:20 +0200 Subject: Improve compression format detection by checking if a version is already on the pristine-tar branch and use it's compression type if found. LP: #615212 --- gbp/git.py | 12 ++++++++++++ git-buildpackage | 12 +++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/gbp/git.py b/gbp/git.py index 635e24c4..9d5a3181 100644 --- a/gbp/git.py +++ b/gbp/git.py @@ -259,6 +259,18 @@ class GitRepository(object): for line in commit: yield line + def grep_log(self, regex, where=None): + args = ['--pretty=format:%H'] + args.append("--grep=%s" % regex) + if where: + args.append(where) + args.append('--') + + commits, ret = self.__git_getoutput('log', args) + if ret: + raise GitRepositoryError, "Error grepping log for %s" % regex + return [ commit.strip() for commit in commits[::-1] ] + def get_subject(self, commit): """Gets the subject of a commit""" self.__check_path() diff --git a/git-buildpackage b/git-buildpackage index 63483a8d..cbc310a3 100755 --- a/git-buildpackage +++ b/git-buildpackage @@ -175,7 +175,7 @@ def extract_orig(orig_tarball, dest_dir): os.rmdir(tar_topdir) -def guess_comp_type(repo, comp_type): +def guess_comp_type(repo, comp_type, srcpkg, upstream_version): """Guess compression type""" if comp_type != 'auto': @@ -188,7 +188,13 @@ def guess_comp_type(repo, comp_type): if not repo.has_branch(PristineTar.branch): comp_type = 'gzip' else: - tarball = repo.get_subject(PristineTar.branch) + regex = 'pristine-tar .* %s_%s\.orig.tar\.' % (srcpkg, upstream_version) + commits = repo.grep_log(regex, PristineTar.branch) + if commits: + commit = commits[0] + else: + commit = PristineTar.branch + tarball = repo.get_subject(commit) comp_type = du.get_compression(tarball) if not comp_type: comp_type = 'gzip' @@ -341,9 +347,9 @@ def main(argv): else: tarball_dir = output_dir - options.comp_type = guess_comp_type (repo, options.comp_type) # Get/build the orig.tar.gz if necessary: if not du.is_native(cp): + options.comp_type = guess_comp_type(repo, options.comp_type, cp['Source'], major) orig_file = du.orig_file(cp, options.comp_type) # look in tarball_dir first, if found force a symlink to it -- cgit v1.2.3