Use common error message for sponsor-patch and backportpackage.

This commit is contained in:
Benjamin Drung 2010-12-18 23:08:13 +01:00
parent a0ef5a7e20
commit 4afe3c8478
3 changed files with 26 additions and 15 deletions

View File

@ -205,8 +205,7 @@ def do_build(workdir, package, release, bp_version, builder, update):
if update: if update:
if 0 != builder.update(release): if 0 != builder.update(release):
error('Failed to update %s chroot for %s.' % \ sys.exit(1)
(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)),
@ -248,7 +247,7 @@ def do_backport(workdir, package, dscfile, version, suffix, release, build,
if build: if build:
if 0 != do_build(workdir, package, release, bp_version, builder, update): if 0 != do_build(workdir, package, release, bp_version, builder, update):
error('Package failed to build; aborting') sys.exit(1)
if upload: if upload:
do_upload(workdir, package, bp_version, upload, prompt) do_upload(workdir, package, bp_version, upload, prompt)

View File

@ -35,12 +35,24 @@ class Builder(object):
if not os.path.isdir(result_directory): if not os.path.isdir(result_directory):
os.makedirs(result_directory) os.makedirs(result_directory)
def build_failure(self, returncode, dsc_file):
if returncode != 0:
Logger.error("Failed to build %s from source with %s." % \
(os.path.basename(dsc_file), self.name))
return returncode
def get_architecture(self): def get_architecture(self):
return self.architecture return self.architecture
def get_name(self): def get_name(self):
return self.name return self.name
def update_failure(self, returncode, dist):
if returncode != 0:
Logger.error("Failed to update %s chroot for %s." % \
(dist, self.name))
return returncode
class Pbuilder(Builder): class Pbuilder(Builder):
def __init__(self): def __init__(self):
@ -53,13 +65,15 @@ class Pbuilder(Builder):
"--distribution", dist, "--architecture", self.architecture, "--distribution", dist, "--architecture", self.architecture,
"--buildresult", result_directory, dsc_file] "--buildresult", result_directory, dsc_file]
Logger.command(cmd) Logger.command(cmd)
return subprocess.call(cmd) returncode = subprocess.call(cmd)
return self.build_failure(returncode, dsc_file)
def update(self, dist): def update(self, dist):
cmd = ["sudo", "-E", "DIST=" + dist, "pbuilder", "--update", cmd = ["sudo", "-E", "DIST=" + dist, "pbuilder", "--update",
"--distribution", dist, "--architecture", self.architecture] "--distribution", dist, "--architecture", self.architecture]
Logger.command(cmd) Logger.command(cmd)
return subprocess.call(cmd) returncode = subprocess.call(cmd)
return self.update_failure(returncode, dist)
class Pbuilderdist(Builder): class Pbuilderdist(Builder):
@ -71,12 +85,14 @@ class Pbuilderdist(Builder):
cmd = ["pbuilder-dist", dist, self.architecture, cmd = ["pbuilder-dist", dist, self.architecture,
"build", dsc_file, "--buildresult", result_directory] "build", dsc_file, "--buildresult", result_directory]
Logger.command(cmd) Logger.command(cmd)
return subprocess.call(cmd) returncode = subprocess.call(cmd)
return self.build_failure(returncode, dsc_file)
def update(self, dist): def update(self, dist):
cmd = ["pbuilder-dist", dist, self.architecture, "update"] cmd = ["pbuilder-dist", dist, self.architecture, "update"]
Logger.command(cmd) Logger.command(cmd)
return subprocess.call(cmd) returncode = subprocess.call(cmd)
return self.update_failure(returncode, dist)
class Sbuild(Builder): class Sbuild(Builder):
@ -91,10 +107,10 @@ class Sbuild(Builder):
cmd = ["sbuild", "--arch-all", "--dist=" + dist, cmd = ["sbuild", "--arch-all", "--dist=" + dist,
"--arch=" + self.architecture, dsc_file] "--arch=" + self.architecture, dsc_file]
Logger.command(cmd) Logger.command(cmd)
result = subprocess.call(cmd) returncode = subprocess.call(cmd)
Logger.command(["cd", workdir]) Logger.command(["cd", workdir])
os.chdir(workdir) os.chdir(workdir)
return result return self.build_failure(returncode, dsc_file)
def update(self, dist): def update(self, dist):
cmd = ["schroot", "--list"] cmd = ["schroot", "--list"]
@ -124,7 +140,8 @@ class Sbuild(Builder):
Logger.command(cmd + [chroot]) Logger.command(cmd + [chroot])
ret = subprocess.call(cmd + [chroot]) ret = subprocess.call(cmd + [chroot])
if ret != 0: if ret != 0:
return ret return self.update_failure(ret, dist)
return 0
def getBuilder(builder=None): def getBuilder(builder=None):

View File

@ -403,8 +403,6 @@ def main(bug_number, update, build, edit, keyid, upload, workdir, builder,
if update: if update:
ret = builder.update(dist) ret = builder.update(dist)
if ret != 0: if ret != 0:
Logger.error("Failed to update %s chroot for %s." % \
(dist, builder.get_name()))
ask_for_manual_fixing() ask_for_manual_fixing()
break break
# We want to update the build environment only once, but not # We want to update the build environment only once, but not
@ -414,9 +412,6 @@ def main(bug_number, update, build, edit, keyid, upload, workdir, builder,
# build package # build package
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." % \
(os.path.basename(new_dsc_file),
builder.get_name()))
question = Question(["yes", "update", "retry", "no"]) question = Question(["yes", "update", "retry", "no"])
answer = question.ask("Do you want to resolve this issue " answer = question.ask("Do you want to resolve this issue "
"manually", "yes") "manually", "yes")