From 314ed77d77f95dd777e2d7f7d38b6943228179bd Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Sun, 6 May 2012 12:32:54 +0200 Subject: [PATCH] backportpackage: Avoid uploading orig tarballs if they are already present in the destination PPA (LP: #691897) --- backportpackage | 36 ++++++++++++++++++++++++++++++++++-- debian/changelog | 2 ++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/backportpackage b/backportpackage index de24221..55c98a7 100755 --- a/backportpackage +++ b/backportpackage @@ -18,6 +18,7 @@ # # ################################################################## +import glob import optparse import os import shutil @@ -25,8 +26,8 @@ import sys import tempfile import lsb_release - from devscripts.logger import Logger +from httplib2 import Http, HttpLib2Error from ubuntutools.archive import (SourcePackage, DebianSourcePackage, UbuntuSourcePackage, DownloadError) @@ -232,6 +233,31 @@ def do_upload(workdir, package, bp_version, changes, upload, prompt): check_call(['dput', upload, changes], cwd=workdir) +def orig_needed(upload, workdir, pkg): + '''Avoid a -sa if possible''' + if not upload or not upload.startswith('ppa:'): + return True + ppa = upload.split(':', 1)[1] + user, ppa = ppa.split('/', 1) + + version = pkg.version.full_version + if pkg.version.epoch: + version = version.split(pkg.version.epoch, 1)[1] + + h = Http() + for filename in glob.glob(os.path.join(workdir, + '%s_%s.orig*' % (pkg.source, version))): + url = ('https://launchpad.net/~%s/+archive/%s/+files/%s' + % (user, ppa, filename)) + try: + headers, body = h.request(url, 'HEAD') + if headers.status != 200: + return True + except HttpLib2Error, e: + Logger.info(e) + return True + return False + def do_backport(workdir, pkg, suffix, release, release_pocket, build, builder, update, upload, prompt): dirname = '%s-%s' % (pkg.source, release) @@ -257,7 +283,13 @@ def do_backport(workdir, pkg, suffix, release, release_pocket, build, builder, '--distribution', bp_dist, 'No-change backport to %s' % release], cwd=srcdir) - check_call(['debuild', '--no-lintian', '-S', '-nc', '-sa'], cwd=srcdir) + + cmd = ['debuild', '--no-lintian', '-S', '-nc'] + if orig_needed(upload, workdir, pkg): + cmd.append('-sa') + else: + cmd.append('-sd') + check_call(cmd, cwd=srcdir) fn_base = pkg.source + '_' + bp_version.split(':', 1)[-1] diff --git a/debian/changelog b/debian/changelog index d4815ff..ed360fc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,8 @@ ubuntu-dev-tools (0.142) UNRELEASED; urgency=low reverse-depends, submittodebian, syncpackage: Handle outdated distro-info data. Fall back to sane defaults where possible. + * backportpackage: Avoid uploading orig tarballs if they are already present + in the destination PPA (LP: #691897) -- Stefano Rivera Wed, 25 Apr 2012 17:38:58 +0200