Update CPAN to CPAN version 2.22
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Sun, 23 Dec 2018 14:07:55 +0000 (14:07 +0000)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Sun, 23 Dec 2018 14:07:55 +0000 (14:07 +0000)
  [DELTA]

2018-12-23  k  <andk@cpan.org>

  * release 2.22

  * one week after the TRIAL release cpantesters have produced 306
  pass and 0 fail reports on 157 different configurations

  * no functional change over 2.22-TRIAL; only one change in the
  distroprefs directory which is not used per default and a minor
  change in the Makefile.PL to ensure that the signature for the
  tarball is produced with the current version of Module::Signature.

2018-12-16  k  <andk@cpan.org>

  * release 2.22-TRIAL

  * fix: erroneous propagation from build_requires to requires
  (Andreas Koenig)

  * fix: ensure that the post install hook is always called (Andreas
  Koenig)

  * fix: the single blank line output that initializing CPAN does
  when it's not having to report anything (Achim Gratz)

  * doc fix: Correct spelling of Perl 5 command-line switch (James E
  Keenan)

  * doc fix: clarify use of pop/splice in the manpage of the
  Specfile plugin (Andreas Koenig)

  * a tiny amount of new and updated distroprefs files

Porting/Maintainers.pl
cpan/CPAN/lib/App/Cpan.pm
cpan/CPAN/lib/CPAN.pm
cpan/CPAN/lib/CPAN/Distribution.pm
cpan/CPAN/lib/CPAN/Plugin/Specfile.pm
cpan/CPAN/scripts/cpan

index 5f594cb..87e7151 100755 (executable)
@@ -248,7 +248,7 @@ use File::Glob qw(:case);
     },
 
     'CPAN' => {
-        'DISTRIBUTION' => 'ANDK/CPAN-2.21-TRIAL.tar.gz',
+        'DISTRIBUTION' => 'ANDK/CPAN-2.22.tar.gz',
         'FILES'        => q[cpan/CPAN],
         'EXCLUDED'     => [
             qr{^distroprefs/},
index ddf492b..80c3efe 100644 (file)
@@ -6,7 +6,7 @@ use vars qw($VERSION);
 
 use if $] < 5.008 => 'IO::Scalar';
 
-$VERSION = '1.671';
+$VERSION = '1.672';
 
 =head1 NAME
 
@@ -263,7 +263,7 @@ to C<1> unless it already has a value (even if that value is false).
 
 =item CPAN_OPTS
 
-As with C<PERL5OPTS>, a string of additional C<cpan(1)> options to
+As with C<PERL5OPT>, a string of additional C<cpan(1)> options to
 add to those you specify on the command line.
 
 =item CPANSCRIPT_LOGLEVEL
index dd86f26..0c9b9f5 100644 (file)
@@ -2,7 +2,7 @@
 # vim: ts=4 sts=4 sw=4:
 use strict;
 package CPAN;
-$CPAN::VERSION = '2.21';
+$CPAN::VERSION = '2.22';
 $CPAN::VERSION =~ s/_//;
 
 # we need to run chdir all over and we would get at wrong libraries
@@ -90,11 +90,13 @@ if ($ENV{PERL5_CPAN_IS_RUNNING} && $$ != $ENV{PERL5_CPAN_IS_RUNNING}) {
         warn $w;
     }
     local $| = 1;
+    my $have_been_sleeping = 0;
     while ($sleep > 0) {
         printf "\r#%5d", --$sleep;
         sleep 1;
+       ++$have_been_sleeping;
     }
-    print "\n";
+    print "\n" if $have_been_sleeping;
 }
 $ENV{PERL5_CPAN_IS_RUNNING}=$$;
 $ENV{PERL5_CPANPLUS_IS_RUNNING}=$$; # https://rt.cpan.org/Ticket/Display.html?id=23735
