Merge lp:~jelmer/bzr-builddeb/some-refactoring into lp:bzr-builddeb

Proposed by Jelmer Vernooij
Status: Merged
Approved by: James Westby
Approved revision: 645
Merged at revision: 644
Proposed branch: lp:~jelmer/bzr-builddeb/some-refactoring
Merge into: lp:bzr-builddeb
Diff against target: 231 lines (+57/-64)
2 files modified
import_dsc.py (+56/-64)
upstream/pristinetar.py (+1/-0)
To merge this branch: bzr merge lp:~jelmer/bzr-builddeb/some-refactoring
Reviewer Review Type Date Requested Status
James Westby Approve
Review via email: mp+82279@code.launchpad.net

Description of the change

Simplify some things in import_dsc.py.

Also, set the 'debcomponent' property - it seems like this might come in handy in the future.

Support multiple upstream tarballs in pull_upstream_from_branch.

To post a comment you must log in.
Revision history for this message
James Westby (james-w) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'import_dsc.py'
2--- import_dsc.py 2011-11-08 10:23:38 +0000
3+++ import_dsc.py 2011-11-15 14:15:29 +0000
4@@ -70,6 +70,7 @@
5 FORMAT_3_0_QUILT,
6 FORMAT_3_0_NATIVE,
7 component_from_orig_tarball,
8+ export,
9 extract_orig_tarballs,
10 get_commit_info_from_changelog,
11 md5sum_filename,
12@@ -110,6 +111,7 @@
13 def get_transport(self, name):
14 return self.transport_cache[name]
15
16+
17 class DscComp(object):
18
19 def __init__(self, cache):
20@@ -127,7 +129,6 @@
21 return -1
22
23
24-
25 class DistributionBranchSet(object):
26 """A collection of DistributionBranches with an ordering.
27
28@@ -194,6 +195,21 @@
29 return self._branch_list[index+1:]
30
31
32+def checkout_upstream_version(tree, package, version, revisions):
33+ """Checkout an upstream version from the pristine tar source.
34+
35+ """
36+ tree.update(revision=revisions[None])
37+ parent_ids = []
38+ for component in sorted(revisions.keys()):
39+ revid = revisions[component]
40+ if component is not None:
41+ component_tree = tree.branch.repository.revision_tree(revid)
42+ export(component_tree, os.path.join(tree.basedir, component), format='dir')
43+ parent_ids.append(revid)
44+ tree.set_parent_ids(parent_ids)
45+
46+
47 class DistributionBranch(object):
48 """A DistributionBranch is a representation of one line of development.
49
50@@ -647,30 +663,16 @@
51 self.revid_of_version(last_contained_version))]
52 else:
53 mutter("We don't have any of those versions")
54- for branch in reversed(self.get_lesser_branches()):
55+ for branch in list(reversed(self.get_lesser_branches())) + self.get_greater_branches():
56 merged, missing_versions = \
57 branch.contained_versions(missing_versions)
58 if merged:
59 revid = branch.revid_of_version(merged[0])
60 parents.append((branch, merged[0], revid))
61- mutter("Adding merge from lesser of %s for version %s"
62+ mutter("Adding merge from related branch of %s for version %s"
63 % (revid, str(merged[0])))
64 #FIXME: should this really be here?
65- branch.branch.tags.merge_to(self.branch.tags)
66- self.branch.fetch(branch.branch,
67- last_revision=revid)
68- for branch in self.get_greater_branches():
69- merged, missing_versions = \
70- branch.contained_versions(missing_versions)
71- if merged:
72- revid = branch.revid_of_version(merged[0])
73- parents.append((branch, merged[0], revid))
74- mutter("Adding merge from greater of %s for version %s"
75- % (revid, str(merged[0])))
76- #FIXME: should this really be here?
77- branch.branch.tags.merge_to(self.branch.tags)
78- self.branch.fetch(branch.branch,
79- last_revision=revid)
80+ self._fetch_from_branch(branch, revid)
81 return parents
82
83 def pull_upstream_from_branch(self, pull_branch, package, version):
84@@ -691,18 +693,18 @@
85 assert isinstance(version, str)
86 pull_revisions = pull_branch.pristine_upstream_source.version_as_revisions(
87 package, version)
88- if pull_revisions.keys() != [None]:
89- raise MultipleUpstreamTarballsNotSupported()
90- pull_revision = pull_revisions[None]
91- mutter("Pulling upstream part of %s from revision %s" % \
92- (version, pull_revision))
93- assert self.pristine_upstream_tree is not None, \
94- "Can't pull upstream with no tree"
95- self.pristine_upstream_tree.pull(pull_branch.pristine_upstream_branch,
96- stop_revision=pull_revision)
97- self.pristine_upstream_source.tag_version(version, pull_revision)
98- self.branch.fetch(self.pristine_upstream_branch, last_revision=pull_revision)
99- self.pristine_upstream_branch.tags.merge_to(self.branch.tags)
100+ for (component, pull_revision) in pull_revisions.iteritems():
101+ mutter("Fetching upstream part %s of %s from revision %s" % \
102+ (component, version, pull_revision))
103+ assert self.pristine_upstream_tree is not None, \
104+ "Can't pull upstream with no tree"
105+ self.pristine_upstream_branch.pull(pull_branch.pristine_upstream_branch,
106+ stop_revision=pull_revision)
107+ self.pristine_upstream_source.tag_version(version, pull_revision)
108+ self.branch.fetch(self.pristine_upstream_branch, last_revision=pull_revision)
109+ self.pristine_upstream_branch.tags.merge_to(self.branch.tags)
110+ checkout_upstream_version(self.pristine_upstream_tree,
111+ package, version, pull_revisions)
112
113 def pull_version_from_branch(self, pull_branch, package, version, native=False):
114 """Pull a version from a particular branch.
115@@ -800,13 +802,14 @@
116 real_parents = [upstream_revids[component]]
117 return real_parents
118
119- def _fetch_upstream_to_branch(self, revid):
120+ def _fetch_upstream_to_branch(self, imported_revids):
121 """Fetch the revision from the upstream branch in to the packaging one.
122 """
123 # Make sure we see any revisions added by the upstream branch
124 # since self.tree was locked.
125 self.branch.repository.refresh_data()
126- self.branch.fetch(self.pristine_upstream_branch, last_revision=revid)
127+ for (component, tag, revid) in imported_revids:
128+ self.branch.fetch(self.pristine_upstream_branch, last_revision=revid)
129 self.pristine_upstream_branch.tags.merge_to(self.branch.tags)
130
131 def import_upstream(self, upstream_part, package, version, upstream_parents,
132@@ -1100,6 +1103,13 @@
133 cl.parse_changelog(open(cl_filename).read(), strict=False)
134 return cl
135
136+ def _fetch_from_branch(self, branch, revid):
137+ branch.branch.tags.merge_to(self.branch.tags)
138+ self.branch.fetch(branch.branch, last_revision=revid)
139+ if self.pristine_upstream_branch.last_revision() == NULL_REVISION:
140+ self.pristine_upstream_tree.pull(branch.pristine_upstream_branch)
141+ branch.pristine_upstream_branch.tags.merge_to(self.pristine_upstream_branch.tags)
142+
143 def _import_normal_package(self, package, version, versions, debian_part, md5,
144 upstream_part, upstream_tarballs, timestamp=None, author=None,
145 file_ids_from=None, pull_debian=True):
146@@ -1145,13 +1155,13 @@
147 # from another branch:
148 upstream_parents = self.upstream_parents(package, versions,
149 version.upstream_version)
150- for (component, tag, revid) in self.import_upstream(upstream_part,
151+ imported_revids = self.import_upstream(upstream_part,
152 package, version.upstream_version,
153 upstream_parents,
154 upstream_tarballs=upstream_tarballs,
155 timestamp=timestamp, author=author,
156- file_ids_from=file_ids_from):
157- self._fetch_upstream_to_branch(revid)
158+ file_ids_from=file_ids_from)
159+ self._fetch_upstream_to_branch(imported_revids)
160 else:
161 mutter("We already have the needed upstream part")
162 parents = self.get_parents_with_upstream(package, version, versions,
163@@ -1167,32 +1177,14 @@
164 else:
165 parents = [self.revid_of_version(last_contained_version)]
166 missing_versions = self.missing_versions(versions)
167- for branch in reversed(self.get_lesser_branches()):
168- merged, missing_versions = \
169- branch.contained_versions(missing_versions)
170- if merged:
171- revid = branch.revid_of_version(merged[0])
172- parents.append(revid)
173- #FIXME: should this really be here?
174- branch.branch.tags.merge_to(self.branch.tags)
175- self.branch.fetch(branch.branch,
176- last_revision=revid)
177- if self.pristine_upstream_branch.last_revision() == NULL_REVISION:
178- self.pristine_upstream_tree.pull(branch.pristine_upstream_branch)
179- branch.pristine_upstream_branch.tags.merge_to(self.pristine_upstream_branch.tags)
180- for branch in self.get_greater_branches():
181- merged, missing_versions = \
182- branch.contained_versions(missing_versions)
183- if merged:
184- revid = branch.revid_of_version(merged[0])
185- parents.append(revid)
186- #FIXME: should this really be here?
187- branch.branch.tags.merge_to(self.branch.tags)
188- self.branch.fetch(branch.branch,
189- last_revision=revid)
190- if self.pristine_upstream_branch.last_revision() == NULL_REVISION:
191- self.pristine_upstream_tree.pull(branch.pristine_upstream_branch)
192- branch.pristine_upstream_branch.tags.merge_to(self.pristine_upstream_branch.tags)
193+ for branch in list(reversed(self.get_lesser_branches())) + self.get_greater_branches():
194+ merged, missing_versions = \
195+ branch.contained_versions(missing_versions)
196+ if merged:
197+ revid = branch.revid_of_version(merged[0])
198+ parents.append(revid)
199+ #FIXME: should this really be here?
200+ self._fetch_from_branch(branch, revid)
201 if (self.branch.last_revision() != NULL_REVISION
202 and not self.branch.last_revision() in parents):
203 parents.insert(0, self.branch.last_revision())
204@@ -1393,12 +1385,12 @@
205 parents = { None: [] }
206 if self.pristine_upstream_branch.last_revision() != NULL_REVISION:
207 parents = { None: [self.pristine_upstream_branch.last_revision()] }
208- for (component, tag, revid) in self.import_upstream(tarball_dir,
209+ imported_revids = self.import_upstream(tarball_dir,
210 package, version, parents,
211 upstream_tarballs=upstream_tarballs,
212 upstream_branch=upstream_branch,
213- upstream_revisions=upstream_revisions):
214- self._fetch_upstream_to_branch(revid)
215+ upstream_revisions=upstream_revisions)
216+ self._fetch_upstream_to_branch(imported_revids)
217 finally:
218 shutil.rmtree(tarball_dir)
219 if self.branch.last_revision() != NULL_REVISION:
220
221=== modified file 'upstream/pristinetar.py'
222--- upstream/pristinetar.py 2011-11-08 10:10:05 +0000
223+++ upstream/pristinetar.py 2011-11-15 14:15:29 +0000
224@@ -204,6 +204,7 @@
225 message = "Import upstream version %s" % (version,)
226 if component is not None:
227 message += ", component %s" % component
228+ revprops["deb-component"] = component
229 if len(parent_ids) == 0:
230 base_revid = _mod_revision.NULL_REVISION
231 else:

Subscribers

People subscribed via source and target branches