summaryrefslogtreecommitdiff
path: root/Master/tlpkg
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2016-04-21 02:42:47 +0000
committerNorbert Preining <preining@logic.at>2016-04-21 02:42:47 +0000
commit800560e3139b1d2c41bc86a3fbf8659529ee39d8 (patch)
treeb1028a226ce9ac27948b15424ae9babfd302584b /Master/tlpkg
parentec007a1257638d2063647d9712b5ea5d41b1276a (diff)
tlpdb: safe status of being verified, show status for each tlpdb
git-svn-id: svn://tug.org/texlive/trunk@40646 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg')
-rw-r--r--Master/tlpkg/TeXLive/TLPDB.pm29
-rw-r--r--Master/tlpkg/TeXLive/TLUtils.pm8
2 files changed, 30 insertions, 7 deletions
diff --git a/Master/tlpkg/TeXLive/TLPDB.pm b/Master/tlpkg/TeXLive/TLPDB.pm
index 65999bfc9a5..2e85fb82e1f 100644
--- a/Master/tlpkg/TeXLive/TLPDB.pm
+++ b/Master/tlpkg/TeXLive/TLPDB.pm
@@ -57,6 +57,7 @@ C<TeXLive::TLPDB> -- A database of TeX Live Packages
$tlpdb->package_revision("packagename");
$tlpdb->location;
$tlpdb->platform;
+ $tlpdb->is_verified;
$tlpdb->config_src_container;
$tlpdb->config_doc_container;
$tlpdb->config_container_format;
@@ -132,7 +133,8 @@ sub new {
my %params = @_;
my $self = {
root => $params{'root'},
- tlps => $params{'tlps'}
+ tlps => $params{'tlps'},
+ verified => 0
};
my $verify = defined($params{'verify'}) ? $params{'verify'} : 0;
ddebug("TLPDB new: args: @_ ; verify = $verify\n");
@@ -276,6 +278,7 @@ sub from_file {
}
my $retfh;
my $tlpdbfile;
+ my $is_verified = 0;
# do media detection
my $rootpath = $self->root;
if ($rootpath =~ m,http://|ftp://,) {
@@ -374,8 +377,10 @@ sub from_file {
tldie("$0: signature verification error of $tlpdbfile from $path: $m\n");
} elsif ($r == -1) {
tldie("$0: connection problems, cannot download: $m\n");
+ } elsif ($r == -2) {
+ debug("$0: remote database checksum is not signed, continuing anyway!\n");
} elsif ($r == 0) {
- # all is fine, do nothing
+ $is_verified = 1;
} else {
tldie("$0: unexpected return value from verify_checksum: $r\n");
}
@@ -390,8 +395,10 @@ sub from_file {
tldie("$0: signature verification error of $tlpdbfile from $path: $m\n");
} elsif ($r == -1) {
tldie("$0: connection problems, cannot download: $m\n");
+ } elsif ($r == -2) {
+ debug("$0: remote database checksum is not signed, continuing anyway!\n");
} elsif ($r == 0) {
- # all is fine, do nothing
+ $is_verified = 1;
} else {
tldie("$0: unexpected return value from verify_checksum: $r\n");
}
@@ -414,6 +421,8 @@ sub from_file {
debug(" $path\n");
}
+ $self->{'verified'} = $is_verified;
+
# remove the un-xz-ed tlpdb file from temp dir
# THAT IS RACY!!! we should fix that in some better way with tempfile
close($retfh);
@@ -1137,6 +1146,20 @@ sub platform {
=pod
+=item C<< $tlpdb->is_verified >>
+
+Returns 0/1 depending on whether the tlpdb was verified by checking
+the cryptographic signature.
+
+=cut
+
+sub is_verified {
+ my $self = shift;
+ return $self->{'verified'};
+}
+
+=pod
+
=item C<< $tlpdb->listdir >>
The function C<listdir> allows to read and set the packages variable
diff --git a/Master/tlpkg/TeXLive/TLUtils.pm b/Master/tlpkg/TeXLive/TLUtils.pm
index dc3c909df08..9eb2c89be25 100644
--- a/Master/tlpkg/TeXLive/TLUtils.pm
+++ b/Master/tlpkg/TeXLive/TLUtils.pm
@@ -3753,8 +3753,8 @@ sub slurp_file {
Verifies that C<$file> has checksum C<$checksum_url>, and if gpg is
available also verifies that the checksum is signed.
-Returns 0 on success, -1 on connection error, 1 on checksum, and
-2 on signature errors.
+Returns 0 on success, -1 on connection error, -2 on missing signature
+file, 1 on checksum, and 2 on signature errors.
In case of errors returns an informal message as second argument.
=cut
@@ -3831,7 +3831,7 @@ sub download_to_temp_or_file {
Verifies a download of C<$url> into C<$file> by cheking the
gpg signature in C<$url.asc>.
-Returns 0 on success, -1 on connection error, 2 on signature error.
+Returns 0 on success, -2 on missing signature file, 2 on signature error.
In case of errors returns an informal message as second argument.
=cut
@@ -3862,7 +3862,7 @@ GPGERROR
}
} else {
debug("no access to cryptographic signature $signature_url\n");
- return(-1);
+ return(-2, "no access to cryptographic signature");
}
} else {
debug("gpg prog not defined, no checking of signatures\n");