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.36
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Sun, 2 Jun 2019 08:41:35 +0000 (09:41 +0100)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Sun, 2 Jun 2019 08:41:35 +0000 (09:41 +0100)
  [DELTA]

7.36  Sun Apr 28 16:28:20 BST 2019

    No changes since v7.35_14

    This release was made possible by the kind
    sponsors of the 2019 Perl Toolchain Summit
    held in Marlow, UK:

    Booking.com, cPanel, MaxMind, FastMail, ZipRecruiter,
    Cogendo, Elastic, OpenCage Data, Bluehost, Perl Services,
    Zoopla, Archer Education, OpusVL, Oetiker+Partner, YEF

7.35_14 Sun Apr 28 14:12:22 BST 2019

    Win32 fixes:
    - Add ExtUtils::PL2Bat path to pl2bat when PERL_CORE

7.35_13 Sun Apr 28 11:57:57 BST 2019

    Bug fixes:
    - Suppress warnings from EUMM::Locale code page workaround

7.35_12 Sat Apr 27 22:37:26 BST 2019

    Enhancements:
    - add AppVeyor CI configuration
      see <https://github.com/rivy/CI.AppVeyor.helpers-perl> for more information

    Bug fixes:
    - Resolve RTs 127028 && 127316 on Mojave system perl
    - Honour man page disablement under INSTALL_BASE
    - fix `dmake` warning by removing dmake-superfluous ".NOTPARALLEL" target
    - suppress inherited AUTOLOAD warning for 'Win32::ConsoleCP()'
    - fix perl image (aka, executable) quoting for `dmake` builds
    - skip broken test for Win32 strawberry perl v5.10 (and some earlier versions)
    - add workaround to ExtUtils::MakeMaker::Locale for code pages 'cp65000' and 'cp65001'

7.35_11 Thu Apr 25 11:53:59 BST 2019

    Bug fixes:
    - Fix RT#128004 gcc AIX builds broken

7.35_10 Wed Feb 20 10:03:50 GMT 2019

    Test fixes:
    - Skip "merged /usr" tests on MSWin32

7.35_09 Mon Feb 18 10:05:42 GMT 2019

    Bug fixes:
    - stringify version before comparing

    Test fixes:
    - Changed wording of skip message for xsstatic

    QA fixes:
    - travis is deprecating container-based environments

7.35_08 Thu Dec  6 10:22:02 GMT 2018

    Enhancements:
    - propagate all variables used by Buildroot to subdirs

7.35_07 Fri Nov 23 11:34:27 GMT 2018

    Bug fixes:
    - Avoid mangling /bin non-perl shebangs on merged-/usr systems

    VMS fixes:
    - Handle PERL_ARCHLIBDEP and DESTINSTALL... macros on VMS.
    - Remove trailing space from multi-in.PL in PL_FILES.t
    - Skip "merged /usr" tests on VMS.

7.35_06 Thu Jul 19 20:30:55 BST 2018

    Enhancements:
    - Override shebang with PERL_MM_SHEBANG=relocatable env var

    Bug fixes:
    - Refactored Liblist::Kid tests, enabling UNIX testing

7.35_05 Tue Jul 10 09:44:25 BST 2018

    Win32 fixes:
    -  add Visual C parallel building support

7.35_04 Mon Jul  9 10:21:59 BST 2018

    Bug fixes:
    - Fix manification on MSWin32

    Doc fixes:
    - Mention manifypods target in FAQ for
      man creation on non-un*x OS

7.35_03 Fri Apr 27 14:28:21 BST 2018

    Enhancements:
    - Allow specifying extra inputs for PL_FILES scripts

7.35_02 Tue Apr 24 11:38:39 BST 2018

    Core fixes:
    - Win32 fixes for gmake 4.2.1 in quoting literals

7.35_01 Thu Apr 19 13:17:35 BST 2018

    Core fixes:
    - use tr instead of eval on $VERSION
    - Fix PUREPERL_ONLY warnings

43 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/03-xsstatic.t
cpan/ExtUtils-MakeMaker/t/MM_Cygwin.t
cpan/ExtUtils-MakeMaker/t/PL_FILES.t
cpan/ExtUtils-MakeMaker/t/basic.t
cpan/ExtUtils-MakeMaker/t/fixin.t
cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm
cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Utils.pm
cpan/ExtUtils-MakeMaker/t/parse_version.t
cpan/ExtUtils-MakeMaker/t/unicode.t
cpan/ExtUtils-MakeMaker/t/vstrings.t

