Merge lp:~broder/ubuntu-dev-tools/update-builder into lp:~ubuntu-dev/ubuntu-dev-tools/trunk

Proposed by Evan Broder
Status: Merged
Merged at revision: 834
Proposed branch: lp:~broder/ubuntu-dev-tools/update-builder
Merge into: lp:~ubuntu-dev/ubuntu-dev-tools/trunk
Diff against target: 174 lines (+71/-5)
6 files modified
backportpackage (+10/-0)
debian/changelog (+3/-1)
doc/backportpackage.1 (+3/-0)
doc/sponsor-patch.1 (+3/-0)
sponsor-patch (+17/-4)
ubuntutools/builder.py (+35/-0)
To merge this branch: bzr merge lp:~broder/ubuntu-dev-tools/update-builder
Reviewer Review Type Date Requested Status
Ubuntu Development Team Pending
Review via email: mp+44019@code.launchpad.net

This proposal supersedes a proposal from 2010-12-17.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'backportpackage'
2--- backportpackage 2010-12-16 22:43:48 +0000
3+++ backportpackage 2010-12-17 09:51:10 +0000
4@@ -64,6 +64,11 @@
5 default=None,
6 help='Specify the package builder (default: pbuilder)',
7 metavar='BUILDER')
8+ p.add_option('-U', '--update',
9+ dest='update',
10+ default=False,
11+ action='store_true',
12+ help='Update the build environment before attempting to build')
13 p.add_option('-u', '--upload',
14 dest='upload',
15 help='Specify an upload destination',
16@@ -182,6 +187,11 @@
17 if not builder:
18 return
19
20+ if opts.update:
21+ if 0 != builder.update(release):
22+ error('Failed to update %s chroot for %s.' % \
23+ (release, builder.get_name()))
24+
25 return builder.build(os.path.join(workdir,
26 '%s_%s.dsc' % (package, bp_version)),
27 release,
28
29=== modified file 'debian/changelog'
30--- debian/changelog 2010-12-16 22:43:48 +0000
31+++ debian/changelog 2010-12-17 09:51:10 +0000
32@@ -14,8 +14,10 @@
33
34 [ Evan Broder ]
35 * backportpackage: new script for testing backport requests in a PPA.
36+ * sponsor-patch: Add --update option to make sure build environment is
37+ up to date (LP: #689605)
38
39- -- Benjamin Drung <bdrung@ubuntu.com> Thu, 16 Dec 2010 23:40:14 +0100
40+ -- Evan Broder <evan@ebroder.net> Fri, 17 Dec 2010 01:46:50 -0800
41
42 ubuntu-dev-tools (0.107) experimental; urgency=low
43
44
45=== modified file 'doc/backportpackage.1'
46--- doc/backportpackage.1 2010-12-16 09:05:29 +0000
47+++ doc/backportpackage.1 2010-12-17 09:51:10 +0000
48@@ -33,6 +33,9 @@
49 \fBpbuilder\fR(8) and \fBsbuild\fR(1). This overrides
50 \fBUBUNTUTOOLS_BUILDER\fR. The default is \fBpbuilder\fR(8).
51 .TP
52+.B \-U, \-\-update
53+Update the builder environment before attempting to build.
54+.TP
55 .B \-u \fIUPLOAD\fR, \-\-upload=\fIUPLOAD\fR
56 Upload to \fIUPLOAD\fR with \fBdput\fR(1) (after confirmation).
57 .TP
58
59=== modified file 'doc/sponsor-patch.1'
60--- doc/sponsor-patch.1 2010-12-16 22:43:48 +0000
61+++ doc/sponsor-patch.1 2010-12-17 09:51:10 +0000
62@@ -77,6 +77,9 @@
63 .B \-u \fIDEST\fR, \fB\-\-upload\fR=\fIDEST
64 Upload to \fIDEST\fR with \fBdput\fR(1) (after confirmation).
65 .TP
66+.BR \-U ", " \-\-update
67+Make sure the build environment is up to date before building.
68+.TP
69 .BR \-v ", " \-\-verbose
70 Print more information.
71 .TP
72
73=== modified file 'sponsor-patch'
74--- sponsor-patch 2010-12-13 03:45:52 +0000
75+++ sponsor-patch 2010-12-17 09:51:10 +0000
76@@ -409,8 +409,8 @@
77 edit = True
78 return edit
79
80-def main(script_name, bug_number, build, edit, keyid, upload, workdir, builder,
81- verbose=False):
82+def main(script_name, bug_number, update, build, edit, keyid, upload, workdir,
83+ builder, verbose=False):
84 workdir = os.path.expanduser(workdir)
85 if not os.path.isdir(workdir):
86 try:
87@@ -598,6 +598,15 @@
88 continue
89
90 if build:
91+ if update:
92+ ret = builder.update()
93+ if ret != 0:
94+ Logger.error("Failed to update %s chroot for %s." % \
95+ (changelog.distributions,
96+ builder.get_name()))
97+ ask_for_manual_fixing()
98+ continue
99+
100 buildresult = os.path.join(workdir, task.package + "-buildresult")
101 if not os.path.isdir(buildresult):
102 os.makedirs(buildresult)
103@@ -706,6 +715,9 @@
104 dest="sponsoring", action="store_true", default=False)
105 parser.add_option("-u", "--upload", dest="upload", default=None,
106 help="Specify an upload destination (default none).")
107+ parser.add_option("-U", "--update", dest="update", default=False,
108+ action="store_true",
109+ help="Update builder chroot before building")
110 parser.add_option("-v", "--verbose", help="print more information",
111 dest="verbose", action="store_true", default=False)
112 parser.add_option("-w", "--workdir", dest="workdir",
113@@ -737,5 +749,6 @@
114 options.build = True
115 options.upload = "ubuntu"
116
117- main(script_name, bug_number, options.build, options.edit, options.keyid,
118- options.upload, options.workdir, builder, options.verbose)
119+ main(script_name, bug_number, options.update, options.build, options.edit,
120+ options.keyid, options.upload, options.workdir, builder,
121+ options.verbose)
122
123=== modified file 'ubuntutools/builder.py'
124--- ubuntutools/builder.py 2010-12-13 04:20:40 +0000
125+++ ubuntutools/builder.py 2010-12-17 09:51:10 +0000
126@@ -50,6 +50,11 @@
127 Logger.command(cmd)
128 return subprocess.call(cmd)
129
130+ def update(self, dist):
131+ cmd = ["sudo", "-E", "DIST=" + dist, "pbuilder", "--update"]
132+ Logger.command(cmd)
133+ return subprocess.call(cmd)
134+
135
136 class Sbuild(Builder):
137 def __init__(self):
138@@ -67,6 +72,36 @@
139 os.chdir(workdir)
140 return result
141
142+ def update(self, dist):
143+ cmd = ["schroot", "--list"]
144+ Logger.command(cmd)
145+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
146+ chroots, _ = p.communicate()
147+ chroots = chroots.strip().split()
148+ if p.returncode != 0:
149+ return p.returncode
150+
151+ params = {"dist": dist,
152+ "arch": self.architecture}
153+ for chroot in ("%(dist)s-%(arch)s-sbuild-source",
154+ "%(dist)s-sbuild-source",
155+ "%(dist)s-%(arch)s-source",
156+ "%(dist)s-source"):
157+ chroot = chroot % params
158+ if chroot in chroots:
159+ break
160+ else:
161+ return 1
162+
163+ commands = [["sbuild-update"],
164+ ["sbuild-distupgrade"],
165+ ["sbuild-clean", "-a", "-c"]]
166+ for cmd in commands:
167+ Logger.command(cmd + [chroot])
168+ ret = subprocess.call(cmd + [chroot])
169+ if ret != 0:
170+ return ret
171+
172
173 def getBuilder(builder=None):
174 if not builder:

Subscribers

People subscribed via source and target branches

to status/vote changes: