X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/b3fadca5c268341624e52efa9bd7b7ee6a1de2d1..32a167571d19dc17c709616320917276e8d82c3b:/release-process/scripts/mk_exim_release diff --git a/release-process/scripts/mk_exim_release b/release-process/scripts/mk_exim_release index 7fe8bbaeb..ed075b42b 100755 --- a/release-process/scripts/mk_exim_release +++ b/release-process/scripts/mk_exim_release @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright (c) The Exim Maintainers 2016-2018 +# Copyright (c) The Exim Maintainers 2016 - 2023 use strict; use warnings; @@ -27,7 +27,7 @@ my $version_pattern = qr/ (? (? (?\d) # 4 - \.(?\d\d) # .90 + \.(?\d+) # .90 or .105 (?:\.(?\d+) # .0 (?:\.(?)\d+)?)? # .22 ) # target-release ->| @@ -39,7 +39,7 @@ my $quick_version_pattern = qr/ (? (? (?\d) # 4 - \.(?\d\d) # .90 + \.(?\d+) # .90 or .105 (?:\.(?\d+) # .0 (?:\.(?)\d+)?)? # .22 ) # last-tag ->| @@ -162,7 +162,9 @@ package Context { my $workspace = $context->{workspace}; if (not defined $workspace) { - $workspace = $context->{workspace} = File::Temp->newdir(File::Spec->tmpdir . '/exim-packaging-XXXX'); + $workspace = $context->{workspace} = File::Temp->newdir( + TEMPLATE => File::Spec->tmpdir . '/exim-packaging-XXXX', + CLEANUP => $context->{cleanup}); } else { # ensure the working directory is not in place @@ -256,8 +258,8 @@ package Context { #my $stamp = $context->{minor} ? '_'.$context->{minor} : ''; #$stamp .= $context->{rc} if $context->{rc}; - my $release = $context->{v}{rc} ? $context->{v}{target_release} - : $context->{v}{last_tag}; + my $release = $context->{quick} ? $context->{v}{last_tag} + : $context->{v}{target_release}; my $variant = $context->{v}{rc} ? $context->{v}{rc} @@ -486,7 +488,7 @@ __ # See also environment variables set in main, tuning compression levels - my (%size, %sha256); + my (%size, %sha256, %sha512); foreach my $dir ( glob( catdir( $pkg_trees, ( 'exim*-' . $context->{v}{release} ) ) ) ) { my $dirname = ( splitdir($dir) )[-1]; @@ -506,24 +508,30 @@ __ # calculate size and md5sum $size{$basename} = -s $outfile; - $sha256{$basename} = do { - my $sha = Digest::SHA->new(256); - $sha->addfile($outfile); - $sha->hexdigest; - }; + $sha256{$basename} = Digest::SHA->new(256)->addfile($outfile)->hexdigest; + $sha512{$basename} = Digest::SHA->new(512)->addfile($outfile)->hexdigest; } } # write the sizes file if ($context->{sizes}) { - open my $sizes, '>', $_ = catfile $pkg_tars, 'sizes.txt' - or die "$ME: Can't open `$_': $!\n"; + for ([ sizes => 'SIZE' => \%size ], + [ sha256sums => 'SHA256' => \%sha256 ], + [ sha512sums => 'SHA512' => \%sha512 ]) { - print $sizes join "\n", - (map { "SIZE($_) = $size{$_}" } sort keys %size), - (map { "SHA256($_) = $sha256{$_}" } sort keys %sha256); + my $outfile = catfile $pkg_tars, "00-$_->[0].txt"; + my $tag = $_->[1]; + my $sizes = $_->[2]; - close($sizes) or die "$ME: Can't close $_: $!\n"; + open my $out, '>', $outfile + or die "$ME: Can't open `$outfile': $!\n"; + + print $out join "\n", + (map { "$tag ($_) = $sizes->{$_}" } sort keys %$sizes), + ''; + + close($out) or die "$ME: Can't close $outfile: $!\n"; + } } } @@ -563,7 +571,7 @@ MAIN: { sizes => 1, compressors => { gzip => { use => 1, extension => 'gz', flags => compressor('gzip -9', sub { $ENV{GZIP} = '-9'; '--gzip' }) }, - bzip2 => { use => 1, extension => 'bz2', flags => compressor('bzip -9', sub { $ENV{BZIP2} = '-9'; '--bzip2' }) }, + bzip2 => { use => 1, extension => 'bz2', flags => compressor('bzip2 -9', sub { $ENV{BZIP2} = '-9'; '--bzip2' }) }, xz => { use => 1, extension => 'xz', flags => compressor('xz -9', sub { $ENV{XZ_OPT} = '-9'; '--xz' }) }, lzip => { use => 0, extension => 'lz', flags => compressor('lzip -9', '--lzip') }, },