From: Heiko Schlittermann (HS12-RIPE) Date: Wed, 20 Feb 2019 14:22:07 +0000 (+0100) Subject: mk_exim_release: enable flexible compressor selection X-Git-Url: https://git.exim.org/users/jgh/exim.git/commitdiff_plain/ab1aa32a90edad1d06bf2daddcf21be53dd96a7a?ds=inline mk_exim_release: enable flexible compressor selection --- diff --git a/release-process/scripts/mk_exim_release b/release-process/scripts/mk_exim_release index e4db70aee..5ed476365 100755 --- a/release-process/scripts/mk_exim_release +++ b/release-process/scripts/mk_exim_release @@ -484,28 +484,22 @@ __ ) if qx/tar --help 2>&1/ =~ /^\s*--owner=/m; # See also environment variables set in main, tuning compression levels - my %COMPRESSION = ( - gzip => { extension => 'gz', flags => '--gzip' }, - bzip2 => { extension => 'bz2', flags => '--bzip2' }, - lzip => { extension => 'lz', flags => '--lzip' }, - xz => { extension => 'xz', flags => '--xz' }, - ); - my (%size, %sha256); foreach my $dir ( glob( catdir( $pkg_trees, ( 'exim*-' . $context->{v}{release} ) ) ) ) { my $dirname = ( splitdir($dir) )[-1]; - foreach my $comp (keys %COMPRESSION) { - next unless $context->{compressors}{$comp}; + foreach my $comp (keys %{$context->{compressors}}) { + my %compressor = %{$context->{compressors}{$comp}}; + next unless $compressor{use}; - my $basename = "$dirname.tar.$COMPRESSION{$comp}{extension}"; + my $basename = "$dirname.tar.$compressor{extension}"; my $outfile = catfile $pkg_tars, $basename; print "Creating: $outfile\n" if $verbose || $debug; 0 == system($tar, cf => $outfile, - $COMPRESSION{$comp}{flags}, + $compressor{flags}, @ownership, -C => $pkg_trees, $dirname) or exit $? >> 8; @@ -556,10 +550,10 @@ MAIN: { make_cmd => 'make', # for 'make'ing the docs sizes => 1, compressors => { - gzip => 1, - bzip2 => 1, - xz => 1, - lzip => 0, + gzip => { use => 1, extension => 'gz', flags => '--gzip' }, + bzip2 => { use => 1, extension => 'bz2', flags => '--bzip2' }, + xz => { use => 1, extension => 'xz', flags => '--xz' }, + lzip => { use => 0, extension => 'lz', flags => '--lzip' }, }, docs => 1, web => 1, @@ -588,8 +582,21 @@ MAIN: { delete! cleanup! quick|quick-release! minimal), 'sign!' => \$context->{gpg}{sign}, 'key=s' => \$context->{gpg}{key}, - 'lzip!' => \$context->{compressors}{lzip}, 'verbose!' => \$verbose, + 'compressors=s@' => sub { + die "$0: can't parse compressors string `$_[1]'\n" unless $_[1] =~ /^[+=-]?\w+(?:[+=-]\w+)*$/; + while ($_[1] =~ /(?[+=-])?(?\w+)\b/g) { + die "$0: Unknown compressor $+{name}" + unless $context->{compressors}{$+{name}}; + if (not defined $+{act} or $+{act} eq '=') { + $_->{use} = 0 + for values %{$context->{compressors}}; + $context->{compressors}{$+{name}}{use}++; + } + elsif ($+{act} eq '+') { $context->{compressors}{$+{name}}{use}++; } + elsif ($+{act} eq '-') { $context->{compressors}{$+{name}}{use}--; } + } + }, 'debug:s' => \$debug, 'quick' => sub { $context->{web}--; $context->{quick} = 1 }, 'help|?' => sub { pod2usage(-verbose => 1, -exit => 0) }, @@ -683,6 +690,13 @@ Call B about like this: Do (or do not) cleanup the tmp directory at exit (default: do cleanup) +=item B<--compressors> [I]I$]... + +A list of compressors to use. Currently the default list is +B, B, and B, with B optionally to be enabled. + +I can be "+" (add), "-" (remove), and "=" (set). + =item B<--debug[=I]> Forces debug mode. If (default: no debug info) @@ -722,10 +736,6 @@ is used: =back -=item B<--[no]lzip> - -Control the creation of B tarballs. (default: do not use lzip) - =item B<--make-cmd> I Force the use of a specific C command. This may be necessary if C is not