mirror of
https://git.launchpad.net/ubuntu-dev-tools
synced 2025-03-12 23:51:08 +00:00
sponsor-patch: Add --update option to make sure build environment is
up to date (LP: #689605)
This commit is contained in:
commit
4be074c8fa
@ -64,6 +64,11 @@ def parse(args):
|
||||
default=None,
|
||||
help='Specify the package builder (default: pbuilder)',
|
||||
metavar='BUILDER')
|
||||
p.add_option('-U', '--update',
|
||||
dest='update',
|
||||
default=False,
|
||||
action='store_true',
|
||||
help='Update the build environment before attempting to build')
|
||||
p.add_option('-u', '--upload',
|
||||
dest='upload',
|
||||
help='Specify an upload destination',
|
||||
@ -182,6 +187,11 @@ def do_build(workdir, package, release, bp_version, builder):
|
||||
if not builder:
|
||||
return
|
||||
|
||||
if opts.update:
|
||||
if 0 != builder.update(release):
|
||||
error('Failed to update %s chroot for %s.' % \
|
||||
(release, builder.get_name()))
|
||||
|
||||
return builder.build(os.path.join(workdir,
|
||||
'%s_%s.dsc' % (package, bp_version)),
|
||||
release,
|
||||
|
2
debian/changelog
vendored
2
debian/changelog
vendored
@ -14,6 +14,8 @@ ubuntu-dev-tools (0.108) UNRELEASED; urgency=low
|
||||
|
||||
[ Evan Broder ]
|
||||
* backportpackage: new script for testing backport requests in a PPA.
|
||||
* sponsor-patch: Add --update option to make sure build environment is
|
||||
up to date (LP: #689605)
|
||||
|
||||
[ Bilal Akhtar ]
|
||||
* pbuilder-dist: Override the default build result location if
|
||||
|
@ -33,6 +33,9 @@ Use the specified builder to build the package. Supported are
|
||||
\fBpbuilder\fR(8), \fBpbuilder-dist\fR(1), and \fBsbuild\fR(1). This overrides
|
||||
\fBUBUNTUTOOLS_BUILDER\fR. The default is \fBpbuilder\fR(8).
|
||||
.TP
|
||||
.B \-U, \-\-update
|
||||
Update the build environment before attempting to build.
|
||||
.TP
|
||||
.B \-u \fIUPLOAD\fR, \-\-upload=\fIUPLOAD\fR
|
||||
Upload to \fIUPLOAD\fR with \fBdput\fR(1) (after confirmation).
|
||||
.TP
|
||||
|
@ -77,6 +77,9 @@ Shortcut for sponsored uploads. Equivalent to \fB\-b \-u ubuntu\fR.
|
||||
.B \-u \fIDEST\fR, \fB\-\-upload\fR=\fIDEST
|
||||
Upload to \fIDEST\fR with \fBdput\fR(1) (after confirmation).
|
||||
.TP
|
||||
.BR \-U ", " \-\-update
|
||||
Update the build environment before attempting to build.
|
||||
.TP
|
||||
.BR \-v ", " \-\-verbose
|
||||
Print more information.
|
||||
.TP
|
||||
|
@ -409,8 +409,8 @@ def apply_patch(task, patch):
|
||||
edit = True
|
||||
return edit
|
||||
|
||||
def main(script_name, bug_number, build, edit, keyid, upload, workdir, builder,
|
||||
verbose=False):
|
||||
def main(script_name, bug_number, update, build, edit, keyid, upload, workdir,
|
||||
builder, verbose=False):
|
||||
workdir = os.path.expanduser(workdir)
|
||||
if not os.path.isdir(workdir):
|
||||
try:
|
||||
@ -598,12 +598,24 @@ def main(script_name, bug_number, build, edit, keyid, upload, workdir, builder,
|
||||
continue
|
||||
|
||||
if build:
|
||||
dist = re.sub("-.*$", "", changelog.distributions)
|
||||
|
||||
if update:
|
||||
ret = builder.update(dist)
|
||||
if ret != 0:
|
||||
Logger.error("Failed to update %s chroot for %s." % \
|
||||
(dist, builder.get_name()))
|
||||
ask_for_manual_fixing()
|
||||
continue
|
||||
# We want to update the build environment only once, but not
|
||||
# after every manual fix.
|
||||
update = False
|
||||
|
||||
buildresult = os.path.join(workdir, task.package + "-buildresult")
|
||||
if not os.path.isdir(buildresult):
|
||||
os.makedirs(buildresult)
|
||||
|
||||
# build package
|
||||
dist = re.sub("-.*$", "", changelog.distributions)
|
||||
result = builder.build(new_dsc_file, dist, buildresult)
|
||||
if result != 0:
|
||||
Logger.error("Failed to build %s from source with %s." % \
|
||||
@ -706,6 +718,9 @@ if __name__ == "__main__":
|
||||
dest="sponsoring", action="store_true", default=False)
|
||||
parser.add_option("-u", "--upload", dest="upload", default=None,
|
||||
help="Specify an upload destination (default none).")
|
||||
parser.add_option("-U", "--update", dest="update", default=False,
|
||||
action="store_true",
|
||||
help="Update the build environment before building.")
|
||||
parser.add_option("-v", "--verbose", help="print more information",
|
||||
dest="verbose", action="store_true", default=False)
|
||||
parser.add_option("-w", "--workdir", dest="workdir",
|
||||
@ -737,5 +752,6 @@ if __name__ == "__main__":
|
||||
options.build = True
|
||||
options.upload = "ubuntu"
|
||||
|
||||
main(script_name, bug_number, options.build, options.edit, options.keyid,
|
||||
options.upload, options.workdir, builder, options.verbose)
|
||||
main(script_name, bug_number, options.update, options.build, options.edit,
|
||||
options.keyid, options.upload, options.workdir, builder,
|
||||
options.verbose)
|
||||
|
@ -50,6 +50,12 @@ class Pbuilder(Builder):
|
||||
Logger.command(cmd)
|
||||
return subprocess.call(cmd)
|
||||
|
||||
def update(self, dist):
|
||||
cmd = ["sudo", "-E", "DIST=" + dist, "pbuilder", "--update",
|
||||
"--distribution", dist, "--architecture", self.architecture]
|
||||
Logger.command(cmd)
|
||||
return subprocess.call(cmd)
|
||||
|
||||
|
||||
class Pbuilderdist(Builder):
|
||||
def __init__(self):
|
||||
@ -78,6 +84,36 @@ class Sbuild(Builder):
|
||||
os.chdir(workdir)
|
||||
return result
|
||||
|
||||
def update(self, dist):
|
||||
cmd = ["schroot", "--list"]
|
||||
Logger.command(cmd)
|
||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
||||
chroots, _ = p.communicate()
|
||||
chroots = chroots.strip().split()
|
||||
if p.returncode != 0:
|
||||
return p.returncode
|
||||
|
||||
params = {"dist": dist,
|
||||
"arch": self.architecture}
|
||||
for chroot in ("%(dist)s-%(arch)s-sbuild-source",
|
||||
"%(dist)s-sbuild-source",
|
||||
"%(dist)s-%(arch)s-source",
|
||||
"%(dist)s-source"):
|
||||
chroot = chroot % params
|
||||
if chroot in chroots:
|
||||
break
|
||||
else:
|
||||
return 1
|
||||
|
||||
commands = [["sbuild-update"],
|
||||
["sbuild-distupgrade"],
|
||||
["sbuild-clean", "-a", "-c"]]
|
||||
for cmd in commands:
|
||||
Logger.command(cmd + [chroot])
|
||||
ret = subprocess.call(cmd + [chroot])
|
||||
if ret != 0:
|
||||
return ret
|
||||
|
||||
|
||||
def getBuilder(builder=None):
|
||||
if not builder:
|
||||
|
Loading…
x
Reference in New Issue
Block a user