index 677b693..ef5bc07 100755 (executable)
@@ -464,7 +464,7 @@ use File::Glob qw(:case);
     },
 
     'ExtUtils::MakeMaker' => {
-        'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.34.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.36.tar.gz',
         'FILES'        => q[cpan/ExtUtils-MakeMaker],
         'EXCLUDED'     => [
             qr{^t/lib/Test/},
index 4924c81..52c47d2 100644 (file)
@@ -7,8 +7,8 @@ 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.34';
-$VERSION = eval $VERSION;
+$VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 my $Is_VMS   = $^O eq 'VMS';
 my $Is_VMS_mode = $Is_VMS;
index 0323ed4..4e07ea5 100644 (file)
@@ -10,8 +10,8 @@ our @ISA = qw(Exporter);
 
 our @EXPORT  = qw(test_harness pod2man perllocal_install uninstall
                   warn_if_old_packlist test_s cp_nonempty);
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 my $Is_VMS = $^O eq 'VMS';
 
index 700cb73..44c4c39 100644 (file)
@@ -2,8 +2,8 @@ package ExtUtils::Liblist;
 
 use strict;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 use File::Spec;
 require ExtUtils::Liblist::Kid;
index a6da855..d656542 100644 (file)
@@ -11,8 +11,8 @@ use 5.006;
 
 use strict;
 use warnings;
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 use ExtUtils::MakeMaker::Config;
 use Cwd 'cwd';
@@ -49,8 +49,10 @@ sub _unix_os2_ext {
     # $potential_libs
     # this is a rewrite of Andy Dougherty's extliblist in perl
 
+    require Text::ParseWords;
+
     my ( @searchpath );    # from "-L/path" entries in $potential_libs
-    my ( @libpath ) = split " ", $Config{'libpth'} || '';
+    my ( @libpath ) = Text::ParseWords::quotewords( '\s+', 0, $Config{'libpth'} || '' );
     my ( @ldloadlibs, @bsloadlibs, @extralibs, @ld_run_path, %ld_run_path_seen );
     my ( @libs,       %libs_seen );
     my ( $fullname,   @fullname );
@@ -63,7 +65,7 @@ sub _unix_os2_ext {
         $potential_libs =~ s/(^|\s)(-F)\s*(\S+)/$1-Wl,$2 -Wl,$3/g;
     }
 
-    foreach my $thislib ( split ' ', $potential_libs ) {
+    foreach my $thislib ( Text::ParseWords::quotewords( '\s+', 0, $potential_libs) ) {
         my ( $custom_name ) = '';
 
         # Handle possible linker path arguments.
@@ -88,6 +90,7 @@ sub _unix_os2_ext {
                 $thislib = $self->catdir( $pwd, $thislib );
             }
             push( @searchpath, $thislib );
+            $thislib = qq{"$thislib"} if $thislib =~ / /; # protect spaces if there
             push( @extralibs,  "$ptype$thislib" );
             push( @ldloadlibs, "$rtype$thislib" );
             next;
index b2c360b..340ff2d 100644 (file)
@@ -3,8 +3,8 @@ package ExtUtils::MM;
 use strict;
 use ExtUtils::MakeMaker::Config;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 require ExtUtils::Liblist;
 require ExtUtils::MakeMaker;
index b114ee4..c771b9b 100644 (file)
@@ -1,8 +1,8 @@
 package ExtUtils::MM_AIX;
 
 use strict;
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 use ExtUtils::MakeMaker::Config;
 require ExtUtils::MM_Unix;
@@ -50,7 +50,9 @@ sub xs_dlsyms_ext {
 
 sub xs_dlsyms_arg {
     my($self, $file) = @_;
-    return qq{-bE:${file}};
+    my $arg = qq{-bE:${file}};
+    $arg = '-Wl,'.$arg if $Config{lddlflags} =~ /-Wl,-bE:/;
+    return $arg;
 }
 
 sub init_others {
index 1a3893c..6d459bb 100644 (file)
@@ -1,8 +1,8 @@
 package ExtUtils::MM_Any;
 
 use strict;
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 use Carp;
 use File::Spec;
@@ -195,7 +195,7 @@ sub can_redirect_error {
 
     my $is_dmake = $self->is_make_type('dmake');
 
-Returns true if C<<$self->make>> is the given type; possibilities are:
+Returns true if C<< $self->make >> is the given type; possibilities are:
 
   gmake    GNU make
   dmake
@@ -1090,7 +1090,7 @@ END
     my @man_cmds;
     foreach my $section (qw(1 3)) {
         my $pods = $self->{"MAN${section}PODS"};
-        my $p2m = sprintf <<'CMD', $section, $] > 5.008 ? " -u" : "";
+        my $p2m = sprintf <<'CMD', $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);
@@ -2214,7 +2214,9 @@ sub init_INSTALL_from_INSTALL_BASE {
             my $key = "INSTALL".$dir.$uc_thing;
 
             $install{$key} ||=
-              $self->catdir('$(INSTALL_BASE)', @{$map{$thing}});
+                ($thing =~ /^man.dir$/ and not $Config{lc $key})
+                ? 'none'
+                : $self->catdir('$(INSTALL_BASE)', @{$map{$thing}});
         }
     }
 
index 6fb7911..4b72d4d 100644 (file)
@@ -26,8 +26,8 @@ require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
 
 our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 
 =item os_flavor
@@ -58,6 +58,8 @@ sub init_linker {
 
 =back
 
+=cut
+
 1;
 __END__
 
index 934e65f..f1ca8f2 100644 (file)
@@ -9,8 +9,8 @@ require ExtUtils::MM_Unix;
 require ExtUtils::MM_Win32;
 our @ISA = qw( ExtUtils::MM_Unix );
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 
 =head1 NAME
@@ -86,7 +86,7 @@ sub init_linker {
 
     if ($Config{useshrplib} eq 'true') {
         my $libperl = '$(PERL_INC)' .'/'. "$Config{libperl}";
-        if( $] >= 5.006002 ) {
+        if( "$]" >= 5.006002 ) {
             $libperl =~ s/(dll\.)?a$/dll.a/;
         }
         $self->{PERL_ARCHIVE} = $libperl;
index 33a8b19..1cff572 100644 (file)
@@ -2,8 +2,8 @@ package ExtUtils::MM_DOS;
 
 use strict;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
index f5359dc..3f01443 100644 (file)
@@ -7,8 +7,8 @@ BEGIN {
     our @ISA = qw( ExtUtils::MM_Unix );
 }
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 
 =head1 NAME
index 5646ae3..0029b87 100644 (file)
@@ -2,8 +2,8 @@ package ExtUtils::MM_MacOS;
 
 use strict;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 sub new {
     die 'MacOS Classic (MacPerl) is no longer supported by MakeMaker';
index c88c4fa..038c22f 100644 (file)
@@ -22,8 +22,8 @@ use strict;
 use ExtUtils::MakeMaker::Config;
 use File::Basename;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Win32;
 our @ISA = qw(ExtUtils::MM_Win32);
@@ -192,7 +192,7 @@ MAKE_FRAG
     }
     # Reconstruct the X.Y.Z version.
     my $version = join '.', map { sprintf "%d", $_ }
-                              $] =~ /(\d)\.(\d{3})(\d{2})/;
+                              "$]" =~ /(\d)\.(\d{3})(\d{2})/;
     push @m, sprintf <<'EOF', $from, $version, $to, $exportlist;
        $(LD) $(LDFLAGS) %s -desc "Perl %s Extension ($(BASEEXT))  XS_VERSION: $(XS_VERSION)" -nlmversion $(NLM_VERSION) -o %s $(MYEXTLIB) $(PERL_INC)\Main.lib -commandfile %s
        $(CHMOD) 755 $@
index dfa6dca..e212cb8 100644 (file)
@@ -5,8 +5,8 @@ use strict;
 use ExtUtils::MakeMaker qw(neatvalue);
 use File::Spec;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
index 362d7d9..813de3b 100644 (file)
@@ -1,8 +1,8 @@
 package ExtUtils::MM_QNX;
 
 use strict;
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
index cc95c41..d531422 100644 (file)
@@ -1,8 +1,8 @@
 package ExtUtils::MM_UWIN;
 
 use strict;
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
index fe53be1..a0a2ee1 100644 (file)
@@ -14,8 +14,8 @@ use ExtUtils::MakeMaker qw($Verbose neatvalue _sprintf562);
 
 # If we make $VERSION an our variable parse_version() breaks
 use vars qw($VERSION);
-$VERSION = '7.34';
-$VERSION = eval $VERSION;  ## no critic [BuiltinFunctions::ProhibitStringyEval]
+$VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Any;
 our @ISA = qw(ExtUtils::MM_Any);
@@ -37,6 +37,10 @@ BEGIN {
                    grep( $^O eq $_, qw(bsdos interix dragonfly) )
                   );
     $Is{Android} = $^O =~ /android/;
+    if ( $^O eq 'darwin' && $^X eq '/usr/bin/perl' ) {
+      my @osvers = split /\./, $Config{osvers};
+      $Is{ApplCor} = ( $osvers[0] >= 18 );
+    }
 }
 
 BEGIN {
@@ -54,7 +58,7 @@ ExtUtils::MM_Unix - methods used by ExtUtils::MakeMaker
 
 =head1 SYNOPSIS
 
-C<require ExtUtils::MM_Unix;>
+  require ExtUtils::MM_Unix;
 
 =head1 DESCRIPTION
 
@@ -132,6 +136,10 @@ sub c_o {
     my $command = '$(CCCMD)';
     my $flags   = '$(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE)';
 
+    if ( $Is{ApplCor} ) {
+        $flags =~ s/"-I(\$\(PERL_INC\))"/-iwithsysroot "$1"/;
+    }
+
     if (my $cpp = $Config{cpprun}) {
         my $cpp_cmd = $self->const_cccmd;
         $cpp_cmd =~ s/^CCCMD\s*=\s*\$\(CC\)/$cpp/;
@@ -151,8 +159,11 @@ EOF
     my @exts = qw(c cpp cxx cc);
     push @exts, 'C' if !$Is{OS2} and !$Is{Win32} and !$Is{Dos}; #Case-specific
     $m_o = $self->{XSMULTI} ? $self->xs_obj_opt('$*$(OBJ_EXT)') : '';
+    my $dbgout = $self->dbgoutflag;
     for my $ext (@exts) {
-       push @m, "\n.$ext\$(OBJ_EXT) :\n\t$command $flags \$*.$ext" . ( $m_o ? " $m_o" : '' ) . "\n";
+       push @m, "\n.$ext\$(OBJ_EXT) :\n\t$command $flags "
+            .($dbgout?"$dbgout ":'')
+            ."\$*.$ext" . ( $m_o ? " $m_o" : '' ) . "\n";
     }
     return join "", @m;
 }
@@ -170,6 +181,16 @@ sub xs_obj_opt {
     "-o $output_file";
 }
 
+=item dbgoutflag
+
+Returns a CC flag that tells the CC to emit a separate debugging symbol file
+when compiling an object file.
+
+=cut
+
+sub dbgoutflag {
+    '';
+}
 
 =item cflags (o)
 
@@ -461,12 +482,20 @@ MAN1PODS = ".$self->wraplist(sort keys %{$self->{MAN1PODS}})."
 MAN3PODS = ".$self->wraplist(sort keys %{$self->{MAN3PODS}})."
 ";
 
+    push @m, q{
+SDKROOT := $(shell xcrun --show-sdk-path)
+PERL_SYSROOT = $(SDKROOT)
+} if $Is{ApplCor} && $self->{'PERL_INC'} =~ m!^/System/Library/Perl/!;
 
     push @m, q{
 # Where is the Config information that we are using/depend on
-CONFIGDEP = $(PERL_ARCHLIBDEP)$(DFSEP)Config.pm $(PERL_INCDEP)$(DFSEP)config.h
-} if -e $self->catfile( $self->{PERL_INC}, 'config.h' );
+CONFIGDEP = $(PERL_ARCHLIBDEP)$(DFSEP)Config.pm $(PERL_SYSROOT)$(PERL_INCDEP)$(DFSEP)config.h
+} if $Is{ApplCor};
 
+    push @m, q{
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIBDEP)$(DFSEP)Config.pm $(PERL_INCDEP)$(DFSEP)config.h
+} if -e $self->catfile( $self->{PERL_INC}, 'config.h' ) && !$Is{ApplCor};
 
     push @m, qq{
 # Where to build things
@@ -1090,7 +1119,6 @@ Finds the executables PERL and FULLPERL
 
 sub find_perl {
     my($self, $ver, $names, $dirs, $trace) = @_;
-
     if ($trace >= 2){
         print "Looking for perl $ver by these names:
 @$names
@@ -1243,12 +1271,15 @@ sub _fixin_replace_shebang {
     my ( $self, $file, $line ) = @_;
 
     # Now figure out the interpreter name.
-    my ( $cmd, $arg ) = split ' ', $line, 2;
-    $cmd =~ s!^.*/!!;
+    my ( $origcmd, $arg ) = split ' ', $line, 2;
+    (my $cmd = $origcmd) =~ s!^.*/!!;
 
     # Now look (in reverse) for interpreter in absolute PATH (unless perl).
     my $interpreter;
-    if ( $cmd =~ m{^perl(?:\z|[^a-z])} ) {
+    if ( defined $ENV{PERL_MM_SHEBANG} && $ENV{PERL_MM_SHEBANG} eq "relocatable" ) {
+        $interpreter = "/usr/bin/env perl";
+    }
+    elsif ( $cmd =~ m{^perl(?:\z|[^a-z])} ) {
         if ( $Config{startperl} =~ m,^\#!.*/perl, ) {
             $interpreter = $Config{startperl};
             $interpreter =~ s,^\#!,,;
@@ -1270,6 +1301,24 @@ sub _fixin_replace_shebang {
                 $interpreter = $maybefile;
             }
         }
+
+        # If the shebang is absolute and exists in PATH, but was not
+        # the first one found, leave it alone if it's actually the
+        # same file as first one.  This avoids packages built on
+        # merged-/usr systems with /usr/bin before /bin in the path
+        # breaking when installed on systems without merged /usr
+        if ($origcmd ne $interpreter and $self->file_name_is_absolute($origcmd)) {
+            my $origdir = dirname($origcmd);
+            if ($self->maybe_command($origcmd) && grep { $_ eq $origdir } @absdirs) {
+                my ($odev, $oino) = stat $origcmd;
+                my ($idev, $iino) = stat $interpreter;
+                if ($odev == $idev && $oino == $iino) {
+                    warn "$origcmd is the same as $interpreter, leaving alone"
+                        if $Verbose;
+                    $interpreter = $origcmd;
+                }
+            }
+        }
     }
 
     # Figure out how to invoke interpreter on this machine.
@@ -2043,6 +2092,11 @@ sub init_PERL {
     # already escaped spaces.
     $self->{FULLPERL} =~ tr/"//d if $Is{VMS};
 
+    # `dmake` can fail for image (aka, executable) names which start with double-quotes
+    # * push quote inward by at least one character (or the drive prefix, if present)
+    # * including any initial directory separator preserves the `file_name_is_absolute` property
+    $self->{FULLPERL} =~ s/^"(\S(:\\|:)?)/$1"/ if $self->is_make_type('dmake');
+
     # Little hack to get around VMS's find_perl putting "MCR" in front
     # sometimes.
     $self->{ABSPERL} = $self->{PERL};
@@ -2065,6 +2119,11 @@ sub init_PERL {
     # already escaped spaces.
     $self->{PERL} =~ tr/"//d if $Is{VMS};
 
+    # `dmake` can fail for image (aka, executable) names which start with double-quotes
+    # * push quote inward by at least one character (or the drive prefix, if present)
+    # * including any initial directory separator preserves the `file_name_is_absolute` property
+    $self->{PERL} =~ s/^"(\S(:\\|:)?)/$1"/ if $self->is_make_type('dmake');
+
     # Are we building the core?
     $self->{PERL_CORE} = $ENV{PERL_CORE} unless exists $self->{PERL_CORE};
     $self->{PERL_CORE} = 0               unless defined $self->{PERL_CORE};
@@ -2872,7 +2931,7 @@ sub parse_abstract {
     }
     close $fh;
 
-    if ( $pod_encoding and !( $] < 5.008 or !$Config{useperlio} ) ) {
+    if ( $pod_encoding and !( "$]" < 5.008 or !$Config{useperlio} ) ) {
         # Have to wrap in an eval{} for when running under PERL_CORE
         # Encode isn't available during build phase and parsing
         # ABSTRACT isn't important there
@@ -2894,7 +2953,7 @@ It will return the string "undef" if it can't figure out what $VERSION
 is. $VERSION should be for all to see, so C<our $VERSION> or plain $VERSION
 are okay, but C<my $VERSION> is not.
 
-C<<package Foo VERSION>> is also checked for.  The first version
+C<package Foo VERSION> is also checked for.  The first version
 declaration found is used, but this may change as it differs from how
 Perl does it.
 
@@ -3151,7 +3210,7 @@ PPD_PERLVERS
     }
 
     my $archname = $Config{archname};
-    if ($] >= 5.008) {
+    if ("$]" >= 5.008) {
         # archname did not change from 5.6 to 5.8, but those versions may
         # not be not binary compatible so now we append the part of the
         # version that changes when binary compatibility may change
@@ -3268,9 +3327,11 @@ sub processPL {
 
     my $m = '';
     foreach my $plfile (sort keys %$pl_files) {
-        my $list = ref($pl_files->{$plfile})
-                     ?  $pl_files->{$plfile}
-                     : [$pl_files->{$plfile}];
+        my $targets = $pl_files->{$plfile};
+        my $list =
+            ref($targets) eq 'HASH'  ? [ sort keys %$targets ] :
+            ref($targets) eq 'ARRAY' ? $pl_files->{$plfile}   :
+            [$pl_files->{$plfile}];
 
         foreach my $target (@$list) {
             if( $Is{VMS} ) {
@@ -3294,13 +3355,27 @@ sub processPL {
                 $perlrun = 'PERLRUNINST';
             }
 
+            my $extra_inputs = '';
+            if( ref($targets) eq 'HASH' ) {
+                my $inputs = ref($targets->{$target})
+                    ? $targets->{$target}
+                    : [$targets->{$target}];
+
+                for my $input (@$inputs) {
+                    if( $Is{VMS} ) {
+                        $input = vmsify($self->eliminate_macros($input));
+                    }
+                    $extra_inputs .= ' '.$input;
+                }
+            }
+
             $m .= <<MAKE_FRAG;
 
 pure_all :: $target
        \$(NOECHO) \$(NOOP)
 
-$target :: $plfile $pm_dep
-       \$($perlrun) $plfile $target
+$target :: $plfile $pm_dep $extra_inputs
+       \$($perlrun) $plfile $target $extra_inputs
 MAKE_FRAG
 
         }
@@ -3957,13 +4032,15 @@ sub xs_o {
     my ($self) = @_;
     return '' unless $self->needs_linking();
     my $m_o = $self->{XSMULTI} ? $self->xs_obj_opt('$*$(OBJ_EXT)') : '';
+    my $dbgout = $self->dbgoutflag;
+    $dbgout = $dbgout ? "$dbgout " : '';
     my $frag = '';
     # dmake makes noise about ambiguous rule
-    $frag .= sprintf <<'EOF', $m_o unless $self->is_make_type('dmake');
+    $frag .= sprintf <<'EOF', $dbgout, $m_o unless $self->is_make_type('dmake');
 .xs$(OBJ_EXT) :
        $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc
        $(MV) $*.xsc $*.c
-       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c %s
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) %s$*.c %s
 EOF
     if ($self->{XSMULTI}) {
        for my $ext ($self->_xs_list_basenames) {
@@ -3977,16 +4054,17 @@ EOF
             $self->_xsbuild_replace_macro($cccmd, 'xs', $ext, 'INC');
             my $define = '$(DEFINE)';
             $self->_xsbuild_replace_macro($define, 'xs', $ext, 'DEFINE');
-            #                             1     2       3     4
-            $frag .= _sprintf562 <<'EOF', $ext, $cccmd, $m_o, $define;
+            #                             1     2       3     4        5
+            $frag .= _sprintf562 <<'EOF', $ext, $cccmd, $m_o, $define, $dbgout;
 
 %1$s$(OBJ_EXT): %1$s.xs
        $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc
        $(MV) $*.xsc $*.c
-       %2$s $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) %4$s $*.c %3$s
+       %2$s $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) %4$s %5$s$*.c %3$s
 EOF
        }
     }
+    $frag =~ s/"-I(\$\(PERL_INC\))"/-iwithsysroot "$1"/sg if $Is{ApplCor};
     $frag;
 }
 
index b6fbccf..24e5346 100644 (file)
@@ -15,8 +15,8 @@ BEGIN {
 
 use File::Basename;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
@@ -587,9 +587,10 @@ sub constants {
     # Cleanup paths for directories in MMS macros.
     foreach my $macro ( qw [
             INST_BIN INST_SCRIPT INST_LIB INST_ARCHLIB
-            PERL_LIB PERL_ARCHLIB
+            PERL_LIB PERL_ARCHLIB PERL_ARCHLIBDEP
             PERL_INC PERL_SRC ],
-                        (map { 'INSTALL'.$_ } $self->installvars)
+                        (map { 'INSTALL'.$_ } $self->installvars),
+                        (map { 'DESTINSTALL'.$_ } $self->installvars)
                       )
     {
         next unless defined $self->{$macro};
index 66c7ff7..9f7c89a 100644 (file)
@@ -1,8 +1,8 @@
 package ExtUtils::MM_VOS;
 
 use strict;
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
index 43c974d..253b2ca 100644 (file)
@@ -27,8 +27,8 @@ 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.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 $ENV{EMXSHELL} = 'sh'; # to run `commands`
 
@@ -77,7 +77,7 @@ Changes the path separator with .
 
 sub replace_manpage_separator {
     my($self,$man) = @_;
-    $man =~ s,/+,.,g;
+    $man =~ s,[/\\]+,.,g;
     $man;
 }
 
@@ -143,7 +143,7 @@ sub init_tools {
     $self->{DEV_NULL} ||= '> NUL';
 
     $self->{FIXIN}    ||= $self->{PERL_CORE} ?
-      "\$(PERLRUN) $self->{PERL_SRC}\\win32\\bin\\pl2bat.pl" :
+      "\$(PERLRUN) -I$self->{PERL_SRC}\\cpan\\ExtUtils-PL2Bat\\lib $self->{PERL_SRC}\\win32\\bin\\pl2bat.pl" :
       'pl2bat.bat';
 
     $self->SUPER::init_tools;
@@ -506,7 +506,7 @@ sub quote_literal {
     $text =~ s{\\\\"}{\\\\\\\\\\"}g;  # \\" -> \\\\\"
     $text =~ s{(?<!\\)\\"}{\\\\\\"}g; # \"  -> \\\"
     $text =~ s{(?<!\\)"}{\\"}g;       # "   -> \"
-    $text = qq{"$text"} if $text =~ /[ \t]/;
+    $text = qq{"$text"} if $text =~ /[ \t#]/; # hash because gmake 4.2.1
 
     # Apply the Command Prompt parsing rules (cmd.exe)
     my @text = split /("[^"]*")/, $text;
@@ -595,6 +595,16 @@ sub os_flavor {
     return('Win32');
 }
 
+=item dbgoutflag
+
+Returns a CC flag that tells the CC to emit a separate debugging symbol file
+when compiling an object file.
+
+=cut
+
+sub dbgoutflag {
+    $MSVC ? '-Fd$(*).pdb' : '';
+}
 
 =item cflags
 
index 85a80c6..440c3a7 100644 (file)
@@ -2,8 +2,8 @@ package ExtUtils::MM_Win95;
 
 use strict;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 require ExtUtils::MM_Win32;
 our @ISA = qw(ExtUtils::MM_Win32);
index a193f3a..73f9e10 100644 (file)
@@ -3,8 +3,8 @@ package ExtUtils::MY;
 use strict;
 require ExtUtils::MM;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 our @ISA = qw(ExtUtils::MM);
 
 {
index 90d9eac..90790d4 100644 (file)
@@ -24,8 +24,8 @@ 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.34';
-$VERSION = eval $VERSION;  ## no critic [BuiltinFunctions::ProhibitStringyEval]
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 # Emulate something resembling CVS $Revision$
 (our $Revision = $VERSION) =~ s{_}{};
@@ -316,7 +316,7 @@ sub full_setup {
     PERLRUNINST PERL_CORE
     PERM_DIR PERM_RW PERM_RWX MAGICXS
     PL_FILES PM PM_FILTER PMLIBDIRS PMLIBPARENTDIRS POLLUTE
-    PREREQ_FATAL PREREQ_PM PREREQ_PRINT PRINT_PREREQ
+    PREREQ_FATAL PREREQ_PM PREREQ_PRINT PRINT_PREREQ PUREPERL_ONLY
     SIGN SKIP TEST_REQUIRES TYPEMAPS UNINST VERSION VERSION_FROM XS
     XSBUILD XSMULTI XSOPT XSPROTOARG XS_VERSION
     clean depend dist dynamic_lib linkext macro realclean tool_autosplit
@@ -398,7 +398,7 @@ sub full_setup {
           );
 
     # 5.5.3 doesn't have any concept of vendor libs
-    push @Get_from_Config, qw( vendorarchexp vendorlibexp ) if $] >= 5.006;
+    push @Get_from_Config, qw( vendorarchexp vendorlibexp ) if "$]" >= 5.006;
 
     foreach my $item (@attrib_help){
         $Recognized_Att_Keys{$item} = 1;
@@ -534,7 +534,7 @@ sub new {
             # simulate "use warnings FATAL => 'all'" for vintage perls
             die @_;
         };
-        !$self->{MIN_PERL_VERSION} or $self->{MIN_PERL_VERSION} <= $]
+        !$self->{MIN_PERL_VERSION} or $self->{MIN_PERL_VERSION} <= "$]"
     };
     if (!$perl_version_ok) {
         if (!defined $perl_version_ok) {
@@ -693,6 +693,7 @@ END
             } else {
                 my $value = $self->{$key};
                 # not going to test in FS so only stripping start
+                $value =~ s/"// if $key =~ /PERL$/ and $self->is_make_type('dmake');
                 $value =~ s/^"// if $key =~ /PERL$/;
                 $value = $self->catdir("..", $value)
                   unless $self->file_name_is_absolute($value);
@@ -702,7 +703,8 @@ END
         }
         if ($self->{PARENT}) {
             $self->{PARENT}->{CHILDREN}->{$newclass} = $self;
-            foreach my $opt (qw(POLLUTE PERL_CORE LINKTYPE LD OPTIMIZE)) {
+            foreach my $opt (qw(POLLUTE PERL_CORE LINKTYPE AR FULL_AR CC CCFLAGS
+                                OPTIMIZE LD LDDLFLAGS LDFLAGS PERL_ARCHLIB DESTDIR)) {
                 if (exists $self->{PARENT}->{$opt}
                     and not exists $self->{$opt})
                     {
@@ -1264,7 +1266,7 @@ sub write_file_via_tmp {
     die "write_file_via_tmp: 2nd arg must be ref" unless ref $contents;
     for my $chunk (@$contents) {
         my $to_write = $chunk;
-        utf8::encode $to_write if !$CAN_DECODE && $] > 5.008;
+        utf8::encode $to_write if !$CAN_DECODE && "$]" > 5.008;
         print $fh "$to_write\n" or die "Can't write to MakeMaker.tmp: $!";
     }
     close $fh or die "Can't write to MakeMaker.tmp: $!";
@@ -2599,6 +2601,20 @@ In this case the program will be run multiple times using each target file.
     perl bin/foobar.PL bin/foobar1
     perl bin/foobar.PL bin/foobar2
 
+If an output file depends on extra input files beside the script itself,
+a hash ref can be used in version 7.36 and above:
+
+    PL_FILES => { 'foo.PL' => {
+        'foo.out' => 'foo.in',
+        'bar.out' => [qw(bar1.in bar2.in)],
+    }
+
+In this case the extra input files will be passed to the program after
+the target file:
+
+   perl foo.PL foo.out foo.in
+   perl foo.PL bar.out bar1.in bar2.in
+
 PL files are normally run B<after> pm_to_blib and include INST_LIB and
 INST_ARCH in their C<@INC>, so the just built modules can be
 accessed... unless the PL file is making a module (or anything else in
index 0d4f8b1..f437a65 100644 (file)
@@ -2,8 +2,8 @@ package ExtUtils::MakeMaker::Config;
 
 use strict;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 use Config ();
 
index 0ceb4f7..a5449c2 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MakeMaker::FAQ;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 1;
 __END__
@@ -84,7 +84,8 @@ installation.
 =item How do I keep from installing man pages?
 
 Recent versions of MakeMaker will only install man pages on Unix-like
-operating systems.
+operating systems by default. To generate manpages on non-Unix operating
+systems, make the "manifypods" target.
 
 For an individual module:
 
index 6d97df0..bf59fdc 100644 (file)
@@ -1,8 +1,8 @@
 package ExtUtils::MakeMaker::Locale;
 
 use strict;
-our $VERSION = "7.34";
-$VERSION = eval $VERSION;
+our $VERSION = "7.36";
+$VERSION =~ tr/_//d;
 
 use base 'Exporter';
 our @EXPORT_OK = qw(
@@ -47,7 +47,10 @@ sub _init {
             unless (defined &GetInputCP) {
                 eval {
                     require Win32;
-                    eval { Win32::GetConsoleCP() };
+                    eval {
+                        local $SIG{__WARN__} = sub {} if ( "$]" < 5.014 ); # suppress deprecation warning for inherited AUTOLOAD of Win32::GetConsoleCP()
+                        Win32::GetConsoleCP();
+                    };
                     # manually "import" it since Win32->import refuses
                     *GetInputCP = sub { &Win32::GetConsoleCP } if defined &Win32::GetConsoleCP;
                     *GetOutputCP = sub { &Win32::GetConsoleOutputCP } if defined &Win32::GetConsoleOutputCP;
@@ -96,6 +99,13 @@ sub _init {
        $ENCODING_LOCALE ||= $ENCODING_CONSOLE_IN;
     }
 
+    # Workaround of Encode < v2.71 for "cp65000" and "cp65001"
+    # The "cp65000" and "cp65001" aliases were added in [Encode v2.71](https://github.com/dankogai/p5-encode/commit/7874bd95aa10967a3b5dbae333d16bcd703ac6c6)
+    # via commit <https://github.com/dankogai/p5-encode/commit/84b9c1101d5251d37e226f80d1c6781718779047>.
+    # This will avoid test failures for Win32 machines using the UTF-7 or UTF-8 code pages.
+    $ENCODING_LOCALE = 'UTF-7' if $ENCODING_LOCALE && lc($ENCODING_LOCALE) eq "cp65000";
+    $ENCODING_LOCALE = 'utf-8-strict' if $ENCODING_LOCALE && lc($ENCODING_LOCALE) eq "cp65001";
+
     if ($^O eq "darwin") {
        $ENCODING_LOCALE_FS ||= "UTF-8";
     }
index b49e444..7c36252 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MakeMaker::Tutorial;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 
 =head1 NAME
index c59be1e..b6d3550 100644 (file)
@@ -15,8 +15,8 @@ use strict;
 
 use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv);
 
-$VERSION = '7.34';
-$VERSION = eval $VERSION;
+$VERSION = '7.36';
+$VERSION =~ tr/_//d;
 $CLASS = 'version';
 
 {
@@ -35,7 +35,7 @@ $CLASS = 'version';
         *version::_VERSION = \&ExtUtils::MakeMaker::version::vpp::_VERSION;
         *version::vcmp = \&ExtUtils::MakeMaker::version::vpp::vcmp;
         *version::new = \&ExtUtils::MakeMaker::version::vpp::new;
-        if ($] >= 5.009000) {
+        if ("$]" >= 5.009000) {
             no strict 'refs';
             *version::stringify = \&ExtUtils::MakeMaker::version::vpp::stringify;
             *{'version::(""'} = \&ExtUtils::MakeMaker::version::vpp::stringify;
index f0eb14e..951a4c2 100644 (file)
@@ -10,8 +10,8 @@ use strict;
 
 use vars qw($VERSION $CLASS $STRICT $LAX);
 
-$VERSION = '7.34';
-$VERSION = eval $VERSION;
+$VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 #--------------------------------------------------------------------------#
 # Version regexp components
index 0d4c1a2..ea5eae5 100644 (file)
@@ -3,8 +3,8 @@ package ExtUtils::Mkbootstrap;
 # There's just too much Dynaloader incest here to turn on strict vars.
 use strict 'refs';
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 require Exporter;
 our @ISA = ('Exporter');
@@ -84,7 +84,7 @@ ExtUtils::Mkbootstrap - make a bootstrap file for use by DynaLoader
 
 =head1 SYNOPSIS
 
-C<Mkbootstrap>
+  Mkbootstrap
 
 =head1 DESCRIPTION
 
index 0ec5f9d..6e0b063 100644 (file)
@@ -10,8 +10,8 @@ use Config;
 
 our @ISA = qw(Exporter);
 our @EXPORT = qw(&Mksymlists);
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 sub Mksymlists {
     my(%spec) = @_;
@@ -148,7 +148,7 @@ sub _write_win32 {
     # linked to directly from C. GSAR 97-07-10
 
     #bcc dropped in 5.16, so dont create useless extra symbols for export table
-    unless($] >= 5.016) {
+    unless("$]" >= 5.016) {
         if ($Config::Config{'cc'} =~ /^bcc/i) {
             push @syms, "_$_", "$_ = _$_"
                 for (@{$data->{DL_VARS}}, @{$data->{FUNCLIST}});
index 01b46ee..18a70c5 100644 (file)
@@ -3,8 +3,8 @@ package ExtUtils::testlib;
 use strict;
 use warnings;
 
-our $VERSION = '7.34';
-$VERSION = eval $VERSION;
+our $VERSION = '7.36';
+$VERSION =~ tr/_//d;
 
 use Cwd;
 use File::Spec;
index bfe3dc9..faf56e3 100644 (file)
@@ -20,7 +20,7 @@ plan skip_all => "ExtUtils::CBuilder not installed or couldn't find a compiler"
   unless have_compiler();
 plan skip_all => 'Shared perl library' if $Config{useshrplib} eq 'true';
 plan skip_all => $^O if $^O =~ m!^(MSWin32|cygwin|haiku|darwin)$!;
-plan skip_all => 'Skipped when not PERL_CORE or in git repo' unless $ENV{PERL_CORE} or $release;
+plan skip_all => 'Skipped when not PERL_CORE nor in git repo' unless $ENV{PERL_CORE} or $release;
 my @tests = list_static();
 plan skip_all => "No tests" unless @tests;
 plan tests => 6 * @tests;
index 4e7336c..a37cb62 100644 (file)
@@ -80,7 +80,7 @@ like( $res, qr/manifypods.*foo.*foo.1/s, '... should add MAN3PODS targets' );
 # init_linker
 {
     my $libperl = $Config{libperl} || 'libperl.a';
-    $libperl =~ s/\.a/.dll.a/ if $] >= 5.006002;
+    $libperl =~ s/\.a/.dll.a/ if "$]" >= 5.006002;
     $libperl = "\$(PERL_INC)/$libperl";
 
     my $export  = '';
index 51aed5e..7e627db 100644 (file)
@@ -13,7 +13,7 @@ use ExtUtils::MM;
 use Test::More
     !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'}
     ? (skip_all => "cross-compiling and make not available")
-    : (tests => 10);
+    : (tests => 12);
 use File::Spec;
 use File::Temp qw[tempdir];
 use File::Path;
@@ -36,6 +36,8 @@ WriteMakefile(
     NAME     => 'PL::Module',
     PL_FILES => { 'single.PL' => 'single.out',
                   'multi.PL'  => [qw(1.out 2.out)],
+                  'single-in.PL' => { 'single-in.out' => 'single.in' },
+                  'multi-in.PL' => { 'multi-in.out'  => [qw(1.in 2.in)] },
                   'Bar_pm.PL' => '$(INST_LIB)/PL/Bar.pm',
                   'Bar2.pm.PL' => 'Bar2.pm',
     },
@@ -53,6 +55,11 @@ END
     'multi.PL'         => _gen_pl_files(),
     'Bar_pm.PL'        => _gen_pm_files(),
     'Bar2.pm.PL'       => _gen_pm_files(),
+    'single-in.PL'     => _gen_pm_files(1),
+    'multi-in.PL'      => _gen_pm_files(2),
+    'single.in'        => '',
+    '1.in'             => '',
+    '2.in'             => '',
     'lib/PL/Foo.pm' => <<'END',
 # Module to load to ensure PL_FILES have blib in @INC.
 package PL::Foo;
@@ -76,7 +83,11 @@ cmp_ok( $?, '==', 0 );
 my $make_out = run("$make");
 is( $?, 0 ) || diag $make_out;
 
-foreach my $file (qw(single.out 1.out 2.out blib/lib/PL/Bar.pm blib/lib/PL/Bar2.pm)) {
+foreach my $file (qw(
+    single.out 1.out 2.out
+    single-in.out multi-in.out
+    blib/lib/PL/Bar.pm blib/lib/PL/Bar2.pm
+)) {
     ok( -e $file, "$file was created" );
 }
 
@@ -105,7 +116,8 @@ END
 }
 
 sub _gen_pm_files {
-    my $test = <<'END';
+    my $inputs = (shift || 0) + 1;
+    my $test = sprintf <<'END', $inputs;
 #!/usr/bin/perl -w
 
 # Ensure we do NOT have blib in @INC when building a module
@@ -114,7 +126,7 @@ eval { require PL::Foo; };
 
 # Had a bug where PL_FILES weren't sent the file to generate
 die "argv empty\n" unless @ARGV;
-die "too many in argv: @ARGV\n" unless @ARGV == 1;
+die "wrong number in argv: @ARGV\n" unless @ARGV == %d;
 
 my $file = $ARGV[0];
 open OUT, ">$file" or die $!;
index 534bf21..7c87c75 100644 (file)
@@ -35,7 +35,11 @@ my $Is_VMS = $^O eq 'VMS';
 my $OLD_CP; # crude but...
 my $w32worked; # or whether we had to fallback to chcp
 if ($^O eq "MSWin32") {
-    eval { require Win32; $w32worked = $OLD_CP = Win32::GetConsoleCP() };
+    eval {
+        require Win32;
+        local $SIG{__WARN__} = sub {} if ( "$]" < 5.014 ); # suppress deprecation warning for inherited AUTOLOAD of Win32::GetConsoleCP()
+        $w32worked = $OLD_CP = Win32::GetConsoleCP();
+    };
     $OLD_CP = $1 if !$w32worked and qx(chcp) =~ /(\d+)$/ and $? == 0;
     if (defined $OLD_CP) {
         if ($w32worked) {
@@ -128,7 +132,7 @@ like( $ppd_html, qr{^\s*<REQUIRE NAME="strict::" />}m,  '  <REQUIRE>' );
 unlike( $ppd_html, qr{^\s*<REQUIRE NAME="warnings::" />}m,  'no <REQUIRE> for build_require' );
 
 my $archname = $Config{archname};
-if( $] >= 5.008 ) {
+if( "$]" >= 5.008 ) {
     # XXX This is a copy of the internal logic, so it's not a great test
     $archname .= "-$Config{PERL_REVISION}.$Config{PERL_VERSION}";
 }
index 061e456..6c6ada5 100644 (file)
@@ -9,7 +9,7 @@ BEGIN {
 
 use File::Spec;
 
-use Test::More tests => 22;
+use Test::More tests => 30;
 
 use Config;
 use TieOut;
@@ -123,3 +123,35 @@ END
         }
     );
 }
+
+SKIP: {
+    eval { chmod(0755, "usrbin/interp") }
+        or skip "no chmod", 8;
+    skip "Not relevant on VMS or MSWin32", 8 if $^O eq 'VMS' || $^O eq 'MSWin32';
+
+    my $dir = getcwd();
+    local $ENV{PATH} = join $Config{path_sep}, map "$dir/$_", qw(usrbin bin);
+
+    test_fixin(<<END,
+#!$dir/bin/interp
+
+blah blah blah
+END
+         sub {
+             is $_[0], "#!$dir/usrbin/interp\n", 'interpreter updated to one found in PATH';
+         }
+     );
+
+    eval { symlink("../usrbin/interp", "bin/interp") }
+        or skip "no symlinks", 4;
+
+    test_fixin(<<END,
+#!$dir/bin/interp
+
+blah blah blah
+END
+         sub {
+             is $_[0], "#!$dir/bin/interp\n", 'symlinked interpreter later in PATH not mangled';
+         }
+     );
+}
index 3d093fc..cfe49e5 100644 (file)
@@ -54,6 +54,9 @@ program - this is a program
 
 1;
 END
+             'Big-Dummy/usrbin/interp'       => <<'END',
+This is a dummy interpreter
+END
 
              'Big-Dummy/test.pl'          => <<'END',
 print "1..1\n";
index ce73b30..76c1ad5 100644 (file)
@@ -407,7 +407,7 @@ sub hash2files {
         $file = File::Spec->catfile(File::Spec->curdir, $prefix, split m{\/}, $file);
         my $dir = dirname($file);
         mkpath $dir;
-        my $utf8 = ($] < 5.008 or !$Config{useperlio}) ? "" : ":utf8";
+        my $utf8 = ("$]" < 5.008 or !$Config{useperlio}) ? "" : ":utf8";
         open(FILE, ">$utf8", $file) || die "Can't create $file: $!";
         print FILE $text;
         close FILE;
index 2dbd064..dc9919a 100644 (file)
@@ -53,7 +53,7 @@ if( $Has_Version ) {
     $versions{q[$VERSION = v1.2.3]} = 'v1.2.3';
 }
 
-if( $] >= 5.011001 ) {
+if( "$]" >= 5.011001 ) {
     $versions{'package Foo 1.23;'         } = '1.23';
     $versions{'package Foo::Bar 1.23;'    } = '1.23';
     $versions{'package Foo v1.2.3;'       } = 'v1.2.3';
@@ -81,7 +81,7 @@ our $VERSION = 2.34;
 END
 }
 
-if( $] >= 5.014 ) {
+if( "$]" >= 5.014 ) {
     $versions{'package Foo 1.23 { }'         } = '1.23';
     $versions{'package Foo::Bar 1.23 { }'    } = '1.23';
     $versions{'package Foo v1.2.3 { }'       } = 'v1.2.3';
@@ -110,7 +110,7 @@ our $VERSION = 2.34;
 END
 }
 
-if ( $] > 5.009 && $] < 5.012 ) {
+if ( "$]" < 5.012 ) {
   delete $versions{'$VERSION = -1.0'};
 }
 
index 557ac77..14a0c85 100644 (file)
@@ -14,7 +14,7 @@ use File::Path;
 use utf8;
 BEGIN {
   plan skip_all => 'Need perlio and perl 5.8+.'
-    if $] < 5.008 or !$Config{useperlio};
+    if "$]" < 5.008 or !$Config{useperlio};
   plan skip_all => 'cross-compiling and make not available'
     if !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'};
 
@@ -76,7 +76,7 @@ END {
 ok( chdir $DIRNAME, "chdir'd to $DIRNAME" ) ||
   diag("chdir failed: $!");
 
-if ($] >= 5.008) {
+if ("$]" >= 5.008) {
   eval { require ExtUtils::MakeMaker::Locale; };
   note "ExtUtils::MakeMaker::Locale vars: $ExtUtils::MakeMaker::Locale::ENCODING_LOCALE;$ExtUtils::MakeMaker::Locale::ENCODING_LOCALE_FS;$ExtUtils::MakeMaker::Locale::ENCODING_CONSOLE_IN;$ExtUtils::MakeMaker::Locale::ENCODING_CONSOLE_OUT\n" unless $@;
   note "Locale env vars: " . join(';', map {
index 9f88399..63ef8e2 100644 (file)
@@ -93,7 +93,7 @@ sub run_test {
   local $_;
   SKIP: {
     skip "No vstring test <5.8", 2
-      if $] < 5.008 && $pkg eq 'BareV2String' && $descrip =~ m!^2-part!;
+      if "$]" < 5.008 && $pkg eq 'BareV2String' && $descrip =~ m!^2-part!;
     my $warnings;
     eval { $warnings = capture_make("Fake::$pkg" => $version); };
     is($@, '', "$descrip not fatal") or skip "$descrip WM failed", 1;