index 36f4951..717c9aa 100644 (file)
@@ -8,7 +8,7 @@ use CPAN::InfoObj;
 use File::Path ();
 @CPAN::Distribution::ISA = qw(CPAN::InfoObj);
 use vars qw($VERSION);
-$VERSION = "2.21";
+$VERSION = "2.22";
 
 # no prepare, because prepare is not a command on the shell command line
 # TODO: clear instance cache on reload
@@ -29,7 +29,7 @@ for my $method (qw(get make test install)) {
                         $instance{$plugin}->$hookname($self);
                     }
                 } else {
-                    $CPAN::Frontend->mydie("Plugin '$plugin_proper' not found");
+                    $CPAN::Frontend->mydie("Plugin '$plugin_proper' not found for hook '$hookname'");
                 }
             }
         };
@@ -2905,10 +2905,13 @@ sub unsat_prereq {
                 next NEED;
             }
 
-            my $sufficient_file = exists $prereq_pm->{requires}{$need_module}
-                ? $inst_file : $available_file;
-            # if they have not specified a version, we accept any installed one
-            if ( $sufficient_file
+            # if they have not specified a version, we accept any
+            # installed one; in that case inst_file is always
+            # sufficient and available_file is sufficient on
+            # both build_requires and configure_requires
+            my $sufficient = $inst_file ||
+                ( exists $prereq_pm->{requires}{$need_module} ? 0 : $available_file );
+            if ( $sufficient
                 and ( # a few quick short circuits
                      not defined $need_version
                      or $need_version eq '0'    # "==" would trigger warning when not numeric
@@ -2954,8 +2957,9 @@ sub unsat_prereq {
                 }
             } elsif (
                 $self->{reqtype} =~ /^(r|c)$/
-                && (exists $prereq_pm->{requires}{$need_module} || exists $prereq_pm->{opt_requires} )
-                && $nmo 
+                && (   exists $prereq_pm->{requires}{$need_module}
+                    || exists $prereq_pm->{opt_requires}{$need_module} )
+                && $nmo
                 && !$inst_file
             ) {
                 # continue installing as a prereq; this may be a
@@ -2964,7 +2968,8 @@ sub unsat_prereq {
                 # wants it as a requires
                 my $need_distro = $nmo->distribution;
                 if ($need_distro->{install} && $need_distro->{install}->failed && $need_distro->{install}->text =~ /is only/) {
-                    CPAN->debug("promotion from build_requires to requires") if $CPAN::DEBUG;
+                    my $id = $need_distro->pretty_id;
+                    $CPAN::Frontend->myprint("Promoting $id from build_requires to requires due $need_module\n");
                     delete $need_distro->{install}; # promote to another installation attempt
                     $need_distro->{reqtype} = "r";
                     $need_distro->install;
@@ -3556,7 +3561,7 @@ sub test {
     local $ENV{PERL_MM_USE_DEFAULT} = 1 if $CPAN::Config->{use_prompt_default};
     local $ENV{NONINTERACTIVE_TESTING} = 1 if $CPAN::Config->{use_prompt_default};
 
-    $CPAN::Frontend->myprint("Running $make test\n");
+    $CPAN::Frontend->myprint(sprintf "Running %s test for %s\n", $make, $self->pretty_id);
 
     my $builddir = $self->dir or
         $CPAN::Frontend->mydie("PANIC: Cannot determine build directory\n");
@@ -3773,7 +3778,7 @@ sub _prefs_with_expect {
 sub clean {
     my($self) = @_;
     my $make = $self->{modulebuild} ? "Build" : "make";
-    $CPAN::Frontend->myprint("Running $make clean\n");
+    $CPAN::Frontend->myprint(sprintf "Running %s clean for %s\n", $make, $self->pretty_id);
     unless (exists $self->{archived}) {
         $CPAN::Frontend->mywarn("Distribution seems to have never been unzipped".
                                 "/untarred, nothing done\n");
@@ -3911,7 +3916,7 @@ sub shortcut_install {
             $CPAN::META->is_installed($self->{build_dir});
             return $self->success("Already done");
         } elsif ($text =~ /is only/) {
-            # e.g. 'is only build_requires'
+            # e.g. 'is only build_requires': may be overruled later
             return $self->goodbye($text);
         } else {
             # comment in Todo on 2006-02-11; maybe retry?
@@ -3935,19 +3940,25 @@ sub install {
 
     $self->debug("checking goto id[$self->{ID}]") if $CPAN::DEBUG;
     if (my $goto = $self->prefs->{goto}) {
-        return $self->goto($goto);
+        $self->goto($goto);
+        $self->post_install();
+        return;
     }
 
-    $self->test
-        or return;
+    unless ($self->test) {
+        $self->post_install();
+        return;
+    }
 
     if ( defined( my $sc = $self->shortcut_install ) ) {
+        $self->post_install();
         return $sc;
     }
 
     if ($CPAN::Signal) {
-      delete $self->{force_update};
-      return;
+        delete $self->{force_update};
+        $self->post_install();
+        return;
     }
 
     my $builddir = $self->dir or
@@ -3955,6 +3966,7 @@ sub install {
 
     unless (chdir $builddir) {
         $CPAN::Frontend->mywarn("Couldn't chdir to '$builddir': $!");
+        $self->post_install();
         return;
     }
 
@@ -3962,10 +3974,11 @@ sub install {
         if $CPAN::DEBUG;
 
     my $make = $self->{modulebuild} ? "Build" : "make";
-    $CPAN::Frontend->myprint("Running $make install\n");
+    $CPAN::Frontend->myprint(sprintf "Running %s install for %s\n", $make, $self->pretty_id);
 
     if ($^O eq 'MacOS') {
         Mac::BuildTools::make_install($self);
+        $self->post_install();
         return;
     }
 
@@ -4017,7 +4030,9 @@ sub install {
         my $is_only = "is only 'build_requires'";
         $self->{install} = CPAN::Distrostatus->new("NO -- $is_only");
         delete $self->{force_update};
-        return $self->goodbye("Not installing because $is_only");
+        $self->goodbye("Not installing because $is_only");
+        $self->post_install();
+        return;
     }
     local $ENV{PERL5LIB} = defined($ENV{PERL5LIB})
                            ? $ENV{PERL5LIB}
@@ -4036,6 +4051,7 @@ sub install {
         $self->{install} = CPAN::Distrostatus->new("NO");
         $CPAN::Frontend->mywarn("  $system -- NOT OK\n");
         delete $self->{force_update};
+        $self->post_install();
         return;
     }
     my($makeout) = "";
index f63d322..425c4bd 100644 (file)
@@ -14,7 +14,12 @@ CPAN::Plugin::Specfile - Proof of concept implementation of a trivial CPAN::Plug
   test Acme::Meta
 
   # disable
+  # if it is the last in plugin_list:
   o conf plugin_list pop
+  # otherwise, determine the index to splice:
+  o conf plugin_list
+  # and then use splice, e.g. to splice position 3:
+  o conf plugin_list splice 3 1
 
 =head1 DESCRIPTION
 
@@ -48,7 +53,7 @@ Andreas Koenig <andk@cpan.org>, Branislav Zahradnik <barney@cpan.org>
 
 package CPAN::Plugin::Specfile;
 
-our $VERSION = '0.01';
+our $VERSION = '0.02';
 
 use File::Path;
 use File::Spec;
index cceab30..0041b8a 100644 (file)
@@ -265,7 +265,7 @@ to C<1> unless it already has a value (even if that value is false).
 
 =item CPAN_OPTS
 
-As with C<PERL5OPTS>, a string of additional C<cpan(1)> options to
+As with C<PERL5OPT>, a string of additional C<cpan(1)> options to
 add to those you specify on the command line.
 
 =item CPANSCRIPT_LOGLEVEL