mirror of
https://git.launchpad.net/ubuntu-dev-tools
synced 2025-03-13 08:01:09 +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,
|
default=None,
|
||||||
help='Specify the package builder (default: pbuilder)',
|
help='Specify the package builder (default: pbuilder)',
|
||||||
metavar='BUILDER')
|
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',
|
p.add_option('-u', '--upload',
|
||||||
dest='upload',
|
dest='upload',
|
||||||
help='Specify an upload destination',
|
help='Specify an upload destination',
|
||||||
@ -182,6 +187,11 @@ def do_build(workdir, package, release, bp_version, builder):
|
|||||||
if not builder:
|
if not builder:
|
||||||
return
|
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,
|
return builder.build(os.path.join(workdir,
|
||||||
'%s_%s.dsc' % (package, bp_version)),
|
'%s_%s.dsc' % (package, bp_version)),
|
||||||
release,
|
release,
|
||||||
|
2
debian/changelog
vendored
2
debian/changelog
vendored
@ -14,6 +14,8 @@ ubuntu-dev-tools (0.108) UNRELEASED; urgency=low
|
|||||||
|
|
||||||
[ Evan Broder ]
|
[ Evan Broder ]
|
||||||
* backportpackage: new script for testing backport requests in a PPA.
|
* 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 ]
|
[ Bilal Akhtar ]
|
||||||
* pbuilder-dist: Override the default build result location if
|
* 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
|
\fBpbuilder\fR(8), \fBpbuilder-dist\fR(1), and \fBsbuild\fR(1). This overrides
|
||||||
\fBUBUNTUTOOLS_BUILDER\fR. The default is \fBpbuilder\fR(8).
|
\fBUBUNTUTOOLS_BUILDER\fR. The default is \fBpbuilder\fR(8).
|
||||||
.TP
|
.TP
|
||||||
|
.B \-U, \-\-update
|
||||||
|
Update the build environment before attempting to build.
|
||||||
|
.TP
|
||||||
.B \-u \fIUPLOAD\fR, \-\-upload=\fIUPLOAD\fR
|
.B \-u \fIUPLOAD\fR, \-\-upload=\fIUPLOAD\fR
|
||||||
Upload to \fIUPLOAD\fR with \fBdput\fR(1) (after confirmation).
|
Upload to \fIUPLOAD\fR with \fBdput\fR(1) (after confirmation).
|
||||||
.TP
|
.TP
|
||||||
|
@ -77,6 +77,9 @@ Shortcut for sponsored uploads. Equivalent to \fB\-b \-u ubuntu\fR.
|
|||||||
.B \-u \fIDEST\fR, \fB\-\-upload\fR=\fIDEST
|
.B \-u \fIDEST\fR, \fB\-\-upload\fR=\fIDEST
|
||||||
Upload to \fIDEST\fR with \fBdput\fR(1) (after confirmation).
|
Upload to \fIDEST\fR with \fBdput\fR(1) (after confirmation).
|
||||||
.TP
|
.TP
|
||||||
|
.BR \-U ", " \-\-update
|
||||||
|
Update the build environment before attempting to build.
|
||||||
|
.TP
|
||||||
.BR \-v ", " \-\-verbose
|
.BR \-v ", " \-\-verbose
|
||||||
Print more information.
|
Print more information.
|
||||||
.TP
|
.TP
|
||||||
|
@ -409,8 +409,8 @@ def apply_patch(task, patch):
|
|||||||
edit = True
|
edit = True
|
||||||
return edit
|
return edit
|
||||||
|
|
||||||
def main(script_name, bug_number, build, edit, keyid, upload, workdir, builder,
|
def main(script_name, bug_number, update, build, edit, keyid, upload, workdir,
|
||||||
verbose=False):
|
builder, verbose=False):
|
||||||
workdir = os.path.expanduser(workdir)
|
workdir = os.path.expanduser(workdir)
|
||||||
if not os.path.isdir(workdir):
|
if not os.path.isdir(workdir):
|
||||||
try:
|
try:
|
||||||
@ -598,12 +598,24 @@ def main(script_name, bug_number, build, edit, keyid, upload, workdir, builder,
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
if build:
|
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")
|
buildresult = os.path.join(workdir, task.package + "-buildresult")
|
||||||
if not os.path.isdir(buildresult):
|
if not os.path.isdir(buildresult):
|
||||||
os.makedirs(buildresult)
|
os.makedirs(buildresult)
|
||||||
|
|
||||||
# build package
|
# build package
|
||||||
dist = re.sub("-.*$", "", changelog.distributions)
|
|
||||||
result = builder.build(new_dsc_file, dist, buildresult)
|
result = builder.build(new_dsc_file, dist, buildresult)
|
||||||
if result != 0:
|
if result != 0:
|
||||||
Logger.error("Failed to build %s from source with %s." % \
|
Logger.error("Failed to build %s from source with %s." % \
|
||||||
@ -706,6 +718,9 @@ if __name__ == "__main__":
|
|||||||
dest="sponsoring", action="store_true", default=False)
|
dest="sponsoring", action="store_true", default=False)
|
||||||
parser.add_option("-u", "--upload", dest="upload", default=None,
|
parser.add_option("-u", "--upload", dest="upload", default=None,
|
||||||
help="Specify an upload destination (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",
|
parser.add_option("-v", "--verbose", help="print more information",
|
||||||
dest="verbose", action="store_true", default=False)
|
dest="verbose", action="store_true", default=False)
|
||||||
parser.add_option("-w", "--workdir", dest="workdir",
|
parser.add_option("-w", "--workdir", dest="workdir",
|
||||||
@ -737,5 +752,6 @@ if __name__ == "__main__":
|
|||||||
options.build = True
|
options.build = True
|
||||||
options.upload = "ubuntu"
|
options.upload = "ubuntu"
|
||||||
|
|
||||||
main(script_name, bug_number, options.build, options.edit, options.keyid,
|
main(script_name, bug_number, options.update, options.build, options.edit,
|
||||||
options.upload, options.workdir, builder, options.verbose)
|
options.keyid, options.upload, options.workdir, builder,
|
||||||
|
options.verbose)
|
||||||
|
@ -50,6 +50,12 @@ class Pbuilder(Builder):
|
|||||||
Logger.command(cmd)
|
Logger.command(cmd)
|
||||||
return subprocess.call(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):
|
class Pbuilderdist(Builder):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -78,6 +84,36 @@ class Sbuild(Builder):
|
|||||||
os.chdir(workdir)
|
os.chdir(workdir)
|
||||||
return result
|
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):
|
def getBuilder(builder=None):
|
||||||
if not builder:
|
if not builder:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user