summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2016-05-17 14:32:03 +0000
committerNorbert Preining <preining@logic.at>2016-05-17 14:32:03 +0000
commit650958eaccd148987439f9bf75728bb0db208385 (patch)
tree56b9c80eb9b18bd9ad87615a024d8a8fd976bf9e
parent725022c18848410ea99f5ec1bb3e7d83a24880a9 (diff)
checksum rework
- die in tlchecksum if no checksum is defined - make sure that we call tlchecksum in TLPOBJ::make_container only if it is a system container (for some tlnet - not a backup one), or there is a checksum method defined - make sure that we don't call tlchecksum in tlmgr when making a container git-svn-id: svn://tug.org/texlive/trunk@41218 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-xMaster/texmf-dist/scripts/texlive/tlmgr.pl4
-rw-r--r--Master/tlpkg/TeXLive/TLCrypto.pm16
-rw-r--r--Master/tlpkg/TeXLive/TLPOBJ.pm11
3 files changed, 22 insertions, 9 deletions
diff --git a/Master/texmf-dist/scripts/texlive/tlmgr.pl b/Master/texmf-dist/scripts/texlive/tlmgr.pl
index b78aa66a336..686cde7322a 100755
--- a/Master/texmf-dist/scripts/texlive/tlmgr.pl
+++ b/Master/texmf-dist/scripts/texlive/tlmgr.pl
@@ -2133,7 +2133,7 @@ sub write_w32_updater {
push (@rst_info, "$pkg ^($oldrev^)");
next if ($opts{"dry-run"});
# create backup; make_container expects file name in a format: some-name.r[0-9]+
- my ($size, $checksum, $fullname) = $localtlp->make_container("tar", $root, $temp, "__BACKUP_$pkg.r$oldrev");
+ my ($size, undef, $fullname) = $localtlp->make_container("tar", $root, $temp, "__BACKUP_$pkg.r$oldrev");
if ($size <= 0) {
tlwarn("$prg: Creation of backup container of $pkg failed.\n");
return 1; # backup failed? abort
@@ -3131,7 +3131,7 @@ sub action_update {
# no backup was made, so let us create a temporary .tar file
# of the package
my $tlp = $localtlpdb->get_package($pkg);
- my ($s, $m, $fullname) = $tlp->make_container("tar", $root, $temp,
+ my ($s, undef, $fullname) = $tlp->make_container("tar", $root, $temp,
"__BACKUP_${pkg}.r" . $tlp->revision,
$tlp->relocated);
if ($s <= 0) {
diff --git a/Master/tlpkg/TeXLive/TLCrypto.pm b/Master/tlpkg/TeXLive/TLCrypto.pm
index 7716f9eb292..29e7a2c5a41 100644
--- a/Master/tlpkg/TeXLive/TLCrypto.pm
+++ b/Master/tlpkg/TeXLive/TLCrypto.pm
@@ -68,6 +68,11 @@ Returns the checksum method or undef if none found.
=cut
sub setup_checksum_method {
+ # make it a noop if already defined
+ # the checksum method could also be "" meaning that there
+ # is none. We do not need to check again. Thus we check
+ # on defined.
+ return ($::checksum_method) if defined($::checksum_method);
# default is no checksum
$::checksum_method = "";
# for debugging
@@ -122,11 +127,12 @@ Return checksum of C<$file>.
sub tlchecksum {
my ($file) = @_;
- # no reason to have this here
- # if (!$::checksum_method) {
- # setup_checksum_method();
- # }
- return "" if (!$::checksum_method);
+ # this is here for the case that a script forgets to
+ # set up the checksum method!
+ if (!$::checksum_method) {
+ setup_checksum_method();
+ }
+ tldie("no checksum method available\n") if (!$::checksum_method);
if (-r $file) {
my ($out, $ret);
if ($::checksum_method eq "openssl") {
diff --git a/Master/tlpkg/TeXLive/TLPOBJ.pm b/Master/tlpkg/TeXLive/TLPOBJ.pm
index 5830be6ae9a..91a06c32a29 100644
--- a/Master/tlpkg/TeXLive/TLPOBJ.pm
+++ b/Master/tlpkg/TeXLive/TLPOBJ.pm
@@ -602,8 +602,9 @@ sub make_container {
# overflow standard tar format and result in special things being
# done. We don't want the GNU-specific special things.
#
+ my $is_sys_container = ( $containername =~ /\.r[0-9]/ );
my @attrs
- = $containername =~ /\.r[0-9]/
+ = $is_sys_container
? ()
: ( "--owner", "0", "--group", "0", "--exclude", ".svn",
"--format", "ustar" );
@@ -683,7 +684,13 @@ sub make_container {
return (0, 0, "");
}
my $size = (stat "$destdir/$containername") [7];
- my $checksum = TeXLive::TLCrypto::tlchecksum("$destdir/$containername");
+ #
+ # if we are creating a system container, or there is a way to
+ # compute the checksums, do it
+ my $checksum = "";
+ if ($is_sys_container || $::checksum_method) {
+ $checksum = TeXLive::TLCrypto::tlchecksum("$destdir/$containername");
+ }
# cleaning up
unlink("$tlpobjdir/$self->{'name'}.tlpobj");