Merge lp:~jelmer/bzr-builddeb/upstream-parents-per-component into lp:bzr-builddeb
- upstream-parents-per-component
- Merge into trunk
Proposed by
Jelmer Vernooij
Status: | Merged |
---|---|
Approved by: | James Westby |
Approved revision: | 623 |
Merged at revision: | 627 |
Proposed branch: | lp:~jelmer/bzr-builddeb/upstream-parents-per-component |
Merge into: | lp:bzr-builddeb |
Prerequisite: | lp:~jelmer/bzr-builddeb/version-as-revisions |
Diff against target: |
357 lines (+65/-69) 7 files modified
cmds.py (+14/-10) dh_make.py (+2/-2) import_dsc.py (+17/-14) tests/blackbox/test_merge_upstream.py (+1/-1) tests/test_import_dsc.py (+6/-6) tests/test_upstream.py (+13/-4) upstream/pristinetar.py (+12/-32) |
To merge this branch: | bzr merge lp:~jelmer/bzr-builddeb/upstream-parents-per-component |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
James Westby | Approve | ||
Review via email: mp+77070@code.launchpad.net |
Commit message
Description of the change
Pass parents for upstream revisions around per component.
To post a comment you must log in.
- 623. By Jelmer Vernooij
-
remove unused method
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'cmds.py' |
2 | --- cmds.py 2011-09-26 23:48:23 +0000 |
3 | +++ cmds.py 2011-09-26 23:48:23 +0000 |
4 | @@ -955,19 +955,24 @@ |
5 | if db.pristine_upstream_source.has_version(None, version): |
6 | raise BzrCommandError("Version %s is already present." % version) |
7 | tagged_versions = {} |
8 | - for tag, tag_version, revid in db.pristine_upstream_source.iter_versions(): |
9 | - tagged_versions[Version(tag_version)] = revid |
10 | + for tversion, tcomponents in db.pristine_upstream_source.iter_versions(): |
11 | + tagged_versions[Version(version)] = tcomponents |
12 | tag_order = sorted(tagged_versions.keys()) |
13 | if tag_order: |
14 | - parents = [tagged_versions[tag_order[-1]]] |
15 | + base_revisions = tagged_versions[tag_order[-1]] |
16 | else: |
17 | - parents = [] |
18 | - if parents: |
19 | + base_revisions = {} |
20 | + if base_revisions: |
21 | if upstream is not None: |
22 | # See bug lp:309682 |
23 | - upstream.repository.fetch(branch.repository, parents[0]) |
24 | - db.extract_upstream_tree({ None: parents[0] }, tempdir) |
25 | + for parent in base_revisions.values(): |
26 | + upstream.repository.fetch(branch.repository, parent) |
27 | + db.extract_upstream_tree(base_revisions, tempdir) |
28 | + parents = {} |
29 | + for name, base_revid in base_revisions.iteritems(): |
30 | + parents[name] = [base_revid] |
31 | else: |
32 | + parents = {} |
33 | db._create_empty_upstream_tree(tempdir) |
34 | tree = db.branch.basis_tree() |
35 | tree.lock_read() |
36 | @@ -1224,9 +1229,8 @@ |
37 | dh_make.run_dh_make(tree, package_name, version, use_v3=v3) |
38 | finally: |
39 | tree.unlock() |
40 | - note('Package prepared in %s' |
41 | - % urlutils.unescape_for_display(tree.basedir, |
42 | - self.outf.encoding)) |
43 | + note('Package prepared in %s', |
44 | + urlutils.unescape_for_display(tree.basedir, self.outf.encoding)) |
45 | |
46 | |
47 | class cmd_dep3_patch(Command): |
48 | |
49 | === modified file 'dh_make.py' |
50 | --- dh_make.py 2011-09-09 13:20:42 +0000 |
51 | +++ dh_make.py 2011-09-26 23:48:23 +0000 |
52 | @@ -79,9 +79,9 @@ |
53 | def import_upstream(tarball, package_name, version, use_v3=False): |
54 | tree = _get_tree(package_name) |
55 | if tree.branch.last_revision() != mod_revision.NULL_REVISION: |
56 | - parents = [tree.branch.last_revision()] |
57 | + parents = { None: [tree.branch.last_revision()] } |
58 | else: |
59 | - parents = [] |
60 | + parents = {} |
61 | tarball_filenames = _get_tarballs(tree, tarball, |
62 | package_name, version, use_v3=use_v3) |
63 | db = import_dsc.DistributionBranch(tree.branch, tree.branch, tree=tree, |
64 | |
65 | === modified file 'import_dsc.py' |
66 | --- import_dsc.py 2011-09-26 23:48:23 +0000 |
67 | +++ import_dsc.py 2011-09-26 23:48:23 +0000 |
68 | @@ -784,8 +784,8 @@ |
69 | break |
70 | real_parents = [p[2] for p in parents] |
71 | if need_upstream_parent: |
72 | - upstream_revids = self.pristine_upstream_source.version_as_revisions(package, |
73 | - version.upstream_version, tarballs) |
74 | + upstream_revids = self.pristine_upstream_source.version_as_revisions( |
75 | + package, version.upstream_version, tarballs) |
76 | def key(a): |
77 | if a is None: |
78 | return None |
79 | @@ -829,13 +829,14 @@ |
80 | # TODO: this method needs a lot of work for when we will make |
81 | # the branches writeable by others. |
82 | assert isinstance(version, str) |
83 | - mutter("Importing upstream version %s from %s with parents %s" \ |
84 | - % (version, upstream_part, str(upstream_parents))) |
85 | + mutter("Importing upstream version %s from %s with parents %r" \ |
86 | + % (version, upstream_part, upstream_parents)) |
87 | assert self.pristine_upstream_tree is not None, \ |
88 | "Can't import upstream with no tree" |
89 | other_branches = self.get_other_branches() |
90 | ret = [] |
91 | for (tarball, component, md5) in upstream_tarballs: |
92 | + parents = upstream_parents.get(component, []) |
93 | if upstream_revisions is not None: |
94 | revid = upstream_revisions[component] |
95 | else: |
96 | @@ -850,7 +851,7 @@ |
97 | self.pristine_upstream_branch.fetch(upstream_branch, |
98 | last_revision=revid) |
99 | upstream_branch.tags.merge_to(self.pristine_upstream_branch.tags) |
100 | - upstream_parents.append(revid) |
101 | + parents.append(revid) |
102 | target_tree = self.pristine_upstream_branch.repository.revision_tree( |
103 | revid) |
104 | if file_ids_from is not None: |
105 | @@ -861,8 +862,8 @@ |
106 | else: |
107 | self_tree = self.branch.basis_tree() |
108 | self_tree.lock_read() |
109 | - if len(upstream_parents) > 0: |
110 | - parent_revid = upstream_parents[0] |
111 | + if len(parents) > 0: |
112 | + parent_revid = parents[0] |
113 | else: |
114 | parent_revid = NULL_REVISION |
115 | self.pristine_upstream_tree.pull(self.pristine_upstream_tree.branch, |
116 | @@ -878,7 +879,7 @@ |
117 | finally: |
118 | self_tree.unlock() |
119 | (tag, revid) = self.pristine_upstream_source.import_component_tarball( |
120 | - package, version, self.pristine_upstream_tree, upstream_parents, |
121 | + package, version, self.pristine_upstream_tree, parents, |
122 | component, md5, tarball, author=author, timestamp=timestamp) |
123 | self.pristine_upstream_branch.generate_revision_history(revid) |
124 | ret.append((component, tag, revid)) |
125 | @@ -1086,7 +1087,8 @@ |
126 | last_revision=pull_revid) |
127 | pull_branch.pristine_upstream_branch.tags.merge_to( |
128 | self.pristine_upstream_branch.tags) |
129 | - return parents |
130 | + # FIXME: What about other versions ? |
131 | + return { None: parents } |
132 | |
133 | def get_changelog_from_source(self, dir): |
134 | cl_filename = os.path.join(dir, "debian", "changelog") |
135 | @@ -1384,11 +1386,12 @@ |
136 | tarball_dir = self._extract_tarballs_to_tempdir(upstream_tarballs) |
137 | try: |
138 | # FIXME: should use upstream_parents()? |
139 | - parents = [] |
140 | + parents = { None: [] } |
141 | if self.pristine_upstream_branch.last_revision() != NULL_REVISION: |
142 | - parents = [self.pristine_upstream_branch.last_revision()] |
143 | + parents = { None: [self.pristine_upstream_branch.last_revision()] } |
144 | for (component, tag, revid) in self.import_upstream(tarball_dir, |
145 | - package, version, parents, upstream_tarballs=upstream_tarballs, |
146 | + package, version, parents, |
147 | + upstream_tarballs=upstream_tarballs, |
148 | upstream_branch=upstream_branch, |
149 | upstream_revisions=upstream_revisions): |
150 | self._fetch_upstream_to_branch(revid) |
151 | @@ -1403,10 +1406,10 @@ |
152 | # missing a proper history link and a criss-cross merge |
153 | # then recurses and finds no deeper ancestor. |
154 | # Use the previous upstream import as the from revision |
155 | - if len(parents) == 0: |
156 | + if len(parents[None]) == 0: |
157 | from_revision = NULL_REVISION |
158 | else: |
159 | - from_revision = parents[0] |
160 | + from_revision = parents[None][0] |
161 | conflicts = self.tree.merge_from_branch( |
162 | self.pristine_upstream_branch, merge_type=merge_type, |
163 | from_revision=from_revision) |
164 | |
165 | === modified file 'tests/blackbox/test_merge_upstream.py' |
166 | --- tests/blackbox/test_merge_upstream.py 2011-07-20 19:14:43 +0000 |
167 | +++ tests/blackbox/test_merge_upstream.py 2011-09-26 23:48:23 +0000 |
168 | @@ -98,7 +98,7 @@ |
169 | [(self.tar.tarball, None, md5sum_filename(self.tar.tarball))], |
170 | "foo", |
171 | str(self.tar.version), |
172 | - [tree.branch.last_revision()]) |
173 | + { None: [tree.branch.last_revision()]} ) |
174 | package_builder = SourcePackageBuilder("foo", |
175 | str(self.tar.version)+"-1") |
176 | package_builder.add_default_control() |
177 | |
178 | === modified file 'tests/test_import_dsc.py' |
179 | --- tests/test_import_dsc.py 2011-09-26 23:48:23 +0000 |
180 | +++ tests/test_import_dsc.py 2011-09-26 23:48:23 +0000 |
181 | @@ -787,7 +787,7 @@ |
182 | element in contents] |
183 | self.build_tree_contents(contents) |
184 | self.db1.import_upstream(basedir, "package", version.upstream_version, |
185 | - [], [(None, None, None)]) |
186 | + {}, [(None, None, None)]) |
187 | return version |
188 | |
189 | def test_import_upstream(self): |
190 | @@ -821,7 +821,7 @@ |
191 | write_to_file(os.path.join(basedir, "README"), "Hi\n") |
192 | write_to_file(os.path.join(basedir, "BUGS"), "") |
193 | write_to_file(os.path.join(basedir, "COPYING"), "") |
194 | - self.db1.import_upstream(basedir, "package", version1.upstream_version, [], |
195 | + self.db1.import_upstream(basedir, "package", version1.upstream_version, {}, |
196 | [(None, None, None)]) |
197 | basedir = name + "-" + str(version2.upstream_version) |
198 | os.mkdir(basedir) |
199 | @@ -829,7 +829,7 @@ |
200 | write_to_file(os.path.join(basedir, "BUGS"), "") |
201 | write_to_file(os.path.join(basedir, "NEWS"), "") |
202 | self.db1.import_upstream(basedir, "package", version2.upstream_version, |
203 | - [self.up_tree1.branch.last_revision()], [(None, None, None)]) |
204 | + { None: [self.up_tree1.branch.last_revision()] }, [(None, None, None)]) |
205 | tree = self.up_tree1 |
206 | branch = tree.branch |
207 | rh = branch.revision_history() |
208 | @@ -862,7 +862,7 @@ |
209 | tf.add(basedir) |
210 | finally: |
211 | tf.close() |
212 | - self.db1.import_upstream(basedir, "package", version.upstream_version, [], |
213 | + self.db1.import_upstream(basedir, "package", version.upstream_version, {}, |
214 | upstream_tarballs=[(os.path.abspath(tar_path), None, self.fake_md5_1)]) |
215 | tree = self.up_tree1 |
216 | branch = tree.branch |
217 | @@ -891,7 +891,7 @@ |
218 | finally: |
219 | tf.close() |
220 | self.db1.import_upstream(basedir, "package", version.upstream_version, |
221 | - [], upstream_tarballs=[(os.path.abspath(tar_path), None, self.fake_md5_1)]) |
222 | + {}, upstream_tarballs=[(os.path.abspath(tar_path), None, self.fake_md5_1)]) |
223 | tree = self.up_tree1 |
224 | branch = tree.branch |
225 | rh = branch.revision_history() |
226 | @@ -940,7 +940,7 @@ |
227 | finally: |
228 | f.close() |
229 | self.db1.import_upstream(basedir, "package", version.upstream_version, |
230 | - [], upstream_tarballs=[(os.path.abspath(tar_path), None, self.fake_md5_1)]) |
231 | + {}, upstream_tarballs=[(os.path.abspath(tar_path), None, self.fake_md5_1)]) |
232 | tree = self.up_tree1 |
233 | branch = tree.branch |
234 | rh = branch.revision_history() |
235 | |
236 | === modified file 'tests/test_upstream.py' |
237 | --- tests/test_upstream.py 2011-09-26 23:48:23 +0000 |
238 | +++ tests/test_upstream.py 2011-09-26 23:48:23 +0000 |
239 | @@ -25,7 +25,6 @@ |
240 | from base64 import standard_b64encode |
241 | |
242 | import bz2 |
243 | -import gzip |
244 | import os |
245 | import tarfile |
246 | import zipfile |
247 | @@ -713,14 +712,24 @@ |
248 | class TestUpstreamTagVersion(TestCase): |
249 | |
250 | def test_simple_upstream(self): |
251 | - self.assertEqual('2.1', upstream_tag_version('upstream-2.1')) |
252 | + self.assertEqual((None, '2.1'), upstream_tag_version('upstream-2.1')) |
253 | |
254 | def test_distro_upstream(self): |
255 | - self.assertEqual('2.1', |
256 | + self.assertEqual((None, '2.1'), |
257 | upstream_tag_version('upstream-debian-2.1')) |
258 | |
259 | def test_git_upstream(self): |
260 | - self.assertEqual('2.1', upstream_tag_version('upstream/2.1')) |
261 | + self.assertEqual((None, '2.1'), upstream_tag_version('upstream/2.1')) |
262 | + |
263 | + def test_git_upstream_component(self): |
264 | + self.assertEqual(("lib", '2.1'), upstream_tag_version('upstream/2.1/lib')) |
265 | + |
266 | + def test_simple_upstream_component(self): |
267 | + self.assertEqual(("lib", '2.1'), upstream_tag_version('upstream-2.1/lib')) |
268 | + |
269 | + def test_distro_upstream_component(self): |
270 | + self.assertEqual(("lib", '2.1'), |
271 | + upstream_tag_version('upstream-debian-2.1/lib')) |
272 | |
273 | |
274 | class PristineTarSourceTests(TestCaseWithTransport): |
275 | |
276 | === modified file 'upstream/pristinetar.py' |
277 | --- upstream/pristinetar.py 2011-09-26 23:48:23 +0000 |
278 | +++ upstream/pristinetar.py 2011-09-26 23:48:23 +0000 |
279 | @@ -160,35 +160,6 @@ |
280 | self.branch.tags.set_tag(tag_name, revid) |
281 | return tag_name, revid |
282 | |
283 | - def import_tarballs(self, package, version, tree, parent_ids, tarballs, |
284 | - timestamp=None, author=None): |
285 | - """Import the upstream tarballs. |
286 | - |
287 | - :param package: Package name |
288 | - :param version: Package version |
289 | - :param path: Path with tree to import |
290 | - :param parent_ids: Parent revisions |
291 | - :param tarballs: List of (path, component, md5) |
292 | - :param timestamp: Optional timestamp for new commits |
293 | - :param author: Optional author for new commitscopmone |
294 | - :return: List of tuples with (component, tag, revid) |
295 | - """ |
296 | - ret = [] |
297 | - component_paths = [cp for (_, cp, _) in tarballs if cp is not None] |
298 | - for (tarball, component, md5) in tarballs: |
299 | - if component is None: |
300 | - exclude = component_paths |
301 | - else: |
302 | - exclude = [] |
303 | - (tag, revid) = self.import_component_tarball( |
304 | - package, version, tree, parent_ids, component, |
305 | - md5, tarball, author=author, timestamp=timestamp, |
306 | - exclude=exclude) |
307 | - ret.append((component, tag, revid)) |
308 | - # FIXME: Handle multiple components |
309 | - tree.branch.generate_revision_history(revid) |
310 | - return ret |
311 | - |
312 | def import_component_tarball(self, package, version, tree, parent_ids, |
313 | component=None, md5=None, tarball=None, author=None, timestamp=None, |
314 | subdir=None, exclude=None): |
315 | @@ -196,6 +167,7 @@ |
316 | |
317 | :param package: Package name |
318 | :param version: Upstream version |
319 | + :param parent_ids: Dictionary mapping component names to revision ids |
320 | :param component: Component name (None for base) |
321 | :param exclude: Exclude directories |
322 | """ |
323 | @@ -418,10 +390,13 @@ |
324 | |
325 | :return: Iterator over (tag_name, version, revid) tuples |
326 | """ |
327 | + ret = {} |
328 | for tag_name, tag_revid in self.branch.tags.get_tag_dict().iteritems(): |
329 | if not is_upstream_tag(tag_name): |
330 | continue |
331 | - yield (tag_name, upstream_tag_version(tag_name), tag_revid) |
332 | + (component, version) = upstream_tag_version(tag_name) |
333 | + ret.setdefault(version, {})[component] = tag_revid |
334 | + return ret.iteritems() |
335 | |
336 | |
337 | def is_upstream_tag(tag): |
338 | @@ -437,7 +412,7 @@ |
339 | """Return the upstream version portion of an upstream tag name. |
340 | |
341 | :param tag: The string name of the tag. |
342 | - :return: The version portion of the tag. |
343 | + :return: tuple with version portion of the tag and component name |
344 | """ |
345 | assert is_upstream_tag(tag), "Not an upstream tag: %s" % tag |
346 | if tag.startswith('upstream/'): |
347 | @@ -448,4 +423,9 @@ |
348 | tag = tag[len('debian-'):] |
349 | elif tag.startswith('ubuntu-'): |
350 | tag = tag[len('ubuntu-'):] |
351 | - return tag |
352 | + if not '/' in tag: |
353 | + return (None, tag) |
354 | + (version, component) = tag.rsplit('/', 1) |
355 | + if component == "": |
356 | + component = None |
357 | + return (component, version) |
10 + for tversion, tcomponents in db.pristine_ upstream_ source. iter_versions( ): versions[ Version( version) ] = tcomponents
11 + tagged_
Just wanted to check that it is intentional that tversion isn't used in the loop.
Thanks,
James