summaryrefslogtreecommitdiff
path: root/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-03-15 03:06:35 +0000
committerNorbert Preining <norbert@preining.info>2024-03-15 03:06:35 +0000
commit12679ab7d3c2a210f4123163671b532b8b55d5f9 (patch)
tree0060d13467186ad977f4e73488ee20dd6c0017ab /systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN
parent62170822e034fdd3f81de7274835d0d3b0467100 (diff)
CTAN sync 202403150306
Diffstat (limited to 'systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN')
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/Distribution.pm114
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/FTP.pm204
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/FirstTime.pm42
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/HTTP/Client.pm3
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/HandleConfig.pm28
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/Index.pm4
6 files changed, 342 insertions, 53 deletions
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/Distribution.pm b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/Distribution.pm
index 3412108539..6ce0572ef7 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/Distribution.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/Distribution.pm
@@ -9,7 +9,7 @@ use File::Path ();
use POSIX ":sys_wait_h";
@CPAN::Distribution::ISA = qw(CPAN::InfoObj);
use vars qw($VERSION);
-$VERSION = "2.27";
+$VERSION = "2.34";
my $run_allow_installing_within_test = 1; # boolean; either in test or in install, there is no third option
@@ -1445,8 +1445,14 @@ sub verifyCHECKSUM {
local($") = "/";
if (my $size = -s $lc_want) {
$self->debug("lc_want[$lc_want]size[$size]") if $CPAN::DEBUG;
- if ($self->CHECKSUM_check_file($lc_want,1)) {
- return $self->{CHECKSUM_STATUS} = "OK";
+ my @stat = stat $lc_want;
+ my $epoch_starting_support_of_cpan_path = 1637471530;
+ if ($stat[9] >= $epoch_starting_support_of_cpan_path) {
+ if ($self->CHECKSUM_check_file($lc_want, 1)) {
+ return $self->{CHECKSUM_STATUS} = "OK";
+ }
+ } else {
+ unlink $lc_want;
}
}
$lc_file = CPAN::FTP->localize("authors/id/@local",
@@ -1473,18 +1479,32 @@ sub SIG_check_file {
my($self,$chk_file) = @_;
my $rv = eval { Module::Signature::_verify($chk_file) };
- if ($rv == Module::Signature::SIGNATURE_OK()) {
+ if ($rv eq Module::Signature::CANNOT_VERIFY()) {
+ $CPAN::Frontend->myprint(qq{\nSignature for }.
+ qq{file $chk_file could not be verified for an unknown reason. }.
+ $self->as_string.
+ qq{Module::Signature verification returned value $rv\n\n}
+ );
+
+ my $wrap = qq{The manual says for this case: Cannot verify the
+OpenPGP signature, maybe due to the lack of a network connection to
+the key server, or if neither gnupg nor Crypt::OpenPGP exists on the
+system. You probably want to analyse the situation and if you cannot
+fix it you will have to decide whether you want to stop this session
+or you want to turn off signature verification. The latter would be
+done with the command 'o conf init check_sigs'};
+
+ $CPAN::Frontend->mydie(Text::Wrap::wrap("","",$wrap));
+ } if ($rv == Module::Signature::SIGNATURE_OK()) {
$CPAN::Frontend->myprint("Signature for $chk_file ok\n");
return $self->{SIG_STATUS} = "OK";
} else {
- $CPAN::Frontend->myprint(qq{\nSignature invalid for }.
- qq{distribution file. }.
+ $CPAN::Frontend->mywarn(qq{\nSignature invalid for }.
+ qq{file $chk_file. }.
qq{Please investigate.\n\n}.
- $self->as_string,
- $CPAN::META->instance(
- 'CPAN::Author',
- $self->cpan_userid
- )->as_string);
+ $self->as_string.
+ qq{Module::Signature verification returned value $rv\n\n}
+ );
my $wrap = qq{I\'d recommend removing $chk_file. Its signature
is invalid. Maybe you have configured your 'urllist' with
@@ -1519,20 +1539,44 @@ sub CHECKSUM_check_file {
$file = $self->{localfile};
$basename = File::Basename::basename($file);
+ my($signed_data);
my $fh = FileHandle->new;
- if (open $fh, $chk_file) {
- local($/);
- my $eval = <$fh>;
- $eval =~ s/\015?\012/\n/g;
- close $fh;
- my($compmt) = Safe->new();
- $cksum = $compmt->reval($eval);
- if ($@) {
- rename $chk_file, "$chk_file.bad";
- Carp::confess($@) if $@;
+ if ($check_sigs) {
+ my $tempdir;
+ if ($CPAN::META->has_usable("File::Temp")) {
+ $tempdir = File::Temp::tempdir("CHECKSUMS-XXXX", CLEANUP => 1, DIR => "/tmp" );
+ } else {
+ $tempdir = File::Spec->catdir(File::Spec->tmpdir, "CHECKSUMS-$$");
+ File::Path::mkpath($tempdir);
}
+ my $tempfile = File::Spec->catfile($tempdir, "CHECKSUMS.$$");
+ unlink $tempfile; # ignore missing file
+ my $devnull = File::Spec->devnull;
+ my $gpg = $CPAN::Config->{gpg} or
+ $CPAN::Frontend->mydie("Your configuration suggests that you do not have 'gpg' installed. This is needed to verify checksums with the config variable 'check_sigs' on. Please configure it with 'o conf init gpg'");
+ my $system = qq{"$gpg" --verify --batch --no-tty --output "$tempfile" "$chk_file" 2> "$devnull"};
+ 0 == system $system or $CPAN::Frontend->mydie("gpg run was failing, cannot continue: $system");
+ open $fh, $tempfile or $CPAN::Frontend->mydie("Could not open $tempfile: $!");
+ local $/;
+ $signed_data = <$fh>;
+ close $fh;
+ File::Path::rmtree($tempdir);
} else {
- Carp::carp "Could not open $chk_file for reading";
+ my $fh = FileHandle->new;
+ if (open $fh, $chk_file) {
+ local($/);
+ $signed_data = <$fh>;
+ } else {
+ $CPAN::Frontend->mydie("Could not open $chk_file for reading");
+ }
+ close $fh;
+ }
+ $signed_data =~ s/\015?\012/\n/g;
+ my($compmt) = Safe->new();
+ $cksum = $compmt->reval($signed_data);
+ if ($@) {
+ rename $chk_file, "$chk_file.bad";
+ Carp::confess($@) if $@;
}
if (! ref $cksum or ref $cksum ne "HASH") {
@@ -1546,6 +1590,30 @@ for further processing, but got garbage instead.
$answer =~ /^\s*y/i or $CPAN::Frontend->mydie("Aborted.\n");
$self->{CHECKSUM_STATUS} = "NIL -- CHECKSUMS file broken";
return;
+ } elsif (exists $cksum->{$basename} && ! exists $cksum->{$basename}{cpan_path}) {
+ $CPAN::Frontend->mywarn(qq{
+Warning: checksum file '$chk_file' not conforming.
+
+The cksum does not contain the key 'cpan_path' for '$basename'.
+});
+ my $answer = CPAN::Shell::colorable_makemaker_prompt("Proceed nonetheless?", "no");
+ $answer =~ /^\s*y/i or $CPAN::Frontend->mydie("Aborted.\n");
+ $self->{CHECKSUM_STATUS} = "NIL -- CHECKSUMS file without cpan_path";
+ return;
+ } elsif (exists $cksum->{$basename} && substr($self->{ID},0,length($cksum->{$basename}{cpan_path}))
+ ne $cksum->{$basename}{cpan_path}) {
+ $CPAN::Frontend->mywarn(qq{
+Warning: checksum file not matching path '$self->{ID}'.
+
+The cksum contain the key 'cpan_path=$cksum->{$basename}{cpan_path}'
+which does not match the ID of the distribution '$self->{ID}'.
+Something's suspicious might be going on here. Please investigate.
+
+});
+ my $answer = CPAN::Shell::colorable_makemaker_prompt("Proceed nonetheless?", "no");
+ $answer =~ /^\s*y/i or $CPAN::Frontend->mydie("Aborted.\n");
+ $self->{CHECKSUM_STATUS} = "NIL -- CHECKSUMS non-matching cpan_path vs. ID";
+ return;
} elsif (exists $cksum->{$basename}{sha256}) {
$self->debug("Found checksum for $basename:" .
"$cksum->{$basename}{sha256}\n") if $CPAN::DEBUG;
@@ -2882,7 +2950,7 @@ sub prereqs_for_slot {
}
if (-f "Build.PL"
&& ! -f File::Spec->catfile($self->{build_dir},"Makefile.PL")
- && ! $merged->requirements_for_module("Module::Build")
+ && ! @{[ $merged->required_modules ]}
&& ! $CPAN::META->has_inst("Module::Build")
) {
$CPAN::Frontend->mywarn(
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/FTP.pm b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/FTP.pm
index 268522f78f..652f5be774 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/FTP.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/FTP.pm
@@ -15,7 +15,7 @@ use vars qw($connect_to_internet_ok $Ua $Thesite $ThesiteURL $Themethod);
use vars qw(
$VERSION
);
-$VERSION = "5.5013";
+$VERSION = "5.5016";
sub _plus_append_open {
my($fh, $file) = @_;
@@ -63,7 +63,7 @@ sub _ftp_statistics {
_plus_append_open($fh, $file);
}
}
- my $stats = eval { CPAN->_yaml_loadfile($file); };
+ my $stats = eval { CPAN->_yaml_loadfile($file, {loadblessed => 1}); };
if ($@) {
if (ref $@) {
if (ref $@ eq "CPAN::Exception::yaml_not_installed") {
@@ -319,6 +319,190 @@ sub localize {
my $longmess = Carp::longmess();
$self->debug("file[$file] aslocal[$aslocal] force[$force] carplongmess[$longmess]");
}
+ for ($CPAN::Config->{connect_to_internet_ok}) {
+ $connect_to_internet_ok = $_ if not defined $connect_to_internet_ok and defined $_;
+ }
+ my $ph = $CPAN::Config->{pushy_https};
+ if (!defined $ph || $ph) {
+ return $self->localize_2021($file,$aslocal,$force,$with_defaults);
+ } else {
+ return $self->localize_1995ff($file,$aslocal,$force,$with_defaults);
+ }
+}
+
+sub have_promising_aslocal {
+ my($self, $aslocal, $force) = @_;
+ if (-f $aslocal && -r _ && !($force & 1)) {
+ my $size;
+ if ($size = -s $aslocal) {
+ $self->debug("aslocal[$aslocal]size[$size]") if $CPAN::DEBUG;
+ return 1;
+ } else {
+ # empty file from a previous unsuccessful attempt to download it
+ unlink $aslocal or
+ $CPAN::Frontend->mydie("Found a zero-length '$aslocal' that I ".
+ "could not remove.");
+ }
+ }
+ return;
+}
+
+#-> sub CPAN::FTP::localize ;
+sub localize_2021 {
+ my($self,$file,$aslocal,$force,$with_defaults) = @_;
+ return $aslocal if $self->have_promising_aslocal($aslocal, $force);
+ my($aslocal_dir) = dirname($aslocal);
+ my $ret;
+ $self->mymkpath($aslocal_dir);
+ my $aslocal_tempfile = $aslocal . ".tmp" . $$;
+ my $base;
+ if (
+ ($CPAN::META->has_usable('HTTP::Tiny')
+ && $CPAN::META->has_usable('Net::SSLeay')
+ && $CPAN::META->has_usable('IO::Socket::SSL')
+ )
+ || $CPAN::Config->{curl}
+ || $CPAN::Config->{wget}
+ ) {
+ for my $prx (qw(https_proxy no_proxy)) {
+ $ENV{$prx} = $CPAN::Config->{$prx} if $CPAN::Config->{$prx};
+ }
+ $base = "https://cpan.org/";
+ } else {
+ my @missing_modules = grep { ! $CPAN::META->has_usable($_) } qw(HTTP::Tiny Net::SSLeay IO::Socket::SSL);
+ my $miss = join ", ", map { "'$_'" } @missing_modules;
+ my $modules = @missing_modules == 1 ? "module" : "modules";
+ $CPAN::Frontend->mywarn("Missing or unusable $modules $miss, and found neither curl nor wget installed.\n");
+ if ($CPAN::META->has_usable('HTTP::Tiny')) {
+ $CPAN::Frontend->mywarn("Need to fall back to http.\n")
+ }
+ for my $prx (qw(http_proxy no_proxy)) {
+ $ENV{$prx} = $CPAN::Config->{$prx} if $CPAN::Config->{$prx};
+ }
+ $base = "http://www.cpan.org/";
+ }
+ $ret = $self->hostdl_2021($base,$file,$aslocal_tempfile);
+ if ($ret) { # c&p from below
+ CPAN->debug("ret[$ret]aslocal[$aslocal]") if $CPAN::DEBUG;
+ if ($ret eq $aslocal_tempfile) {
+ # if we got it exactly as we asked for, only then we
+ # want to rename
+ rename $aslocal_tempfile, $aslocal
+ or $CPAN::Frontend->mydie("Error while trying to rename ".
+ "'$ret' to '$aslocal': $!");
+ $ret = $aslocal;
+ }
+ } else {
+ unlink $aslocal_tempfile;
+ return;
+ }
+ return $ret;
+}
+
+sub hostdl_2021 {
+ my($self, $base, $file, $aslocal) = @_; # the $aslocal is $aslocal_tempfile in the caller (old convention)
+ my $proxy_vars = $self->_proxy_vars($base);
+ my($proto) = $base =~ /^(https?)/;
+ my $url = "$base$file";
+ # hostdl_2021 may be called with either http or https urls
+ if (
+ $CPAN::META->has_usable('HTTP::Tiny')
+ &&
+ (
+ $proto eq "http"
+ ||
+ ( $CPAN::META->has_usable('Net::SSLeay')
+ && $CPAN::META->has_usable('IO::Socket::SSL') )
+ )
+ ){
+ # mostly c&p from below
+ require CPAN::HTTP::Client;
+ my $chc = CPAN::HTTP::Client->new(
+ proxy => $CPAN::Config->{http_proxy} || $ENV{http_proxy},
+ no_proxy => $CPAN::Config->{no_proxy} || $ENV{no_proxy},
+ );
+ for my $try ( $url, ( $url !~ /\.gz(?!\n)\Z/ ? "$url.gz" : () ) ) {
+ $CPAN::Frontend->myprint("Fetching with HTTP::Tiny:\n$try\n");
+ my $res = eval { $chc->mirror($try, $aslocal) };
+ if ( $res && $res->{success} ) {
+ my $now = time;
+ utime $now, $now, $aslocal; # download time is more
+ # important than upload
+ # time
+ return $aslocal;
+ }
+ elsif ( $res && $res->{status} ne '599') {
+ $CPAN::Frontend->myprint(sprintf(
+ "HTTP::Tiny failed with code[%s] message[%s]\n",
+ $res->{status},
+ $res->{reason},
+ )
+ );
+ }
+ elsif ( $res && $res->{status} eq '599') {
+ $CPAN::Frontend->myprint(sprintf(
+ "HTTP::Tiny failed with an internal error: %s\n",
+ $res->{content},
+ )
+ );
+ }
+ else {
+ my $err = $@ || 'Unknown error';
+ $CPAN::Frontend->myprint(sprintf(
+ "Error downloading with HTTP::Tiny: %s\n", $err
+ )
+ );
+ }
+ }
+ } elsif ($CPAN::Config->{curl} || $CPAN::Config->{wget}){
+ # c&p from further down
+ my($src_switch, $stdout_redir);
+ my($devnull) = $CPAN::Config->{devnull} || "";
+ DLPRG: for my $dlprg (qw(curl wget)) {
+ my $dlprg_configured = $CPAN::Config->{$dlprg};
+ next unless defined $dlprg_configured && length $dlprg_configured;
+ my $funkyftp = CPAN::HandleConfig->safe_quote($dlprg_configured);
+ if ($dlprg eq "wget") {
+ $src_switch = " -O \"$aslocal\"";
+ $stdout_redir = "";
+ } elsif ($dlprg eq 'curl') {
+ $src_switch = ' -L -f -s -S --netrc-optional';
+ $stdout_redir = " > \"$aslocal\"";
+ if ($proxy_vars->{http_proxy}) {
+ $src_switch .= qq{ -U "$proxy_vars->{proxy_user}:$proxy_vars->{proxy_pass}" -x "$proxy_vars->{http_proxy}"};
+ }
+ }
+ $CPAN::Frontend->myprint(
+ qq[
+Trying with
+ $funkyftp$src_switch
+to get
+ $url
+]);
+ my($system) =
+ "$funkyftp$src_switch \"$url\" $devnull$stdout_redir";
+ $self->debug("system[$system]") if $CPAN::DEBUG;
+ my($wstatus) = system($system);
+ if ($wstatus == 0) {
+ return $aslocal;
+ } else {
+ my $estatus = $wstatus >> 8;
+ my $size = -f $aslocal ?
+ ", left\n$aslocal with size ".-s _ :
+ "\nWarning: expected file [$aslocal] doesn't exist";
+ $CPAN::Frontend->myprint(qq{
+ Function system("$system")
+ returned status $estatus (wstat $wstatus)$size
+ });
+ }
+ } # DLPRG
+ } # curl, wget
+ return;
+}
+
+#-> sub CPAN::FTP::localize ;
+sub localize_1995ff {
+ my($self,$file,$aslocal,$force,$with_defaults) = @_;
if ($^O eq 'MacOS') {
# Comment by AK on 2000-09-03: Uniq short filenames would be
# available in CHECKSUMS file
@@ -343,18 +527,7 @@ sub localize {
}
}
- if (-f $aslocal && -r _ && !($force & 1)) {
- my $size;
- if ($size = -s $aslocal) {
- $self->debug("aslocal[$aslocal]size[$size]") if $CPAN::DEBUG;
- return $aslocal;
- } else {
- # empty file from a previous unsuccessful attempt to download it
- unlink $aslocal or
- $CPAN::Frontend->mydie("Found a zero-length '$aslocal' that I ".
- "could not remove.");
- }
- }
+ return $aslocal if $self->have_promising_aslocal($aslocal, $force);
my($maybe_restore) = 0;
if (-f $aslocal) {
rename $aslocal, "$aslocal.bak$$";
@@ -433,9 +606,6 @@ sub localize {
$CPAN::Config->{ftp_passive} : 1;
my $ret;
my $stats = $self->_new_stats($file);
- for ($CPAN::Config->{connect_to_internet_ok}) {
- $connect_to_internet_ok = $_ if not defined $connect_to_internet_ok and defined $_;
- }
LEVEL: for $levelno (0..$#levels) {
my $level_tuple = $levels[$levelno];
my($level,$scheme,$sitetag) = @$level_tuple;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/FirstTime.pm b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/FirstTime.pm
index 310e73abef..8934f4a2c3 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/FirstTime.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/FirstTime.pm
@@ -11,7 +11,7 @@ use File::Spec ();
use CPAN::Mirrors ();
use CPAN::Version ();
use vars qw($VERSION $auto_config);
-$VERSION = "5.5315";
+$VERSION = "5.5317";
=head1 NAME
@@ -126,7 +126,7 @@ To considerably speed up the initial CPAN shell startup, it is
possible to use Storable to create a cache of metadata. If Storable is
not available, the normal index mechanism will be used.
-Note: this mechanism is not used when use_sqlite is on and SQLLite is
+Note: this mechanism is not used when use_sqlite is on and SQLite is
running.
Cache metadata (yes/no)?
@@ -451,6 +451,20 @@ Please set your policy to one of the three values.
Policy on building prerequisites (follow, ask or ignore)?
+=item pushy_https
+
+Boolean. Defaults to true. If this option is true, the cpan shell will
+use https://cpan.org/ to download stuff from the CPAN. It will fall
+back to http://cpan.org/ if it can't handle https for some reason
+(missing modules, missing programs). Whenever it falls back to the
+http protocol, it will issue a warning.
+
+If this option is true, the option C<urllist> will be ignored.
+Consequently, if you want to work with local mirrors via your own
+configured list of URLs, you will have to choose no below.
+
+Do you want to turn the pushy_https behaviour on?
+
=item randomize_urllist
CPAN.pm can introduce some randomness when using hosts for download
@@ -1315,6 +1329,7 @@ sub init {
# Let's assume they want to use the internet and make them turn it
# off if they really don't.
my_yn_prompt("connect_to_internet_ok" => 1, $matcher);
+ my_yn_prompt("pushy_https" => 1, $matcher);
# Allow matching but don't show during manual config
if ($matcher) {
@@ -1344,7 +1359,11 @@ sub init {
);
}
else {
- $CPAN::Config->{urllist} = [ 'http://www.cpan.org/' ];
+ # Hint: as of 2021-11: to get http, use http://www.cpan.org/
+ $CPAN::Config->{urllist} = [ 'https://cpan.org/' ];
+ $CPAN::Frontend->myprint(
+ "We initialized your 'urllist' to @{$CPAN::Config->{urllist}}. Type 'o conf init urllist' to change it.\n"
+ );
}
}
elsif (!$matcher || "urllist" =~ $matcher) {
@@ -1362,9 +1381,15 @@ sub init {
if ( $CPAN::Config->{install_help} eq 'local::lib' ) {
if ( ! @{ $CPAN::Config->{urllist} } ) {
$CPAN::Frontend->myprint(
- "Skipping local::lib bootstrap because 'urllist' is not configured.\n"
+ "\nALERT: Skipping local::lib bootstrap because 'urllist' is not configured.\n"
);
}
+ elsif (! $CPAN::Config->{make} ) {
+ $CPAN::Frontend->mywarn(
+ "\nALERT: Skipping local::lib bootstrap because 'make' is not configured.\n"
+ );
+ _beg_for_make(); # repetitive, but we don't want users to miss it
+ }
else {
$CPAN::Frontend->myprint("\nAttempting to bootstrap local::lib...\n");
$CPAN::Frontend->myprint("\nWriting $configpm for bootstrap...\n");
@@ -1645,12 +1670,17 @@ Windows users may want to follow this procedure when back in the CPAN shell:
perl alien_nmake.pl
This will install nmake on your system which can be used as a 'make'
-substitute. You can then revisit this dialog with
+substitute.
+
+HERE
+ }
+
+ $CPAN::Frontend->mywarn(<<"HERE");
+You can then retry the 'make' configuration step with
o conf init make
HERE
- }
}
sub init_cpan_home {
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/HTTP/Client.pm b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/HTTP/Client.pm
index 4fc792c26a..b2c86d0bd1 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/HTTP/Client.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/HTTP/Client.pm
@@ -6,7 +6,7 @@ use vars qw(@ISA);
use CPAN::HTTP::Credentials;
use HTTP::Tiny 0.005;
-$CPAN::HTTP::Client::VERSION = $CPAN::HTTP::Client::VERSION = "1.9601";
+$CPAN::HTTP::Client::VERSION = $CPAN::HTTP::Client::VERSION = "1.9602";
# CPAN::HTTP::Client is adapted from parts of cpanm by Tatsuhiko Miyagawa
# and parts of LWP by Gisle Aas
@@ -32,6 +32,7 @@ sub mirror {
my $want_proxy = $self->_want_proxy($uri);
my $http = HTTP::Tiny->new(
+ verify_SSL => 1,
$want_proxy ? (proxy => $self->{proxy}) : ()
);
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/HandleConfig.pm b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/HandleConfig.pm
index e24a969c11..c9d0dc7056 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/HandleConfig.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/HandleConfig.pm
@@ -12,7 +12,7 @@ CPAN::HandleConfig - internal configuration handling for CPAN.pm
=cut
-$VERSION = "5.5011"; # see also CPAN::Config::VERSION at end of file
+$VERSION = "5.5012"; # see also CPAN::Config::VERSION at end of file
%can = (
commit => "Commit changes to disk",
@@ -25,8 +25,9 @@ $VERSION = "5.5011"; # see also CPAN::Config::VERSION at end of file
# A1: svn diff -r 757:758 # where dagolden added test_report [git e997b71de88f1019a1472fc13cb97b1b7f96610f]
# A2: svn diff -r 985:986 # where andk added yaml_module [git 312b6d9b12b1bdec0b6e282d853482145475021f]
# A3: 1. add new config option to %keys below
-# 2. add a Pod description in CPAN::FirstTime; it should include a
-# prompt line; see others for examples
+# 2. add a Pod description in CPAN::FirstTime in the DESCRIPTION
+# section; it should include a prompt line; see others for
+# examples
# 3. add a "matcher" section in CPAN::FirstTime::init that includes
# a prompt function; see others for examples
# 4. add config option to documentation section in CPAN.pm
@@ -98,6 +99,7 @@ $VERSION = "5.5011"; # see also CPAN::Config::VERSION at end of file
"prerequisites_policy",
"proxy_pass",
"proxy_user",
+ "pushy_https",
"randomize_urllist",
"recommends_policy",
"scan_cache",
@@ -561,6 +563,23 @@ sub load {
my @miss = $self->missing_config_data;
CPAN->debug("do_init[$do_init]loading[$loading]miss[@miss]") if $CPAN::DEBUG;
return unless $do_init || @miss;
+ if (@miss==1 and $miss[0] eq "pushy_https" && !$do_init) {
+ $CPAN::Frontend->myprint(<<'END');
+
+Starting with version 2.29 of the cpan shell, a new download mechanism
+is the default which exclusively uses cpan.org as the host to download
+from. The configuration variable pushy_https can be used to (de)select
+the new mechanism. Please read more about it and make your choice
+between the old and the new mechanism by running
+
+ o conf init pushy_https
+
+Once you have done that and stored the config variable this dialog
+will disappear.
+END
+
+ return;
+ }
# I'm not how we'd ever wind up in a recursive loop, but I'm leaving
# this here for safety's sake -- dagolden, 2011-01-19
@@ -677,6 +696,7 @@ sub missing_config_data {
"no_proxy",
#"pager",
"prerequisites_policy",
+ "pushy_https",
"scan_cache",
#"tar",
#"unzip",
@@ -776,7 +796,7 @@ sub prefs_lookup {
use strict;
use vars qw($AUTOLOAD $VERSION);
- $VERSION = "5.5011";
+ $VERSION = "5.5012";
# formerly CPAN::HandleConfig was known as CPAN::Config
sub AUTOLOAD { ## no critic
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/Index.pm b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/Index.pm
index 59e75dcaee..06b16b6958 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/Index.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN/Index.pm
@@ -1,7 +1,7 @@
package CPAN::Index;
use strict;
use vars qw($LAST_TIME $DATE_OF_02 $DATE_OF_03 $HAVE_REANIMATED $VERSION);
-$VERSION = "2.12";
+$VERSION = "2.29";
@CPAN::Index::ISA = qw(CPAN::Debug);
$LAST_TIME ||= 0;
$DATE_OF_03 ||= 0;
@@ -137,7 +137,7 @@ sub reanimate_build_dir {
));
DISTRO: for $i (0..$#candidates) {
my $dirent = $candidates[$i];
- my $y = eval {CPAN->_yaml_loadfile(File::Spec->catfile($d,$dirent))};
+ my $y = eval {CPAN->_yaml_loadfile(File::Spec->catfile($d,$dirent), {loadblessed => 1})};
if ($@) {
warn "Error while parsing file '$dirent'; error: '$@'";
next DISTRO;