diff options
Diffstat (limited to 'systems/texlive/tlnet/tlpkg/tlperl/lib/CPAN')
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; |