This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update ExtUtils-MakeMaker to CPAN version 7.38
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Fri, 13 Sep 2019 12:30:12 +0000 (13:30 +0100)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Fri, 13 Sep 2019 12:30:12 +0000 (13:30 +0100)
  [DELTA]

7.38 Wed 11 Sep 10:01:46 BST 2019

    No changes since v7.37_04

7.37_04 Thu 22 Aug 15:20:34 BST 2019

    Bug fixes:
    - Fix static linking on macOS

7.37_03 Sat Aug  3 12:37:29 BST 2019

    Enhancements:
    - Improved mandoc section detection

7.37_02 Thu Jun 27 11:10:39 BST 2019

    Test fixes:
    - Fix test failures in 02-xsdynamic.t on Android native builds
      Github issue #337

7.37_01 Fri Jun  7 11:21:39 BST 2019

    Test fixes:
    - [rt.cpan.org #129763] fixed test errors with latest Pod::Simple

35 files changed:
Porting/Maintainers.pl
cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm
cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm
cpan/ExtUtils-MakeMaker/t/build_man.t
cpan/ExtUtils-MakeMaker/t/pod2man.t

index 833476f..5025ccd 100755 (executable)
@@ -468,7 +468,7 @@ use File::Glob qw(:case);
     },
 
     'ExtUtils::MakeMaker' => {
-        'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.36.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.38.tar.gz',
         'FILES'        => q[cpan/ExtUtils-MakeMaker],
         'EXCLUDED'     => [
             qr{^t/lib/Test/},
index 52c47d2..60f68db 100644 (file)
@@ -7,7 +7,7 @@ use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
 @ISA       = qw(Exporter);
 @EXPORT    = qw(cp rm_f rm_rf mv cat eqtime mkpath touch test_f test_d chmod
                 dos2unix);
-$VERSION = '7.36';
+$VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 my $Is_VMS   = $^O eq 'VMS';
index 4e07ea5..7ac8679 100644 (file)
@@ -10,7 +10,7 @@ our @ISA = qw(Exporter);
 
 our @EXPORT  = qw(test_harness pod2man perllocal_install uninstall
                   warn_if_old_packlist test_s cp_nonempty);
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 my $Is_VMS = $^O eq 'VMS';
index 44c4c39..c908746 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::Liblist;
 
 use strict;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 use File::Spec;
index d656542..af4725d 100644 (file)
@@ -11,7 +11,7 @@ use 5.006;
 
 use strict;
 use warnings;
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 use ExtUtils::MakeMaker::Config;
index 340ff2d..f0add38 100644 (file)
@@ -3,7 +3,7 @@ package ExtUtils::MM;
 use strict;
 use ExtUtils::MakeMaker::Config;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 require ExtUtils::Liblist;
index c771b9b..dc88042 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_AIX;
 
 use strict;
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 use ExtUtils::MakeMaker::Config;
index 6d459bb..50539fd 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_Any;
 
 use strict;
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 use Carp;
@@ -1088,9 +1088,9 @@ manifypods : pure_all config $dependencies
 END
 
     my @man_cmds;
-    foreach my $section (qw(1 3)) {
-        my $pods = $self->{"MAN${section}PODS"};
-        my $p2m = sprintf <<'CMD', $section, "$]" > 5.008 ? " -u" : "";
+    foreach my $num (qw(1 3)) {
+        my $pods = $self->{"MAN${num}PODS"};
+        my $p2m = sprintf <<'CMD', "\$(MAN${num}SECTION)", "$]" > 5.008 ? " -u" : "";
        $(NOECHO) $(POD2MAN) --section=%s --perm_rw=$(PERM_RW)%s
 CMD
         push @man_cmds, $self->split_command($p2m, map {($_,$pods->{$_})} sort keys %$pods);
index 4b72d4d..c3ba21d 100644 (file)
@@ -26,7 +26,7 @@ require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
 
 our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 
index f1ca8f2..c9ac9d9 100644 (file)
@@ -9,7 +9,7 @@ require ExtUtils::MM_Unix;
 require ExtUtils::MM_Win32;
 our @ISA = qw( ExtUtils::MM_Unix );
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 
index 1cff572..00ad560 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MM_DOS;
 
 use strict;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Any;
index 3f01443..30c40e7 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
     our @ISA = qw( ExtUtils::MM_Unix );
 }
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 
index 0029b87..67e1026 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MM_MacOS;
 
 use strict;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 sub new {
index 038c22f..9e1c212 100644 (file)
@@ -22,7 +22,7 @@ use strict;
 use ExtUtils::MakeMaker::Config;
 use File::Basename;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Win32;
index e212cb8..c966318 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use ExtUtils::MakeMaker qw(neatvalue);
 use File::Spec;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Any;
index 813de3b..446fbf8 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_QNX;
 
 use strict;
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Unix;
index d531422..2edb150 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_UWIN;
 
 use strict;
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Unix;
index a0a2ee1..b6834e9 100644 (file)
@@ -14,7 +14,7 @@ use ExtUtils::MakeMaker qw($Verbose neatvalue _sprintf562);
 
 # If we make $VERSION an our variable parse_version() breaks
 use vars qw($VERSION);
-$VERSION = '7.36';
+$VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Any;
@@ -419,6 +419,7 @@ sub constants {
               INST_ARCHLIB INST_SCRIPT INST_BIN INST_LIB
               INST_MAN1DIR INST_MAN3DIR
               MAN1EXT      MAN3EXT
+              MAN1SECTION  MAN3SECTION
               INSTALLDIRS INSTALL_BASE DESTDIR PREFIX
               PERLPREFIX      SITEPREFIX      VENDORPREFIX
                    ),
@@ -968,6 +969,7 @@ sub dynamic_lib {
             my ($v, $d, $f) = File::Spec->splitpath($ext);
             my @d = File::Spec->splitdir($d);
             shift @d if $d[0] eq 'lib';
+            pop @d if $d[$#d] eq '';
             my $instdir = $self->catdir('$(INST_ARCHLIB)', 'auto', @d, $f);
 
             # Dynamic library names may need special handling.
@@ -1499,6 +1501,24 @@ sub init_MANPODS {
             $self->$init_method();
         }
     }
+
+    # logic similar to picking man${num}ext in perl's Configure script
+    foreach my $num (1,3) {
+        my $installdirs = uc $self->{INSTALLDIRS};
+        $installdirs = '' if $installdirs eq 'PERL';
+        my $mandir = $self->_expand_macros(
+            $self->{ "INSTALL${installdirs}MAN${num}DIR" } );
+        my $section = $num;
+
+        foreach ($num, "${num}p", "${num}pm", qw< l n o C L >, "L$num") {
+            if ( $mandir =~ /\b(?:man|cat)$_$/ ) {
+                $section = $_;
+                last;
+            }
+        }
+
+        $self->{"MAN${num}SECTION"} = $section;
+    }
 }
 
 
@@ -2227,6 +2247,7 @@ sub init_xs {
                my ($v, $d, $f) = File::Spec->splitpath($ext);
                my @d = File::Spec->splitdir($d);
                shift @d if defined $d[0] and $d[0] eq 'lib';
+               pop @d if $d[$#d] eq '';
                my $instdir = $self->catdir('$(INST_ARCHLIB)', 'auto', @d, $f);
                my $instfile = $self->catfile($instdir, $f);
                push @statics, "$instfile\$(LIB_EXT)";
@@ -2797,14 +2818,14 @@ sub _find_static_libs {
 
 Called by a utility method of makeaperl. Checks whether a given file
 is an XS library by seeing whether it defines any symbols starting
-with C<boot_>.
+with C<boot_> (with an optional leading underscore - needed on MacOS).
 
 =cut
 
 sub xs_static_lib_is_xs {
     my ($self, $libfile) = @_;
     my $devnull = File::Spec->devnull;
-    return `nm $libfile 2>$devnull` =~ /\bboot_/;
+    return `nm $libfile 2>$devnull` =~ /\b_?boot_/;
 }
 
 =item makefile (o)
index 24e5346..bed8751 100644 (file)
@@ -15,7 +15,7 @@ BEGIN {
 
 use File::Basename;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Any;
index 9f7c89a..7f568de 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_VOS;
 
 use strict;
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Unix;
index 253b2ca..8462cdb 100644 (file)
@@ -27,7 +27,7 @@ use ExtUtils::MakeMaker qw(neatvalue _sprintf562);
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
 our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 $ENV{EMXSHELL} = 'sh'; # to run `commands`
index 440c3a7..18a2544 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MM_Win95;
 
 use strict;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Win32;
index 73f9e10..4ec7414 100644 (file)
@@ -3,7 +3,7 @@ package ExtUtils::MY;
 use strict;
 require ExtUtils::MM;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 our @ISA = qw(ExtUtils::MM);
 
index 90790d4..b30baf8 100644 (file)
@@ -24,7 +24,7 @@ my %Recognized_Att_Keys;
 our %macro_fsentity; # whether a macro is a filesystem name
 our %macro_dep; # whether a macro is a dependency
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 # Emulate something resembling CVS $Revision$
index f437a65..47034c3 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MakeMaker::Config;
 
 use strict;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 use Config ();
index a5449c2..d2833b7 100644 (file)
@@ -1,6 +1,6 @@
 package ExtUtils::MakeMaker::FAQ;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 1;
index bf59fdc..e6419c6 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MakeMaker::Locale;
 
 use strict;
-our $VERSION = "7.36";
+our $VERSION = "7.38";
 $VERSION =~ tr/_//d;
 
 use base 'Exporter';
index 7c36252..c02220f 100644 (file)
@@ -1,6 +1,6 @@
 package ExtUtils::MakeMaker::Tutorial;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 
index b6d3550..a061cce 100644 (file)
@@ -15,7 +15,7 @@ use strict;
 
 use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv);
 
-$VERSION = '7.36';
+$VERSION = '7.38';
 $VERSION =~ tr/_//d;
 $CLASS = 'version';
 
index 951a4c2..ddea7c9 100644 (file)
@@ -10,7 +10,7 @@ use strict;
 
 use vars qw($VERSION $CLASS $STRICT $LAX);
 
-$VERSION = '7.36';
+$VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 #--------------------------------------------------------------------------#
index ea5eae5..ad22e46 100644 (file)
@@ -3,7 +3,7 @@ package ExtUtils::Mkbootstrap;
 # There's just too much Dynaloader incest here to turn on strict vars.
 use strict 'refs';
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 require Exporter;
index 6e0b063..f0352b2 100644 (file)
@@ -10,7 +10,7 @@ use Config;
 
 our @ISA = qw(Exporter);
 our @EXPORT = qw(&Mksymlists);
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 sub Mksymlists {
index 18a70c5..5f36ce6 100644 (file)
@@ -3,7 +3,7 @@ package ExtUtils::testlib;
 use strict;
 use warnings;
 
-our $VERSION = '7.36';
+our $VERSION = '7.38';
 $VERSION =~ tr/_//d;
 
 use Cwd;
index a88ccd2..278fd3d 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
 }
 
 use strict;
-use Test::More tests => 10;
+use Test::More tests => 46;
 
 use File::Spec;
 use File::Temp qw[tempdir];
@@ -81,3 +81,106 @@ ok((my $stdout = tie *STDOUT, 'TieOut'), 'tie stdout');
     );
     is_deeply $mm->{MAN3PODS}, { "Foo.pm" => "Foo.1" }, 'override man3pod';
 }
+
+unlink $README;
+
+# Check that we find the manage section from the directory
+{
+    local $Config{installman1dir}       = '';
+    local $Config{installman3dir}       = '';
+    local $Config{installsiteman1dir}   = '';
+    local $Config{installsiteman3dir}   = '';
+    local $Config{installvendorman1dir} = '';
+    local $Config{installvendorman3dir} = '';
+    local $Config{usevendorprefix}      = '';
+    local $Config{vendorprefixexp}      = '';
+
+    my $INSTALLDIRS = 'site';
+
+    my $sections_ok = sub {
+        my ( $man1section, $man3section, $m ) = @_;
+        local $Test::Builder::Level = $Test::Builder::Level + 1;
+
+        my $stdout = tie *STDOUT, 'TieOut' or die;
+        my $mm     = WriteMakefile(
+            NAME         => 'Big::Dummy',
+            VERSION_FROM => 'lib/Big/Dummy.pm',
+            INSTALLDIRS  => $INSTALLDIRS,
+        );
+
+        is( $mm->{MAN1SECTION}, $man1section,
+            "$m man1section is $man1section" );
+        is( $mm->{MAN3SECTION}, $man3section,
+            "$m man3section is $man3section" );
+    };
+
+    # Correctly detect known man sections
+    foreach my $s ( '{num}', '{num}p', '{num}pm', qw< l n o C L >, "L{num}", )
+    {
+        ( my $man1section = $s ) =~ s/\{num\}/1/;
+        ( my $man3section = $s ) =~ s/\{num\}/3/;
+
+        $Config{installman1dir}
+            = File::Spec->catdir( 'foo', "man$man1section" );
+        $Config{installman3dir}
+            = File::Spec->catdir( 'foo', "man$man3section" );
+
+        $sections_ok->( $man1section, $man3section, "From main [$s]" );
+    }
+
+    # Ignore unknown man sections
+    foreach my $s ( '', qw< 2 2p 33 >, "C{num}" ) {
+        ( my $man1section = $s ) =~ s/\{num\}/1/;
+        ( my $man3section = $s ) =~ s/\{num\}/3/;
+
+        $Config{installman1dir}
+            = File::Spec->catdir( 'foo', "man$man1section" );
+        $Config{installman3dir}
+            = File::Spec->catdir( 'foo', "man$man3section" );
+
+        $sections_ok->( 1, 3, "Ignore unrecognized [$s]" );
+    }
+
+    # Look in the right installman?dir based on INSTALLDIRS
+    {
+        $Config{installman1dir}     = File::Spec->catdir( 'foo', 'cat1p' );
+        $Config{installman3dir}     = File::Spec->catdir( 'foo', 'cat3p' );
+        $Config{installsiteman1dir} = File::Spec->catdir( 'foo', 'catL' );
+        $Config{installsiteman3dir} = File::Spec->catdir( 'foo', 'catL3' );
+
+        $sections_ok->( 'L', 'L3', "From site" );
+
+        my $installwas = $INSTALLDIRS;
+        $INSTALLDIRS = 'perl';
+        $sections_ok->( '1p', '3p', "From main" );
+        $INSTALLDIRS = $installwas;
+
+    }
+
+    # Set MAN?SECTION in Makefile
+    {
+        $Config{installman1dir} = File::Spec->catdir( 'foo', 'man1pm' );
+        $Config{installman3dir} = File::Spec->catdir( 'foo', 'man3pm' );
+        $Config{installsiteman1dir} = '';
+        $Config{installsiteman3dir} = '';
+
+        my $stdout = tie *STDOUT, 'TieOut' or die;
+        my $mm     = WriteMakefile(
+            NAME         => 'Big::Dummy',
+            VERSION_FROM => 'lib/Big/Dummy.pm',
+            MAN1PODS     => { foo => 'foo.1' },
+            INSTALLDIRS  => $INSTALLDIRS,
+        );
+
+        my $makefile = slurp('Makefile');
+
+        like $makefile, qr/\QMAN1SECTION = 1pm\E/xms, "Set MAN1SECTION";
+        like $makefile, qr/\QMAN3SECTION = 3pm\E/xms, "Set MAN3SECTION";
+
+        like $makefile, qr/\Q$(POD2MAN) --section=$(MAN1SECTION) \E/,
+            "Set POD2MAN section to \$(MAN1SECTION)";
+        like $makefile, qr/\Q$(POD2MAN) --section=$(MAN3SECTION) \E/,
+            "Set POD2MAN section to \$(MAN3SECTION)";
+    }
+}
+
index d206e0b..e3bc00d 100644 (file)
@@ -19,7 +19,7 @@ use Test::More tests => 3;
 
     pod2man("--perm_rw");
 
-    like $warnings, qr/^Option perm_rw requires an argument/;
+    like $warnings, qr/Option perm_rw requires an argument/;
 };