The following commit has been merged in the master branch: commit 36954c36abe3ce8e42b3c231579ef9e497f0da6d Author: Guillem Jover <guil...@debian.org> Date: Fri Aug 19 12:59:35 2011 +0200
Dpkg::Compression: Change default values depending on the compressor used This makes dpkg-source use more appropriate default compression values depending on the compressor used. Prompted-by: Timo Juhani Lindfors <timo.lindf...@iki.fi> diff --git a/debian/changelog b/debian/changelog index 9f29809..ec2e9ae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -193,6 +193,9 @@ dpkg (1.16.1) UNRELEASED; urgency=low Thanks to Jonathan Nieder <jrnie...@gmail.com>. Closes: #635683 * Clarify the default dpkg-deb compression-levels on the man page. * Clarify dpkg --update-avail usage error message. Closes: #628055 + * Change Dpkg::Compression default values depending on the compressor + used, and as such dpkg-source inherits this functionality. + Prompted by Timo Juhani Lindfors <timo.lindf...@iki.fi>. [ Updated dpkg translations ] * German (Sven Joachim). Closes: #620312 diff --git a/man/dpkg-source.1 b/man/dpkg-source.1 index d339303..e124fe6 100644 --- a/man/dpkg-source.1 +++ b/man/dpkg-source.1 @@ -153,7 +153,7 @@ dpkg\-dev 1.15.5. Compression level to use. As with \fB\-Z\fP it only affects newly created files. Supported values are: .IR 1 " to " 9 ", " best ", and " fast . -\fI9\fP is the default. +The default is \fI9\fP for gzip and bzip2, \fI6\fP for xz and lzma. .TP .BR \-i "[\fIregexp\fP], " \-\-diff\-ignore [=\fIregexp\fP] You may specify a perl regular expression to match files you want diff --git a/scripts/Dpkg/Compression.pm b/scripts/Dpkg/Compression.pm index 0a5ed94..c83fb4e 100644 --- a/scripts/Dpkg/Compression.pm +++ b/scripts/Dpkg/Compression.pm @@ -18,7 +18,7 @@ package Dpkg::Compression; use strict; use warnings; -our $VERSION = "1.00"; +our $VERSION = "1.01"; use Dpkg::ErrorHandling; use Dpkg::Gettext; @@ -54,26 +54,30 @@ my $COMP = { "file_ext" => "gz", "comp_prog" => [ "gzip", "--no-name", "--rsyncable" ], "decomp_prog" => [ "gunzip" ], + "default_level" => 9, }, "bzip2" => { "file_ext" => "bz2", "comp_prog" => [ "bzip2" ], "decomp_prog" => [ "bunzip2" ], + "default_level" => 9, }, "lzma" => { "file_ext" => "lzma", "comp_prog" => [ 'xz', '--format=lzma' ], "decomp_prog" => [ 'unxz', '--format=lzma' ], + "default_level" => 6, }, "xz" => { "file_ext" => "xz", "comp_prog" => [ "xz" ], "decomp_prog" => [ "unxz" ], + "default_level" => 6, }, }; our $default_compression = "gzip"; -our $default_compression_level = 9; +our $default_compression_level = undef; =item $compression_re_file_ext @@ -117,6 +121,7 @@ sub compression_is_supported { Returns the requested property of the compression method. Returns undef if either the property or the compression method doesn't exist. Valid properties currently include "file_ext" for the file extension, +"default_level" for the default compression level, "comp_prog" for the name of the compression program and "decomp_prog" for the name of the decompression program. @@ -173,25 +178,29 @@ sub compression_set_default { =item my $level = compression_get_default_level() Return the default compression level used when compressing data. It's "9" -unless C<compression_set_default_level> has been used to change it. +for "gzip" and "bzip2", "6" for "xz" and "lzma", unless +C<compression_set_default_level> has been used to change it. =item compression_set_default_level($level) -Change the default compression level. Errors out if the +Change the default compression level. Passing undef as the level will +reset it to the compressor specific default, otherwise errors out if the level is not valid (see C<compression_is_valid_level>). -either a number between 1 and 9 or "fast" -or "best". =cut sub compression_get_default_level { - return $default_compression_level; + if (defined $default_compression_level) { + return $default_compression_level; + } else { + return compression_get_property($default_compression, "default_level"); + } } sub compression_set_default_level { my ($level) = @_; error(_g("%s is not a compression level"), $level) - unless compression_is_valid_level($level); + unless !defined($level) or compression_is_valid_level($level); $default_compression_level = $level; } diff --git a/scripts/t/850_Dpkg_Compression.t b/scripts/t/850_Dpkg_Compression.t index b792905..a8054f6 100644 --- a/scripts/t/850_Dpkg_Compression.t +++ b/scripts/t/850_Dpkg_Compression.t @@ -13,11 +13,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -use Test::More tests => 9; +use Test::More tests => 13; use strict; use warnings; +use_ok('Dpkg::Compression'); use_ok('Dpkg::Compression::FileHandle'); my $tmpdir = "t.tmp/850_Dpkg_Compression"; @@ -84,6 +85,15 @@ sub test_read { is_deeply(\@lines, \@read, "$filename correctly read (IO::Handle methods)"); } +# Test changing the default compression levels +my $old_level = compression_get_default_level(); +compression_set_default_level(1); +is(compression_get_default_level(), 1, "change default compression level"); +compression_set_default_level(5); +is(compression_get_default_level(), 5, "change default compression level"); +compression_set_default_level(undef); +is(compression_get_default_level(), $old_level, "reset default compression level"); + # Test write on uncompressed file test_write("$tmpdir/myfile", \&check_uncompressed); -- dpkg's main repository -- To UNSUBSCRIBE, email to debian-dpkg-cvs-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org