diff options
author | Karl Berry <karl@freefriends.org> | 2018-03-08 00:16:42 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-03-08 00:16:42 +0000 |
commit | 34a8597760ab5740abd49b6d8be10e1876f5ce98 (patch) | |
tree | 099a794912a28b3ebbc857961643ba29b28e674a /Master/tlpkg/tlperl/lib/CPAN | |
parent | 2ca3610031316a7312d046d3ae4c783452831216 (diff) |
(tl)perl 5.26.1 from siep
git-svn-id: svn://tug.org/texlive/trunk@46882 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlperl/lib/CPAN')
24 files changed, 679 insertions, 445 deletions
diff --git a/Master/tlpkg/tlperl/lib/CPAN/Bundle.pm b/Master/tlpkg/tlperl/lib/CPAN/Bundle.pm index 1525dde5e32..3b4e93d8bf6 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Bundle.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Bundle.pm @@ -8,7 +8,7 @@ use CPAN::Module; use vars qw( $VERSION ); -$VERSION = "5.5001"; +$VERSION = "5.5003"; sub look { my $self = shift; @@ -21,6 +21,11 @@ sub undelay { delete $self->{later}; for my $c ( $self->contains ) { my $obj = CPAN::Shell->expandany($c) or next; + if ($obj->id eq $self->id){ + my $id = $obj->id; + $CPAN::Frontend->mywarn("$id seems to contain itself, skipping\n"); + next; + } $obj->undelay; } } @@ -39,7 +44,12 @@ sub color_cmd_tmps { && $color==1 && $self->{incommandcolor}==$color; if ($depth>=$CPAN::MAX_RECURSION) { - die(CPAN::Exception::RecursiveDependency->new($ancestors)); + my $e = CPAN::Exception::RecursiveDependency->new($ancestors); + if ($e->is_resolvable) { + return $self->{incommandcolor}=2; + } else { + die $e; + } } # warn "color_cmd_tmps $depth $color " . $self->id; # sleep 1; diff --git a/Master/tlpkg/tlperl/lib/CPAN/Distribution.pm b/Master/tlpkg/tlperl/lib/CPAN/Distribution.pm index 092b781ac2e..64976eb7bbd 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Distribution.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Distribution.pm @@ -8,7 +8,7 @@ use CPAN::InfoObj; use File::Path (); @CPAN::Distribution::ISA = qw(CPAN::InfoObj); use vars qw($VERSION); -$VERSION = "2.04"; +$VERSION = "2.18"; # no prepare, because prepare is not a command on the shell command line # TODO: clear instance cache on reload @@ -207,17 +207,22 @@ sub color_cmd_tmps { && $self->{incommandcolor}==$color; $CPAN::MAX_RECURSION||=0; # silence 'once' warnings if ($depth>=$CPAN::MAX_RECURSION) { - die(CPAN::Exception::RecursiveDependency->new($ancestors)); + my $e = CPAN::Exception::RecursiveDependency->new($ancestors); + if ($e->is_resolvable) { + return $self->{incommandcolor}=2; + } else { + die $e; + } } # warn "color_cmd_tmps $depth $color " . $self->id; # sleep 1; my $prereq_pm = $self->prereq_pm; if (defined $prereq_pm) { # XXX also optional_req & optional_breq? -- xdg, 2012-04-01 # A: no, optional deps may recurse -- ak, 2014-05-07 - PREREQ: for my $pre ( + PREREQ: for my $pre (sort( keys %{$prereq_pm->{requires}||{}}, keys %{$prereq_pm->{build_requires}||{}}, - ) { + )) { next PREREQ if $pre eq "perl"; my $premo; unless ($premo = CPAN::Shell->expand("Module",$pre)) { @@ -251,7 +256,7 @@ sub as_string { #-> sub CPAN::Distribution::containsmods ; sub containsmods { my $self = shift; - return keys %{$self->{CONTAINSMODS}} if exists $self->{CONTAINSMODS}; + return sort keys %{$self->{CONTAINSMODS}} if exists $self->{CONTAINSMODS}; my $dist_id = $self->{ID}; for my $mod ($CPAN::META->all_objects("CPAN::Module")) { my $mod_file = $mod->cpan_file or next; @@ -264,7 +269,7 @@ sub containsmods { } $self->{CONTAINSMODS}{$mod_id} = undef if $mod_file eq $dist_id; } - keys %{$self->{CONTAINSMODS}||={}}; + sort keys %{$self->{CONTAINSMODS}||={}}; } #-> sub CPAN::Distribution::upload_date ; @@ -372,6 +377,7 @@ sub get { ? $ENV{PERL5LIB} : ($ENV{PERLLIB} || ""); local $ENV{PERL5OPT} = defined $ENV{PERL5OPT} ? $ENV{PERL5OPT} : ""; + # local $ENV{PERL_USE_UNSAFE_INC} = exists $ENV{PERL_USE_UNSAFE_INC} ? $ENV{PERL_USE_UNSAFE_INC} : 1; # get $CPAN::META->set_perl5lib; local $ENV{MAKEFLAGS}; # protect us from outer make calls @@ -517,105 +523,66 @@ See also http://rt.cpan.org/Ticket/Display.html?id=38932\n"); @readdir = grep { $_ ne "pax_global_header" } @readdir; } $dh->close; - my ($packagedir); - # XXX here we want in each branch File::Temp to protect all build_dir directories - if (CPAN->has_usable("File::Temp")) { - my $tdir_base; - my $from_dir; - my @dirents; - if (@readdir == 1 && -d $readdir[0]) { - $tdir_base = $readdir[0]; - $from_dir = File::Spec->catdir(File::Spec->curdir,$readdir[0]); - my $dh2; - unless ($dh2 = DirHandle->new($from_dir)) { - my($mode) = (stat $from_dir)[2]; - my $why = sprintf - ( - "Couldn't opendir '%s', mode '%o': %s", - $from_dir, - $mode, - $!, - ); - $CPAN::Frontend->mywarn("$why\n"); - $self->{writemakefile} = CPAN::Distrostatus->new("NO -- $why"); - return; - } - @dirents = grep $_ !~ /^\.\.?(?!\n)\Z/s, $dh2->read; ### MAC?? - } else { - my $userid = $self->cpan_userid; - CPAN->debug("userid[$userid]"); - if (!$userid or $userid eq "N/A") { - $userid = "anon"; - } - $tdir_base = $userid; - $from_dir = File::Spec->curdir; - @dirents = @readdir; + my $tdir_base; + my $from_dir; + my @dirents; + if (@readdir == 1 && -d $readdir[0]) { + $tdir_base = $readdir[0]; + $from_dir = File::Spec->catdir(File::Spec->curdir,$readdir[0]); + my $dh2; + unless ($dh2 = DirHandle->new($from_dir)) { + my($mode) = (stat $from_dir)[2]; + my $why = sprintf + ( + "Couldn't opendir '%s', mode '%o': %s", + $from_dir, + $mode, + $!, + ); + $CPAN::Frontend->mywarn("$why\n"); + $self->{writemakefile} = CPAN::Distrostatus->new("NO -- $why"); + return; } - eval { File::Path::mkpath $builddir; }; - if ($@) { - $CPAN::Frontend->mydie("Cannot create directory $builddir: $@"); + @dirents = grep $_ !~ /^\.\.?(?!\n)\Z/s, $dh2->read; ### MAC?? + } else { + my $userid = $self->cpan_userid; + CPAN->debug("userid[$userid]"); + if (!$userid or $userid eq "N/A") { + $userid = "anon"; } - $packagedir = File::Temp::tempdir( - "$tdir_base-XXXXXX", - DIR => $builddir, - CLEANUP => 0, - ); - chmod 0777 &~ umask, $packagedir; # may fail - my $f; - for $f (@dirents) { # is already without "." and ".." - my $from = File::Spec->catfile($from_dir,$f); - my $to = File::Spec->catfile($packagedir,$f); - unless (File::Copy::move($from,$to)) { - my $err = $!; - $from = File::Spec->rel2abs($from); - Carp::confess("Couldn't move $from to $to: $err"); - } + $tdir_base = $userid; + $from_dir = File::Spec->curdir; + @dirents = @readdir; + } + eval { File::Path::mkpath $builddir; }; + if ($@) { + $CPAN::Frontend->mydie("Cannot create directory $builddir: $@"); + } + my $packagedir; + my $eexist = $CPAN::META->has_usable("Errno") ? &Errno::EEXIST : undef; + for(my $suffix = 0; ; $suffix++) { + $packagedir = File::Spec->catdir($builddir, "$tdir_base-$suffix"); + my $parent = $builddir; + mkdir($packagedir, 0777) and last; + if((defined($eexist) && $! != $eexist) || $suffix == 999) { + $CPAN::Frontend->mydie("Cannot create directory $packagedir: $!\n"); } - } else { # older code below, still better than nothing when there is no File::Temp - my($distdir); - if (@readdir == 1 && -d $readdir[0]) { - $distdir = $readdir[0]; - $packagedir = File::Spec->catdir($builddir,$distdir); - $self->debug("packagedir[$packagedir]builddir[$builddir]distdir[$distdir]") - if $CPAN::DEBUG; - -d $packagedir and $CPAN::Frontend->myprint("Removing previously used ". - "$packagedir\n"); - File::Path::rmtree($packagedir); - unless (File::Copy::move($distdir,$packagedir)) { - $CPAN::Frontend->unrecoverable_error(<<EOF); -Couldn't move '$distdir' to '$packagedir': $! - -Cannot continue: Please find the reason why I cannot move -$builddir/tmp-$$/$distdir -to -$packagedir -and fix the problem, then retry - -EOF - } - $self->debug(sprintf("moved distdir[%s] to packagedir[%s] -e[%s]-d[%s]", - $distdir, - $packagedir, - -e $packagedir, - -d $packagedir, - )) if $CPAN::DEBUG; - } else { - my $userid = $self->cpan_userid; - CPAN->debug("userid[$userid]") if $CPAN::DEBUG; - if (!$userid or $userid eq "N/A") { - $userid = "anon"; - } - my $pragmatic_dir = $userid . '000'; - $pragmatic_dir =~ s/\W_//g; - $pragmatic_dir++ while -d "../$pragmatic_dir"; - $packagedir = File::Spec->catdir($builddir,$pragmatic_dir); - $self->debug("packagedir[$packagedir]") if $CPAN::DEBUG; - File::Path::mkpath($packagedir); - my($f); - for $f (@readdir) { # is already without "." and ".." - my $to = File::Spec->catdir($packagedir,$f); - File::Copy::move($f,$to) or Carp::confess("Couldn't move $f to $to: $!"); - } + } + my $f; + for $f (@dirents) { # is already without "." and ".." + my $from = File::Spec->catfile($from_dir,$f); + my $to = File::Spec->catfile($packagedir,$f); + unless (File::Copy::move($from,$to)) { + my $err = $!; + $from = File::Spec->rel2abs($from); + $CPAN::Frontend->mydie( + "Couldn't move $from to $to: $err; #82295? ". + "CPAN::VERSION=$CPAN::VERSION; ". + "File::Copy::VERSION=$File::Copy::VERSION; ". + "$from " . (-e $from ? "exists; " : "does not exist; "). + "$to " . (-e $to ? "exists; " : "does not exist; "). + "cwd=" . CPAN::anycwd() . ";" + ); } } $self->{build_dir} = $packagedir; @@ -734,7 +701,7 @@ sub satisfy_configure_requires { return 1 unless @prereq; $self->debug(\@prereq) if $CPAN::DEBUG; if ($self->{configure_requires_later}) { - for my $k (keys %{$self->{configure_requires_later_for}||{}}) { + for my $k (sort keys %{$self->{configure_requires_later_for}||{}}) { if ($self->{configure_requires_later_for}{$k}>1) { my $type = ""; for my $p (@prereq) { @@ -1336,6 +1303,7 @@ Could not determine which directory to use for looking at $dist. : ($ENV{PERLLIB} || ""); local $ENV{PERL5OPT} = defined $ENV{PERL5OPT} ? $ENV{PERL5OPT} : ""; + # local $ENV{PERL_USE_UNSAFE_INC} = exists $ENV{PERL_USE_UNSAFE_INC} ? $ENV{PERL_USE_UNSAFE_INC} : 1; # look $CPAN::META->set_perl5lib; local $ENV{MAKEFLAGS}; # protect us from outer make calls @@ -1855,6 +1823,7 @@ sub prepare { ? $ENV{PERL5LIB} : ($ENV{PERLLIB} || ""); local $ENV{PERL5OPT} = defined $ENV{PERL5OPT} ? $ENV{PERL5OPT} : ""; + local $ENV{PERL_USE_UNSAFE_INC} = exists $ENV{PERL_USE_UNSAFE_INC} ? $ENV{PERL_USE_UNSAFE_INC} : 1; # prepare $CPAN::META->set_perl5lib; local $ENV{MAKEFLAGS}; # protect us from outer make calls @@ -2149,6 +2118,7 @@ is part of the perl-%s distribution. To install that, you need to run ? $ENV{PERL5LIB} : ($ENV{PERLLIB} || ""); local $ENV{PERL5OPT} = defined $ENV{PERL5OPT} ? $ENV{PERL5OPT} : ""; + local $ENV{PERL_USE_UNSAFE_INC} = exists $ENV{PERL_USE_UNSAFE_INC} ? $ENV{PERL_USE_UNSAFE_INC} : 1; # make $CPAN::META->set_perl5lib; local $ENV{MAKEFLAGS}; # protect us from outer make calls @@ -2228,7 +2198,7 @@ is part of the perl-%s distribution. To install that, you need to run "system()\n"); } } - my $system_ok; + my ($system_ok, $system_err); if ($want_expect) { # XXX probably want to check _should_report here and # warn about not being able to use CPAN::Reporter with expect @@ -2240,7 +2210,9 @@ is part of the perl-%s distribution. To install that, you need to run $system_ok = ! $ret; } else { - $system_ok = system($system) == 0; + my $rc = system($system); + $system_ok = $rc == 0; + $system_err = $! if $rc == -1; } $self->introduce_myself; if ( $system_ok ) { @@ -2250,6 +2222,7 @@ is part of the perl-%s distribution. To install that, you need to run $self->{writemakefile} ||= CPAN::Distrostatus->new("YES"); $self->{make} = CPAN::Distrostatus->new("NO"); $CPAN::Frontend->mywarn(" $system -- NOT OK\n"); + $CPAN::Frontend->mywarn(" $system_err\n") if defined $system_err; } $self->store_persistent_state; @@ -2855,7 +2828,7 @@ sub unsat_prereq { $CPAN::META->has_usable("CPAN::Meta::Requirements") or die "CPAN::Meta::Requirements not available"; my $merged = CPAN::Meta::Requirements->from_string_hash($merged_hash); - my @merged = $merged->required_modules; + my @merged = sort $merged->required_modules; CPAN->debug("all merged_prereqs[@merged]") if $CPAN::DEBUG; NEED: for my $need_module ( @merged ) { my $need_version = $merged->requirements_for_module($need_module); @@ -2869,9 +2842,23 @@ sub unsat_prereq { $CPAN::SQLite->search("CPAN::Module",$need_module); } $nmo = $CPAN::META->instance("CPAN::Module",$need_module); - next if $nmo->uptodate; $inst_file = $nmo->inst_file || ''; $available_file = $nmo->available_file || ''; + $available_version = $nmo->available_version; + if ($nmo->uptodate) { + my $accepts = eval { + $merged->accepts_module($need_module, $available_version); + }; + unless ($accepts) { + my $rq = $merged->requirements_for_module( $need_module ); + $CPAN::Frontend->mywarn( + "Warning: Version '$available_version' of ". + "'$need_module' is up to date but does not ". + "fulfill requirements ($rq). I will continue, ". + "but chances to succeed are low.\n"); + } + next NEED; + } # if they have not specified a version, we accept any installed one if ( $available_file @@ -2884,8 +2871,6 @@ sub unsat_prereq { next NEED; } } - - $available_version = $nmo->available_version; } # We only want to install prereqs if either they're not installed @@ -3263,7 +3248,8 @@ sub prereq_pm { } my $areq; my $do_replace; - while (my($k,$v) = each %{$req||{}}) { + foreach my $k (sort keys %{$req||{}}) { + my $v = $req->{$k}; next unless defined $v; if ($v =~ /\d/) { $areq->{$k} = $v; @@ -3500,6 +3486,7 @@ sub test { : ($ENV{PERLLIB} || ""); local $ENV{PERL5OPT} = defined $ENV{PERL5OPT} ? $ENV{PERL5OPT} : ""; + local $ENV{PERL_USE_UNSAFE_INC} = exists $ENV{PERL_USE_UNSAFE_INC} ? $ENV{PERL_USE_UNSAFE_INC} : 1; # test $CPAN::META->set_perl5lib; local $ENV{MAKEFLAGS}; # protect us from outer make calls local $ENV{PERL_MM_USE_DEFAULT} = 1 if $CPAN::Config->{use_prompt_default}; @@ -3664,7 +3651,7 @@ sub _make_test_illuminate_prereqs { my @prereq; # local $CPAN::DEBUG = 16; # Distribution - for my $m (keys %{$self->{sponsored_mods}}) { + for my $m (sort keys %{$self->{sponsored_mods}}) { next unless $self->{sponsored_mods}{$m} > 0; my $m_obj = CPAN::Shell->expand("Module",$m) or next; # XXX we need available_version which reflects @@ -3973,6 +3960,7 @@ sub install { : ($ENV{PERLLIB} || ""); local $ENV{PERL5OPT} = defined $ENV{PERL5OPT} ? $ENV{PERL5OPT} : ""; + local $ENV{PERL_USE_UNSAFE_INC} = exists $ENV{PERL_USE_UNSAFE_INC} ? $ENV{PERL_USE_UNSAFE_INC} : 1; # install $CPAN::META->set_perl5lib; local $ENV{PERL_MM_USE_DEFAULT} = 1 if $CPAN::Config->{use_prompt_default}; local $ENV{NONINTERACTIVE_TESTING} = 1 if $CPAN::Config->{use_prompt_default}; @@ -3992,6 +3980,15 @@ sub install { $CPAN::Frontend->myprint(" $system -- OK\n"); $CPAN::META->is_installed($self->{build_dir}); $self->{install} = CPAN::Distrostatus->new("YES"); + if ($CPAN::Config->{'cleanup_after_install'}) { + my $parent = File::Spec->catdir( $self->{build_dir}, File::Spec->updir ); + chdir $parent or $CPAN::Frontend->mydie("Couldn't chdir to $parent: $!\n"); + File::Path::rmtree($self->{build_dir}); + my $yml = "$self->{build_dir}.yml"; + if (-e $yml) { + unlink $yml or $CPAN::Frontend->mydie("Couldn't unlink $yml: $!\n"); + } + } } else { $self->{install} = CPAN::Distrostatus->new("NO"); $CPAN::Frontend->mywarn(" $system -- NOT OK\n"); @@ -4018,7 +4015,9 @@ sub install { } } delete $self->{force_update}; - $self->store_persistent_state; + unless ($CPAN::Config->{'cleanup_after_install'}) { + $self->store_persistent_state; + } $self->post_install(); diff --git a/Master/tlpkg/tlperl/lib/CPAN/Exception/RecursiveDependency.pm b/Master/tlpkg/tlperl/lib/CPAN/Exception/RecursiveDependency.pm index b928ad74e31..82e82346efa 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Exception/RecursiveDependency.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Exception/RecursiveDependency.pm @@ -7,7 +7,16 @@ use overload '""' => "as_string"; use vars qw( $VERSION ); -$VERSION = "5.5"; +$VERSION = "5.5001"; + +{ + package CPAN::Exception::RecursiveDependency::na; + use overload '""' => "as_string"; + sub new { bless {}, shift }; + sub as_string { "N/A" }; +} + +my $NA = CPAN::Exception::RecursiveDependency::na->new; # a module sees its distribution (no version) # a distribution sees its prereqs (which are module names) (usually with versions) @@ -25,12 +34,13 @@ sub new { } } my $in_loop = 0; - for my $i (0..$#deps) { + my %mark; + DWALK: for my $i (0..$#deps) { my $x = $deps[$i]{name}; $in_loop ||= $loop_starts_with && $x eq $loop_starts_with; my $xo = CPAN::Shell->expandany($x) or next; if ($xo->isa("CPAN::Module")) { - my $have = $xo->inst_version || "N/A"; + my $have = $xo->inst_version || $NA; my($want,$d,$want_type); if ($i>0 and $d = $deps[$i-1]{name}) { my $do = CPAN::Shell->expandany($d); @@ -54,13 +64,27 @@ sub new { $deps[$i]{want_type} = $want_type; $deps[$i]{want} = $want; $deps[$i]{display_as} = "$x (have: $have; $want_type$want)"; + if ((! ref $have || !$have->isa('CPAN::Exception::RecursiveDependency::na')) + && CPAN::Version->vge($have, $want)) { + # https://rt.cpan.org/Ticket/Display.html?id=115340 + undef $loop_starts_with; + last DWALK; + } } elsif ($xo->isa("CPAN::Distribution")) { - $deps[$i]{display_as} = $xo->pretty_id; + my $pretty = $deps[$i]{display_as} = $xo->pretty_id; + my $mark_as; if ($in_loop) { - $xo->{make} = CPAN::Distrostatus->new("NO cannot resolve circular dependency"); + $mark_as = CPAN::Distrostatus->new("NO cannot resolve circular dependency"); } else { - $xo->{make} = CPAN::Distrostatus->new("NO one dependency ($loop_starts_with) is a circular dependency"); + $mark_as = CPAN::Distrostatus->new("NO one dependency ($loop_starts_with) is a circular dependency"); } + $mark{$pretty} = { xo => $xo, mark_as => $mark_as }; + } + } + if ($loop_starts_with) { + while (my($k,$v) = each %mark) { + my $xo = $v->{xo}; + $xo->{make} = $v->{mark_as}; $xo->store_persistent_state; # otherwise I will not reach # all involved parties for # the next session @@ -69,6 +93,10 @@ sub new { bless { deps => \@deps, loop_starts_with => $loop_starts_with }, $class; } +sub is_resolvable { + ! defined shift->{loop_starts_with}; +} + sub as_string { my($self) = shift; my $deps = $self->{deps}; diff --git a/Master/tlpkg/tlperl/lib/CPAN/FTP.pm b/Master/tlpkg/tlperl/lib/CPAN/FTP.pm index 831f234d3ce..a43ea02e9e8 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/FTP.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/FTP.pm @@ -14,7 +14,7 @@ use vars qw($connect_to_internet_ok $Ua $Thesite $ThesiteURL $Themethod); use vars qw( $VERSION ); -$VERSION = "5.5006"; +$VERSION = "5.5008"; #-> sub CPAN::FTP::ftp_statistics # if they want to rewrite, they need to pass in a filehandle @@ -35,13 +35,19 @@ sub _ftp_statistics { while (!CPAN::_flock($fh, $locktype|LOCK_NB)) { $waitstart ||= localtime(); if ($sleep>3) { - $CPAN::Frontend->mywarn("Waiting for a read lock on '$file' (since $waitstart)\n"); + my $now = localtime(); + $CPAN::Frontend->mywarn("$now: waiting for read lock on '$file' (since $waitstart)\n"); } - $CPAN::Frontend->mysleep($sleep); + sleep($sleep); # this sleep must not be overridden; + # Frontend->mysleep with AUTOMATED_TESTING has + # provoked complete lock contention on my NFS if ($sleep <= 3) { $sleep+=0.33; - } elsif ($sleep <=6) { + } elsif ($sleep <= 6) { $sleep+=0.11; + } else { + # retry to get a fresh handle. If it is NFS and the handle is stale, we will never get an flock + open $fh, "+>>$file" or $CPAN::Frontend->mydie("Could not open '$file': $!"); } } my $stats = eval { CPAN->_yaml_loadfile($file); }; @@ -659,7 +665,7 @@ sub hostdleasy { #called from hostdlxxx # Net::FTP can still succeed where LWP fails. So we do not # skip Net::FTP anymore when LWP is available. } - } elsif ($url =~ /^http:/ && $CPAN::META->has_usable('HTTP::Tiny')) { + } elsif ($url =~ /^http:/i && $CPAN::META->has_usable('HTTP::Tiny')) { require CPAN::HTTP::Client; my $chc = CPAN::HTTP::Client->new( proxy => $CPAN::Config->{http_proxy} || $ENV{http_proxy}, diff --git a/Master/tlpkg/tlperl/lib/CPAN/FirstTime.pm b/Master/tlpkg/tlperl/lib/CPAN/FirstTime.pm index 918e009a2bc..531c1152a85 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/FirstTime.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/FirstTime.pm @@ -10,7 +10,7 @@ use File::Path (); use File::Spec (); use CPAN::Mirrors (); use vars qw($VERSION $auto_config); -$VERSION = "5.5307"; +$VERSION = "5.5310"; =head1 NAME @@ -124,6 +124,14 @@ checks will be performed at all. Always try to check and verify signatures if a SIGNATURE file is in the package and Module::Signature is installed (yes/no)? +=item cleanup_after_install + +Users who install modules and do not intend to look back, can free +occupied disk space quickly by letting CPAN.pm cleanup each build +directory immediately after a successful install. + +Remove build directory after a successful install? (yes/no)? + =item colorize_output When you have Term::ANSIColor installed, you can turn on colorized @@ -775,7 +783,7 @@ sub init { } } elsif (0 == length $matcher) { } elsif (0 && $matcher eq "~") { # extremely buggy, but a nice idea - my @unconfigured = grep { not exists $CPAN::Config->{$_} + my @unconfigured = sort grep { not exists $CPAN::Config->{$_} or not defined $CPAN::Config->{$_} or not length $CPAN::Config->{$_} } keys %$CPAN::Config; @@ -881,6 +889,7 @@ sub init { my_dflt_prompt(index_expire => 1, $matcher); my_prompt_loop(scan_cache => 'atstart', $matcher, 'atstart|atexit|never'); + my_yn_prompt(cleanup_after_install => 0, $matcher); # #= cache_metadata @@ -1300,8 +1309,9 @@ sub init { $CPAN::Frontend->myprint("\nWriting $configpm for bootstrap...\n"); delete $CPAN::Config->{install_help}; # temporary only CPAN::HandleConfig->commit; - my $dist; - if ( $dist = CPAN::Shell->expand('Module', 'local::lib')->distribution ) { + my($dist, $locallib); + $locallib = CPAN::Shell->expand('Module', 'local::lib'); + if ( $locallib and $dist = $locallib->distribution ) { # this is a hack to force bootstrapping $dist->{prefs}{pl}{commandline} = "$^X Makefile.PL --bootstrap"; # Set @INC for this process so we find things as they bootstrap diff --git a/Master/tlpkg/tlperl/lib/CPAN/HandleConfig.pm b/Master/tlpkg/tlperl/lib/CPAN/HandleConfig.pm index e596cbcd6c5..c72439f92cb 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/HandleConfig.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/HandleConfig.pm @@ -12,7 +12,7 @@ CPAN::HandleConfig - internal configuration handling for CPAN.pm =cut -$VERSION = "5.5006"; # see also CPAN::Config::VERSION at end of file +$VERSION = "5.5008"; # see also CPAN::Config::VERSION at end of file %can = ( commit => "Commit changes to disk", @@ -42,6 +42,7 @@ $VERSION = "5.5006"; # see also CPAN::Config::VERSION at end of file "bzip2", "cache_metadata", "check_sigs", + "cleanup_after_install", "colorize_debug", "colorize_output", "colorize_print", @@ -250,7 +251,7 @@ sub prettyprint { sprintf "\t%-18s => %s\n", "[$_]", defined $v->{$_} ? "[$v->{$_}]" : "undef" - } keys %$v; + } sort keys %$v; } $CPAN::Frontend->myprint( join( @@ -384,9 +385,9 @@ sub neatvalue { return join "", @m; } return "$v" unless $t eq 'HASH'; - my(@m, $key, $val); - while (($key,$val) = each %$v) { - last unless defined $key; # cautious programming in case (undef,undef) is true + my @m; + foreach my $key (sort keys %$v) { + my $val = $v->{$key}; push(@m,"q[$key]=>".$self->neatvalue($val)) ; } return "{ ".join(', ',@m)." }"; @@ -769,7 +770,7 @@ sub prefs_lookup { use strict; use vars qw($AUTOLOAD $VERSION); - $VERSION = "5.5006"; + $VERSION = "5.5008"; # formerly CPAN::HandleConfig was known as CPAN::Config sub AUTOLOAD { ## no critic diff --git a/Master/tlpkg/tlperl/lib/CPAN/Index.pm b/Master/tlpkg/tlperl/lib/CPAN/Index.pm index 8205d78bd02..59e75dcaeed 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Index.pm +++ b/Master/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 = "1.9601"; +$VERSION = "2.12"; @CPAN::Index::ISA = qw(CPAN::Debug); $LAST_TIME ||= 0; $DATE_OF_03 ||= 0; @@ -528,7 +528,7 @@ sub rd_modlist { my $until = keys(%$ret); my $painted = 0; CPAN->debug(sprintf "until[%d]", $until) if $CPAN::DEBUG; - for (keys %$ret) { + for (sort keys %$ret) { my $obj = $CPAN::META->instance("CPAN::Module",$_); delete $ret->{$_}{modid}; # not needed here, maybe elsewhere $obj->set(%{$ret->{$_}}); diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta.pm b/Master/tlpkg/tlperl/lib/CPAN/Meta.pm index afbb221855a..4a8e65c0fc1 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta.pm @@ -3,7 +3,7 @@ use strict; use warnings; package CPAN::Meta; -our $VERSION = '2.150005'; +our $VERSION = '2.150010'; #pod =head1 SYNOPSIS #pod @@ -650,7 +650,7 @@ CPAN::Meta - the distribution metadata for a CPAN dist =head1 VERSION -version 2.150005 +version 2.150010 =head1 SYNOPSIS @@ -1031,11 +1031,15 @@ David Golden <dagolden@cpan.org> Ricardo Signes <rjbs@cpan.org> +=item * + +Adam Kennedy <adamk@cpan.org> + =back =head1 CONTRIBUTORS -=for stopwords Ansgar Burchardt Avar Arnfjord Bjarmason Christopher J. Madsen Chuck Adams Cory G Watson Damyan Ivanov Eric Wilhelm Graham Knop Gregor Hermann Karen Etheridge Kenichi Ishigaki Ken Williams Lars Dieckow Leon Timmermans majensen Mark Fowler Matt S Trout Michael G. Schwern mohawk2 moznion Niko Tyni Olaf Alders Olivier Mengué Randy Sims Tomohiro Hosaka +=for stopwords Ansgar Burchardt Avar Arnfjord Bjarmason Benjamin Noggle Christopher J. Madsen Chuck Adams Cory G Watson Damyan Ivanov David Golden Eric Wilhelm Graham Knop Gregor Hermann Karen Etheridge Kenichi Ishigaki Kent Fredric Ken Williams Lars Dieckow Leon Timmermans majensen Mark Fowler Matt S Trout Michael G. Schwern Mohammad Anwar mohawk2 moznion Niko Tyni Olaf Alders Olivier Mengué Randy Sims Tomohiro Hosaka =over 4 @@ -1049,6 +1053,10 @@ Avar Arnfjord Bjarmason <avar@cpan.org> =item * +Benjamin Noggle <agwind@users.noreply.github.com> + +=item * + Christopher J. Madsen <cjm@cpan.org> =item * @@ -1065,6 +1073,10 @@ Damyan Ivanov <dam@cpan.org> =item * +David Golden <xdg@xdg.me> + +=item * + Eric Wilhelm <ewilhelm@cpan.org> =item * @@ -1085,6 +1097,10 @@ Kenichi Ishigaki <ishigaki@cpan.org> =item * +Kent Fredric <kentfredric@gmail.com> + +=item * + Ken Williams <kwilliams@cpan.org> =item * @@ -1113,6 +1129,10 @@ Michael G. Schwern <mschwern@cpan.org> =item * +Mohammad S Anwar <mohammad.anwar@yahoo.com> + +=item * + mohawk2 <mohawk2@users.noreply.github.com> =item * @@ -1143,7 +1163,7 @@ Tomohiro Hosaka <bokutin@bokut.in> =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2010 by David Golden and Ricardo Signes. +This software is copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/Converter.pm b/Master/tlpkg/tlperl/lib/CPAN/Meta/Converter.pm index 03806bc82bf..0a52dcc2e6e 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/Converter.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/Converter.pm @@ -3,7 +3,7 @@ use strict; use warnings; package CPAN::Meta::Converter; -our $VERSION = '2.150005'; +our $VERSION = '2.150010'; #pod =head1 SYNOPSIS #pod @@ -43,22 +43,36 @@ BEGIN { # Perl 5.10.0 didn't have "is_qv" in version.pm *_is_qv = version->can('is_qv') ? sub { $_[0]->is_qv } : sub { exists $_[0]->{qv} }; +# We limit cloning to a maximum depth to bail out on circular data +# structures. While actual cycle detection might be technically better, +# we expect circularity in META data structures to be rare and generally +# the result of user error. Therefore, a depth counter is lower overhead. +our $DCLONE_MAXDEPTH = 1024; +our $_CLONE_DEPTH; + sub _dclone { - my $ref = shift; - - # if an object is in the data structure and doesn't specify how to - # turn itself into JSON, we just stringify the object. That does the - # right thing for typical things that might be there, like version objects, - # Path::Class objects, etc. - no warnings 'once'; - no warnings 'redefine'; - local *UNIVERSAL::TO_JSON = sub { "$_[0]" }; - - my $json = Parse::CPAN::Meta->json_backend()->new - ->utf8 - ->allow_blessed - ->convert_blessed; - $json->decode($json->encode($ref)) + my ( $ref ) = @_; + return $ref unless my $reftype = ref $ref; + + local $_CLONE_DEPTH = defined $_CLONE_DEPTH ? $_CLONE_DEPTH - 1 : $DCLONE_MAXDEPTH; + die "Depth Limit $DCLONE_MAXDEPTH Exceeded" if $_CLONE_DEPTH == 0; + + return [ map { _dclone( $_ ) } @{$ref} ] if 'ARRAY' eq $reftype; + return { map { $_ => _dclone( $ref->{$_} ) } keys %{$ref} } if 'HASH' eq $reftype; + + if ( 'SCALAR' eq $reftype ) { + my $new = _dclone(${$ref}); + return \$new; + } + + # We can't know if TO_JSON gives us cloned data, so refs must recurse + if ( eval { $ref->can('TO_JSON') } ) { + my $data = $ref->TO_JSON; + return ref $data ? _dclone( $data ) : $data; + } + + # Just stringify everything else + return "$ref"; } my %known_specs = ( @@ -333,7 +347,7 @@ sub _no_index_directory { my ($element, $key, $meta, $version) = @_; return unless $element; - # cleanup wrong format + # clean up wrong format if ( ! ref $element ) { my $item = $element; $element = { directory => [ $item ], file => [ $item ] }; @@ -421,7 +435,7 @@ sub _version_map { } elsif ( ref $element eq 'ARRAY' ) { my $hashref = { map { $_ => 0 } @$element }; - return _version_map($hashref); # cleanup any weird stuff + return _version_map($hashref); # clean up any weird stuff } elsif ( ref $element eq '' && length $element ) { return { $element => 0 } @@ -1499,7 +1513,7 @@ CPAN::Meta::Converter - Convert CPAN distribution metadata structures =head1 VERSION -version 2.150005 +version 2.150010 =head1 SYNOPSIS @@ -1622,11 +1636,15 @@ David Golden <dagolden@cpan.org> Ricardo Signes <rjbs@cpan.org> +=item * + +Adam Kennedy <adamk@cpan.org> + =back =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2010 by David Golden and Ricardo Signes. +This software is copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/Feature.pm b/Master/tlpkg/tlperl/lib/CPAN/Meta/Feature.pm index 9dac4f42185..f6103495c72 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/Feature.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/Feature.pm @@ -3,7 +3,7 @@ use strict; use warnings; package CPAN::Meta::Feature; -our $VERSION = '2.150005'; +our $VERSION = '2.150010'; use CPAN::Meta::Prereqs; @@ -77,7 +77,7 @@ CPAN::Meta::Feature - an optional feature provided by a CPAN distribution =head1 VERSION -version 2.150005 +version 2.150010 =head1 DESCRIPTION @@ -132,11 +132,15 @@ David Golden <dagolden@cpan.org> Ricardo Signes <rjbs@cpan.org> +=item * + +Adam Kennedy <adamk@cpan.org> + =back =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2010 by David Golden and Ricardo Signes. +This software is copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/History.pm b/Master/tlpkg/tlperl/lib/CPAN/Meta/History.pm index f4cac5e59a9..aeeade94a37 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/History.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/History.pm @@ -4,7 +4,7 @@ use strict; use warnings; package CPAN::Meta::History; -our $VERSION = '2.150005'; +our $VERSION = '2.150010'; 1; @@ -22,7 +22,7 @@ CPAN::Meta::History - history of CPAN Meta Spec changes =head1 VERSION -version 2.150005 +version 2.150010 =head1 DESCRIPTION @@ -304,11 +304,15 @@ David Golden <dagolden@cpan.org> Ricardo Signes <rjbs@cpan.org> +=item * + +Adam Kennedy <adamk@cpan.org> + =back =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2010 by David Golden and Ricardo Signes. +This software is copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_0.pod b/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_0.pod index cd3bb9c3f68..5932f5a6e74 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_0.pod +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_0.pod @@ -21,7 +21,12 @@ Conversion from the original HTML to POD format =item * Include list of valid licenses from L<Module::Build> 0.17 rather than -linking to the module. +linking to the module, with minor updates to text and links to reflect +versions at the time of publication. + +=item * + +Fixed some dead links to point to active resources. =back @@ -43,16 +48,17 @@ install it. F<META.yml> files are written in the L<YAML|http://www.yaml.org/> format. The reasons we chose YAML instead of, say, XML or Data::Dumper are discussed in -L<this thread|http://archive.develooper.com/makemaker@perl.org/msg00405.html> +L<this thread|http://www.nntp.perl.org/group/perl.makemaker/2002/04/msg406.html> on the MakeMaker mailing list. -The first line of a F<META.yml> file should be a valid L<YAML document header|http://www.yaml.org/spec/#.Document> +The first line of a F<META.yml> file should be a valid +L<YAML document header|http://yaml.org/spec/history/2002-10-31.html#syntax-document> like C<"--- #YAML:1.0"> =head1 Fields The rest of the META.yml file is one big YAML -L<mapping|http://www.yaml.org/spec/#.-syntax-mapping-Mapping->, +L<mapping|http://yaml.org/spec/history/2002-10-31.html#syntax-mapping>, whose keys are described here. =over 4 @@ -87,28 +93,29 @@ Must be one of the following licenses: The distribution may be copied and redistributed under the same terms as perl itself (this is by far the most common licensing option for modules on CPAN). -This is a dual license, in which the user may choose between either the GPL or -the Artistic license. +This is a dual license, in which the user may choose between either the GPL +version 1 or the Artistic version 1 license. =item gpl -The distribution is distributed under the terms of the Gnu General Public -License (L<http://www.opensource.org/licenses/gpl-license.php>). +The distribution is distributed under the terms of the GNU General Public +License version 2 (L<http://opensource.org/licenses/GPL-2.0>). =item lgpl -The distribution is distributed under the terms of the Gnu Lesser General -Public License (L<http://www.opensource.org/licenses/lgpl-license.php>). +The distribution is distributed under the terms of the GNU Lesser General +Public License version 2 (L<http://opensource.org/licenses/LGPL-2.1>). =item artistic -The distribution is licensed under the Artistic License, as specified by the -Artistic file in the standard perl distribution. +The distribution is licensed under the Artistic License version 1, as specified +by the Artistic file in the standard perl distribution +(L<http://opensource.org/licenses/Artistic-Perl-1.0>). =item bsd -The distribution is licensed under the BSD License -(L<http://www.opensource.org/licenses/bsd-license.php>). +The distribution is licensed under the BSD 3-Clause License +(L<http://opensource.org/licenses/BSD-3-Clause>). =item open_source @@ -118,7 +125,7 @@ license listed at L<http://www.opensource.org/licenses/>. =item unrestricted The distribution is licensed under a license that is B<not> approved by -L<www.opensource.org|http://www.opensource.org> but that allows distribution +L<www.opensource.org|http://www.opensource.org/> but that allows distribution without restrictions. =item restrictive @@ -143,10 +150,11 @@ Example: Data::Dumper: 0 File::Find: 1.03 -A YAML L<mapping|http://www.yaml.org/spec/#.-syntax-mapping-Mapping-> +A YAML L<mapping|http://yaml.org/spec/history/2002-10-31.html#syntax-mapping> indicating the Perl modules this distribution requires for proper operation. The keys are the module names, and the values are version -specifications as described in the L<Module::Build|documentation for Module::Build's "requires" parameter>. +specifications as described in the +L<documentation for Module::Build's "requires" parameter|Module::Build::API/requires>. I<Note: the exact nature of the fancy specifications like C<< ">= 1.2, != 1.5, < 2.0" >> is subject to @@ -160,7 +168,7 @@ Example: Data::Dumper: 0 File::Find: 1.03 -A YAML L<mapping|http://www.yaml.org/spec/#.-syntax-mapping-Mapping-> +A YAML L<mapping|http://yaml.org/spec/history/2002-10-31.html#syntax-mapping> indicating the Perl modules this distribution recommends for enhanced operation. @@ -171,7 +179,7 @@ Example: Data::Dumper: 0 File::Find: 1.03 -A YAML L<mapping|http://www.yaml.org/spec/#.-syntax-mapping-Mapping-> +A YAML L<mapping|http://yaml.org/spec/history/2002-10-31.html#syntax-mapping> indicating the Perl modules required for building and/or testing of this distribution. These dependencies are not required after the module is installed. @@ -183,7 +191,7 @@ Example: Data::Dumper: 0 File::Find: 1.03 -A YAML L<mapping|http://www.yaml.org/spec/#.-syntax-mapping-Mapping-> +A YAML L<mapping|http://yaml.org/spec/history/2002-10-31.html#syntax-mapping> indicating the Perl modules that cannot be installed while this distribution is installed. This is a pretty uncommon situation. @@ -200,7 +208,7 @@ sensing the environment, etc.) as part of its build/install process. Currently L<Module::Build> doesn't actually do anything with this flag - it's probably going to be up to higher-level tools like -L<CPAN|CPAN.pm> to do something useful with it. It can potentially +L<CPAN.pm|CPAN> to do something useful with it. It can potentially bring lots of security, packaging, and convenience improvements. =item generated_by diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_1.pod b/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_1.pod index 7b4b2f41ce6..e0428a5e83c 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_1.pod +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_1.pod @@ -21,7 +21,12 @@ Conversion from the original HTML to POD format =item * Include list of valid licenses from L<Module::Build> 0.18 rather than -linking to the module. +linking to the module, with minor updates to text and links to reflect +versions at the time of publication. + +=item * + +Fixed some dead links to point to active resources. =back @@ -43,16 +48,17 @@ install it. F<META.yml> files are written in the L<YAML|http://www.yaml.org/> format. The reasons we chose YAML instead of, say, XML or Data::Dumper are discussed in -L<this thread|http://archive.develooper.com/makemaker@perl.org/msg00405.html> +L<this thread|http://www.nntp.perl.org/group/perl.makemaker/2002/04/msg406.html> on the MakeMaker mailing list. -The first line of a F<META.yml> file should be a valid L<YAML document header|http://www.yaml.org/spec/#.Document> +The first line of a F<META.yml> file should be a valid +L<YAML document header|http://yaml.org/spec/history/2002-10-31.html#syntax-document> like C<"--- #YAML:1.0"> =head1 Fields The rest of the META.yml file is one big YAML -L<mapping|http://www.yaml.org/spec/#.-syntax-mapping-Mapping->, +L<mapping|http://yaml.org/spec/history/2002-10-31.html#syntax-mapping>, whose keys are described here. =over 4 @@ -102,28 +108,29 @@ Must be one of the following licenses: The distribution may be copied and redistributed under the same terms as perl itself (this is by far the most common licensing option for modules on CPAN). -This is a dual license, in which the user may choose between either the GPL or -the Artistic license. +This is a dual license, in which the user may choose between either the GPL +version 1 or the Artistic version 1 license. =item gpl -The distribution is distributed under the terms of the Gnu General Public -License (L<http://www.opensource.org/licenses/gpl-license.php>). +The distribution is distributed under the terms of the GNU General Public +License version 2 (L<http://opensource.org/licenses/GPL-2.0>). =item lgpl -The distribution is distributed under the terms of the Gnu Lesser General -Public License (L<http://www.opensource.org/licenses/lgpl-license.php>). +The distribution is distributed under the terms of the GNU Lesser General +Public License version 2 (L<http://opensource.org/licenses/LGPL-2.1>). =item artistic -The distribution is licensed under the Artistic License, as specified by the -Artistic file in the standard perl distribution. +The distribution is licensed under the Artistic License version 1, as specified +by the Artistic file in the standard perl distribution +(L<http://opensource.org/licenses/Artistic-Perl-1.0>). =item bsd -The distribution is licensed under the BSD License -(L<http://www.opensource.org/licenses/bsd-license.php>). +The distribution is licensed under the BSD 3-Clause License +(L<http://opensource.org/licenses/BSD-3-Clause>). =item open_source @@ -133,7 +140,7 @@ license listed at L<http://www.opensource.org/licenses/>. =item unrestricted The distribution is licensed under a license that is B<not> approved by -L<www.opensource.org|http://www.opensource.org> but that allows distribution +L<www.opensource.org|http://www.opensource.org/> but that allows distribution without restrictions. =item restrictive @@ -175,10 +182,11 @@ Example: Data::Dumper: 0 File::Find: 1.03 -A YAML L<mapping|http://www.yaml.org/spec/#.-syntax-mapping-Mapping-> +A YAML L<mapping|http://yaml.org/spec/history/2002-10-31.html#syntax-mapping> indicating the Perl modules this distribution requires for proper operation. The keys are the module names, and the values are version -specifications as described in the L<Module::Build|documentation for Module::Build's "requires" parameter>. +specifications as described in the +L<documentation for Module::Build's "requires" parameter|Module::Build::API/requires>. I<Note: the exact nature of the fancy specifications like C<< ">= 1.2, != 1.5, < 2.0" >> is subject to @@ -192,7 +200,7 @@ Example: Data::Dumper: 0 File::Find: 1.03 -A YAML L<mapping|http://www.yaml.org/spec/#.-syntax-mapping-Mapping-> +A YAML L<mapping|http://yaml.org/spec/history/2002-10-31.html#syntax-mapping> indicating the Perl modules this distribution recommends for enhanced operation. @@ -203,7 +211,7 @@ Example: Data::Dumper: 0 File::Find: 1.03 -A YAML L<mapping|http://www.yaml.org/spec/#.-syntax-mapping-Mapping-> +A YAML L<mapping|http://yaml.org/spec/history/2002-10-31.html#syntax-mapping> indicating the Perl modules required for building and/or testing of this distribution. These dependencies are not required after the module is installed. @@ -215,7 +223,7 @@ Example: Data::Dumper: 0 File::Find: 1.03 -A YAML L<mapping|http://www.yaml.org/spec/#.-syntax-mapping-Mapping-> +A YAML L<mapping|http://yaml.org/spec/history/2002-10-31.html#syntax-mapping> indicating the Perl modules that cannot be installed while this distribution is installed. This is a pretty uncommon situation. @@ -239,7 +247,7 @@ sensing the environment, etc.) as part of its build/install process. Currently L<Module::Build> doesn't actually do anything with this flag - it's probably going to be up to higher-level tools like -L<CPAN|CPAN.pm> to do something useful with it. It can potentially +L<CPAN.pm|CPAN> to do something useful with it. It can potentially bring lots of security, packaging, and convenience improvements. =item generated_by diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_2.pod b/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_2.pod index 48867b2b350..1cb471fd2f2 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_2.pod +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_2.pod @@ -21,7 +21,12 @@ Various spelling corrections =item * Include list of valid licenses from L<Module::Build> 0.2611 rather than -linking to the module. +linking to the module, with minor updates to text and links to reflect +versions at the time of publication. + +=item * + +Fixed some dead links to point to active resources. =back @@ -96,21 +101,15 @@ XML or Data::Dumper: =item * -Module::Build design plans - -L<http://nntp.x.perl.org/group/perl.makemaker/406> +L<Module::Build design plans|http://www.nntp.perl.org/group/perl.makemaker/2002/04/msg407.html> =item * -Not keen on YAML - -L<http://nntp.x.perl.org/group/perl.module-authors/1353> +L<Not keen on YAML|http://www.nntp.perl.org/group/perl.module-authors/2003/11/msg1353.html> =item * -META Concerns - -L<http://nntp.x.perl.org/group/perl.module-authors/1385> +L<META Concerns|http://www.nntp.perl.org/group/perl.module-authors/2003/11/msg1385.html> =back @@ -136,8 +135,8 @@ well (ex. python, ruby). =head1 VERSION SPECIFICATIONS -Some fields require a version specification (ex. L<"requires">, -L<"recommends">, L<"build_requires">, etc.). This section details the +Some fields require a version specification (ex. L</requires>, +L</recommends>, L</build_requires>, etc.). This section details the version specifications that are currently supported. If a single version is listed, then that version is considered to be @@ -242,28 +241,29 @@ Must be one of the following licenses: The distribution may be copied and redistributed under the same terms as perl itself (this is by far the most common licensing option for modules on CPAN). -This is a dual license, in which the user may choose between either the GPL or -the Artistic license. +This is a dual license, in which the user may choose between either the GPL +version 1 or the Artistic version 1 license. =item gpl -The distribution is distributed under the terms of the Gnu General Public -License (L<http://www.opensource.org/licenses/gpl-license.php>). +The distribution is distributed under the terms of the GNU General Public +License version 2 (L<http://opensource.org/licenses/GPL-2.0>). =item lgpl -The distribution is distributed under the terms of the Gnu Lesser General -Public License (L<http://www.opensource.org/licenses/lgpl-license.php>). +The distribution is distributed under the terms of the GNU Lesser General +Public License version 2 (L<http://opensource.org/licenses/LGPL-2.1>). =item artistic -The distribution is licensed under the Artistic License, as specified by the -Artistic file in the standard perl distribution. +The distribution is licensed under the Artistic License version 1, as specified +by the Artistic file in the standard perl distribution +(L<http://opensource.org/licenses/Artistic-Perl-1.0>). =item bsd -The distribution is licensed under the BSD License -(L<http://www.opensource.org/licenses/bsd-license.php>). +The distribution is licensed under the BSD 3-Clause License +(L<http://opensource.org/licenses/BSD-3-Clause>). =item open_source @@ -273,7 +273,7 @@ license listed at L<http://www.opensource.org/licenses/>. =item unrestricted The distribution is licensed under a license that is B<not> approved by -L<www.opensource.org|http://www.opensource.org> but that allows distribution +L<www.opensource.org|http://www.opensource.org/> but that allows distribution without restrictions. =item restrictive @@ -341,9 +341,9 @@ Example: I<(Spec 1.1) [optional] {map} A YAML sequence of names for optional features which are made available when its requirements are met. For each -feature a description is provided along with any of L<"requires">, -L<"build_requires">, L<"conflicts">, L<"requires_packages">, -L<"requires_os">, and L<"excludes_os"> which have the same meaning in +feature a description is provided along with any of L</requires>, +L</build_requires>, L</conflicts>, C<requires_packages>, +C<requires_os>, and C<excludes_os> which have the same meaning in this subcontext as described elsewhere in this document.> =head2 build_requires @@ -394,7 +394,7 @@ If this field is omitted, it defaults to 1 (true). =head2 private I<(Deprecated)> (Spec 1.0) [optional] {map} This field has been renamed to -L</"no_index">. See below. +L</no_index>. See below. =head2 provides @@ -416,7 +416,7 @@ cases, is) used by distribution and automation mechanisms like PAUSE, CPAN, and search.cpan.org to build indexes saying in which distribution various packages can be found. -When using tools like C<Module::Build> that can generate the +When using tools like L<Module::Build> that can generate the C<provides> mapping for your distribution automatically, make sure you examine what it generates to make sure it makes sense - indexers will usually trust the C<provides> field if it's present, rather than @@ -536,23 +536,23 @@ tool. RWS] =head1 SEE ALSO -CPAN, L<http://www.cpan.org/> +L<CPAN|http://www.cpan.org/> -CPAN.pm, L<http://search.cpan.org/author/ANDK/CPAN/> +L<CPAN.pm|CPAN> -CPANPLUS, L<http://search.cpan.org/author/KANE/CPANPLUS/> +L<CPANPLUS> -Data::Dumper, L<http://search.cpan.org/author/ILYAM/Data-Dumper/> +L<Data::Dumper> -ExtUtils::MakeMaker, L<http://search.cpan.org/author/MSCHWERN/ExtUtils-MakeMaker/> +L<ExtUtils::MakeMaker> -Module::Build, L<http://search.cpan.org/author/KWILLIAMS/Module-Build/> +L<Module::Build> -Module::Install, L<http://search.cpan.org/author/KWILLIAMS/Module-Install/> +L<Module::Install> -XML, L<http://www.w3.org/XML/> +L<XML|http://www.w3.org/XML/> -YAML, L<http://www.yaml.org/> +L<YAML|http://www.yaml.org/> =head1 HISTORY @@ -574,7 +574,7 @@ Created version 1.0 of this document. =item * -Added the L</"dynamic_config"> field, which was missing from the initial +Added the L</dynamic_config> field, which was missing from the initial version. =back @@ -594,12 +594,12 @@ L<http://nntp.x.perl.org/group/> site. =item * -Added and deprecated the L<"private"> field. +Added and deprecated the L</private> field. =item * -Added L<"abstract">, L<"configure">, L<"requires_packages">, -L<"requires_os">, L<"excludes_os">, and L<"no_index"> fields. +Added L</abstract>, C<configure>, C<requires_packages>, +C<requires_os>, C<excludes_os>, and L</no_index> fields. =item * @@ -613,15 +613,15 @@ Bumped version. =item * -Added L<"generation">, L<"authored_by"> fields. +Added C<generation>, C<authored_by> fields. =item * -Add alternative proposal to the L<"recommends"> field. +Add alternative proposal to the L</recommends> field. =item * -Add proposal for a L<"requires_build_tools"> field. +Add proposal for a C<requires_build_tools> field. =back @@ -635,7 +635,7 @@ Added link to latest version of this specification on CPAN. =item * -Added section L<"VERSION SPECIFICATIONS">. +Added section L</"VERSION SPECIFICATIONS">. =item * @@ -643,7 +643,7 @@ Chang name from Module::Build::META-spec to CPAN::META::Specification. =item * -Add proposal for L<"auto_regenerate"> field. +Add proposal for C<auto_regenerate> field. =back @@ -653,15 +653,15 @@ Add proposal for L<"auto_regenerate"> field. =item * -Add L<"index"> field as a compliment to L<"no_index"> +Add C<index> field as a compliment to L</no_index> =item * -Add L<"keywords"> field as a means to aid searching distributions. +Add L</keywords> field as a means to aid searching distributions. =item * -Add L<"TERMINOLOGY"> section to explain certain terms that may be +Add L</TERMINOLOGY> section to explain certain terms that may be ambiguous. =back @@ -679,7 +679,7 @@ more like records of brainstorming. =item * -Changed C<authored_by> to C<author>, since that's always been what +Changed C<authored_by> to L</author>, since that's always been what it's actually called in actual F<META.yml> files. =item * @@ -689,12 +689,12 @@ operators. =item * -Noted that the C<distribution_type> field is basically meaningless, +Noted that the L</distribution_type> field is basically meaningless, and shouldn't really be used. =item * -Clarified C<dynamic_config> a bit. +Clarified L</dynamic_config> a bit. =back diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_3.pod b/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_3.pod index b075adccde6..9e889cd5970 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_3.pod +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_3.pod @@ -21,7 +21,12 @@ Various spelling corrections =item * Include list of valid licenses from L<Module::Build> 0.2805 rather than -linking to the module. +linking to the module, with minor updates to text and links to reflect +versions at the time of publication. + +=item * + +Fixed some dead links to point to active resources. =back @@ -94,17 +99,17 @@ XML or Data::Dumper: =over 4 -=item Module::Build design plans +=item * -L<http://nntp.x.perl.org/group/perl.makemaker/406> +L<Module::Build design plans|http://www.nntp.perl.org/group/perl.makemaker/2002/04/msg407.html> -=item Not keen on YAML +=item * -L<http://nntp.x.perl.org/group/perl.module-authors/1353> +L<Not keen on YAML|http://www.nntp.perl.org/group/perl.module-authors/2003/11/msg1353.html> -=item META Concerns +=item * -L<http://nntp.x.perl.org/group/perl.module-authors/1385> +L<META Concerns|http://www.nntp.perl.org/group/perl.module-authors/2003/11/msg1385.html> =back @@ -206,39 +211,40 @@ Must be one of the following licenses: =item apache -The distribution is licensed under the Apache Software License -(L<http://opensource.org/licenses/apachepl.php>). +The distribution is licensed under the Apache Software License version 1.1 +(L<http://opensource.org/licenses/Apache-1.1>). =item artistic -The distribution is licensed under the Artistic License, as specified by the -Artistic file in the standard perl distribution. +The distribution is licensed under the Artistic License version 1, as specified +by the Artistic file in the standard perl distribution +(L<http://opensource.org/licenses/Artistic-Perl-1.0>). =item bsd -The distribution is licensed under the BSD License -(L<http://www.opensource.org/licenses/bsd-license.php>). +The distribution is licensed under the BSD 3-Clause License +(L<http://opensource.org/licenses/BSD-3-Clause>). =item gpl -The distribution is licensed under the terms of the Gnu General Public License -(L<http://www.opensource.org/licenses/gpl-license.php>). +The distribution is distributed under the terms of the GNU General Public +License version 2 (L<http://opensource.org/licenses/GPL-2.0>). =item lgpl -The distribution is licensed under the terms of the Gnu Lesser General Public -License (L<http://www.opensource.org/licenses/lgpl-license.php>). +The distribution is distributed under the terms of the GNU Lesser General +Public License version 2 (L<http://opensource.org/licenses/LGPL-2.1>). =item mit The distribution is licensed under the MIT License -(L<http://opensource.org/licenses/mit-license.php>). +(L<http://opensource.org/licenses/MIT>). =item mozilla The distribution is licensed under the Mozilla Public License. -(L<http://opensource.org/licenses/mozilla1.0.php> or -L<http://opensource.org/licenses/mozilla1.1.php>) +(L<http://opensource.org/licenses/MPL-1.0> or +L<http://opensource.org/licenses/MPL-1.1>) =item open_source @@ -249,8 +255,8 @@ license listed at L<http://www.opensource.org/licenses/>. The distribution may be copied and redistributed under the same terms as perl itself (this is by far the most common licensing option for modules on CPAN). -This is a dual license, in which the user may choose between either the GPL or -the Artistic license. +This is a dual license, in which the user may choose between either the GPL +version 1 or the Artistic version 1 license. =item restrictive @@ -292,7 +298,7 @@ Example: (Spec 1.0) [optional] {map} A YAML mapping indicating the Perl modules this distribution requires for proper operation. The keys are the module names, and the values are version specifications as described in -L<VERSION SPECIFICATIONS>. +L</"VERSION SPECIFICATIONS">. =head2 recommends @@ -305,7 +311,7 @@ Example: (Spec 1.0) [optional] {map} A YAML mapping indicating the Perl modules this distribution recommends for enhanced operation. The keys are the module names, and the values are version specifications as described -in L<VERSION SPECIFICATIONS>. +in L</"VERSION SPECIFICATIONS">. @@ -327,9 +333,9 @@ Example: I<(Spec 1.1) [optional] {map} A YAML sequence of names for optional features which are made available when its requirements are met. For each -feature a description is provided along with any of L<"requires">, -L<"build_requires">, L<"conflicts">, L<"requires_packages">, -L<"requires_os">, and L<"excludes_os"> which have the same meaning in +feature a description is provided along with any of L</requires>, +L</build_requires>, L</conflicts>, C<requires_packages>, +C<requires_os>, and C<excludes_os> which have the same meaning in this subcontext as described elsewhere in this document.> =head2 build_requires @@ -343,7 +349,7 @@ Example: (Spec 1.0) [optional] {map} A YAML mapping indicating the Perl modules required for building and/or testing of this distribution. The keys are the module names, and the values are version specifications as -described in L<VERSION SPECIFICATIONS>. These dependencies are not +described in L</"VERSION SPECIFICATIONS">. These dependencies are not required after the module is installed. =head2 conflicts @@ -358,7 +364,7 @@ Example: cannot be installed while this distribution is installed. This is a pretty uncommon situation. The keys for C<conflicts> are the module names, and the values are version specifications as described in -L<VERSION SPECIFICATIONS>. +L</"VERSION SPECIFICATIONS">. =head2 dynamic_config @@ -385,7 +391,7 @@ If this field is omitted, it defaults to 1 (true). =head2 private I<(Deprecated)> (Spec 1.0) [optional] {map} This field has been renamed to -L</"no_index">. See below. +L</no_index>. See below. =head2 provides @@ -407,7 +413,7 @@ cases, is) used by distribution and automation mechanisms like PAUSE, CPAN, and search.cpan.org to build indexes saying in which distribution various packages can be found. -When using tools like C<Module::Build> that can generate the +When using tools like L<Module::Build> that can generate the C<provides> mapping for your distribution automatically, make sure you examine what it generates to make sure it makes sense - indexers will usually trust the C<provides> field if it's present, rather than @@ -437,7 +443,7 @@ directories, packages, and namespaces that are private and indexing tools. This is useful when no C<provides> field is present. -For example, C<search.cpan.org> excludes items listed in C<no_index> +For example, L<http://search.cpan.org/> excludes items listed in C<no_index> when searching for POD, meaning files in these directories will not converted to HTML and made public - which is useful if you have example or test PODs that you don't want the search engine to go @@ -534,8 +540,8 @@ tool. RWS] =head1 VERSION SPECIFICATIONS -Some fields require a version specification (ex. L<"requires">, -L<"recommends">, L<"build_requires">, etc.) to indicate the particular +Some fields require a version specification (ex. L</requires>, +L</recommends>, L</build_requires>, etc.) to indicate the particular versionZ<>(s) of some other module that may be required as a prerequisite. This section details the version specification formats that are currently supported. @@ -559,23 +565,23 @@ together using commas. The specification C<E<gt>= 1.2, != 1.5, E<lt> =head1 SEE ALSO -CPAN, L<http://www.cpan.org/> +L<CPAN|http://www.cpan.org/> -CPAN.pm, L<http://search.cpan.org/dist/CPAN/> +L<CPAN.pm|CPAN> -CPANPLUS, L<http://search.cpan.org/dist/CPANPLUS/> +L<CPANPLUS> -Data::Dumper, L<http://search.cpan.org/dist/Data-Dumper/> +L<Data::Dumper> -ExtUtils::MakeMaker, L<http://search.cpan.org/dist/ExtUtils-MakeMaker/> +L<ExtUtils::MakeMaker> -Module::Build, L<http://search.cpan.org/dist/Module-Build/> +L<Module::Build> -Module::Install, L<http://search.cpan.org/dist/Module-Install/> +L<Module::Install> -XML, L<http://www.w3.org/XML/> +L<XML|http://www.w3.org/XML/> -YAML, L<http://www.yaml.org/> +L<YAML|http://www.yaml.org/> =head1 HISTORY @@ -597,7 +603,7 @@ Created version 1.0 of this document. =item * -Added the L</"dynamic_config"> field, which was missing from the initial +Added the L</dynamic_config> field, which was missing from the initial version. =back @@ -617,12 +623,12 @@ L<http://nntp.x.perl.org/group/> site. =item * -Added and deprecated the L<"private"> field. +Added and deprecated the L</private> field. =item * -Added L<"abstract">, L<"configure">, L<"requires_packages">, -L<"requires_os">, L<"excludes_os">, and L<"no_index"> fields. +Added L</abstract>, C<configure>, C<requires_packages>, +C<requires_os>, C<excludes_os>, and L</no_index> fields. =item * @@ -636,15 +642,15 @@ Bumped version. =item * -Added L<"generation">, L<"authored_by"> fields. +Added C<generation>, C<authored_by> fields. =item * -Add alternative proposal to the L<"recommends"> field. +Add alternative proposal to the L</recommends> field. =item * -Add proposal for a L<"requires_build_tools"> field. +Add proposal for a C<requires_build_tools> field. =back @@ -658,7 +664,7 @@ Added link to latest version of this specification on CPAN. =item * -Added section L<"VERSION SPECIFICATIONS">. +Added section L</"VERSION SPECIFICATIONS">. =item * @@ -666,7 +672,7 @@ Chang name from Module::Build::META-spec to CPAN::META::Specification. =item * -Add proposal for L<"auto_regenerate"> field. +Add proposal for C<auto_regenerate> field. =back @@ -676,15 +682,15 @@ Add proposal for L<"auto_regenerate"> field. =item * -Add L<"index"> field as a compliment to L<"no_index"> +Add C<index> field as a compliment to L</no_index> =item * -Add L<"keywords"> field as a means to aid searching distributions. +Add L</keywords> field as a means to aid searching distributions. =item * -Add L<"TERMINOLOGY"> section to explain certain terms that may be +Add L</TERMINOLOGY> section to explain certain terms that may be ambiguous. =back @@ -702,7 +708,7 @@ more like records of brainstorming. =item * -Changed C<authored_by> to C<author>, since that's always been what +Changed C<authored_by> to L</author>, since that's always been what it's actually called in actual F<META.yml> files. =item * @@ -712,12 +718,12 @@ operators. =item * -Noted that the C<distribution_type> field is basically meaningless, +Noted that the L</distribution_type> field is basically meaningless, and shouldn't really be used. =item * -Clarified C<dynamic_config> a bit. +Clarified L</dynamic_config> a bit. =back diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_4.pod b/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_4.pod index 471296ce291..932f1ed94b3 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_4.pod +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_4.pod @@ -21,7 +21,12 @@ Various spelling corrections =item * Include list of valid licenses from L<Module::Build> 0.2807 rather than -linking to the module. +linking to the module, with minor updates to text and links to reflect +versions at the time of publication. + +=item * + +Fixed some dead links to point to active resources. =back @@ -84,35 +89,6 @@ and the latest development version (which may include things that won't make it into the stable version) can always be found at L<http://module-build.sourceforge.net/META-spec-blead.html>.> -=begin MAINTAINER - -The master source for the META spec is META-spec.pod. META-spec.html -is built (manually) from META-spec.pod whenever there are changes, and -the two files should generally be checked in together. Ideally it -would happen through a trigger or something, but it doesn't. - -Ken has a cron job that copies the latest bleeding-edge version of the -spec (HTML version) to Sourceforge whenever his laptop is turned on: - - 21 * * * * svn cat http://svn.perl.org/modules/Module-Build/trunk/website/META-spec.html \ - | ssh kwilliams@shell.sourceforge.net \ - 'cat > /home/groups/m/mo/module-build/htdocs/META-spec-blead.html' - -The numbered revisions of the spec at -L<"http://module-build.sourceforge.net/"> are captures of the spec at -opportune moments. A couple of symlinks also exist for convenience: - - -rw-r--r-- 1 kwilliams 24585 Oct 10 17:21 META-spec-blead.html - lrwxrwxrwx 1 kwilliams 19 Jan 19 2007 META-spec-current.html -> META-spec-v1.3.html - lrwxrwxrwx 1 kwilliams 22 Jan 19 2007 META-spec.html -> META-spec-current.html - -rw-r--r-- 1 kwilliams 5830 Jul 25 2005 META-spec-v1.0.html - -rw-r--r-- 1 kwilliams 7847 Jul 25 2005 META-spec-v1.1.html - -rw-r--r-- 1 kwilliams 22635 Aug 23 2005 META-spec-v1.2.html - -rw-r--r-- 1 kwilliams 24086 Nov 4 2006 META-spec-v1.3.html - -=end MAINTAINER - - =head1 FORMAT F<META.yml> files are written in the YAML format (see @@ -123,17 +99,17 @@ XML or Data::Dumper: =over 4 -=item Module::Build design plans +=item * -L<http://nntp.x.perl.org/group/perl.makemaker/406> +L<Module::Build design plans|http://www.nntp.perl.org/group/perl.makemaker/2002/04/msg407.html> -=item Not keen on YAML +=item * -L<http://nntp.x.perl.org/group/perl.module-authors/1353> +L<Not keen on YAML|http://www.nntp.perl.org/group/perl.module-authors/2003/11/msg1353.html> -=item META Concerns +=item * -L<http://nntp.x.perl.org/group/perl.module-authors/1385> +L<META Concerns|http://www.nntp.perl.org/group/perl.module-authors/2003/11/msg1385.html> =back @@ -235,39 +211,40 @@ Must be one of the following licenses: =item apache -The distribution is licensed under the Apache Software License -(L<http://opensource.org/licenses/apachepl.php>). +The distribution is licensed under the Apache Software License version 1.1 +(L<http://opensource.org/licenses/Apache-1.1>). =item artistic -The distribution is licensed under the Artistic License, as specified by the -Artistic file in the standard perl distribution. +The distribution is licensed under the Artistic License version 1, as specified +by the Artistic file in the standard perl distribution +(L<http://opensource.org/licenses/Artistic-Perl-1.0>). =item bsd -The distribution is licensed under the BSD License -(L<http://www.opensource.org/licenses/bsd-license.php>). +The distribution is licensed under the BSD 3-Clause License +(L<http://opensource.org/licenses/BSD-3-Clause>). =item gpl -The distribution is licensed under the terms of the Gnu General Public License -(L<http://www.opensource.org/licenses/gpl-license.php>). +The distribution is distributed under the terms of the GNU General Public +License version 2 (L<http://opensource.org/licenses/GPL-2.0>). =item lgpl -The distribution is licensed under the terms of the Gnu Lesser General Public -License (L<http://www.opensource.org/licenses/lgpl-license.php>). +The distribution is distributed under the terms of the GNU Lesser General +Public License version 2 (L<http://opensource.org/licenses/LGPL-2.1>). =item mit The distribution is licensed under the MIT License -(L<http://opensource.org/licenses/mit-license.php>). +(L<http://opensource.org/licenses/MIT>). =item mozilla The distribution is licensed under the Mozilla Public License. -(L<http://opensource.org/licenses/mozilla1.0.php> or -L<http://opensource.org/licenses/mozilla1.1.php>) +(L<http://opensource.org/licenses/MPL-1.0> or +L<http://opensource.org/licenses/MPL-1.1>) =item open_source @@ -355,8 +332,8 @@ Example: I<(Spec 1.1) [optional] {map} A YAML mapping of names for optional features which are made available when its requirements are met. For each -feature a description is provided along with any of L<"requires">, -L<"build_requires">, and L<"conflicts">, which have the same meaning in +feature a description is provided along with any of L</requires>, +L</build_requires>, and L</conflicts>, which have the same meaning in this subcontext as described elsewhere in this document.> =head2 build_requires @@ -371,7 +348,7 @@ Example: prerequisites required for building and/or testing of this distribution. The keys are the names of the prerequisites (module names or 'perl'), and the values are version specifications as -described in L<VERSION SPECIFICATIONS>. These dependencies are not +described in L</"VERSION SPECIFICATIONS">. These dependencies are not required after the distribution is installed. =head2 configure_requires @@ -385,9 +362,9 @@ Example: (Spec 1.4) [optional] {map} A YAML mapping indicating the Perl prerequisites required before configuring this distribution. The keys are the -names of the prerequisites (module names or 'perl'), and the values are version specifications as described -in L<VERSION SPECIFICATIONS>. These dependencies are not required -after the distribution is installed. +names of the prerequisites (module names or 'perl'), and the values are version +specifications as described in L</"VERSION SPECIFICATIONS">. These +dependencies are not required after the distribution is installed. =head2 conflicts @@ -401,7 +378,7 @@ Example: cannot be installed while this distribution is installed. This is a pretty uncommon situation. The keys for C<conflicts> are the item names (module names or 'perl'), and the values are version -specifications as described in L<VERSION SPECIFICATIONS>. +specifications as described in L</"VERSION SPECIFICATIONS">. =head2 dynamic_config @@ -428,7 +405,7 @@ If this field is omitted, it defaults to 1 (true). =head2 private I<(Deprecated)> (Spec 1.0) [optional] {map} This field has been renamed to -L</"no_index">. See below. +L</no_index>. See below. =head2 provides @@ -450,7 +427,7 @@ cases, is) used by distribution and automation mechanisms like PAUSE, CPAN, and search.cpan.org to build indexes saying in which distribution various packages can be found. -When using tools like C<Module::Build> that can generate the +When using tools like L<Module::Build> that can generate the C<provides> mapping for your distribution automatically, make sure you examine what it generates to make sure it makes sense - indexers will usually trust the C<provides> field if it's present, rather than @@ -480,7 +457,7 @@ directories, packages, and namespaces that are private and indexing tools. This is useful when no C<provides> field is present. -For example, C<search.cpan.org> excludes items listed in C<no_index> +For example, L<http://search.cpan.org/> excludes items listed in C<no_index> when searching for POD, meaning files in these directories will not converted to HTML and made public - which is useful if you have example or test PODs that you don't want the search engine to go @@ -577,8 +554,8 @@ tool. RWS] =head1 VERSION SPECIFICATIONS -Some fields require a version specification (ex. L<"requires">, -L<"recommends">, L<"build_requires">, etc.) to indicate the particular +Some fields require a version specification (ex. L</requires>, +L</recommends>, L</build_requires>, etc.) to indicate the particular versionZ<>(s) of some other module that may be required as a prerequisite. This section details the version specification formats that are currently supported. @@ -602,23 +579,23 @@ together using commas. The specification C<E<gt>= 1.2, != 1.5, E<lt> =head1 SEE ALSO -CPAN, L<http://www.cpan.org/> +L<CPAN|http://www.cpan.org/> -CPAN.pm, L<http://search.cpan.org/dist/CPAN/> +L<CPAN.pm|CPAN> -CPANPLUS, L<http://search.cpan.org/dist/CPANPLUS/> +L<CPANPLUS> -Data::Dumper, L<http://search.cpan.org/dist/Data-Dumper/> +L<Data::Dumper> -ExtUtils::MakeMaker, L<http://search.cpan.org/dist/ExtUtils-MakeMaker/> +L<ExtUtils::MakeMaker> -Module::Build, L<http://search.cpan.org/dist/Module-Build/> +L<Module::Build> -Module::Install, L<http://search.cpan.org/dist/Module-Install/> +L<Module::Install> -XML, L<http://www.w3.org/XML/> +L<XML|http://www.w3.org/XML/> -YAML, L<http://www.yaml.org/> +L<YAML|http://www.yaml.org/> =head1 HISTORY @@ -640,7 +617,7 @@ Created version 1.0 of this document. =item * -Added the L</"dynamic_config"> field, which was missing from the initial +Added the L</dynamic_config> field, which was missing from the initial version. =back @@ -660,12 +637,12 @@ L<http://nntp.x.perl.org/group/> site. =item * -Added and deprecated the L<"private"> field. +Added and deprecated the L</private> field. =item * -Added L<"abstract">, L<"configure">, L<"requires_packages">, -L<"requires_os">, L<"excludes_os">, and L<"no_index"> fields. +Added L</abstract>, C<configure>, C<requires_packages>, +C<requires_os>, C<excludes_os>, and L</no_index> fields. =item * @@ -679,15 +656,15 @@ Bumped version. =item * -Added L<"generation">, L<"authored_by"> fields. +Added C<generation>, C<authored_by> fields. =item * -Add alternative proposal to the L<"recommends"> field. +Add alternative proposal to the L</recommends> field. =item * -Add proposal for a L<"requires_build_tools"> field. +Add proposal for a C<requires_build_tools> field. =back @@ -701,7 +678,7 @@ Added link to latest version of this specification on CPAN. =item * -Added section L<"VERSION SPECIFICATIONS">. +Added section L</"VERSION SPECIFICATIONS">. =item * @@ -709,7 +686,7 @@ Chang name from Module::Build::META-spec to CPAN::META::Specification. =item * -Add proposal for L<"auto_regenerate"> field. +Add proposal for C<auto_regenerate> field. =back @@ -719,15 +696,15 @@ Add proposal for L<"auto_regenerate"> field. =item * -Add L<"index"> field as a compliment to L<"no_index"> +Add C<index> field as a compliment to L</no_index> =item * -Add L<"keywords"> field as a means to aid searching distributions. +Add L</keywords> field as a means to aid searching distributions. =item * -Add L<"TERMINOLOGY"> section to explain certain terms that may be +Add L</TERMINOLOGY> section to explain certain terms that may be ambiguous. =back @@ -745,7 +722,7 @@ more like records of brainstorming. =item * -Changed C<authored_by> to C<author>, since that's always been what +Changed C<authored_by> to L</author>, since that's always been what it's actually called in actual F<META.yml> files. =item * @@ -755,12 +732,12 @@ operators. =item * -Noted that the C<distribution_type> field is basically meaningless, +Noted that the L</distribution_type> field is basically meaningless, and shouldn't really be used. =item * -Clarified C<dynamic_config> a bit. +Clarified L</dynamic_config> a bit. =back @@ -781,7 +758,7 @@ module that doesn't actually exist. =item * -Added C<configure_requires>. +Added L</configure_requires>. =back diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/Merge.pm b/Master/tlpkg/tlperl/lib/CPAN/Meta/Merge.pm index 05a18ea9732..3604eae4022 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/Merge.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/Merge.pm @@ -3,7 +3,7 @@ use warnings; package CPAN::Meta::Merge; -our $VERSION = '2.150005'; +our $VERSION = '2.150010'; use Carp qw/croak/; use Scalar::Util qw/blessed/; @@ -73,7 +73,7 @@ sub _uniq_map { return $left; } -sub _improvize { +sub _improvise { my ($left, $right, $path) = @_; my ($name) = reverse @{$path}; if ($name =~ /^x_/) { @@ -154,9 +154,9 @@ my %default = ( homepage => \&_identical, bugtracker => \&_uniq_map, repository => \&_uniq_map, - ':default' => \&_improvize, + ':default' => \&_improvise, }, - ':default' => \&_improvize, + ':default' => \&_improvise, ); sub new { @@ -182,7 +182,8 @@ my %coderef_for = ( set_addition => \&_set_addition, uniq_map => \&_uniq_map, identical => \&_identical, - improvize => \&_improvize, + improvise => \&_improvise, + improvize => \&_improvise, # [sic] for backwards compatibility ); sub _coerce_mapping { @@ -250,7 +251,7 @@ CPAN::Meta::Merge - Merging CPAN Meta fragments =head1 VERSION -version 2.150005 +version 2.150010 =head1 SYNOPSIS @@ -268,11 +269,60 @@ argument, C<version>, declaring the version of the meta-spec that must be used for the merge. It can optionally take an C<extra_mappings> argument that allows one to add additional merging functions for specific elements. +The C<extra_mappings> arguments takes a hash ref with the same type of +structure as described in L<CPAN::Meta::Spec>, except with its values as +one of the L<defined merge strategies|/"MERGE STRATEGIES"> or a code ref +to a merging function. + + my $merger = CPAN::Meta::Merge->new( + default_version => '2', + extra_mappings => { + 'optional_features' => \&custom_merge_function, + 'x_custom' => 'set_addition', + 'x_meta_meta' => { + name => 'identical', + tags => 'set_addition', + } + } + ); + =head2 merge(@fragments) Merge all C<@fragments> together. It will accept both CPAN::Meta objects and (possibly incomplete) hashrefs of metadata. +=head1 MERGE STRATEGIES + +C<merge> uses various strategies to combine different elements of the CPAN::Meta objects. The following strategies can be used with the extra_mappings argument of C<new>: + +=over + +=item identical + +The elements must be identical + +=item set_addition + +The union of two array refs + + [ a, b ] U [ a, c] = [ a, b, c ] + +=item uniq_map + +Key value pairs from the right hash are merged to the left hash. Key +collisions are only allowed if their values are the same. This merge +function will recurse into nested hash refs following the same merge +rules. + +=item improvise + +This merge strategy will try to pick the appropriate predefined strategy +based on what element type. Array refs will try to use the +C<set_addition> strategy, Hash refs will try to use the C<uniq_map> +strategy, and everything else will try the C<identical> strategy. + +=back + =head1 AUTHORS =over 4 @@ -285,11 +335,15 @@ David Golden <dagolden@cpan.org> Ricardo Signes <rjbs@cpan.org> +=item * + +Adam Kennedy <adamk@cpan.org> + =back =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2010 by David Golden and Ricardo Signes. +This software is copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/Prereqs.pm b/Master/tlpkg/tlperl/lib/CPAN/Meta/Prereqs.pm index 8a13eb13c81..d4e93fd8a5c 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/Prereqs.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/Prereqs.pm @@ -3,7 +3,7 @@ use strict; use warnings; package CPAN::Meta::Prereqs; -our $VERSION = '2.150005'; +our $VERSION = '2.150010'; #pod =head1 DESCRIPTION #pod @@ -45,6 +45,7 @@ use CPAN::Meta::Requirements 2.121; #pod #pod =cut +# note we also accept anything matching /\Ax_/i sub __legal_phases { qw(configure build test runtime develop) } sub __legal_types { qw(requires recommends suggests conflicts) } @@ -114,6 +115,40 @@ sub requirements_for { return $req; } +#pod =method phases +#pod +#pod my @phases = $prereqs->phases; +#pod +#pod This method returns the list of all phases currently populated in the prereqs +#pod object, suitable for iterating. +#pod +#pod =cut + +sub phases { + my ($self) = @_; + + my %is_legal_phase = map {; $_ => 1 } $self->__legal_phases; + grep { /\Ax_/i or $is_legal_phase{$_} } keys %{ $self->{prereqs} }; +} + +#pod =method types_in +#pod +#pod my @runtime_types = $prereqs->types_in('runtime'); +#pod +#pod This method returns the list of all types currently populated in the prereqs +#pod object for the provided phase, suitable for iterating. +#pod +#pod =cut + +sub types_in { + my ($self, $phase) = @_; + + return unless $phase =~ /\Ax_/i or grep { $phase eq $_ } $self->__legal_phases; + + my %is_legal_type = map {; $_ => 1 } $self->__legal_types; + grep { /\Ax_/i or $is_legal_type{$_} } keys %{ $self->{prereqs}{$phase} }; +} + #pod =method with_merged_prereqs #pod #pod my $new_prereqs = $prereqs->with_merged_prereqs( $other_prereqs ); @@ -139,8 +174,9 @@ sub with_merged_prereqs { my %new_arg; - for my $phase ($self->__legal_phases) { - for my $type ($self->__legal_types) { + for my $phase (__uniq(map { $_->phases } @prereq_objs)) { + for my $type (__uniq(map { $_->types_in($phase) } @prereq_objs)) { + my $req = CPAN::Meta::Requirements->new; for my $prereq (@prereq_objs) { @@ -215,8 +251,8 @@ sub as_string_hash { my %hash; - for my $phase ($self->__legal_phases) { - for my $type ($self->__legal_types) { + for my $phase ($self->phases) { + for my $type ($self->types_in($phase)) { my $req = $self->requirements_for($phase, $type); next unless $req->required_modules; @@ -271,6 +307,11 @@ sub clone { my $clone = (ref $self)->new( $self->as_string_hash ); } +sub __uniq { + my (%s, $u); + grep { defined($_) ? !$s{$_}++ : !$u++ } @_; +} + 1; # ABSTRACT: a set of distribution prerequisites by phase and type @@ -285,7 +326,7 @@ CPAN::Meta::Prereqs - a set of distribution prerequisites by phase and type =head1 VERSION -version 2.150005 +version 2.150010 =head1 DESCRIPTION @@ -333,6 +374,20 @@ be added to as needed. If C<$phase> or C<$type> are undefined or otherwise invalid, an exception will be raised. +=head2 phases + + my @phases = $prereqs->phases; + +This method returns the list of all phases currently populated in the prereqs +object, suitable for iterating. + +=head2 types_in + + my @runtime_types = $prereqs->types_in('runtime'); + +This method returns the list of all types currently populated in the prereqs +object for the provided phase, suitable for iterating. + =head2 with_merged_prereqs my $new_prereqs = $prereqs->with_merged_prereqs( $other_prereqs ); @@ -405,11 +460,15 @@ David Golden <dagolden@cpan.org> Ricardo Signes <rjbs@cpan.org> +=item * + +Adam Kennedy <adamk@cpan.org> + =back =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2010 by David Golden and Ricardo Signes. +This software is copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/Spec.pm b/Master/tlpkg/tlperl/lib/CPAN/Meta/Spec.pm index 9056940b51a..16e7495938d 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/Spec.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/Spec.pm @@ -8,7 +8,7 @@ use strict; use warnings; package CPAN::Meta::Spec; -our $VERSION = '2.150005'; +our $VERSION = '2.150010'; 1; @@ -29,7 +29,7 @@ CPAN::Meta::Spec - specification for CPAN distribution metadata =head1 VERSION -version 2.150005 +version 2.150010 =head1 SYNOPSIS @@ -159,7 +159,8 @@ constraints on the values of a data element. =head2 Boolean A I<Boolean> is used to provide a true or false value. It B<must> be -represented as a defined value. +represented as a defined value that is either "1" or "0" or stringifies +to those values. =head2 String @@ -1196,6 +1197,10 @@ L<Module::Build> L<Module::Install> +=item * + +L<CPAN::Meta::History::Meta_1_4> + =back =head1 HISTORY @@ -1223,11 +1228,15 @@ David Golden <dagolden@cpan.org> Ricardo Signes <rjbs@cpan.org> +=item * + +Adam Kennedy <adamk@cpan.org> + =back =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2010 by David Golden and Ricardo Signes. +This software is copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff --git a/Master/tlpkg/tlperl/lib/CPAN/Meta/Validator.pm b/Master/tlpkg/tlperl/lib/CPAN/Meta/Validator.pm index eddaa107302..a2256dea662 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Meta/Validator.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Meta/Validator.pm @@ -3,7 +3,7 @@ use strict; use warnings; package CPAN::Meta::Validator; -our $VERSION = '2.150005'; +our $VERSION = '2.150010'; #pod =head1 SYNOPSIS #pod @@ -669,8 +669,8 @@ sub check_list { #pod #pod boolean($self,$key,$value) #pod -#pod Validates for a boolean value. Currently these values are '1', '0', 'true', -#pod 'false', however the latter 2 may be removed. +#pod Validates for a boolean value: a defined value that is either "1" or "0" or +#pod stringifies to those values. #pod #pod =item * #pod @@ -833,7 +833,7 @@ sub version { sub boolean { my ($self,$key,$value) = @_; if(defined $value) { - return 1 if($value =~ /^(0|1|true|false)$/); + return 1 if($value =~ /^(0|1)$/); } else { $value = '<undef>'; } @@ -996,7 +996,7 @@ CPAN::Meta::Validator - validate CPAN distribution metadata structures =head1 VERSION -version 2.150005 +version 2.150010 =head1 SYNOPSIS @@ -1124,8 +1124,8 @@ are both valid. A leading 'v' like 'v1.2.3' is also valid. boolean($self,$key,$value) -Validates for a boolean value. Currently these values are '1', '0', 'true', -'false', however the latter 2 may be removed. +Validates for a boolean value: a defined value that is either "1" or "0" or +stringifies to those values. =item * @@ -1193,11 +1193,15 @@ David Golden <dagolden@cpan.org> Ricardo Signes <rjbs@cpan.org> +=item * + +Adam Kennedy <adamk@cpan.org> + =back =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2010 by David Golden and Ricardo Signes. +This software is copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff --git a/Master/tlpkg/tlperl/lib/CPAN/Mirrors.pm b/Master/tlpkg/tlperl/lib/CPAN/Mirrors.pm index 37e7ce0ef9f..4ceca0458cc 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Mirrors.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Mirrors.pm @@ -34,7 +34,7 @@ CPAN::Mirrors - Get CPAN mirror information and select a fast one package CPAN::Mirrors; use strict; use vars qw($VERSION $urllist $silent); -$VERSION = "1.9601"; +$VERSION = "2.12"; use Carp; use FileHandle; @@ -82,7 +82,7 @@ Return a list of continents based on those defined in F<MIRRORED.BY>. sub continents { my ($self) = @_; - return keys %{$self->{geography}}; + return sort keys %{$self->{geography}}; } =item countries( [CONTINENTS] ) @@ -99,7 +99,7 @@ sub countries { @continents = $self->continents unless @continents; my @countries; for my $c (@continents) { - push @countries, keys %{ $self->{geography}{$c} }; + push @countries, sort keys %{ $self->{geography}{$c} }; } return @countries; } diff --git a/Master/tlpkg/tlperl/lib/CPAN/Module.pm b/Master/tlpkg/tlperl/lib/CPAN/Module.pm index bf1226c0f04..62ca42caf00 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Module.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Module.pm @@ -7,7 +7,7 @@ use strict; use vars qw( $VERSION ); -$VERSION = "5.5002"; +$VERSION = "5.5003"; BEGIN { # alarm() is not implemented in perl 5.6.x and earlier under Windows @@ -104,7 +104,12 @@ sub color_cmd_tmps { # so we can break it } if ($depth>=$CPAN::MAX_RECURSION) { - die(CPAN::Exception::RecursiveDependency->new($ancestors)); + my $e = CPAN::Exception::RecursiveDependency->new($ancestors); + if ($e->is_resolvable) { + return $self->{incommandcolor}=2; + } else { + die $e; + } } # warn "color_cmd_tmps $depth $color " . $self->id; # sleep 1; diff --git a/Master/tlpkg/tlperl/lib/CPAN/Plugin.pm b/Master/tlpkg/tlperl/lib/CPAN/Plugin.pm index 646d86b2cc9..77ad19b7763 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Plugin.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Plugin.pm @@ -3,7 +3,7 @@ package CPAN::Plugin; use strict; use warnings; -our $VERSION = '0.95'; +our $VERSION = '0.96'; require CPAN; @@ -94,8 +94,8 @@ CPAN::Plugin - Base class for CPAN shell extensions =head1 SYNOPSIS - package My::Plugin; - use base 'CPAN::Plugin'; + package CPAN::Plugin::Flurb; + use parent 'CPAN::Plugin'; sub post_test { my ($self, $distribution_object) = @_; diff --git a/Master/tlpkg/tlperl/lib/CPAN/Shell.pm b/Master/tlpkg/tlperl/lib/CPAN/Shell.pm index 43e2fb9fa0b..ab2f07e2ceb 100644 --- a/Master/tlpkg/tlperl/lib/CPAN/Shell.pm +++ b/Master/tlpkg/tlperl/lib/CPAN/Shell.pm @@ -47,7 +47,7 @@ use vars qw( "CPAN/Tarzip.pm", "CPAN/Version.pm", ); -$VERSION = "5.5005"; +$VERSION = "5.5006"; # record the initial timestamp for reload. $reload = { map {$INC{$_} ? ($_,(stat $INC{$_})[9]) : ()} @relo }; @CPAN::Shell::ISA = qw(CPAN::Debug); @@ -174,8 +174,8 @@ Download, Test, Make, Install... test make test (implies make) readme display these README files install make install (implies test) perldoc display POD documentation -Upgrade - r WORDs or /REGEXP/ or NONE report updates for some/matching/all modules +Upgrade installed modules + r WORDs or /REGEXP/ or NONE report updates for some/matching/all upgrade WORDs or /REGEXP/ or NONE upgrade some/matching/all modules Pragmas @@ -517,14 +517,14 @@ sub hosts { $s->{dltime} += $dltime; } my $res; - for my $url (keys %{$S{ok}}) { + for my $url (sort keys %{$S{ok}}) { next if $S{ok}{$url}{dltime} == 0; # div by zero push @{$res->{ok}}, [@{$S{ok}{$url}}{qw(n dlsize dltime)}, $S{ok}{$url}{dlsize}/$S{ok}{$url}{dltime}, $url, ]; } - for my $url (keys %{$S{no}}) { + for my $url (sort keys %{$S{no}}) { push @{$res->{no}}, [$S{no}{$url}, $url, ]; @@ -637,6 +637,10 @@ sub _reload_this { } CPAN->debug(sprintf("reload file[%s] content[%s...]",$file,substr($content,0,128))) if $CPAN::DEBUG; + my $includefile; + if ($includefile = $INC{$f} and -e $includefile) { + $f = $includefile; + } delete $INC{$f}; local @INC = @inc; eval "require '$f'"; @@ -1107,7 +1111,7 @@ sub failed { sub find_failed { my($self,$only_id) = @_; my @failed; - DIST: for my $d ($CPAN::META->all_objects("CPAN::Distribution")) { + DIST: for my $d (sort { $a->id cmp $b->id } $CPAN::META->all_objects("CPAN::Distribution")) { my $failed = ""; NAY: for my $nosayer ( # order matters! "unwrapped", |