diff options
author | Norbert Preining <preining@logic.at> | 2016-05-17 14:32:03 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2016-05-17 14:32:03 +0000 |
commit | 650958eaccd148987439f9bf75728bb0db208385 (patch) | |
tree | 56b9c80eb9b18bd9ad87615a024d8a8fd976bf9e | |
parent | 725022c18848410ea99f5ec1bb3e7d83a24880a9 (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-x | Master/texmf-dist/scripts/texlive/tlmgr.pl | 4 | ||||
-rw-r--r-- | Master/tlpkg/TeXLive/TLCrypto.pm | 16 | ||||
-rw-r--r-- | Master/tlpkg/TeXLive/TLPOBJ.pm | 11 |
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"); |