Merge lp:~jelmer/bzr-builddeb/multiple-upstream-tarballs-pt2 into lp:bzr-builddeb
- multiple-upstream-tarballs-pt2
- Merge into trunk
Proposed by
Jelmer Vernooij
Status: | Merged |
---|---|
Approved by: | James Westby |
Approved revision: | 577 |
Merged at revision: | 572 |
Proposed branch: | lp:~jelmer/bzr-builddeb/multiple-upstream-tarballs-pt2 |
Merge into: | lp:bzr-builddeb |
Diff against target: |
933 lines (+200/-157) 7 files modified
cmds.py (+5/-6) dh_make.py (+1/-4) import_dsc.py (+103/-76) source_distiller.py (+3/-14) tests/blackbox/test_merge_upstream.py (+7/-3) tests/test_import_dsc.py (+58/-54) util.py (+23/-0) |
To merge this branch: | bzr merge lp:~jelmer/bzr-builddeb/multiple-upstream-tarballs-pt2 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Bzr-builddeb-hackers | Pending | ||
Review via email: mp+64626@code.launchpad.net |
Commit message
Description of the change
Step 2 of support for multiple upstream tarballs.
Pass lists of orig tarballs along in more places rather than a single upstream tarball and md5 sum.
To post a comment you must log in.
- 577. By Jelmer Vernooij
-
Factor out extracting of orig tarballs.
Revision history for this message
James Westby (james-w) wrote : | # |
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-06-14 14:04:53 +0000 | |||
3 | +++ cmds.py 2011-06-15 02:38:47 +0000 | |||
4 | @@ -69,7 +69,6 @@ | |||
5 | 69 | BuildFailedError, | 69 | BuildFailedError, |
6 | 70 | DchError, | 70 | DchError, |
7 | 71 | MissingChangelogError, | 71 | MissingChangelogError, |
8 | 72 | MultipleUpstreamTarballsNotSupported, | ||
9 | 73 | NoPreviousUpload, | 72 | NoPreviousUpload, |
10 | 74 | PackageVersionNotPresent, | 73 | PackageVersionNotPresent, |
11 | 75 | StrictBuildFailed, | 74 | StrictBuildFailed, |
12 | @@ -117,6 +116,7 @@ | |||
13 | 117 | get_source_format, | 116 | get_source_format, |
14 | 118 | guess_build_type, | 117 | guess_build_type, |
15 | 119 | lookup_distribution, | 118 | lookup_distribution, |
16 | 119 | md5sum_filename, | ||
17 | 120 | open_file, | 120 | open_file, |
18 | 121 | open_file_via_transport, | 121 | open_file_via_transport, |
19 | 122 | tarball_name, | 122 | tarball_name, |
20 | @@ -560,9 +560,7 @@ | |||
21 | 560 | db = DistributionBranch(tree.branch, None, tree=tree) | 560 | db = DistributionBranch(tree.branch, None, tree=tree) |
22 | 561 | dbs = DistributionBranchSet() | 561 | dbs = DistributionBranchSet() |
23 | 562 | dbs.add_branch(db) | 562 | dbs.add_branch(db) |
27 | 563 | if len(tarball_filenames) > 1: | 563 | conflicts = db.merge_upstream(tarball_filenames, package, version, |
25 | 564 | raise MultipleUpstreamTarballsNotSupported() | ||
26 | 565 | conflicts = db.merge_upstream(tarball_filenames[0], package, version, | ||
28 | 566 | current_version, upstream_branch=upstream_branch, | 564 | current_version, upstream_branch=upstream_branch, |
29 | 567 | upstream_revision=upstream_revision, | 565 | upstream_revision=upstream_revision, |
30 | 568 | merge_type=merge_type, force=force) | 566 | merge_type=merge_type, force=force) |
31 | @@ -977,7 +975,8 @@ | |||
32 | 977 | else: | 975 | else: |
33 | 978 | raise BzrCommandError('bzr import-upstream --revision takes exactly' | 976 | raise BzrCommandError('bzr import-upstream --revision takes exactly' |
34 | 979 | ' one revision specifier.') | 977 | ' one revision specifier.') |
36 | 980 | tag_name, _ = db.import_upstream_tarball(location, version, parents, | 978 | tarballs = [(location, md5sum_filename(location))] |
37 | 979 | tag_name, _ = db.import_upstream_tarball(tarballs, version, parents, | ||
38 | 981 | upstream_branch=upstream, upstream_revision=upstream_revid) | 980 | upstream_branch=upstream, upstream_revision=upstream_revid) |
39 | 982 | self.outf.write('Imported %s as tag:%s.\n' % (location, tag_name)) | 981 | self.outf.write('Imported %s as tag:%s.\n' % (location, tag_name)) |
40 | 983 | 982 | ||
41 | @@ -1207,7 +1206,7 @@ | |||
42 | 1207 | 1206 | ||
43 | 1208 | def run(self, package_name, version, tarball, bzr_only=None, v3=None): | 1207 | def run(self, package_name, version, tarball, bzr_only=None, v3=None): |
44 | 1209 | tree = dh_make.import_upstream(tarball, package_name, | 1208 | tree = dh_make.import_upstream(tarball, package_name, |
46 | 1210 | version.encode("utf-8"), use_v3=v3) | 1209 | version.encode("utf-8"), use_v3=v3) |
47 | 1211 | if not bzr_only: | 1210 | if not bzr_only: |
48 | 1212 | tree.lock_write() | 1211 | tree.lock_write() |
49 | 1213 | try: | 1212 | try: |
50 | 1214 | 1213 | ||
51 | === modified file 'dh_make.py' | |||
52 | --- dh_make.py 2011-06-14 14:04:53 +0000 | |||
53 | +++ dh_make.py 2011-06-15 02:38:47 +0000 | |||
54 | @@ -87,10 +87,7 @@ | |||
55 | 87 | upstream_tree=tree) | 87 | upstream_tree=tree) |
56 | 88 | dbs = import_dsc.DistributionBranchSet() | 88 | dbs = import_dsc.DistributionBranchSet() |
57 | 89 | dbs.add_branch(db) | 89 | dbs.add_branch(db) |
62 | 90 | if len(tarball_filenames) > 1: | 90 | db.import_upstream_tarball(tarball_filenames, version, parents) |
59 | 91 | raise errors.MultipleUpstreamTarballsNotSupported() | ||
60 | 92 | (tarball_filename, md5sum) = tarball_filenames[0] | ||
61 | 93 | db.import_upstream_tarball(tarball_filename, version, parents, md5sum=md5sum) | ||
63 | 94 | return tree | 91 | return tree |
64 | 95 | 92 | ||
65 | 96 | 93 | ||
66 | 97 | 94 | ||
67 | === modified file 'import_dsc.py' | |||
68 | --- import_dsc.py 2011-06-09 21:43:07 +0000 | |||
69 | +++ import_dsc.py 2011-06-15 02:38:47 +0000 | |||
70 | @@ -27,7 +27,6 @@ | |||
71 | 27 | 27 | ||
72 | 28 | 28 | ||
73 | 29 | import os | 29 | import os |
74 | 30 | import re | ||
75 | 31 | import shutil | 30 | import shutil |
76 | 32 | import stat | 31 | import stat |
77 | 33 | import subprocess | 32 | import subprocess |
78 | @@ -63,14 +62,14 @@ | |||
79 | 63 | from bzrlib.plugins.builddeb.bzrtools_import import import_dir | 62 | from bzrlib.plugins.builddeb.bzrtools_import import import_dir |
80 | 64 | from bzrlib.plugins.builddeb.errors import ( | 63 | from bzrlib.plugins.builddeb.errors import ( |
81 | 65 | MultipleUpstreamTarballsNotSupported, | 64 | MultipleUpstreamTarballsNotSupported, |
82 | 66 | TarFailed, | ||
83 | 67 | UpstreamAlreadyImported, | 65 | UpstreamAlreadyImported, |
84 | 68 | UpstreamBranchAlreadyMerged, | 66 | UpstreamBranchAlreadyMerged, |
85 | 69 | ) | 67 | ) |
86 | 70 | from bzrlib.plugins.builddeb.util import ( | 68 | from bzrlib.plugins.builddeb.util import ( |
87 | 69 | FORMAT_1_0, | ||
88 | 71 | FORMAT_3_0_QUILT, | 70 | FORMAT_3_0_QUILT, |
89 | 72 | FORMAT_3_0_NATIVE, | 71 | FORMAT_3_0_NATIVE, |
91 | 73 | export, | 72 | extract_orig_tarballs, |
92 | 74 | get_commit_info_from_changelog, | 73 | get_commit_info_from_changelog, |
93 | 75 | md5sum_filename, | 74 | md5sum_filename, |
94 | 76 | open_file_via_transport, | 75 | open_file_via_transport, |
95 | @@ -301,6 +300,30 @@ | |||
96 | 301 | pass | 300 | pass |
97 | 302 | return False | 301 | return False |
98 | 303 | 302 | ||
99 | 303 | def _has_upstream_version(self, branch, tag_name, tarballs=None): | ||
100 | 304 | if branch.tags.has_tag(tag_name): | ||
101 | 305 | revid = branch.tags.lookup_tag(tag_name) | ||
102 | 306 | branch.lock_read() | ||
103 | 307 | try: | ||
104 | 308 | graph = branch.repository.get_graph() | ||
105 | 309 | if not graph.is_ancestor(revid, branch.last_revision()): | ||
106 | 310 | return False | ||
107 | 311 | finally: | ||
108 | 312 | branch.unlock() | ||
109 | 313 | if tarballs is None: | ||
110 | 314 | return True | ||
111 | 315 | if len(tarballs) != 1: | ||
112 | 316 | raise MultipleUpstreamTarballsNotSupported() | ||
113 | 317 | (filename, md5) = tarballs[0] | ||
114 | 318 | rev = branch.repository.get_revision(revid) | ||
115 | 319 | try: | ||
116 | 320 | return rev.properties['deb-md5'] == md5 | ||
117 | 321 | except KeyError: | ||
118 | 322 | warning("tag %s present in branch, but there is no " | ||
119 | 323 | "associated 'deb-md5' property" % tag_name) | ||
120 | 324 | pass | ||
121 | 325 | return False | ||
122 | 326 | |||
123 | 304 | def has_version(self, version, md5=None): | 327 | def has_version(self, version, md5=None): |
124 | 305 | """Whether this branch contains the package version specified. | 328 | """Whether this branch contains the package version specified. |
125 | 306 | 329 | ||
126 | @@ -326,7 +349,7 @@ | |||
127 | 326 | return True | 349 | return True |
128 | 327 | return False | 350 | return False |
129 | 328 | 351 | ||
131 | 329 | def has_upstream_version(self, version, md5=None): | 352 | def has_upstream_version(self, version, tarballs=None): |
132 | 330 | """Whether this branch contains the upstream version specified. | 353 | """Whether this branch contains the upstream version specified. |
133 | 331 | 354 | ||
134 | 332 | The version must be judged present by having the appropriate tag | 355 | The version must be judged present by having the appropriate tag |
135 | @@ -336,13 +359,13 @@ | |||
136 | 336 | 359 | ||
137 | 337 | :param version: a upstream version number to look for in the upstream | 360 | :param version: a upstream version number to look for in the upstream |
138 | 338 | branch. | 361 | branch. |
141 | 339 | :param md5: a string with the md5sum that if not None must be | 362 | :param tarballs: list of upstream tarballs that should be present, |
142 | 340 | associated with the revision. | 363 | tuples of filename and md5sum |
143 | 341 | :return: True if the upstream branch contains the specified upstream | 364 | :return: True if the upstream branch contains the specified upstream |
144 | 342 | version of the package. False otherwise. | 365 | version of the package. False otherwise. |
145 | 343 | """ | 366 | """ |
146 | 344 | for tag_name in self.pristine_tar_source.possible_tag_names(version): | 367 | for tag_name in self.pristine_tar_source.possible_tag_names(version): |
148 | 345 | if self._has_version(self.upstream_branch, tag_name, md5=md5): | 368 | if self._has_upstream_version(self.upstream_branch, tag_name, tarballs=tarballs): |
149 | 346 | return True | 369 | return True |
150 | 347 | return False | 370 | return False |
151 | 348 | 371 | ||
152 | @@ -590,7 +613,7 @@ | |||
153 | 590 | finally: | 613 | finally: |
154 | 591 | self.branch.unlock() | 614 | self.branch.unlock() |
155 | 592 | 615 | ||
157 | 593 | def branch_to_pull_upstream_from(self, version, md5): | 616 | def branch_to_pull_upstream_from(self, version, upstream_tarballs): |
158 | 594 | """Checks whether this upstream is a pull from a lesser branch. | 617 | """Checks whether this upstream is a pull from a lesser branch. |
159 | 595 | 618 | ||
160 | 596 | Looks in all the other upstream branches for the given | 619 | Looks in all the other upstream branches for the given |
161 | @@ -603,20 +626,15 @@ | |||
162 | 603 | 626 | ||
163 | 604 | :param version: the upstream version to use when searching in the | 627 | :param version: the upstream version to use when searching in the |
164 | 605 | lesser branches. | 628 | lesser branches. |
165 | 606 | :param md5: a String containing the md5 associateed with the | ||
166 | 607 | upstream version. | ||
167 | 608 | :return: a DistributionBranch object to pull the upstream from | 629 | :return: a DistributionBranch object to pull the upstream from |
168 | 609 | if that is what should be done, otherwise None. | 630 | if that is what should be done, otherwise None. |
169 | 610 | """ | 631 | """ |
170 | 611 | assert isinstance(version, str) | 632 | assert isinstance(version, str) |
171 | 612 | assert md5 is not None, \ | ||
172 | 613 | ("It's not a good idea to use branch_to_pull_upstream_from with " | ||
173 | 614 | "md5 == None, as you may pull the wrong revision.") | ||
174 | 615 | up_branch = self.upstream_branch | 633 | up_branch = self.upstream_branch |
175 | 616 | up_branch.lock_read() | 634 | up_branch.lock_read() |
176 | 617 | try: | 635 | try: |
177 | 618 | for branch in reversed(self.get_lesser_branches()): | 636 | for branch in reversed(self.get_lesser_branches()): |
179 | 619 | if branch.has_upstream_version(version, md5=md5): | 637 | if branch.has_upstream_version(version, tarballs=upstream_tarballs): |
180 | 620 | # Check that they haven't diverged | 638 | # Check that they haven't diverged |
181 | 621 | other_up_branch = branch.upstream_branch | 639 | other_up_branch = branch.upstream_branch |
182 | 622 | other_up_branch.lock_read() | 640 | other_up_branch.lock_read() |
183 | @@ -629,7 +647,7 @@ | |||
184 | 629 | finally: | 647 | finally: |
185 | 630 | other_up_branch.unlock() | 648 | other_up_branch.unlock() |
186 | 631 | for branch in self.get_greater_branches(): | 649 | for branch in self.get_greater_branches(): |
188 | 632 | if branch.has_upstream_version(version, md5=md5): | 650 | if branch.has_upstream_version(version, tarballs=upstream_tarballs): |
189 | 633 | # Check that they haven't diverged | 651 | # Check that they haven't diverged |
190 | 634 | other_up_branch = branch.upstream_branch | 652 | other_up_branch = branch.upstream_branch |
191 | 635 | other_up_branch.lock_read() | 653 | other_up_branch.lock_read() |
192 | @@ -837,8 +855,8 @@ | |||
193 | 837 | self.branch.fetch(self.upstream_branch, last_revision=revid) | 855 | self.branch.fetch(self.upstream_branch, last_revision=revid) |
194 | 838 | self.upstream_branch.tags.merge_to(self.branch.tags) | 856 | self.upstream_branch.tags.merge_to(self.branch.tags) |
195 | 839 | 857 | ||
198 | 840 | def import_upstream(self, upstream_part, version, md5, upstream_parents, | 858 | def import_upstream(self, upstream_part, version, upstream_parents, |
199 | 841 | upstream_tarball=None, upstream_branch=None, | 859 | upstream_tarballs=None, upstream_branch=None, |
200 | 842 | upstream_revision=None, timestamp=None, author=None, | 860 | upstream_revision=None, timestamp=None, author=None, |
201 | 843 | file_ids_from=None): | 861 | file_ids_from=None): |
202 | 844 | """Import an upstream part on to the upstream branch. | 862 | """Import an upstream part on to the upstream branch. |
203 | @@ -849,7 +867,6 @@ | |||
204 | 849 | :param upstream_part: the path of a directory containing the | 867 | :param upstream_part: the path of a directory containing the |
205 | 850 | unpacked upstream part of the source package. | 868 | unpacked upstream part of the source package. |
206 | 851 | :param version: upstream version that is being imported | 869 | :param version: upstream version that is being imported |
207 | 852 | :param md5: the md5 of the upstream part. | ||
208 | 853 | :param upstream_parents: the parents to give the upstream revision | 870 | :param upstream_parents: the parents to give the upstream revision |
209 | 854 | :param timestamp: a tuple of (timestamp, timezone) to use for | 871 | :param timestamp: a tuple of (timestamp, timezone) to use for |
210 | 855 | the commit, or None to use the current time. | 872 | the commit, or None to use the current time. |
211 | @@ -901,8 +918,12 @@ | |||
212 | 901 | finally: | 918 | finally: |
213 | 902 | self_tree.unlock() | 919 | self_tree.unlock() |
214 | 903 | self.upstream_tree.set_parent_ids(upstream_parents) | 920 | self.upstream_tree.set_parent_ids(upstream_parents) |
217 | 904 | revprops = {"deb-md5": md5} | 921 | revprops = {} |
218 | 905 | if upstream_tarball is not None: | 922 | if upstream_tarballs is not None: |
219 | 923 | if len(upstream_tarballs) != 1: | ||
220 | 924 | raise MultipleUpstreamTarballsNotSupported() | ||
221 | 925 | (upstream_tarball, md5) = upstream_tarballs[0] | ||
222 | 926 | revprops["deb-md5"] = md5 | ||
223 | 906 | delta_revprops = self.pristine_tar_source.create_delta_revprops( | 927 | delta_revprops = self.pristine_tar_source.create_delta_revprops( |
224 | 907 | self.upstream_tree, upstream_tarball) | 928 | self.upstream_tree, upstream_tarball) |
225 | 908 | revprops.update(delta_revprops) | 929 | revprops.update(delta_revprops) |
226 | @@ -918,8 +939,8 @@ | |||
227 | 918 | tag_name, _ = self.tag_upstream_version(version, revid=revid) | 939 | tag_name, _ = self.tag_upstream_version(version, revid=revid) |
228 | 919 | return tag_name, revid | 940 | return tag_name, revid |
229 | 920 | 941 | ||
232 | 921 | def import_upstream_tarball(self, tarball_filename, version, parents, | 942 | def import_upstream_tarball(self, tarballs, version, parents, |
233 | 922 | md5sum=None, upstream_branch=None, upstream_revision=None): | 943 | upstream_branch=None, upstream_revision=None): |
234 | 923 | """Import an upstream part to the upstream branch. | 944 | """Import an upstream part to the upstream branch. |
235 | 924 | 945 | ||
236 | 925 | :param tarball_filename: The tarball to import. | 946 | :param tarball_filename: The tarball to import. |
237 | @@ -933,12 +954,10 @@ | |||
238 | 933 | :param md5sum: hex digest of the md5sum of the tarball, if known. | 954 | :param md5sum: hex digest of the md5sum of the tarball, if known. |
239 | 934 | :return: (tag_name, revision_id) of the imported tarball. | 955 | :return: (tag_name, revision_id) of the imported tarball. |
240 | 935 | """ | 956 | """ |
244 | 936 | if not md5sum: | 957 | tarball_dir = self._extract_tarballs_to_tempdir(tarballs) |
242 | 937 | md5sum = md5sum_filename(tarball_filename) | ||
243 | 938 | tarball_dir = self._extract_tarball_to_tempdir(tarball_filename) | ||
245 | 939 | try: | 958 | try: |
248 | 940 | return self.import_upstream(tarball_dir, version, md5sum, parents, | 959 | return self.import_upstream(tarball_dir, version, parents, |
249 | 941 | upstream_tarball=tarball_filename, | 960 | tarballs, |
250 | 942 | upstream_branch=upstream_branch, | 961 | upstream_branch=upstream_branch, |
251 | 943 | upstream_revision=upstream_revision) | 962 | upstream_revision=upstream_revision) |
252 | 944 | finally: | 963 | finally: |
253 | @@ -1132,16 +1151,28 @@ | |||
254 | 1132 | cl.parse_changelog(open(cl_filename).read(), strict=False) | 1151 | cl.parse_changelog(open(cl_filename).read(), strict=False) |
255 | 1133 | return cl | 1152 | return cl |
256 | 1134 | 1153 | ||
261 | 1135 | def _do_import_package(self, version, versions, debian_part, md5, | 1154 | def _import_normal_package(self, version, versions, debian_part, md5, |
262 | 1136 | upstream_part, upstream_md5, upstream_tarball=None, | 1155 | upstream_part, upstream_tarballs, timestamp=None, author=None, |
263 | 1137 | timestamp=None, author=None, file_ids_from=None, | 1156 | file_ids_from=None, pull_debian=True): |
264 | 1138 | pull_debian=True): | 1157 | """Import a source package. |
265 | 1158 | |||
266 | 1159 | :param version: Full Debian version | ||
267 | 1160 | :param versions: Safe versions from changelog | ||
268 | 1161 | :param debian_part: Path to extracted directory with Debian changes | ||
269 | 1162 | :param unextracted_debian_md5: MD5 sum of unextracted Debian diff/tarball | ||
270 | 1163 | :param upstream_part: Extracted upstream directory | ||
271 | 1164 | :param upstream_tarballs: List of tuples with (upstream tarfile, md5sum) | ||
272 | 1165 | :param timestamp: Version timestamp according to changelog | ||
273 | 1166 | :param author: Author according to changelog | ||
274 | 1167 | :param file_ids_from: Sequence of trees to take file ids from | ||
275 | 1168 | :param pull_debian: Whether to pull from the Debian branch | ||
276 | 1169 | """ | ||
277 | 1139 | pull_branch = None | 1170 | pull_branch = None |
278 | 1140 | if pull_debian: | 1171 | if pull_debian: |
279 | 1141 | pull_branch = self.branch_to_pull_version_from(version, md5) | 1172 | pull_branch = self.branch_to_pull_version_from(version, md5) |
280 | 1142 | if pull_branch is not None: | 1173 | if pull_branch is not None: |
281 | 1143 | if (self.branch_to_pull_upstream_from(version.upstream_version, | 1174 | if (self.branch_to_pull_upstream_from(version.upstream_version, |
283 | 1144 | upstream_md5) | 1175 | upstream_tarballs) |
284 | 1145 | is None): | 1176 | is None): |
285 | 1146 | pull_branch = None | 1177 | pull_branch = None |
286 | 1147 | if pull_branch is not None: | 1178 | if pull_branch is not None: |
287 | @@ -1153,7 +1184,7 @@ | |||
288 | 1153 | if not self.has_upstream_version(version.upstream_version): | 1184 | if not self.has_upstream_version(version.upstream_version): |
289 | 1154 | up_pull_branch = \ | 1185 | up_pull_branch = \ |
290 | 1155 | self.branch_to_pull_upstream_from(version.upstream_version, | 1186 | self.branch_to_pull_upstream_from(version.upstream_version, |
292 | 1156 | upstream_md5) | 1187 | upstream_tarballs) |
293 | 1157 | if up_pull_branch is not None: | 1188 | if up_pull_branch is not None: |
294 | 1158 | self.pull_upstream_from_branch(up_pull_branch, | 1189 | self.pull_upstream_from_branch(up_pull_branch, |
295 | 1159 | version.upstream_version) | 1190 | version.upstream_version) |
296 | @@ -1165,8 +1196,8 @@ | |||
297 | 1165 | version.upstream_version) | 1196 | version.upstream_version) |
298 | 1166 | _, new_revid = self.import_upstream(upstream_part, | 1197 | _, new_revid = self.import_upstream(upstream_part, |
299 | 1167 | version.upstream_version, | 1198 | version.upstream_version, |
302 | 1168 | upstream_md5, upstream_parents, | 1199 | upstream_parents, |
303 | 1169 | upstream_tarball=upstream_tarball, | 1200 | upstream_tarballs=upstream_tarballs, |
304 | 1170 | timestamp=timestamp, author=author, | 1201 | timestamp=timestamp, author=author, |
305 | 1171 | file_ids_from=file_ids_from) | 1202 | file_ids_from=file_ids_from) |
306 | 1172 | self._fetch_upstream_to_branch(new_revid) | 1203 | self._fetch_upstream_to_branch(new_revid) |
307 | @@ -1250,7 +1281,7 @@ | |||
308 | 1250 | base_path = osutils.dirname(dsc_filename) | 1281 | base_path = osutils.dirname(dsc_filename) |
309 | 1251 | dsc = deb822.Dsc(open(dsc_filename).read()) | 1282 | dsc = deb822.Dsc(open(dsc_filename).read()) |
310 | 1252 | version = Version(dsc['Version']) | 1283 | version = Version(dsc['Version']) |
312 | 1253 | format = dsc.get('Format', '1.0').strip() | 1284 | format = dsc.get('Format', FORMAT_1_0).strip() |
313 | 1254 | extractor_cls = SOURCE_EXTRACTORS.get(format) | 1285 | extractor_cls = SOURCE_EXTRACTORS.get(format) |
314 | 1255 | if extractor_cls is None: | 1286 | if extractor_cls is None: |
315 | 1256 | raise AssertionError("Don't know how to import source format %s yet" | 1287 | raise AssertionError("Don't know how to import source format %s yet" |
316 | @@ -1274,13 +1305,13 @@ | |||
317 | 1274 | #TODO: check that the versions list is correctly ordered, | 1305 | #TODO: check that the versions list is correctly ordered, |
318 | 1275 | # as some methods assume that, and it's not clear what | 1306 | # as some methods assume that, and it's not clear what |
319 | 1276 | # should happen if it isn't. | 1307 | # should happen if it isn't. |
320 | 1308 | |||
321 | 1277 | if extractor.extracted_upstream is not None: | 1309 | if extractor.extracted_upstream is not None: |
323 | 1278 | self._do_import_package(version, versions, | 1310 | self._import_normal_package(version, versions, |
324 | 1279 | extractor.extracted_debianised, | 1311 | extractor.extracted_debianised, |
325 | 1280 | extractor.unextracted_debian_md5, | 1312 | extractor.unextracted_debian_md5, |
326 | 1281 | extractor.extracted_upstream, | 1313 | extractor.extracted_upstream, |
329 | 1282 | extractor.unextracted_upstream_md5, | 1314 | extractor.upstream_tarballs, |
328 | 1283 | upstream_tarball=extractor.unextracted_upstream, | ||
330 | 1284 | timestamp=timestamp, author=author, | 1315 | timestamp=timestamp, author=author, |
331 | 1285 | file_ids_from=file_ids_from, | 1316 | file_ids_from=file_ids_from, |
332 | 1286 | pull_debian=pull_debian) | 1317 | pull_debian=pull_debian) |
333 | @@ -1347,19 +1378,11 @@ | |||
334 | 1347 | if root_id: | 1378 | if root_id: |
335 | 1348 | self.upstream_tree.set_root_id(root_id) | 1379 | self.upstream_tree.set_root_id(root_id) |
336 | 1349 | 1380 | ||
338 | 1350 | def _extract_tarball_to_tempdir(self, tarball_filename): | 1381 | def _extract_tarballs_to_tempdir(self, tarballs): |
339 | 1351 | tempdir = tempfile.mkdtemp() | 1382 | tempdir = tempfile.mkdtemp() |
340 | 1352 | if tarball_filename.endswith(".tar.bz2"): | ||
341 | 1353 | tar_args = 'xjf' | ||
342 | 1354 | else: | ||
343 | 1355 | tar_args = 'xzf' | ||
344 | 1356 | try: | 1383 | try: |
351 | 1357 | proc = subprocess.Popen(["tar", tar_args, tarball_filename, "-C", | 1384 | extract_orig_tarballs([fn for (fn, md5) in tarballs], tempdir, |
352 | 1358 | tempdir, "--strip-components", "1"], | 1385 | strip_components=1) |
347 | 1359 | preexec_fn=subprocess_setup) | ||
348 | 1360 | proc.communicate() | ||
349 | 1361 | if proc.returncode != 0: | ||
350 | 1362 | raise TarFailed("extract", tarball_filename) | ||
353 | 1363 | return tempdir | 1386 | return tempdir |
354 | 1364 | except: | 1387 | except: |
355 | 1365 | shutil.rmtree(tempdir) | 1388 | shutil.rmtree(tempdir) |
356 | @@ -1382,7 +1405,7 @@ | |||
357 | 1382 | previous_version, | 1405 | previous_version, |
358 | 1383 | self.pristine_tar_source.tag_name(previous_version))) | 1406 | self.pristine_tar_source.tag_name(previous_version))) |
359 | 1384 | 1407 | ||
361 | 1385 | def merge_upstream(self, tarball_filename, package, version, previous_version, | 1408 | def merge_upstream(self, tarball_filenames, package, version, previous_version, |
362 | 1386 | upstream_branch=None, upstream_revision=None, merge_type=None, | 1409 | upstream_branch=None, upstream_revision=None, merge_type=None, |
363 | 1387 | force=False): | 1410 | force=False): |
364 | 1388 | assert self.upstream_branch is None, \ | 1411 | assert self.upstream_branch is None, \ |
365 | @@ -1412,17 +1435,17 @@ | |||
366 | 1412 | if not force and graph.is_ancestor(upstream_revision, | 1435 | if not force and graph.is_ancestor(upstream_revision, |
367 | 1413 | self.branch.last_revision()): | 1436 | self.branch.last_revision()): |
368 | 1414 | raise UpstreamBranchAlreadyMerged | 1437 | raise UpstreamBranchAlreadyMerged |
372 | 1415 | tarball_filename = os.path.abspath(tarball_filename) | 1438 | upstream_tarballs = [ |
373 | 1416 | md5sum = md5sum_filename(tarball_filename) | 1439 | (os.path.abspath(fn), md5sum_filename(fn)) for fn in |
374 | 1417 | tarball_dir = self._extract_tarball_to_tempdir(tarball_filename) | 1440 | tarball_filenames] |
375 | 1441 | tarball_dir = self._extract_tarballs_to_tempdir(upstream_tarballs) | ||
376 | 1418 | try: | 1442 | try: |
377 | 1419 | # FIXME: should use upstream_parents()? | 1443 | # FIXME: should use upstream_parents()? |
378 | 1420 | parents = [] | 1444 | parents = [] |
379 | 1421 | if self.upstream_branch.last_revision() != NULL_REVISION: | 1445 | if self.upstream_branch.last_revision() != NULL_REVISION: |
380 | 1422 | parents = [self.upstream_branch.last_revision()] | 1446 | parents = [self.upstream_branch.last_revision()] |
381 | 1423 | _, new_revid = self.import_upstream(tarball_dir, | 1447 | _, new_revid = self.import_upstream(tarball_dir, |
384 | 1424 | version, | 1448 | version, parents, upstream_tarballs=upstream_tarballs, |
383 | 1425 | md5sum, parents, upstream_tarball=tarball_filename, | ||
385 | 1426 | upstream_branch=upstream_branch, | 1449 | upstream_branch=upstream_branch, |
386 | 1427 | upstream_revision=upstream_revision) | 1450 | upstream_revision=upstream_revision) |
387 | 1428 | self._fetch_upstream_to_branch(new_revid) | 1451 | self._fetch_upstream_to_branch(new_revid) |
388 | @@ -1466,9 +1489,22 @@ | |||
389 | 1466 | self.dsc = dsc | 1489 | self.dsc = dsc |
390 | 1467 | self.extracted_upstream = None | 1490 | self.extracted_upstream = None |
391 | 1468 | self.extracted_debianised = None | 1491 | self.extracted_debianised = None |
392 | 1469 | self.unextracted_upstream = None | ||
393 | 1470 | self.unextracted_debian_md5 = None | 1492 | self.unextracted_debian_md5 = None |
395 | 1471 | self.unextracted_upstream_md5 = None | 1493 | self.upstream_tarballs = [] |
396 | 1494 | self.tempdir = None | ||
397 | 1495 | |||
398 | 1496 | def extract(self): | ||
399 | 1497 | """Extract the package to a new temporary directory.""" | ||
400 | 1498 | raise NotImplementedError(self.extract) | ||
401 | 1499 | |||
402 | 1500 | def cleanup(self): | ||
403 | 1501 | """Cleanup any extracted files.""" | ||
404 | 1502 | if self.tempdir is not None and os.path.isdir(self.tempdir): | ||
405 | 1503 | shutil.rmtree(self.tempdir) | ||
406 | 1504 | |||
407 | 1505 | |||
408 | 1506 | class OneZeroSourceExtractor(SourceExtractor): | ||
409 | 1507 | """Source extract for the "1.0" source format.""" | ||
410 | 1472 | 1508 | ||
411 | 1473 | def extract(self): | 1509 | def extract(self): |
412 | 1474 | """Extract the package to a new temporary directory.""" | 1510 | """Extract the package to a new temporary directory.""" |
413 | @@ -1495,20 +1531,15 @@ | |||
414 | 1495 | self.unextracted_debian_md5 = part['md5sum'] | 1531 | self.unextracted_debian_md5 = part['md5sum'] |
415 | 1496 | else: | 1532 | else: |
416 | 1497 | if part['name'].endswith(".orig.tar.gz"): | 1533 | if part['name'].endswith(".orig.tar.gz"): |
419 | 1498 | assert self.unextracted_upstream is None, "Two .orig.tar.gz?" | 1534 | self.upstream_tarballs.append((os.path.abspath( |
418 | 1499 | self.unextracted_upstream = os.path.abspath( | ||
420 | 1500 | os.path.join(osutils.dirname(self.dsc_path), | 1535 | os.path.join(osutils.dirname(self.dsc_path), |
423 | 1501 | part['name'])) | 1536 | part['name'])), part['md5sum'])) |
422 | 1502 | self.unextracted_upstream_md5 = part['md5sum'] | ||
424 | 1503 | elif part['name'].endswith(".diff.gz"): | 1537 | elif part['name'].endswith(".diff.gz"): |
425 | 1504 | self.unextracted_debian_md5 = part['md5sum'] | 1538 | self.unextracted_debian_md5 = part['md5sum'] |
426 | 1505 | 1539 | ||
427 | 1506 | def cleanup(self): | ||
428 | 1507 | if os.path.exists(self.tempdir): | ||
429 | 1508 | shutil.rmtree(self.tempdir) | ||
430 | 1509 | |||
431 | 1510 | 1540 | ||
432 | 1511 | class ThreeDotZeroNativeSourceExtractor(SourceExtractor): | 1541 | class ThreeDotZeroNativeSourceExtractor(SourceExtractor): |
433 | 1542 | """Source extractor for the "3.0 (native)" source format.""" | ||
434 | 1512 | 1543 | ||
435 | 1513 | def extract(self): | 1544 | def extract(self): |
436 | 1514 | self.tempdir = tempfile.mkdtemp() | 1545 | self.tempdir = tempfile.mkdtemp() |
437 | @@ -1531,6 +1562,7 @@ | |||
438 | 1531 | 1562 | ||
439 | 1532 | 1563 | ||
440 | 1533 | class ThreeDotZeroQuiltSourceExtractor(SourceExtractor): | 1564 | class ThreeDotZeroQuiltSourceExtractor(SourceExtractor): |
441 | 1565 | """Source extractor for the "3.0 (quilt)" source format.""" | ||
442 | 1534 | 1566 | ||
443 | 1535 | def extract(self): | 1567 | def extract(self): |
444 | 1536 | self.tempdir = tempfile.mkdtemp() | 1568 | self.tempdir = tempfile.mkdtemp() |
445 | @@ -1560,25 +1592,20 @@ | |||
446 | 1560 | subprocess.call(["find", self.extracted_debianised, "-perm", | 1592 | subprocess.call(["find", self.extracted_debianised, "-perm", |
447 | 1561 | "0000", "-exec", "chmod", "644", "{}", ";"]) | 1593 | "0000", "-exec", "chmod", "644", "{}", ";"]) |
448 | 1562 | for part in self.dsc['files']: | 1594 | for part in self.dsc['files']: |
455 | 1563 | if (re.search("\.orig-[^.]+\.tar\.(gz|bz2|lzma)$", part['name'])): | 1595 | if part['name'].startswith("%s_%s.orig" % (name, str(version.upstream_version))): |
456 | 1564 | raise MultipleUpstreamTarballsNotSupported() | 1596 | self.upstream_tarballs.append((os.path.abspath( |
451 | 1565 | if (part['name'].endswith(".orig.tar.gz") | ||
452 | 1566 | or part['name'].endswith(".orig.tar.bz2")): | ||
453 | 1567 | assert self.unextracted_upstream is None, "Two .orig.tar.(gz|bz2)?" | ||
454 | 1568 | self.unextracted_upstream = os.path.abspath( | ||
457 | 1569 | os.path.join(osutils.dirname(self.dsc_path), | 1597 | os.path.join(osutils.dirname(self.dsc_path), |
460 | 1570 | part['name'])) | 1598 | part['name'])), part['md5sum'])) |
459 | 1571 | self.unextracted_upstream_md5 = part['md5sum'] | ||
461 | 1572 | elif (part['name'].endswith(".debian.tar.gz") | 1599 | elif (part['name'].endswith(".debian.tar.gz") |
462 | 1573 | or part['name'].endswith(".debian.tar.bz2")): | 1600 | or part['name'].endswith(".debian.tar.bz2")): |
463 | 1574 | self.unextracted_debian_md5 = part['md5sum'] | 1601 | self.unextracted_debian_md5 = part['md5sum'] |
465 | 1575 | assert self.unextracted_upstream is not None, \ | 1602 | assert self.upstream_tarballs is not None, \ |
466 | 1576 | "Can't handle non gz|bz2 tarballs yet" | 1603 | "Can't handle non gz|bz2 tarballs yet" |
467 | 1577 | assert self.unextracted_debian_md5 is not None, \ | 1604 | assert self.unextracted_debian_md5 is not None, \ |
468 | 1578 | "Can't handle non gz|bz2 tarballs yet" | 1605 | "Can't handle non gz|bz2 tarballs yet" |
469 | 1579 | 1606 | ||
470 | 1580 | 1607 | ||
471 | 1581 | SOURCE_EXTRACTORS = {} | 1608 | SOURCE_EXTRACTORS = {} |
473 | 1582 | SOURCE_EXTRACTORS["1.0"] = SourceExtractor | 1609 | SOURCE_EXTRACTORS[FORMAT_1_0] = OneZeroSourceExtractor |
474 | 1583 | SOURCE_EXTRACTORS[FORMAT_3_0_NATIVE] = ThreeDotZeroNativeSourceExtractor | 1610 | SOURCE_EXTRACTORS[FORMAT_3_0_NATIVE] = ThreeDotZeroNativeSourceExtractor |
475 | 1584 | SOURCE_EXTRACTORS[FORMAT_3_0_QUILT] = ThreeDotZeroQuiltSourceExtractor | 1611 | SOURCE_EXTRACTORS[FORMAT_3_0_QUILT] = ThreeDotZeroQuiltSourceExtractor |
476 | 1585 | 1612 | ||
477 | === modified file 'source_distiller.py' | |||
478 | --- source_distiller.py 2011-06-14 14:04:53 +0000 | |||
479 | +++ source_distiller.py 2011-06-15 02:38:47 +0000 | |||
480 | @@ -20,20 +20,15 @@ | |||
481 | 20 | import glob | 20 | import glob |
482 | 21 | import os | 21 | import os |
483 | 22 | import shutil | 22 | import shutil |
484 | 23 | import subprocess | ||
485 | 24 | import tempfile | 23 | import tempfile |
486 | 25 | 24 | ||
487 | 26 | from bzrlib import errors as bzr_errors | 25 | from bzrlib import errors as bzr_errors |
488 | 27 | 26 | ||
489 | 28 | from bzrlib.plugins.builddeb.errors import ( | ||
490 | 29 | MultipleUpstreamTarballsNotSupported, | ||
491 | 30 | TarFailed, | ||
492 | 31 | ) | ||
493 | 32 | from bzrlib.plugins.builddeb.util import ( | 27 | from bzrlib.plugins.builddeb.util import ( |
494 | 33 | export, | 28 | export, |
495 | 29 | extract_orig_tarballs, | ||
496 | 34 | get_parent_dir, | 30 | get_parent_dir, |
497 | 35 | recursive_copy, | 31 | recursive_copy, |
498 | 36 | subprocess_setup, | ||
499 | 37 | ) | 32 | ) |
500 | 38 | 33 | ||
501 | 39 | 34 | ||
502 | @@ -123,16 +118,10 @@ | |||
503 | 123 | os.makedirs(parent_dir) | 118 | os.makedirs(parent_dir) |
504 | 124 | if not self.use_existing: | 119 | if not self.use_existing: |
505 | 125 | tarballs = self.upstream_provider.provide(parent_dir) | 120 | tarballs = self.upstream_provider.provide(parent_dir) |
506 | 126 | if len(tarballs) > 1: | ||
507 | 127 | raise MultipleUpstreamTarballsNotSupported() | ||
508 | 128 | tarball = tarballs[0] | ||
509 | 129 | # Extract it to the right place | 121 | # Extract it to the right place |
510 | 130 | tempdir = tempfile.mkdtemp(prefix='builddeb-merge-') | 122 | tempdir = tempfile.mkdtemp(prefix='builddeb-merge-') |
511 | 131 | try: | 123 | try: |
516 | 132 | ret = subprocess.call(['tar', '-C', tempdir, '-xf', tarball], | 124 | extract_orig_tarballs(tarballs, tempdir) |
513 | 133 | preexec_fn=subprocess_setup) | ||
514 | 134 | if ret != 0: | ||
515 | 135 | raise TarFailed("uncompress", tarball) | ||
517 | 136 | files = glob.glob(tempdir+'/*') | 125 | files = glob.glob(tempdir+'/*') |
518 | 137 | # If everything is in a single dir then move everything up one | 126 | # If everything is in a single dir then move everything up one |
519 | 138 | # level. | 127 | # level. |
520 | @@ -151,7 +140,7 @@ | |||
521 | 151 | tempdir = os.path.join(basetempdir,"export") | 140 | tempdir = os.path.join(basetempdir,"export") |
522 | 152 | if self.larstiq: | 141 | if self.larstiq: |
523 | 153 | os.makedirs(tempdir) | 142 | os.makedirs(tempdir) |
525 | 154 | export_dir = os.path.join(tempdir,'debian') | 143 | export_dir = os.path.join(tempdir, 'debian') |
526 | 155 | else: | 144 | else: |
527 | 156 | export_dir = tempdir | 145 | export_dir = tempdir |
528 | 157 | if self.is_working_tree: | 146 | if self.is_working_tree: |
529 | 158 | 147 | ||
530 | === modified file 'tests/blackbox/test_merge_upstream.py' | |||
531 | --- tests/blackbox/test_merge_upstream.py 2011-06-13 23:01:14 +0000 | |||
532 | +++ tests/blackbox/test_merge_upstream.py 2011-06-15 02:38:47 +0000 | |||
533 | @@ -30,6 +30,9 @@ | |||
534 | 30 | DistributionBranch, | 30 | DistributionBranch, |
535 | 31 | DistributionBranchSet, | 31 | DistributionBranchSet, |
536 | 32 | ) | 32 | ) |
537 | 33 | from bzrlib.plugins.builddeb.util import ( | ||
538 | 34 | md5sum_filename, | ||
539 | 35 | ) | ||
540 | 33 | 36 | ||
541 | 34 | 37 | ||
542 | 35 | class Fixture(object): | 38 | class Fixture(object): |
543 | @@ -91,10 +94,11 @@ | |||
544 | 91 | upstream_tree=tree) | 94 | upstream_tree=tree) |
545 | 92 | dbs = DistributionBranchSet() | 95 | dbs = DistributionBranchSet() |
546 | 93 | dbs.add_branch(db) | 96 | dbs.add_branch(db) |
549 | 94 | db.import_upstream_tarball(self.tar.tarball, str(self.tar.version), | 97 | db.import_upstream_tarball( |
550 | 95 | [tree.branch.last_revision()]) | 98 | [(self.tar.tarball, md5sum_filename(self.tar.tarball))], str(self.tar.version), |
551 | 99 | [tree.branch.last_revision()]) | ||
552 | 96 | package_builder = SourcePackageBuilder("foo", | 100 | package_builder = SourcePackageBuilder("foo", |
554 | 97 | str(self.tar.version)+"-1") | 101 | str(self.tar.version)+"-1") |
555 | 98 | package_builder.add_default_control() | 102 | package_builder.add_default_control() |
556 | 99 | package_builder.write_debian_files(branchpath) | 103 | package_builder.write_debian_files(branchpath) |
557 | 100 | tree.smart_add([tree.basedir]) | 104 | tree.smart_add([tree.basedir]) |
558 | 101 | 105 | ||
559 | === modified file 'tests/test_import_dsc.py' | |||
560 | --- tests/test_import_dsc.py 2011-06-10 11:47:25 +0000 | |||
561 | +++ tests/test_import_dsc.py 2011-06-15 02:38:47 +0000 | |||
562 | @@ -35,13 +35,10 @@ | |||
563 | 35 | tests, | 35 | tests, |
564 | 36 | ) | 36 | ) |
565 | 37 | 37 | ||
566 | 38 | from bzrlib.plugins.builddeb.errors import ( | ||
567 | 39 | MultipleUpstreamTarballsNotSupported, | ||
568 | 40 | ) | ||
569 | 41 | from bzrlib.plugins.builddeb.import_dsc import ( | 38 | from bzrlib.plugins.builddeb.import_dsc import ( |
570 | 42 | DistributionBranch, | 39 | DistributionBranch, |
571 | 43 | DistributionBranchSet, | 40 | DistributionBranchSet, |
573 | 44 | SourceExtractor, | 41 | OneZeroSourceExtractor, |
574 | 45 | SOURCE_EXTRACTORS, | 42 | SOURCE_EXTRACTORS, |
575 | 46 | ThreeDotZeroNativeSourceExtractor, | 43 | ThreeDotZeroNativeSourceExtractor, |
576 | 47 | ThreeDotZeroQuiltSourceExtractor, | 44 | ThreeDotZeroQuiltSourceExtractor, |
577 | @@ -50,6 +47,9 @@ | |||
578 | 50 | BuilddebTestCase, | 47 | BuilddebTestCase, |
579 | 51 | SourcePackageBuilder, | 48 | SourcePackageBuilder, |
580 | 52 | ) | 49 | ) |
581 | 50 | from bzrlib.plugins.builddeb.util import ( | ||
582 | 51 | md5sum_filename, | ||
583 | 52 | ) | ||
584 | 53 | 53 | ||
585 | 54 | 54 | ||
586 | 55 | class _PristineTarFeature(tests.Feature): | 55 | class _PristineTarFeature(tests.Feature): |
587 | @@ -175,20 +175,27 @@ | |||
588 | 175 | db = self.db1 | 175 | db = self.db1 |
589 | 176 | version = "0.1" | 176 | version = "0.1" |
590 | 177 | self.assertFalse(db.has_upstream_version(version)) | 177 | self.assertFalse(db.has_upstream_version(version)) |
592 | 178 | self.assertFalse(db.has_upstream_version(version, self.fake_md5_1)) | 178 | self.assertFalse(db.has_upstream_version(version, |
593 | 179 | [("foo.tar.gz", self.fake_md5_1)])) | ||
594 | 179 | self.do_commit_with_md5(self.up_tree1, "one", self.fake_md5_1) | 180 | self.do_commit_with_md5(self.up_tree1, "one", self.fake_md5_1) |
595 | 180 | db.tag_upstream_version(version) | 181 | db.tag_upstream_version(version) |
596 | 181 | self.assertTrue(db.has_upstream_version(version)) | 182 | self.assertTrue(db.has_upstream_version(version)) |
599 | 182 | self.assertTrue(db.has_upstream_version(version, self.fake_md5_1)) | 183 | self.assertTrue(db.has_upstream_version( |
600 | 183 | self.assertFalse(db.has_upstream_version(version, self.fake_md5_2)) | 184 | version, [("foo.tar.gz", self.fake_md5_1)])) |
601 | 185 | self.assertFalse(db.has_upstream_version(version, | ||
602 | 186 | [("foo.tar.gz", self.fake_md5_2)])) | ||
603 | 184 | version = "0.1" | 187 | version = "0.1" |
604 | 185 | self.assertTrue(db.has_upstream_version(version)) | 188 | self.assertTrue(db.has_upstream_version(version)) |
607 | 186 | self.assertTrue(db.has_upstream_version(version, self.fake_md5_1)) | 189 | self.assertTrue(db.has_upstream_version(version, |
608 | 187 | self.assertFalse(db.has_upstream_version(version, self.fake_md5_2)) | 190 | [("foo.tar.gz", self.fake_md5_1)])) |
609 | 191 | self.assertFalse(db.has_upstream_version(version, | ||
610 | 192 | [("foo.tar.gz", self.fake_md5_2)])) | ||
611 | 188 | version = "0.2" | 193 | version = "0.2" |
612 | 189 | self.assertFalse(db.has_upstream_version(version)) | 194 | self.assertFalse(db.has_upstream_version(version)) |
615 | 190 | self.assertFalse(db.has_upstream_version(version, self.fake_md5_1)) | 195 | self.assertFalse(db.has_upstream_version(version, |
616 | 191 | self.assertFalse(db.has_upstream_version(version, self.fake_md5_2)) | 196 | [("foo.tar.gz", self.fake_md5_1)])) |
617 | 197 | self.assertFalse(db.has_upstream_version(version, | ||
618 | 198 | [("foo.tar.gz", self.fake_md5_2)])) | ||
619 | 192 | 199 | ||
620 | 193 | def test_revid_of_version(self): | 200 | def test_revid_of_version(self): |
621 | 194 | db = self.db1 | 201 | db = self.db1 |
622 | @@ -633,46 +640,46 @@ | |||
623 | 633 | version2 = Version("0.2-1") | 640 | version2 = Version("0.2-1") |
624 | 634 | # With no versions tagged everything is None | 641 | # With no versions tagged everything is None |
625 | 635 | branch = self.db2.branch_to_pull_upstream_from( | 642 | branch = self.db2.branch_to_pull_upstream_from( |
627 | 636 | version1.upstream_version, self.fake_md5_1) | 643 | version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)]) |
628 | 637 | self.assertEqual(branch, None) | 644 | self.assertEqual(branch, None) |
629 | 638 | branch = self.db2.branch_to_pull_upstream_from( | 645 | branch = self.db2.branch_to_pull_upstream_from( |
631 | 639 | version1.upstream_version, self.fake_md5_2) | 646 | version1.upstream_version, [("foo.tar.gz", self.fake_md5_2)]) |
632 | 640 | self.assertEqual(branch, None) | 647 | self.assertEqual(branch, None) |
633 | 641 | branch = self.db1.branch_to_pull_upstream_from( | 648 | branch = self.db1.branch_to_pull_upstream_from( |
635 | 642 | version1.upstream_version, self.fake_md5_1) | 649 | version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)]) |
636 | 643 | self.assertEqual(branch, None) | 650 | self.assertEqual(branch, None) |
637 | 644 | self.do_commit_with_md5(self.up_tree1, "one", self.fake_md5_1) | 651 | self.do_commit_with_md5(self.up_tree1, "one", self.fake_md5_1) |
638 | 645 | self.db1.tag_upstream_version(version1.upstream_version) | 652 | self.db1.tag_upstream_version(version1.upstream_version) |
639 | 646 | # Version and md5 available, so we get the correct branch. | 653 | # Version and md5 available, so we get the correct branch. |
640 | 647 | branch = self.db2.branch_to_pull_upstream_from( | 654 | branch = self.db2.branch_to_pull_upstream_from( |
642 | 648 | version1.upstream_version, self.fake_md5_1) | 655 | version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)]) |
643 | 649 | self.assertEqual(branch, self.db1) | 656 | self.assertEqual(branch, self.db1) |
644 | 650 | # Otherwise (different version or md5) then we get None | 657 | # Otherwise (different version or md5) then we get None |
645 | 651 | branch = self.db2.branch_to_pull_upstream_from( | 658 | branch = self.db2.branch_to_pull_upstream_from( |
653 | 652 | version1.upstream_version, self.fake_md5_2) | 659 | version1.upstream_version, [("foo.tar.gz", self.fake_md5_2)]) |
654 | 653 | self.assertEqual(branch, None) | 660 | self.assertEqual(branch, None) |
655 | 654 | branch = self.db2.branch_to_pull_upstream_from(version2.upstream_version, | 661 | branch = self.db2.branch_to_pull_upstream_from(version2.upstream_version, |
656 | 655 | self.fake_md5_1) | 662 | [("foo.tar.gz", self.fake_md5_1)]) |
657 | 656 | self.assertEqual(branch, None) | 663 | self.assertEqual(branch, None) |
658 | 657 | branch = self.db2.branch_to_pull_upstream_from(version2.upstream_version, | 664 | branch = self.db2.branch_to_pull_upstream_from(version2.upstream_version, |
659 | 658 | self.fake_md5_2) | 665 | [("foo.tar.gz", self.fake_md5_2)]) |
660 | 659 | self.assertEqual(branch, None) | 666 | self.assertEqual(branch, None) |
661 | 660 | # And we don't get a branch for the one that already has | 667 | # And we don't get a branch for the one that already has |
662 | 661 | # the version | 668 | # the version |
663 | 662 | branch = self.db1.branch_to_pull_upstream_from( | 669 | branch = self.db1.branch_to_pull_upstream_from( |
665 | 663 | version1.upstream_version, self.fake_md5_1) | 670 | version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)]) |
666 | 664 | self.assertEqual(branch, None) | 671 | self.assertEqual(branch, None) |
667 | 665 | self.up_tree2.pull(self.up_tree1.branch) | 672 | self.up_tree2.pull(self.up_tree1.branch) |
668 | 666 | self.db2.tag_upstream_version(version1.upstream_version) | 673 | self.db2.tag_upstream_version(version1.upstream_version) |
669 | 667 | # And we get the greatest branch when two lesser branches | 674 | # And we get the greatest branch when two lesser branches |
670 | 668 | # have what we are looking for. | 675 | # have what we are looking for. |
671 | 669 | branch = self.db3.branch_to_pull_upstream_from( | 676 | branch = self.db3.branch_to_pull_upstream_from( |
673 | 670 | version1.upstream_version, self.fake_md5_1) | 677 | version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)]) |
674 | 671 | self.assertEqual(branch, self.db2) | 678 | self.assertEqual(branch, self.db2) |
675 | 672 | # If the branches have diverged then we don't get a branch. | 679 | # If the branches have diverged then we don't get a branch. |
676 | 673 | self.up_tree3.commit("three") | 680 | self.up_tree3.commit("three") |
677 | 674 | branch = self.db3.branch_to_pull_upstream_from( | 681 | branch = self.db3.branch_to_pull_upstream_from( |
679 | 675 | version1.upstream_version, self.fake_md5_1) | 682 | version1.upstream_version, [("foo.tar.gz", self.fake_md5_1)]) |
680 | 676 | self.assertEqual(branch, None) | 683 | self.assertEqual(branch, None) |
681 | 677 | 684 | ||
682 | 678 | def test_pull_from_lesser_branch_no_upstream(self): | 685 | def test_pull_from_lesser_branch_no_upstream(self): |
683 | @@ -764,8 +771,7 @@ | |||
684 | 764 | contents = [(basedir + '/' + element[0],) + element[1:] for | 771 | contents = [(basedir + '/' + element[0],) + element[1:] for |
685 | 765 | element in contents] | 772 | element in contents] |
686 | 766 | self.build_tree_contents(contents) | 773 | self.build_tree_contents(contents) |
689 | 767 | self.db1.import_upstream(basedir, version.upstream_version, | 774 | self.db1.import_upstream(basedir, version.upstream_version, []) |
688 | 768 | self.fake_md5_1, []) | ||
690 | 769 | return version | 775 | return version |
691 | 770 | 776 | ||
692 | 771 | def test_import_upstream(self): | 777 | def test_import_upstream(self): |
693 | @@ -779,7 +785,7 @@ | |||
694 | 779 | rev = branch.repository.get_revision(rh[0]) | 785 | rev = branch.repository.get_revision(rh[0]) |
695 | 780 | self.assertEqual(rev.message, | 786 | self.assertEqual(rev.message, |
696 | 781 | "Import upstream version %s" % str(version.upstream_version)) | 787 | "Import upstream version %s" % str(version.upstream_version)) |
698 | 782 | self.assertEqual(rev.properties['deb-md5'], self.fake_md5_1) | 788 | self.assertEqual(rev.properties.get('deb-md5'), None) |
699 | 783 | 789 | ||
700 | 784 | def test_import_upstream_preserves_dot_bzrignore(self): | 790 | def test_import_upstream_preserves_dot_bzrignore(self): |
701 | 785 | self.import_a_tree([('',), ('.bzrignore', '')]) | 791 | self.import_a_tree([('',), ('.bzrignore', '')]) |
702 | @@ -799,15 +805,13 @@ | |||
703 | 799 | write_to_file(os.path.join(basedir, "README"), "Hi\n") | 805 | write_to_file(os.path.join(basedir, "README"), "Hi\n") |
704 | 800 | write_to_file(os.path.join(basedir, "BUGS"), "") | 806 | write_to_file(os.path.join(basedir, "BUGS"), "") |
705 | 801 | write_to_file(os.path.join(basedir, "COPYING"), "") | 807 | write_to_file(os.path.join(basedir, "COPYING"), "") |
708 | 802 | self.db1.import_upstream(basedir, version1.upstream_version, | 808 | self.db1.import_upstream(basedir, version1.upstream_version, []) |
707 | 803 | self.fake_md5_1, []) | ||
709 | 804 | basedir = name + "-" + str(version2.upstream_version) | 809 | basedir = name + "-" + str(version2.upstream_version) |
710 | 805 | os.mkdir(basedir) | 810 | os.mkdir(basedir) |
711 | 806 | write_to_file(os.path.join(basedir, "README"), "Now even better\n") | 811 | write_to_file(os.path.join(basedir, "README"), "Now even better\n") |
712 | 807 | write_to_file(os.path.join(basedir, "BUGS"), "") | 812 | write_to_file(os.path.join(basedir, "BUGS"), "") |
713 | 808 | write_to_file(os.path.join(basedir, "NEWS"), "") | 813 | write_to_file(os.path.join(basedir, "NEWS"), "") |
716 | 809 | self.db1.import_upstream(basedir, version2.upstream_version, | 814 | self.db1.import_upstream(basedir, version2.upstream_version, |
715 | 810 | self.fake_md5_2, | ||
717 | 811 | [self.up_tree1.branch.last_revision()]) | 815 | [self.up_tree1.branch.last_revision()]) |
718 | 812 | tree = self.up_tree1 | 816 | tree = self.up_tree1 |
719 | 813 | branch = tree.branch | 817 | branch = tree.branch |
720 | @@ -817,7 +821,7 @@ | |||
721 | 817 | rev = branch.repository.get_revision(rh[1]) | 821 | rev = branch.repository.get_revision(rh[1]) |
722 | 818 | self.assertEqual(rev.message, | 822 | self.assertEqual(rev.message, |
723 | 819 | "Import upstream version %s" % str(version2.upstream_version)) | 823 | "Import upstream version %s" % str(version2.upstream_version)) |
725 | 820 | self.assertEqual(rev.properties['deb-md5'], self.fake_md5_2) | 824 | self.assertIs(rev.properties.get('deb-md5'), None) |
726 | 821 | rev_tree1 = branch.repository.revision_tree(rh[0]) | 825 | rev_tree1 = branch.repository.revision_tree(rh[0]) |
727 | 822 | rev_tree2 = branch.repository.revision_tree(rh[1]) | 826 | rev_tree2 = branch.repository.revision_tree(rh[1]) |
728 | 823 | changes = rev_tree2.changes_from(rev_tree1) | 827 | changes = rev_tree2.changes_from(rev_tree1) |
729 | @@ -838,8 +842,8 @@ | |||
730 | 838 | tf.add(basedir) | 842 | tf.add(basedir) |
731 | 839 | finally: | 843 | finally: |
732 | 840 | tf.close() | 844 | tf.close() |
735 | 841 | self.db1.import_upstream(basedir, version.upstream_version, | 845 | self.db1.import_upstream(basedir, version.upstream_version, [], |
736 | 842 | self.fake_md5_1, [], upstream_tarball=os.path.abspath(tar_path)) | 846 | upstream_tarballs=[(os.path.abspath(tar_path), self.fake_md5_1)]) |
737 | 843 | tree = self.up_tree1 | 847 | tree = self.up_tree1 |
738 | 844 | branch = tree.branch | 848 | branch = tree.branch |
739 | 845 | rh = branch.revision_history() | 849 | rh = branch.revision_history() |
740 | @@ -866,8 +870,8 @@ | |||
741 | 866 | tf.add(basedir) | 870 | tf.add(basedir) |
742 | 867 | finally: | 871 | finally: |
743 | 868 | tf.close() | 872 | tf.close() |
746 | 869 | self.db1.import_upstream(basedir, version.upstream_version, | 873 | self.db1.import_upstream(basedir, version.upstream_version, |
747 | 870 | self.fake_md5_1, [], upstream_tarball=os.path.abspath(tar_path)) | 874 | [], upstream_tarballs=[(os.path.abspath(tar_path), self.fake_md5_1)]) |
748 | 871 | tree = self.up_tree1 | 875 | tree = self.up_tree1 |
749 | 872 | branch = tree.branch | 876 | branch = tree.branch |
750 | 873 | rh = branch.revision_history() | 877 | rh = branch.revision_history() |
751 | @@ -1496,7 +1500,7 @@ | |||
752 | 1496 | tf.add("a") | 1500 | tf.add("a") |
753 | 1497 | finally: | 1501 | finally: |
754 | 1498 | tf.close() | 1502 | tf.close() |
756 | 1499 | conflicts = db.merge_upstream(tarball_filename, "foo", "0.2", "0.1") | 1503 | conflicts = db.merge_upstream([tarball_filename], "foo", "0.2", "0.1") |
757 | 1500 | self.assertEqual(0, conflicts) | 1504 | self.assertEqual(0, conflicts) |
758 | 1501 | 1505 | ||
759 | 1502 | def test_merge_upstream_initial_with_branch(self): | 1506 | def test_merge_upstream_initial_with_branch(self): |
760 | @@ -1533,7 +1537,7 @@ | |||
761 | 1533 | tf.add("a") | 1537 | tf.add("a") |
762 | 1534 | finally: | 1538 | finally: |
763 | 1535 | tf.close() | 1539 | tf.close() |
765 | 1536 | conflicts = db.merge_upstream(tarball_filename, "foo", "0.2", "0.1", | 1540 | conflicts = db.merge_upstream([tarball_filename], "foo", "0.2", "0.1", |
766 | 1537 | upstream_branch=upstream_tree.branch, | 1541 | upstream_branch=upstream_tree.branch, |
767 | 1538 | upstream_revision=upstream_rev) | 1542 | upstream_revision=upstream_rev) |
768 | 1539 | self.assertEqual(0, conflicts) | 1543 | self.assertEqual(0, conflicts) |
769 | @@ -1573,7 +1577,7 @@ | |||
770 | 1573 | tf.add("a") | 1577 | tf.add("a") |
771 | 1574 | finally: | 1578 | finally: |
772 | 1575 | tf.close() | 1579 | tf.close() |
774 | 1576 | conflicts = db.merge_upstream(tarball_filename, "foo", "0.2", "0.1", | 1580 | conflicts = db.merge_upstream([tarball_filename], "foo", "0.2", "0.1", |
775 | 1577 | upstream_branch=upstream_tree.branch, | 1581 | upstream_branch=upstream_tree.branch, |
776 | 1578 | upstream_revision=upstream_rev) | 1582 | upstream_revision=upstream_rev) |
777 | 1579 | # ./debian conflicts. | 1583 | # ./debian conflicts. |
778 | @@ -1614,7 +1618,7 @@ | |||
779 | 1614 | dbs.add_branch(db) | 1618 | dbs.add_branch(db) |
780 | 1615 | tree.lock_write() | 1619 | tree.lock_write() |
781 | 1616 | self.addCleanup(tree.unlock) | 1620 | self.addCleanup(tree.unlock) |
783 | 1617 | db.merge_upstream(builder.tar_name(), "package", str(version2), | 1621 | db.merge_upstream([builder.tar_name()], "package", str(version2), |
784 | 1618 | version1.upstream_version, | 1622 | version1.upstream_version, |
785 | 1619 | upstream_branch=upstream_tree.branch, | 1623 | upstream_branch=upstream_tree.branch, |
786 | 1620 | upstream_revision=upstream_rev) | 1624 | upstream_revision=upstream_rev) |
787 | @@ -1653,7 +1657,7 @@ | |||
788 | 1653 | tf.add("a") | 1657 | tf.add("a") |
789 | 1654 | finally: | 1658 | finally: |
790 | 1655 | tf.close() | 1659 | tf.close() |
792 | 1656 | conflicts = db.merge_upstream(tarball_filename, "package", "0.2-1", | 1660 | conflicts = db.merge_upstream([tarball_filename], "package", "0.2-1", |
793 | 1657 | "0.1") | 1661 | "0.1") |
794 | 1658 | # Check that we tagged wiht the dash version | 1662 | # Check that we tagged wiht the dash version |
795 | 1659 | self.assertTrue(tree.branch.tags.has_tag('upstream-0.2-1')) | 1663 | self.assertTrue(tree.branch.tags.has_tag('upstream-0.2-1')) |
796 | @@ -1692,7 +1696,7 @@ | |||
797 | 1692 | # We don't add the new file upstream, as the new file id would | 1696 | # We don't add the new file upstream, as the new file id would |
798 | 1693 | # be picked up from there. | 1697 | # be picked up from there. |
799 | 1694 | upstream_rev2 = upstream_tree.commit("two") | 1698 | upstream_rev2 = upstream_tree.commit("two") |
801 | 1695 | db.merge_upstream(builder.tar_name(), "package", | 1699 | db.merge_upstream([builder.tar_name()], "package", |
802 | 1696 | version2.upstream_version, | 1700 | version2.upstream_version, |
803 | 1697 | version1.upstream_version, | 1701 | version1.upstream_version, |
804 | 1698 | upstream_branch=upstream_tree.branch, | 1702 | upstream_branch=upstream_tree.branch, |
805 | @@ -1729,7 +1733,7 @@ | |||
806 | 1729 | # We don't add the new file upstream, as the new file id would | 1733 | # We don't add the new file upstream, as the new file id would |
807 | 1730 | # be picked up from there. | 1734 | # be picked up from there. |
808 | 1731 | upstream_rev2 = upstream_tree.commit("two") | 1735 | upstream_rev2 = upstream_tree.commit("two") |
810 | 1732 | db.merge_upstream(builder.tar_name(), "package", | 1736 | db.merge_upstream([builder.tar_name()], "package", |
811 | 1733 | version2.upstream_version, | 1737 | version2.upstream_version, |
812 | 1734 | version1.upstream_version, | 1738 | version1.upstream_version, |
813 | 1735 | upstream_branch=upstream_tree.branch, | 1739 | upstream_branch=upstream_tree.branch, |
814 | @@ -1762,7 +1766,7 @@ | |||
815 | 1762 | builder.add_upstream_file("a", "New a") | 1766 | builder.add_upstream_file("a", "New a") |
816 | 1763 | builder.add_upstream_file("b", "Renamed a") | 1767 | builder.add_upstream_file("b", "Renamed a") |
817 | 1764 | builder.build() | 1768 | builder.build() |
819 | 1765 | db.merge_upstream(builder.tar_name(), "packaging", | 1769 | db.merge_upstream([builder.tar_name()], "packaging", |
820 | 1766 | version2.upstream_version, version1.upstream_version) | 1770 | version2.upstream_version, version1.upstream_version) |
821 | 1767 | self.assertEqual("a-id", packaging_tree.path2id("b")) | 1771 | self.assertEqual("a-id", packaging_tree.path2id("b")) |
822 | 1768 | self.assertEqual("other-a-id", packaging_tree.path2id("a")) | 1772 | self.assertEqual("other-a-id", packaging_tree.path2id("a")) |
823 | @@ -1778,7 +1782,7 @@ | |||
824 | 1778 | self.db1.import_package(builder.dsc_name()) | 1782 | self.db1.import_package(builder.dsc_name()) |
825 | 1779 | 1783 | ||
826 | 1780 | 1784 | ||
828 | 1781 | class SourceExtractorTests(tests.TestCaseInTempDir): | 1785 | class OneZeroSourceExtractorTests(tests.TestCaseInTempDir): |
829 | 1782 | 1786 | ||
830 | 1783 | def test_extract_format1(self): | 1787 | def test_extract_format1(self): |
831 | 1784 | version = Version("0.1-1") | 1788 | version = Version("0.1-1") |
832 | @@ -1789,8 +1793,8 @@ | |||
833 | 1789 | builder.add_default_control() | 1793 | builder.add_default_control() |
834 | 1790 | builder.build() | 1794 | builder.build() |
835 | 1791 | dsc = deb822.Dsc(open(builder.dsc_name()).read()) | 1795 | dsc = deb822.Dsc(open(builder.dsc_name()).read()) |
838 | 1792 | self.assertEqual(SourceExtractor, SOURCE_EXTRACTORS[dsc['Format']]) | 1796 | self.assertEqual(OneZeroSourceExtractor, SOURCE_EXTRACTORS[dsc['Format']]) |
839 | 1793 | extractor = SourceExtractor(builder.dsc_name(), dsc) | 1797 | extractor = OneZeroSourceExtractor(builder.dsc_name(), dsc) |
840 | 1794 | try: | 1798 | try: |
841 | 1795 | extractor.extract() | 1799 | extractor.extract() |
842 | 1796 | unpacked_dir = extractor.extracted_debianised | 1800 | unpacked_dir = extractor.extracted_debianised |
843 | @@ -1805,7 +1809,7 @@ | |||
844 | 1805 | "README"))) | 1809 | "README"))) |
845 | 1806 | self.assertFalse(os.path.exists(os.path.join(orig_dir, | 1810 | self.assertFalse(os.path.exists(os.path.join(orig_dir, |
846 | 1807 | "debian", "control"))) | 1811 | "debian", "control"))) |
848 | 1808 | self.assertTrue(os.path.exists(extractor.unextracted_upstream)) | 1812 | self.assertTrue(os.path.exists(extractor.upstream_tarballs[0][0])) |
849 | 1809 | finally: | 1813 | finally: |
850 | 1810 | extractor.cleanup() | 1814 | extractor.cleanup() |
851 | 1811 | 1815 | ||
852 | @@ -1818,8 +1822,8 @@ | |||
853 | 1818 | builder.add_default_control() | 1822 | builder.add_default_control() |
854 | 1819 | builder.build() | 1823 | builder.build() |
855 | 1820 | dsc = deb822.Dsc(open(builder.dsc_name()).read()) | 1824 | dsc = deb822.Dsc(open(builder.dsc_name()).read()) |
858 | 1821 | self.assertEqual(SourceExtractor, SOURCE_EXTRACTORS[dsc['Format']]) | 1825 | self.assertEqual(OneZeroSourceExtractor, SOURCE_EXTRACTORS[dsc['Format']]) |
859 | 1822 | extractor = SourceExtractor(builder.dsc_name(), dsc) | 1826 | extractor = OneZeroSourceExtractor(builder.dsc_name(), dsc) |
860 | 1823 | try: | 1827 | try: |
861 | 1824 | extractor.extract() | 1828 | extractor.extract() |
862 | 1825 | unpacked_dir = extractor.extracted_debianised | 1829 | unpacked_dir = extractor.extracted_debianised |
863 | @@ -1886,7 +1890,7 @@ | |||
864 | 1886 | "README"))) | 1890 | "README"))) |
865 | 1887 | self.assertFalse(os.path.exists(os.path.join(orig_dir, | 1891 | self.assertFalse(os.path.exists(os.path.join(orig_dir, |
866 | 1888 | "debian", "control"))) | 1892 | "debian", "control"))) |
868 | 1889 | self.assertTrue(os.path.exists(extractor.unextracted_upstream)) | 1893 | self.assertTrue(os.path.exists(extractor.upstream_tarballs[0][0])) |
869 | 1890 | finally: | 1894 | finally: |
870 | 1891 | extractor.cleanup() | 1895 | extractor.cleanup() |
871 | 1892 | 1896 | ||
872 | @@ -1916,7 +1920,7 @@ | |||
873 | 1916 | "README"))) | 1920 | "README"))) |
874 | 1917 | self.assertFalse(os.path.exists(os.path.join(orig_dir, | 1921 | self.assertFalse(os.path.exists(os.path.join(orig_dir, |
875 | 1918 | "debian", "control"))) | 1922 | "debian", "control"))) |
877 | 1919 | self.assertTrue(os.path.exists(extractor.unextracted_upstream)) | 1923 | self.assertTrue(os.path.exists(extractor.upstream_tarballs[0][0])) |
878 | 1920 | finally: | 1924 | finally: |
879 | 1921 | extractor.cleanup() | 1925 | extractor.cleanup() |
880 | 1922 | 1926 | ||
881 | @@ -1936,4 +1940,4 @@ | |||
882 | 1936 | SOURCE_EXTRACTORS[dsc['Format']]) | 1940 | SOURCE_EXTRACTORS[dsc['Format']]) |
883 | 1937 | extractor = ThreeDotZeroQuiltSourceExtractor(builder.dsc_name(), dsc) | 1941 | extractor = ThreeDotZeroQuiltSourceExtractor(builder.dsc_name(), dsc) |
884 | 1938 | self.addCleanup(extractor.cleanup) | 1942 | self.addCleanup(extractor.cleanup) |
886 | 1939 | self.assertRaises(MultipleUpstreamTarballsNotSupported, extractor.extract) | 1943 | self.assertEquals([], extractor.upstream_tarballs) |
887 | 1940 | 1944 | ||
888 | === modified file 'util.py' | |||
889 | --- util.py 2011-06-09 12:13:13 +0000 | |||
890 | +++ util.py 2011-06-15 02:38:47 +0000 | |||
891 | @@ -24,6 +24,7 @@ | |||
892 | 24 | import md5 | 24 | import md5 |
893 | 25 | import signal | 25 | import signal |
894 | 26 | import shutil | 26 | import shutil |
895 | 27 | import subprocess | ||
896 | 27 | import tempfile | 28 | import tempfile |
897 | 28 | import os | 29 | import os |
898 | 29 | import re | 30 | import re |
899 | @@ -65,7 +66,9 @@ | |||
900 | 65 | MissingChangelogError, | 66 | MissingChangelogError, |
901 | 66 | AddChangelogError, | 67 | AddChangelogError, |
902 | 67 | InconsistentSourceFormatError, | 68 | InconsistentSourceFormatError, |
903 | 69 | MultipleUpstreamTarballsNotSupported, | ||
904 | 68 | NoPreviousUpload, | 70 | NoPreviousUpload, |
905 | 71 | TarFailed, | ||
906 | 69 | UnableToFindPreviousUpload, | 72 | UnableToFindPreviousUpload, |
907 | 70 | UnparseableChangelog, | 73 | UnparseableChangelog, |
908 | 71 | ) | 74 | ) |
909 | @@ -682,4 +685,24 @@ | |||
910 | 682 | return BUILD_TYPE_NORMAL | 685 | return BUILD_TYPE_NORMAL |
911 | 683 | 686 | ||
912 | 684 | 687 | ||
913 | 688 | def extract_orig_tarballs(tarballs, target, strip_components=None): | ||
914 | 689 | """Extract orig tarballs to a directory. | ||
915 | 685 | 690 | ||
916 | 691 | :param tarballs: List of tarball filenames | ||
917 | 692 | :param target: Target directory (must already exist) | ||
918 | 693 | """ | ||
919 | 694 | if len(tarballs) != 1: | ||
920 | 695 | raise MultipleUpstreamTarballsNotSupported() | ||
921 | 696 | tarball_filename = tarballs[0] | ||
922 | 697 | tar_args = ["tar"] | ||
923 | 698 | if tarball_filename.endswith(".tar.bz2"): | ||
924 | 699 | tar_args.append('xjf') | ||
925 | 700 | else: | ||
926 | 701 | tar_args.append('xzf') | ||
927 | 702 | tar_args.extend([tarball_filename, "-C", target]) | ||
928 | 703 | if strip_components is not None: | ||
929 | 704 | tar_args.extend(["--strip-components", "1"]) | ||
930 | 705 | proc = subprocess.Popen(tar_args, preexec_fn=subprocess_setup) | ||
931 | 706 | proc.communicate() | ||
932 | 707 | if proc.returncode != 0: | ||
933 | 708 | raise TarFailed("extract", tarball_filename) |
62 + db.import_ upstream_ tarball( tarball_ filenames, version, parents)
Should this perhaps be import_ upstream_ tarballs now?
Thanks,
James