Merge lp:~jelmer/bzr-builddeb/multiple-upstream-tarballs-pt1 into lp:bzr-builddeb

Proposed by Jelmer Vernooij
Status: Merged
Approved by: James Westby
Approved revision: 573
Merged at revision: 570
Proposed branch: lp:~jelmer/bzr-builddeb/multiple-upstream-tarballs-pt1
Merge into: lp:bzr-builddeb
Diff against target: 601 lines (+141/-105)
8 files modified
cmds.py (+30/-24)
dh_make.py (+11/-5)
errors.py (+4/-3)
source_distiller.py (+6/-2)
tests/test_upstream.py (+33/-18)
upstream/__init__.py (+55/-51)
upstream/branch.py (+1/-1)
upstream/pristinetar.py (+1/-1)
To merge this branch: bzr merge lp:~jelmer/bzr-builddeb/multiple-upstream-tarballs-pt1
Reviewer Review Type Date Requested Status
James Westby Approve
Review via email: mp+64551@code.launchpad.net

Description of the change

Initial work on supporting multiple upstream tarballs in bzr-builddeb.

This updates the UpstreamSource interface to return multiple paths for upstream tarballs and updates the AptSource and GetOrigSource implementations to actually return multiple tarballs.

Merging multiple upstream tarballs and extracting/committing multiple upstream tarballs in pristine tar branches are the next steps.

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 'cmds.py'
2--- cmds.py 2011-06-03 12:17:42 +0000
3+++ cmds.py 2011-06-14 14:11:23 +0000
4@@ -69,6 +69,7 @@
5 BuildFailedError,
6 DchError,
7 MissingChangelogError,
8+ MultipleUpstreamTarballsNotSupported,
9 NoPreviousUpload,
10 PackageVersionNotPresent,
11 StrictBuildFailed,
12@@ -553,45 +554,50 @@
13 'merge had completed failed. Add the new changelog '
14 'entry yourself, review the merge, and then commit.')
15
16- def _do_merge(self, tree, tarball_filename, package, version,
17+ def _do_merge(self, tree, tarball_filenames, package, version,
18 current_version, upstream_branch, upstream_revision, merge_type,
19 force):
20 db = DistributionBranch(tree.branch, None, tree=tree)
21 dbs = DistributionBranchSet()
22 dbs.add_branch(db)
23- conflicts = db.merge_upstream(tarball_filename, package, version,
24+ if len(tarball_filenames) > 1:
25+ raise MultipleUpstreamTarballsNotSupported()
26+ conflicts = db.merge_upstream(tarball_filenames[0], package, version,
27 current_version, upstream_branch=upstream_branch,
28 upstream_revision=upstream_revision,
29 merge_type=merge_type, force=force)
30 return conflicts
31
32- def _fetch_tarball(self, package, version, orig_dir, location, v3):
33+ def _fetch_tarball(self, package, version, orig_dir, locations, v3):
34 from bzrlib.plugins.builddeb.repack_tarball import repack_tarball
35+ ret = []
36 format = None
37- if v3:
38- if location.endswith(".tar.bz2") or location.endswith(".tbz2"):
39- format = "bz2"
40- dest_name = tarball_name(package, version, format=format)
41- tarball_filename = os.path.join(orig_dir, dest_name)
42- try:
43- repack_tarball(location, dest_name, target_dir=orig_dir,
44- force_gz=not v3)
45- except FileExists:
46- raise BzrCommandError("The target file %s already exists, and is either "
47- "different to the new upstream tarball, or they "
48- "are of different formats. Either delete the target "
49- "file, or use it as the argument to import."
50- % dest_name)
51- return tarball_filename
52+ for location in locations:
53+ if v3:
54+ if location.endswith(".tar.bz2") or location.endswith(".tbz2"):
55+ format = "bz2"
56+ dest_name = tarball_name(package, version, format=format)
57+ tarball_filename = os.path.join(orig_dir, dest_name)
58+ try:
59+ repack_tarball(location, dest_name, target_dir=orig_dir,
60+ force_gz=not v3)
61+ except FileExists:
62+ raise BzrCommandError("The target file %s already exists, and is either "
63+ "different to the new upstream tarball, or they "
64+ "are of different formats. Either delete the target "
65+ "file, or use it as the argument to import."
66+ % dest_name)
67+ ret.append(tarball_filename)
68+ return ret
69
70 def _get_tarball(self, config, tree, package, version, upstream_branch,
71- upstream_revision, v3, location):
72+ upstream_revision, v3, locations):
73 orig_dir = config.orig_dir or default_orig_dir
74 orig_dir = os.path.join(tree.basedir, orig_dir)
75 if not os.path.exists(orig_dir):
76 os.makedirs(orig_dir)
77 return self._fetch_tarball(package, version, orig_dir,
78- location, v3)
79+ locations, v3)
80
81 def _get_changelog_info(self, tree, last_version, package, distribution):
82 current_version = last_version
83@@ -738,15 +744,15 @@
84 (version, upstream_branch_source))
85 if need_upstream_tarball:
86 target_dir = tempfile.mkdtemp() # FIXME: Cleanup?
87- location = primary_upstream_source.fetch_tarball(
88+ locations = primary_upstream_source.fetch_tarball(
89 package, version, target_dir)
90 source_format = get_source_format(tree)
91 v3 = (source_format in [
92 FORMAT_3_0_QUILT, FORMAT_3_0_NATIVE])
93- tarball_filename = self._get_tarball(config, tree, package,
94+ tarball_filenames = self._get_tarball(config, tree, package,
95 version, upstream_branch, upstream_revision, v3,
96- location)
97- conflicts = self._do_merge(tree, tarball_filename, package,
98+ locations)
99+ conflicts = self._do_merge(tree, tarball_filenames, package,
100 version, current_version, upstream_branch, upstream_revision,
101 merge_type, force)
102 if current_version is not None and Version(current_version) >= Version(version):
103
104=== modified file 'dh_make.py'
105--- dh_make.py 2011-02-02 18:33:23 +0000
106+++ dh_make.py 2011-06-14 14:11:23 +0000
107@@ -13,6 +13,7 @@
108
109 from bzrlib.plugins.builddeb import (
110 default_orig_dir,
111+ errors,
112 import_dsc,
113 upstream,
114 util,
115@@ -50,7 +51,7 @@
116 return tree
117
118
119-def _get_tarball(tree, tarball, package_name, version, use_v3=False):
120+def _get_tarballs(tree, tarball, package_name, version, use_v3=False):
121 from bzrlib.plugins.builddeb.repack_tarball import repack_tarball
122 config = util.debuild_config(tree, tree)
123 orig_dir = config.orig_dir or default_orig_dir
124@@ -62,14 +63,16 @@
125 if tarball.endswith(".tar.bz2") or tarball.endswith(".tbz2"):
126 format = "bz2"
127 dest_name = util.tarball_name(package_name, version, format=format)
128- tarball_filename = os.path.join(orig_dir, dest_name)
129 trace.note("Fetching tarball")
130 repack_tarball(tarball, dest_name, target_dir=orig_dir,
131 force_gz=not use_v3)
132 provider = upstream.UpstreamProvider(package_name, version,
133 orig_dir, [])
134- provider.provide(os.path.join(tree.basedir, ".."))
135- return tarball_filename, util.md5sum_filename(tarball_filename)
136+ orig_files = provider.provide(os.path.join(tree.basedir, ".."))
137+ ret = []
138+ for filename in orig_files:
139+ ret.append((filename, util.md5sum_filename(filename)))
140+ return ret
141
142
143 def import_upstream(tarball, package_name, version, use_v3=False):
144@@ -78,12 +81,15 @@
145 parents = [tree.branch.last_revision()]
146 else:
147 parents = []
148- tarball_filename, md5sum = _get_tarball(tree, tarball,
149+ tarball_filenames = _get_tarballs(tree, tarball,
150 package_name, version, use_v3=use_v3)
151 db = import_dsc.DistributionBranch(tree.branch, tree.branch, tree=tree,
152 upstream_tree=tree)
153 dbs = import_dsc.DistributionBranchSet()
154 dbs.add_branch(db)
155+ if len(tarball_filenames) > 1:
156+ raise errors.MultipleUpstreamTarballsNotSupported()
157+ (tarball_filename, md5sum) = tarball_filenames[0]
158 db.import_upstream_tarball(tarball_filename, version, parents, md5sum=md5sum)
159 return tree
160
161
162=== modified file 'errors.py'
163--- errors.py 2011-06-09 21:43:07 +0000
164+++ errors.py 2011-06-14 14:11:23 +0000
165@@ -34,10 +34,11 @@
166
167
168 class MissingUpstreamTarball(BzrError):
169- _fmt = "Unable to find the needed upstream tarball: %(tarball_name)s."
170+ _fmt = ("Unable to find the needed upstream tarball for package %(package)s, "
171+ "version %(version)s.")
172
173- def __init__(self, tarball_name):
174- BzrError.__init__(self, tarball_name=tarball_name)
175+ def __init__(self, package, version):
176+ BzrError.__init__(self, package=package, version=version)
177
178
179 class TarFailed(BzrError):
180
181=== modified file 'source_distiller.py'
182--- source_distiller.py 2010-03-11 23:44:57 +0000
183+++ source_distiller.py 2011-06-14 14:11:23 +0000
184@@ -26,6 +26,7 @@
185 from bzrlib import errors as bzr_errors
186
187 from bzrlib.plugins.builddeb.errors import (
188+ MultipleUpstreamTarballsNotSupported,
189 TarFailed,
190 )
191 from bzrlib.plugins.builddeb.util import (
192@@ -121,11 +122,14 @@
193 if parent_dir != '' and not os.path.exists(parent_dir):
194 os.makedirs(parent_dir)
195 if not self.use_existing:
196- tarball = self.upstream_provider.provide(parent_dir)
197+ tarballs = self.upstream_provider.provide(parent_dir)
198+ if len(tarballs) > 1:
199+ raise MultipleUpstreamTarballsNotSupported()
200+ tarball = tarballs[0]
201 # Extract it to the right place
202 tempdir = tempfile.mkdtemp(prefix='builddeb-merge-')
203 try:
204- ret = subprocess.call(['tar','-C',tempdir,'-xf',tarball],
205+ ret = subprocess.call(['tar', '-C', tempdir, '-xf', tarball],
206 preexec_fn=subprocess_setup)
207 if ret != 0:
208 raise TarFailed("uncompress", tarball)
209
210=== modified file 'tests/test_upstream.py'
211--- tests/test_upstream.py 2011-06-14 00:32:04 +0000
212+++ tests/test_upstream.py 2011-06-14 14:11:23 +0000
213@@ -186,6 +186,21 @@
214 self.assertEqual("apackage", sources.lookup_package)
215 self.assertEqual(0, caller.called)
216
217+ def test_apt_provider_multiple_tarballs(self):
218+ caller = MockAptCaller(work=True)
219+ sources = MockSources(["0.1-1", "0.2-1"],
220+ [[("checksum", 0L, "apackage_0.1.orig.tar.gz", "tar")],
221+ [("checksum", 0L, "apackage_0.2.orig.tar.bz2", "tar"),
222+ ("checksum", 1L, "apackage_0.2.orig-extra.tar.gz", "tar")]])
223+ apt_pkg = MockAptPkg(sources)
224+ src = AptSource()
225+ src._run_apt_source = caller.call
226+ paths = src.fetch_tarball("apackage", "0.2", "target",
227+ _apt_pkg=apt_pkg)
228+ self.assertEquals(paths, [
229+ "target/apackage_0.2.orig.tar.bz2",
230+ "target/apackage_0.2.orig-extra.tar.gz"])
231+
232 def test_apt_provider_right_version_bz2(self):
233 caller = MockAptCaller(work=True)
234 sources = MockSources(["0.1-1", "0.2-1"],
235@@ -194,10 +209,9 @@
236 apt_pkg = MockAptPkg(sources)
237 src = AptSource()
238 src._run_apt_source = caller.call
239- path = src.fetch_tarball("apackage", "0.2", "target",
240+ paths = src.fetch_tarball("apackage", "0.2", "target",
241 _apt_pkg=apt_pkg)
242- self.assertEquals(path,
243- "target/apackage_0.2.orig.tar.bz2")
244+ self.assertEquals(paths, ["target/apackage_0.2.orig.tar.bz2"])
245
246 def test_apt_provider_right_version(self):
247 caller = MockAptCaller(work=True)
248@@ -207,10 +221,9 @@
249 apt_pkg = MockAptPkg(sources)
250 src = AptSource()
251 src._run_apt_source = caller.call
252- path = src.fetch_tarball("apackage", "0.2", "target",
253+ paths = src.fetch_tarball("apackage", "0.2", "target",
254 _apt_pkg=apt_pkg)
255- self.assertEquals(path,
256- "target/apackage_0.2.orig.tar.gz")
257+ self.assertEquals(paths, ["target/apackage_0.2.orig.tar.gz"])
258 self.assertEqual(1, apt_pkg.init_called_times)
259 self.assertEqual(1, apt_pkg.get_pkg_source_records_called_times)
260 self.assertEqual(1, sources.restart_called_times)
261@@ -276,7 +289,7 @@
262 self._specific_versions.append((package, version, target_dir))
263 if not self._succeed:
264 raise PackageVersionNotPresent(package, version, self)
265- return self._tarball_path(package, version, target_dir)
266+ return [self._tarball_path(package, version, target_dir)]
267
268 def __repr__(self):
269 return "%s()" % self.__class__.__name__
270@@ -377,7 +390,7 @@
271 source = UpstreamBranchSource(self.tree.branch,
272 {"1.0": self.tree.branch.last_revision()})
273 os.mkdir("mydir")
274- self.assertEquals("mydir/foo_1.0.orig.tar.gz",
275+ self.assertEquals(["mydir/foo_1.0.orig.tar.gz"],
276 source.fetch_tarball("foo", "1.0", "mydir"))
277 self.assertPathExists("mydir/foo_1.0.orig.tar.gz")
278
279@@ -443,7 +456,7 @@
280 {"1.0": self.tree.branch.last_revision()})
281 self.assertIs(None, source._upstream_branch)
282 os.mkdir("mydir")
283- self.assertEquals("mydir/foo_1.0.orig.tar.gz",
284+ self.assertEquals(["mydir/foo_1.0.orig.tar.gz"],
285 source.fetch_tarball("foo", "1.0", "mydir"))
286 self.assertPathExists("mydir/foo_1.0.orig.tar.gz")
287 self.assertIsNot(None, source._upstream_branch)
288@@ -721,7 +734,7 @@
289 def test_fetch_tarball(self):
290 source = TarfileSource("foo-1.0.tar.gz", "1.0")
291 os.mkdir("bar")
292- self.assertEquals("bar/foo_1.0.orig.tar.gz",
293+ self.assertEquals(["bar/foo_1.0.orig.tar.gz"],
294 source.fetch_tarball("foo", "1.0", "bar"))
295 self.assertPathExists("bar/foo_1.0.orig.tar.gz")
296
297@@ -731,7 +744,7 @@
298 zf.close()
299 source = TarfileSource("bla-2.0.zip", "2.0")
300 os.mkdir("bar")
301- self.assertEquals("bar/foo_2.0.orig.tar.gz",
302+ self.assertEquals(["bar/foo_2.0.orig.tar.gz"],
303 source.fetch_tarball("foo", "2.0", "bar"))
304 self.assertPathExists("bar/foo_2.0.orig.tar.gz")
305
306@@ -748,7 +761,7 @@
307 bz2.BZ2File("foo-1.0.tar.bz2").close()
308 source = TarfileSource("foo-1.0.tar.bz2", "1.0")
309 os.mkdir("bar")
310- self.assertEquals("bar/foo_1.0.orig.tar.gz",
311+ self.assertEquals(["bar/foo_1.0.orig.tar.gz"],
312 source.fetch_tarball("foo", "1.0", "bar"))
313 self.assertPathExists("bar/foo_1.0.orig.tar.gz")
314 gzip.open("bar/foo_1.0.orig.tar.gz").close()
315@@ -761,7 +774,7 @@
316 pass
317
318 def provide(self, target_dir):
319- raise MissingUpstreamTarball("test_tarball")
320+ raise MissingUpstreamTarball("test_tarball", "1.0")
321
322
323 class _TouchUpstreamProvider(UpstreamProvider):
324@@ -771,9 +784,11 @@
325 self.desired_tarball_name = desired_tarball_name
326
327 def provide(self, target_dir):
328- f = open(os.path.join(target_dir, self.desired_tarball_name), "wb")
329+ path = os.path.join(target_dir, self.desired_tarball_name)
330+ f = open(path, "wb")
331 f.write("I am a tarball, honest\n")
332 f.close()
333+ return [path]
334
335
336 class _SimpleUpstreamProvider(UpstreamProvider):
337@@ -785,11 +800,11 @@
338 self.store_dir = store_dir
339
340 def provide(self, target_dir):
341- path = (self.already_exists_in_target(target_dir)
342+ paths = (self.already_exists_in_target(target_dir)
343 or self.provide_from_store_dir(target_dir))
344- if path is not None:
345- return path
346- raise MissingUpstreamTarball(self._tarball_names()[0])
347+ if paths is not None:
348+ return paths
349+ raise MissingUpstreamTarball(self.package, self.version)
350
351
352 class ExtractTarballVersionTests(TestCase):
353
354=== modified file 'upstream/__init__.py'
355--- upstream/__init__.py 2011-06-13 22:10:22 +0000
356+++ upstream/__init__.py 2011-06-14 14:11:23 +0000
357@@ -85,7 +85,7 @@
358 :param package: Name of the package
359 :param version: Version string of the version to fetch
360 :param target_dir: Directory in which to store the tarball
361- :return: Path of the fetched tarball
362+ :return: Paths of the fetched tarballs
363 """
364 raise NotImplementedError(self.fetch_tarball)
365
366@@ -126,14 +126,17 @@
367 lookup = get_fn(sources, 'lookup', 'Lookup')
368 while lookup(package):
369 version = get_fn(sources, 'version', 'Version')
370+ filenames = []
371 for (checksum, size, filename, filekind) in sources.files:
372 if filekind != "tar":
373 continue
374 filename = os.path.basename(filename)
375 if filename.startswith("%s_%s.orig" % (package, upstream_version)):
376- if self._run_apt_source(package, version, target_dir):
377- return os.path.join(target_dir, filename)
378- break
379+ filenames.append(filename)
380+ if filenames:
381+ if self._run_apt_source(package, version, target_dir):
382+ return [os.path.join(target_dir, filename)
383+ for filename in filenames]
384 note("apt could not find the needed tarball.")
385 raise PackageVersionNotPresent(package, upstream_version, self)
386
387@@ -157,8 +160,7 @@
388 self.tree = tree
389 self.larstiq = larstiq
390
391- def _get_orig_source(self, source_dir, desired_tarball_names,
392- target_dir):
393+ def _get_orig_source(self, source_dir, prefix, target_dir):
394 note("Trying to use get-orig-source to retrieve needed tarball.")
395 command = ["make", "-f", "debian/rules", "get-orig-source"]
396 proc = subprocess.Popen(command, cwd=source_dir)
397@@ -166,13 +168,18 @@
398 if ret != 0:
399 note("Trying to run get-orig-source rule failed")
400 return None
401- for desired_tarball_name in desired_tarball_names:
402- fetched_tarball = os.path.join(source_dir, desired_tarball_name)
403+ filenames = []
404+ for filename in os.listdir(source_dir):
405+ if not filename.startswith(prefix):
406+ continue
407+ fetched_tarball = os.path.join(source_dir, filename)
408 if os.path.exists(fetched_tarball):
409- repack_tarball(fetched_tarball, desired_tarball_name,
410+ repack_tarball(fetched_tarball, filename,
411 target_dir=target_dir, force_gz=False)
412- return fetched_tarball
413- note("get-orig-source did not create %s", desired_tarball_name)
414+ filenames.append(os.path.join(target_dir, filename))
415+ if filenames:
416+ return filenames
417+ note("get-orig-source did not create file with prefix %s", prefix)
418 return None
419
420 def fetch_tarball(self, package, version, target_dir):
421@@ -182,9 +189,6 @@
422 rules_name = 'debian/rules'
423 rules_id = self.tree.path2id(rules_name)
424 if rules_id is not None:
425- desired_tarball_names = [tarball_name(package, version),
426- tarball_name(package, version, 'bz2'),
427- tarball_name(package, version, 'lzma')]
428 tmpdir = tempfile.mkdtemp(prefix="builddeb-get-orig-source-")
429 try:
430 base_export_dir = os.path.join(tmpdir, "export")
431@@ -193,11 +197,11 @@
432 os.mkdir(export_dir)
433 export_dir = os.path.join(export_dir, "debian")
434 export(self.tree, export_dir, format="dir")
435- tarball_path = self._get_orig_source(base_export_dir,
436- desired_tarball_names, target_dir)
437- if tarball_path is None:
438+ tarball_paths = self._get_orig_source(base_export_dir,
439+ "%s_%s.orig" % (package, version), target_dir)
440+ if tarball_paths is None:
441 raise PackageVersionNotPresent(package, version, self)
442- return tarball_path
443+ return tarball_paths
444 finally:
445 shutil.rmtree(tmpdir)
446 note("No debian/rules file to try and use for a get-orig-source rule")
447@@ -279,7 +283,7 @@
448 if r != 0:
449 note("uscan could not find the needed tarball.")
450 raise PackageVersionNotPresent(package, version, self)
451- return self._tarball_path(package, version, target_dir)
452+ return [self._tarball_path(package, version, target_dir)]
453
454
455 class SelfSplitSource(UpstreamSource):
456@@ -307,13 +311,13 @@
457 "to create the tarball")
458 tarball_path = self._tarball_path(package, version, target_dir)
459 self._split(package, version, tarball_path)
460- return tarball_path
461+ return [tarball_path]
462
463
464 class StackedUpstreamSource(UpstreamSource):
465 """An upstream source that checks a list of other upstream sources.
466
467- The first source that can provide a tarball, wins.
468+ The first source that can provide a tarball, wins.
469 """
470
471 def __init__(self, sources):
472@@ -325,12 +329,11 @@
473 def fetch_tarball(self, package, version, target_dir):
474 for source in self._sources:
475 try:
476- path = source.fetch_tarball(package, version, target_dir)
477+ paths = source.fetch_tarball(package, version, target_dir)
478 except PackageVersionNotPresent:
479 pass
480 else:
481- assert isinstance(path, basestring)
482- return path
483+ return paths
484 raise PackageVersionNotPresent(package, version, self)
485
486 def get_latest_version(self, package, version):
487@@ -364,7 +367,7 @@
488 self.source = StackedUpstreamSource(sources)
489
490 def provide(self, target_dir):
491- """Provide the upstream tarball any way possible.
492+ """Provide the upstream tarball(s) any way possible.
493
494 Call this to place the correctly named tarball in to target_dir,
495 through means possible.
496@@ -396,44 +399,45 @@
497 if not os.path.exists(self.store_dir):
498 os.makedirs(self.store_dir)
499 try:
500- path = self.source.fetch_tarball(self.package,
501+ paths = self.source.fetch_tarball(self.package,
502 self.version, self.store_dir)
503 except PackageVersionNotPresent:
504- raise MissingUpstreamTarball(self._tarball_names()[0])
505- assert isinstance(path, basestring)
506+ raise MissingUpstreamTarball(self.package, self.version)
507+ assert isinstance(paths, list)
508 else:
509 note("Using the upstream tarball that is present in %s" %
510 self.store_dir)
511- path = self.provide_from_store_dir(target_dir)
512- assert path is not None
513- return path
514+ paths = self.provide_from_store_dir(target_dir)
515+ assert paths is not None
516+ return paths
517+
518+ def _gather_orig_files(self, path):
519+ prefix = "%s_%s.orig" % (self.package, self.version)
520+ ret = []
521+ path = os.path.abspath(path)
522+ if not os.path.isdir(path):
523+ return None
524+ for filename in os.listdir(path):
525+ if filename.startswith(prefix):
526+ ret.append(os.path.join(path, filename))
527+ if ret:
528+ return ret
529+ return None
530
531 def already_exists_in_target(self, target_dir):
532- for tarball_name in self._tarball_names():
533- path = os.path.join(target_dir, tarball_name)
534- if os.path.exists(path):
535- return path
536- return None
537+ return self._gather_orig_files(target_dir)
538
539 def already_exists_in_store(self):
540- for tarball_name in self._tarball_names():
541- path = os.path.join(self.store_dir, tarball_name)
542- if os.path.exists(path):
543- return path
544- return None
545+ return self._gather_orig_files(self.store_dir)
546
547 def provide_from_store_dir(self, target_dir):
548- path = self.already_exists_in_store()
549- if path is not None:
550+ paths = self.already_exists_in_store()
551+ if paths is None:
552+ return None
553+ for path in paths:
554 repack_tarball(path, os.path.basename(path),
555 target_dir=target_dir, force_gz=False)
556- return path
557- return path
558-
559- def _tarball_names(self):
560- return [tarball_name(self.package, self.version),
561- tarball_name(self.package, self.version, format='bz2'),
562- tarball_name(self.package, self.version, format='lzma')]
563+ return paths
564
565
566 def extract_tarball_version(path, packagename):
567@@ -473,7 +477,7 @@
568 raise PackageVersionNotPresent(package, version, self)
569 dest_name = tarball_name(package, version)
570 repack_tarball(self.path, dest_name, target_dir=target_dir, force_gz=True)
571- return os.path.join(target_dir, dest_name)
572+ return [os.path.join(target_dir, dest_name)]
573
574 def get_latest_version(self, package, version):
575 if self.version is not None:
576
577=== modified file 'upstream/branch.py'
578--- upstream/branch.py 2011-04-28 15:46:43 +0000
579+++ upstream/branch.py 2011-06-14 14:11:23 +0000
580@@ -268,7 +268,7 @@
581 export(rev_tree, target_filename, 'tgz', tarball_base)
582 finally:
583 self.upstream_branch.unlock()
584- return target_filename
585+ return [target_filename]
586
587 def __repr__(self):
588 return "<%s for %r>" % (self.__class__.__name__,
589
590=== modified file 'upstream/pristinetar.py'
591--- upstream/pristinetar.py 2011-06-03 12:34:57 +0000
592+++ upstream/pristinetar.py 2011-06-14 14:11:23 +0000
593@@ -145,7 +145,7 @@
594 raise PackageVersionNotPresent(package, version, self)
595 except PerFileTimestampsNotSupported:
596 raise PackageVersionNotPresent(package, version, self)
597- return target_filename
598+ return [target_filename]
599
600 def _has_version(self, tag_name, md5=None):
601 if not self.branch.tags.has_tag(tag_name):

Subscribers

People subscribed via source and target branches