* add support for cowbuilder and cowbuilder-dist in builder.py

- allows use in sponsor-patch and backportpackage (LP: #728751)
This commit is contained in:
Stefano Rivera 2011-03-06 11:08:59 +02:00
commit 914af6bdfe
4 changed files with 30 additions and 13 deletions

4
debian/changelog vendored
View File

@ -11,6 +11,10 @@ ubuntu-dev-tools (0.120) UNRELEASED; urgency=low
* pull-{lp,debian}-source, pull-debian-debdiff: Catch KeyboardInterrupt.
(LP: #713845)
[ Julian Taylor ]
* add support for cowbuilder and cowbuilder-dist in builder.py
- allows use in sponsor-patch and backportpackage (LP: #728751)
-- Stefano Rivera <stefanor@debian.org> Sat, 05 Mar 2011 00:47:57 +0200
ubuntu-dev-tools (0.119) unstable; urgency=low

View File

@ -46,13 +46,15 @@ defaults to \fB~ppa1\fR, otherwise the default is blank.
.TP
.B \-b\fR, \fB\-\-build
Build the package with the specified builder before uploading. Note
for \fBpbuilder\fR(8) users: This assumes the common configuration,
for \fBcowbuilder\fR(8) and \fBpbuilder\fR(8) users:
This assumes the common configuration,
where the \fBARCH\fR and \fBDIST\fR environment is read by \fBpbuilderrc\fR(5)
to select the correct base image.
.TP
.B \-B \fIBUILDER\fR, \fB\-\-builder\fR=\fIBUILDER
Use the specified builder to build the package. Supported are
\fBpbuilder\fR(8), \fBpbuilder-dist\fR(1), and \fBsbuild\fR(1).
\fBcowbuilder\fR(8), \fBcowbuilder-dist\fR(1), \fBpbuilder\fR(8),
\fBpbuilder-dist\fR(1), and \fBsbuild\fR(1).
The default is \fBpbuilder\fR(8).
.TP
.B \-U\fR, \fB\-\-update

View File

@ -54,13 +54,15 @@ The output of the build tool will be placed in \fIworkdir\fR/\fBbuildresult/\fR.
.SH OPTIONS
.TP
.BR \-b ", " \-\-build
Build the package with the specified builder. Note for \fBpbuilder\fR(8) users:
Build the package with the specified builder. Note for \fBpbuilder\fR(8) and
\fBcowbuilder\fR(8) users:
This assumes the common configuration, where the \fBARCH\fR and \fBDIST\fR
environment is read by \fBpbuilderrc\fR(5) to select the correct base image.
.TP
.B \-B \fIBUILDER\fR, \fB\-\-builder\fR=\fIBUILDER
Use the specify builder to build the package.
Supported are \fBpbuilder\fR(8), \fBpbuilder-dist\fR(1), and \fBsbuild\fR(1).
Supported are \fBcowbuilder\fR(8), \fBcowbuilder-dist\fR(1), \fBpbuilder\fR(8),
\fBpbuilder-dist\fR(1), and \fBsbuild\fR(1).
The default is \fBpbuilder\fR(8).
.TP
.BR \-e ", " \-\-edit
@ -143,6 +145,8 @@ Performing a test build of bug \fB1234\fR in your PPA:
.BR dput (1),
.BR edit-patch (1),
.BR lintian (1),
.BR cowbuilder (8),
.BR cowbuilder-dist (1),
.BR pbuilder (8),
.BR pbuilder-dist (1),
.BR sbuild (1),

View File

@ -55,13 +55,14 @@ class Builder(object):
class Pbuilder(Builder):
def __init__(self):
def __init__(self, command="pbuilder"):
Builder.__init__(self, "pbuilder")
self._command = command
def build(self, dsc_file, dist, result_directory):
_build_preparation(result_directory)
cmd = ["sudo", "-E", "ARCH=" + self.architecture, "DIST=" + dist,
"pbuilder", "--build",
self._command, "--build",
"--architecture", self.architecture, "--distribution", dist,
"--buildresult", result_directory, dsc_file]
Logger.command(cmd)
@ -70,7 +71,7 @@ class Pbuilder(Builder):
def update(self, dist):
cmd = ["sudo", "-E", "ARCH=" + self.architecture, "DIST=" + dist,
"pbuilder", "--update",
self._command, "--update",
"--architecture", self.architecture, "--distribution", dist]
Logger.command(cmd)
returncode = subprocess.call(cmd)
@ -78,19 +79,20 @@ class Pbuilder(Builder):
class Pbuilderdist(Builder):
def __init__(self):
def __init__(self, command="pbuilder-dist"):
Builder.__init__(self, "pbuilder-dist")
self._command = command
def build(self, dsc_file, dist, result_directory):
_build_preparation(result_directory)
cmd = ["pbuilder-dist", dist, self.architecture,
cmd = [self._command, dist, self.architecture,
"build", dsc_file, "--buildresult", result_directory]
Logger.command(cmd)
returncode = subprocess.call(cmd)
return self._build_failure(returncode, dsc_file)
def update(self, dist):
cmd = ["pbuilder-dist", dist, self.architecture, "update"]
cmd = [self._command, dist, self.architecture, "update"]
Logger.command(cmd)
returncode = subprocess.call(cmd)
return self._update_failure(returncode, dist)
@ -146,12 +148,17 @@ class Sbuild(Builder):
def get_builder(builder):
if builder == 'pbuilder':
if builder == 'cowbuilder':
return Pbuilder("cowbuilder")
elif builder == 'cowbuilder-dist':
return Pbuilderdist("cowbuilder-dist")
elif builder == 'pbuilder':
return Pbuilder()
elif builder == 'pbuilder-dist':
return Pbuilderdist()
elif builder == 'sbuild':
return Sbuild()
Logger.error("Unsupported builder specified: %s. Only pbuilder, "
"pbuilder-dist and sbuild are supported." % builder)
Logger.error("Unsupported builder specified: %s. Only cowbuilder, "
"cowbuilder-dist, pbuilder, pbuilder-dist "
"and sbuild are supported." % builder)