summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/CPAN
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/CPAN')
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Bundle.pm14
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Distribution.pm223
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Exception/RecursiveDependency.pm40
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/FTP.pm16
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/FirstTime.pm18
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/HandleConfig.pm13
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Index.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta.pm28
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/Converter.pm58
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/Feature.pm10
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/History.pm10
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_0.pod50
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_1.pod50
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_2.pod104
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_3.pod122
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/History/Meta_1_4.pod149
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/Merge.pm68
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/Prereqs.pm73
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/Spec.pm17
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Meta/Validator.pm20
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Mirrors.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Module.pm9
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Plugin.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Shell.pm16
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",