Merge lp:~jelmer/bzr-builddeb/no-force-gz into lp:bzr-builddeb

Proposed by Jelmer Vernooij
Status: Merged
Approved by: James Westby
Approved revision: 583
Merged at revision: 583
Proposed branch: lp:~jelmer/bzr-builddeb/no-force-gz
Merge into: lp:bzr-builddeb
Diff against target: 232 lines (+53/-50)
6 files modified
cmds.py (+1/-2)
dh_make.py (+1/-2)
repack_tarball.py (+39/-38)
tests/test_repack_tarball.py (+7/-1)
tests/test_repack_tarball_extra.py (+1/-2)
upstream/__init__.py (+4/-5)
To merge this branch: bzr merge lp:~jelmer/bzr-builddeb/no-force-gz
Reviewer Review Type Date Requested Status
James Westby Approve
Review via email: mp+68167@code.launchpad.net

Description of the change

Remove the force_gz argument to the repacker; instead, use the target name to determine what to generate.

This prevents us from generating .tar.bz2 files that actually have gz compression and vice versa.

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

Good idea.

Thanks,

James

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'cmds.py'
--- cmds.py 2011-06-28 08:41:44 +0000
+++ cmds.py 2011-07-17 06:08:40 +0000
@@ -578,8 +578,7 @@
578 dest_name = tarball_name(package, version, None, format=format)578 dest_name = tarball_name(package, version, None, format=format)
579 tarball_filename = os.path.join(orig_dir, dest_name)579 tarball_filename = os.path.join(orig_dir, dest_name)
580 try:580 try:
581 repack_tarball(location, dest_name, target_dir=orig_dir,581 repack_tarball(location, dest_name, target_dir=orig_dir)
582 force_gz=not v3)
583 except FileExists:582 except FileExists:
584 raise BzrCommandError("The target file %s already exists, and is either "583 raise BzrCommandError("The target file %s already exists, and is either "
585 "different to the new upstream tarball, or they "584 "different to the new upstream tarball, or they "
586585
=== modified file 'dh_make.py'
--- dh_make.py 2011-06-28 08:41:44 +0000
+++ dh_make.py 2011-07-17 06:08:40 +0000
@@ -66,8 +66,7 @@
66 format = "lzma"66 format = "lzma"
67 dest_name = util.tarball_name(package_name, version, None, format=format)67 dest_name = util.tarball_name(package_name, version, None, format=format)
68 trace.note("Fetching tarball")68 trace.note("Fetching tarball")
69 repack_tarball(tarball, dest_name, target_dir=orig_dir,69 repack_tarball(tarball, dest_name, target_dir=orig_dir)
70 force_gz=not use_v3)
71 provider = upstream.UpstreamProvider(package_name, version,70 provider = upstream.UpstreamProvider(package_name, version,
72 orig_dir, [])71 orig_dir, [])
73 orig_files = provider.provide(os.path.join(tree.basedir, ".."))72 orig_files = provider.provide(os.path.join(tree.basedir, ".."))
7473
=== modified file 'repack_tarball.py'
--- repack_tarball.py 2011-06-24 13:23:49 +0000
+++ repack_tarball.py 2011-07-17 06:08:40 +0000
@@ -141,39 +141,37 @@
141141
142142
143def get_filetype(filename):143def get_filetype(filename):
144 types = [".tar.gz", ".tgz", ".tar.bz2", ".tar.xz", ".tar.lzma", ".tbz2",144 types = {
145 ".tar", ".zip"]145 ".tar.gz": "gz",
146 for filetype in types:146 ".tgz": "gz",
147 ".tar.bz2": "bz2",
148 ".tar.xz": "xz",
149 ".tar.lzma": "lzma",
150 ".tbz2": "bz2",
151 ".tar": "tar",
152 ".zip": "zip"
153 }
154 for filetype, name in types.iteritems():
147 if filename.endswith(filetype):155 if filename.endswith(filetype):
148 return filetype156 return name
149157
150158
151def get_repacker_class(source_filename, force_gz=True):159def get_repacker_class(source_format, target_format):
152 """Return the appropriate repacker based on the file extension."""160 """Return the appropriate repacker based on the file extension."""
153 filetype = get_filetype(source_filename)161 if source_format == target_format:
154 if (filetype == ".tar.gz" or filetype == ".tgz"):162 return CopyRepacker
155 return CopyRepacker163 known_formatters = {
156 if (filetype == ".tar.bz2" or filetype == ".tbz2"):164 ("bz2", "gz"): Tbz2TgzRepacker,
157 if force_gz:165 ("lzma", "gz"): TarLzma2TgzRepacker,
158 return Tbz2TgzRepacker166 ("xz", "gz"): TarLzma2TgzRepacker,
159 return CopyRepacker167 ("tar", "gz"): TarTgzRepacker,
160 if filetype == ".tar.lzma":168 ("zip", "gz"): ZipTgzRepacker,
161 if force_gz:169 }
162 return TarLzma2TgzRepacker170 return known_formatters.get((source_format, target_format))
163 return CopyRepacker171
164 if filetype == ".tar.xz":172
165 return TarLzma2TgzRepacker173def _error_if_exists(target_transport, new_name, source_name):
166 if filetype == ".tar":
167 return TarTgzRepacker
168 if filetype == ".zip":
169 return ZipTgzRepacker
170 return None
171
172
173def _error_if_exists(target_transport, new_name, source_name, force_gz=True):
174 source_filetype = get_filetype(source_name)174 source_filetype = get_filetype(source_name)
175 if force_gz and source_filetype != ".tar.gz":
176 raise FileExists(new_name)
177 source_f = open_file(source_name)175 source_f = open_file(source_name)
178 try:176 try:
179 source_sha = new_sha(source_f.read()).hexdigest()177 source_sha = new_sha(source_f.read()).hexdigest()
@@ -201,8 +199,10 @@
201 target_f.close()199 target_f.close()
202200
203201
204def _repack_other(target_transport, new_name, source_name, force_gz=True):202def _repack_other(target_transport, new_name, source_name):
205 repacker_cls = get_repacker_class(source_name, force_gz=force_gz)203 source_filetype = get_filetype(source_name)
204 target_filetype = get_filetype(new_name)
205 repacker_cls = get_repacker_class(source_filetype, target_filetype)
206 if repacker_cls is None:206 if repacker_cls is None:
207 raise UnsupportedRepackFormat(source_name)207 raise UnsupportedRepackFormat(source_name)
208 target_transport.ensure_base()208 target_transport.ensure_base()
@@ -218,7 +218,7 @@
218 target_f.close()218 target_f.close()
219219
220220
221def repack_tarball(source_name, new_name, target_dir=None, force_gz=True):221def repack_tarball(source_name, new_name, target_dir=None):
222 """Repack the file/dir named to a .tar.gz with the chosen name.222 """Repack the file/dir named to a .tar.gz with the chosen name.
223223
224 This function takes a named file of either .tar.gz, .tar .tgz .tar.bz2 224 This function takes a named file of either .tar.gz, .tar .tgz .tar.bz2
@@ -239,7 +239,6 @@
239 :keyword target_dir: the directory to consider new_name relative to, and239 :keyword target_dir: the directory to consider new_name relative to, and
240 will be created if non-existant.240 will be created if non-existant.
241 :type target_dir: string241 :type target_dir: string
242 :param force_gz: whether to repack other .tar files to .tar.gz.
243 :return: None242 :return: None
244 :throws NoSuchFile: if source_name doesn't exist.243 :throws NoSuchFile: if source_name doesn't exist.
245 :throws FileExists: if the target filename (after considering target_dir)244 :throws FileExists: if the target filename (after considering target_dir)
@@ -257,11 +256,13 @@
257 extra, new_name = os.path.split(new_name)256 extra, new_name = os.path.split(new_name)
258 target_transport = get_transport(os.path.join(target_dir, extra))257 target_transport = get_transport(os.path.join(target_dir, extra))
259 if target_transport.has(new_name):258 if target_transport.has(new_name):
260 _error_if_exists(target_transport, new_name, source_name,259 source_format = get_filetype(source_name)
261 force_gz=force_gz)260 target_format = get_filetype(new_name)
261 if source_format != target_format:
262 raise FileExists(new_name)
263 _error_if_exists(target_transport, new_name, source_name)
262 return264 return
263 if os.path.isdir(source_name):265 if os.path.isdir(source_name):
264 _repack_directory(target_transport, new_name, source_name)266 _repack_directory(target_transport, new_name, source_name)
265 else:267 else:
266 _repack_other(target_transport, new_name, source_name,268 _repack_other(target_transport, new_name, source_name)
267 force_gz=force_gz)
268269
=== modified file 'tests/test_repack_tarball.py'
--- tests/test_repack_tarball.py 2011-06-24 13:23:49 +0000
+++ tests/test_repack_tarball.py 2011-07-17 06:08:40 +0000
@@ -27,6 +27,7 @@
27from bzrlib.plugins.builddeb.errors import UnsupportedRepackFormat27from bzrlib.plugins.builddeb.errors import UnsupportedRepackFormat
28from bzrlib.plugins.builddeb.repack_tarball import (28from bzrlib.plugins.builddeb.repack_tarball import (
29 repack_tarball,29 repack_tarball,
30 get_filetype,
30 get_repacker_class,31 get_repacker_class,
31 )32 )
32from bzrlib.plugins.builddeb.tests import TestCaseInTempDir33from bzrlib.plugins.builddeb.tests import TestCaseInTempDir
@@ -69,7 +70,9 @@
6970
70 def test_repack_tarball_non_extant(self):71 def test_repack_tarball_non_extant(self):
71 error = NoSuchFile72 error = NoSuchFile
72 if (get_repacker_class(self.old_tarball) is None):73 old_format = get_filetype(self.old_tarball)
74 new_format = get_filetype(self.new_tarball)
75 if (get_repacker_class(old_format, new_format) is None):
73 # directory, can't really be detected remotely, so we have a76 # directory, can't really be detected remotely, so we have a
74 # error that could mean two things77 # error that could mean two things
75 error = UnsupportedRepackFormat78 error = UnsupportedRepackFormat
@@ -132,3 +135,6 @@
132 self.assertPathDoesNotExist(self.new_tarball)135 self.assertPathDoesNotExist(self.new_tarball)
133 self.assertPathDoesNotExist(os.path.join(target_dir, self.new_tarball))136 self.assertPathDoesNotExist(os.path.join(target_dir, self.new_tarball))
134 self.assertPathExists(target_dir)137 self.assertPathExists(target_dir)
138
139
140
135141
=== modified file 'tests/test_repack_tarball_extra.py'
--- tests/test_repack_tarball_extra.py 2011-06-24 13:23:49 +0000
+++ tests/test_repack_tarball_extra.py 2011-07-17 06:08:40 +0000
@@ -118,8 +118,7 @@
118 bz2_tarball_name = 'package-0.2.tar.bz2'118 bz2_tarball_name = 'package-0.2.tar.bz2'
119 create_basedir('package-0.2/', files=['README'])119 create_basedir('package-0.2/', files=['README'])
120 make_new_upstream_tarball_bz2(bz2_tarball_name)120 make_new_upstream_tarball_bz2(bz2_tarball_name)
121 repack_tarball(bz2_tarball_name, bz2_tarball_name, target_dir=".",121 repack_tarball(bz2_tarball_name, bz2_tarball_name, target_dir=".")
122 force_gz=False)
123 self.assertPathExists(bz2_tarball_name)122 self.assertPathExists(bz2_tarball_name)
124123
125 def test_exists_different_bz2(self):124 def test_exists_different_bz2(self):
126125
=== modified file 'upstream/__init__.py'
--- upstream/__init__.py 2011-06-28 08:41:44 +0000
+++ upstream/__init__.py 2011-07-17 06:08:40 +0000
@@ -177,7 +177,7 @@
177 fetched_tarball = os.path.join(source_dir, filename)177 fetched_tarball = os.path.join(source_dir, filename)
178 if os.path.exists(fetched_tarball):178 if os.path.exists(fetched_tarball):
179 repack_tarball(fetched_tarball, filename,179 repack_tarball(fetched_tarball, filename,
180 target_dir=target_dir, force_gz=False)180 target_dir=target_dir)
181 filenames.append(os.path.join(target_dir, filename))181 filenames.append(os.path.join(target_dir, filename))
182 if filenames:182 if filenames:
183 return filenames183 return filenames
@@ -441,7 +441,7 @@
441 return None441 return None
442 for path in paths:442 for path in paths:
443 repack_tarball(path, os.path.basename(path),443 repack_tarball(path, os.path.basename(path),
444 target_dir=target_dir, force_gz=False)444 target_dir=target_dir)
445 return paths445 return paths
446446
447447
@@ -482,7 +482,7 @@
482 if version != self.version:482 if version != self.version:
483 raise PackageVersionNotPresent(package, version, self)483 raise PackageVersionNotPresent(package, version, self)
484 dest_name = tarball_name(package, version)484 dest_name = tarball_name(package, version)
485 repack_tarball(self.path, dest_name, target_dir=target_dir, force_gz=True)485 repack_tarball(self.path, dest_name, target_dir=target_dir)
486 return [os.path.join(target_dir, dest_name)]486 return [os.path.join(target_dir, dest_name)]
487487
488 def get_latest_version(self, package, version):488 def get_latest_version(self, package, version):
@@ -556,8 +556,7 @@
556 outf.close()556 outf.close()
557 finally:557 finally:
558 inf.close()558 inf.close()
559 repack_tarball(tmppath, dest_name, target_dir=target_dir,559 repack_tarball(tmppath, dest_name, target_dir=target_dir)
560 force_gz=True)
561 return os.path.join(target_dir, dest_name)560 return os.path.join(target_dir, dest_name)
562 finally:561 finally:
563 shutil.rmtree(tmpdir)562 shutil.rmtree(tmpdir)

Subscribers

People subscribed via source and target branches