This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update ExtUtils::MakeMaker to CPAN version 6.61_01
authorGeorge Greer <perl@greerga.m-l.org>
Wed, 28 Sep 2011 03:16:09 +0000 (23:16 -0400)
committerGeorge Greer <perl@greerga.m-l.org>
Wed, 28 Sep 2011 23:31:05 +0000 (19:31 -0400)
[DELTA]

6.61_01  Sat Sep 24 22:16:13 PDT 2011
    Win32
    * Liblist::Kid now checks the ActiveState MinGW library path environment
      variable [MITHALDU]
    * Further fixes to the Win32 quoting rules.  Fixes failures on VC8+.
      [rt.cpan.org #69528] [SHAY]

34 files changed:
Porting/Maintainers.pl
cpan/ExtUtils-MakeMaker/Changes
cpan/ExtUtils-MakeMaker/MANIFEST
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/Tutorial.pod
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/MM_Win32.t
cpan/ExtUtils-MakeMaker/t/oneliner.t
cpan/ExtUtils-MakeMaker/t/split_command.t

index 997d97b..9e76e03 100755 (executable)
@@ -734,7 +734,7 @@ use File::Glob qw(:case);
     'ExtUtils::MakeMaker' =>
        {
        'MAINTAINER'    => 'mschwern',
-       'DISTRIBUTION'  => 'MSTROUT/ExtUtils-MakeMaker-6.59.tar.gz',
+       'DISTRIBUTION'  => 'MSCHWERN/ExtUtils-MakeMaker-6.61_01.tar.gz',
        'FILES'         => q[cpan/ExtUtils-MakeMaker],
        'EXCLUDED'      => [ qr{^t/lib/Test/},
            qr{^(bundled|my)/},
index 3938910..7b69e5c 100644 (file)
@@ -1,6 +1,15 @@
+6.61_01  Sat Sep 24 22:16:13 PDT 2011
+    Win32
+    * Liblist::Kid now checks the ActiveState MinGW library path environment
+      variable [MITHALDU]
+    * Further fixes to the Win32 quoting rules.  Fixes failures on VC8+.
+      [rt.cpan.org #69528] [SHAY]
+
+
 6.59  Fri Aug  5 12:09:00 BST
     No changes since 6.58_01
 
+
 6.58_01  Wed Aug  3 21:12:00 BST
     Doc Fixes
     * Corrected the repository location [chorny]
@@ -13,6 +22,7 @@
       in site_perl shadowing our installation of other bundled modules.
       [rt.cpan.org 69465] [rt.cpan.org 69900] [MSTROUT]
 
+
 6.58  Wed Jul  6 14:17:06 PDT 2011
     No changes since 6.57_11
 
index ef9ec12..0f31fec 100644 (file)
@@ -164,3 +164,4 @@ t/xs.t
 TODO
 META.yml                                 Module YAML meta-data (added by MakeMaker)
 META.json                                Module JSON meta-data (added by MakeMaker)
+SIGNATURE                                Public-key signature (added by MakeMaker)
index 269514f..dde078b 100644 (file)
@@ -10,7 +10,7 @@ our @ISA = qw(Exporter);
 
 our @EXPORT  = qw(test_harness pod2man perllocal_install uninstall 
                   warn_if_old_packlist);
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 my $Is_VMS = $^O eq 'VMS';
 
index 23b199a..53ddbb0 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::Liblist;
 
 use strict;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 use File::Spec;
 require ExtUtils::Liblist::Kid;
index 125d2be..55c17fa 100644 (file)
@@ -11,7 +11,7 @@ use 5.006;
 
 use strict;
 use warnings;
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 use ExtUtils::MakeMaker::Config;
 use Cwd 'cwd';
@@ -258,13 +258,14 @@ sub _win32_ext {
     # TODO: make this use MM_Win32.pm's compiler detection
     my %libs_seen;
     my @extralibs;
-    my $cc         = $Config{cc} || '';
-    my $VC         = $cc =~ /\bcl\b/i;
-    my $GC         = $cc =~ /\bgcc\b/i;
+    my $cc = $Config{cc} || '';
+    my $VC = $cc =~ /\bcl\b/i;
+    my $GC = $cc =~ /\bgcc\b/i;
+
     my $libext     = _win32_lib_extensions();
-    my @searchpath = ( '' );                               # from "-L/path" entries in $potential_libs
-    my @libpath    = _win32_default_search_paths( $VC );
-    my $pwd        = cwd();                                # from Cwd.pm
+    my @searchpath = ( '' );                                    # from "-L/path" entries in $potential_libs
+    my @libpath    = _win32_default_search_paths( $VC, $GC );
+    my $pwd        = cwd();                                     # from Cwd.pm
     my $search     = 1;
 
     # compute @extralibs from $potential_libs
@@ -353,7 +354,7 @@ sub _win32_make_lib_search_list {
 }
 
 sub _win32_default_search_paths {
-    my ( $VC ) = @_;
+    my ( $VC, $GC ) = @_;
 
     my $libpth = $Config{'libpth'} || '';
     $libpth =~ s,\\,/,g;            # normalize to forward slashes
@@ -361,9 +362,8 @@ sub _win32_default_search_paths {
     my @libpath = Text::ParseWords::quotewords( '\s+', 0, $libpth );
     push @libpath, "$Config{installarchlib}/CORE";    # add "$Config{installarchlib}/CORE" to default search path
 
-    if ( $VC and exists $ENV{LIB} and $ENV{LIB} ) {
-        push @libpath, split /;/, $ENV{LIB};
-    }
+    push @libpath, split /;/, $ENV{LIB}          if $VC and $ENV{LIB};
+    push @libpath, split /;/, $ENV{LIBRARY_PATH} if $GC and $ENV{LIBRARY_PATH};
 
     return @libpath;
 }
index dd43cc7..6911be0 100644 (file)
@@ -3,7 +3,7 @@ package ExtUtils::MM;
 use strict;
 use ExtUtils::MakeMaker::Config;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 require ExtUtils::Liblist;
 require ExtUtils::MakeMaker;
index 0d356e3..b841d5f 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_AIX;
 
 use strict;
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
index ee3e6bf..1744f0d 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_Any;
 
 use strict;
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 use Carp;
 use File::Spec;
index 368d370..2a6bbca 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 = '6.59';
+our $VERSION = '6.61_01';
 
 
 =item os_flavor
index 5f10d1e..8f327cf 100644 (file)
@@ -9,7 +9,7 @@ require ExtUtils::MM_Unix;
 require ExtUtils::MM_Win32;
 our @ISA = qw( ExtUtils::MM_Unix );
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 
 =head1 NAME
index a8643c6..48a9f62 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MM_DOS;
 
 use strict;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
index 05cbd92..748e26e 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
     our @ISA = qw( ExtUtils::MM_Unix );
 }
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 
 =head1 NAME
index 4582a6d..39100f6 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MM_MacOS;
 
 use strict;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 sub new {
     die <<'UNSUPPORTED';
index a1ef531..43d9cf7 100644 (file)
@@ -22,7 +22,7 @@ use strict;
 use ExtUtils::MakeMaker::Config;
 use File::Basename;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 require ExtUtils::MM_Win32;
 our @ISA = qw(ExtUtils::MM_Win32);
index 9af648c..c84ab5e 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use ExtUtils::MakeMaker qw(neatvalue);
 use File::Spec;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
index 402e72c..9f3d87e 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_QNX;
 
 use strict;
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
index 17afb3b..a2b6cae 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_UWIN;
 
 use strict;
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
index 324885e..37f523d 100644 (file)
@@ -15,7 +15,7 @@ use ExtUtils::MakeMaker qw($Verbose neatvalue);
 
 # If we make $VERSION an our variable parse_version() breaks
 use vars qw($VERSION);
-$VERSION = '6.59';
+$VERSION = '6.61_01';
 $VERSION = eval $VERSION;
 
 require ExtUtils::MM_Any;
index 9e640f3..73c96c3 100644 (file)
@@ -15,7 +15,7 @@ BEGIN {
 
 use File::Basename;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
index b0fd476..7e4e22d 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::MM_VOS;
 
 use strict;
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 require ExtUtils::MM_Unix;
 our @ISA = qw(ExtUtils::MM_Unix);
index 05a1976..46af63c 100644 (file)
@@ -27,7 +27,7 @@ use ExtUtils::MakeMaker qw( neatvalue );
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
 our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 $ENV{EMXSHELL} = 'sh'; # to run `commands`
 
@@ -487,42 +487,28 @@ sub oneliner {
 sub quote_literal {
     my($self, $text) = @_;
 
-    # DOS batch processing is hilarious:
-    # Quotes need to be converted into triple quotes.
-    # Certain special characters need to be escaped with a caret if an odd
-    # number of quotes came before them.
-    my @text        = split '', $text;
-    my $quote_count = 0;
-    my %caret_chars = map { $_ => 1 } qw( < > | );
-    for my $char ( @text ) {
-        if ( $char eq '"' ) {
-            $quote_count++;
-            $char = '"""';
-        }
-        elsif ( $caret_chars{$char} and $quote_count % 2 ) {
-            $char = "^$char";
-        }
-        elsif ( $char eq "\\" ) {
-            $char = "\\\\";
-        }
-    }
-    $text = join '', @text;
+    # See: http://www.autohotkey.net/~deleyd/parameters/parameters.htm#CPP
+
+    # Apply the Microsoft C/C++ parsing rules
+    $text =~ s{\\\\"}{\\\\\\\\\\"}g;  # \\" -> \\\\\"
+    $text =~ s{(?<!\\)\\"}{\\\\\\"}g; # \"  -> \\\"
+    $text =~ s{(?<!\\)"}{\\"}g;       # "   -> \"
+    $text = qq{"$text"} if $text =~ /[ \t]/;
+
+    # Apply the Command Prompt parsing rules (cmd.exe)
+    my @text = split /("[^"]*")/, $text;
+    # We should also escape parentheses, but it breaks one-liners containing
+    # $(MACRO)s in makefiles.
+    s{([<>|&^@!])}{^$1}g foreach grep { !/^"[^"]*"$/ } @text;
+    $text = join('', @text);
     
-    # There is a terribly confusing edge case here, where this will do entirely the wrong thing:
-    # perl -e "use Data::Dumper; @ARGV = '%PATH%'; print Dumper( \@ARGV );print qq{@ARGV};" --
-    # I have no idea how to fix this manually, much less programmatically.
-    # However as it is such a rare edge case i'll just leave this documentation here and hope it never happens.
-
-    # dmake eats '{' inside double quotes and leaves alone { outside double
-    # quotes; however it transforms {{ into { either inside and outside double
-    # quotes.  It also translates }} into }.  The escaping below is not
-    # 100% correct.
+    # dmake expands {{ to { and }} to }.
     if( $self->is_make_type('dmake') ) {
         $text =~ s/{/{{/g;
-        $text =~ s/}}/}}}/g;
+        $text =~ s/}/}}/g;
     }
 
-    return qq{"$text"};
+    return $text;
 }
 
 
index b015828..2da186e 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MM_Win95;
 
 use strict;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 require ExtUtils::MM_Win32;
 our @ISA = qw(ExtUtils::MM_Win32);
index 1e8eb4d..01dda8d 100644 (file)
@@ -3,7 +3,7 @@ package ExtUtils::MY;
 use strict;
 require ExtUtils::MM;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 our @ISA = qw(ExtUtils::MM);
 
 {
index c8c3c23..8d5fd26 100644 (file)
@@ -18,7 +18,7 @@ our @Overridable;
 my @Prepend_parent;
 my %Recognized_Att_Keys;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 $VERSION = eval $VERSION;
 
 # Emulate something resembling CVS $Revision$
index 58bbdd6..0cb12de 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::MakeMaker::Config;
 
 use strict;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 use Config ();
 
index ae9cf1a..e94d4f0 100644 (file)
@@ -1,6 +1,6 @@
 package ExtUtils::MakeMaker::FAQ;
 
-our $VERSION = '6.58';
+our $VERSION = '6.61_01';
 
 1;
 __END__
index dee1b10..8db5fdb 100644 (file)
@@ -1,6 +1,6 @@
 package ExtUtils::MakeMaker::Tutorial;
 
-our $VERSION = 6.58;
+our $VERSION = 6.61_01;
 
 
 =head1 NAME
index bf855b9..b5c8ef5 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 = '6.59';
+our $VERSION = '6.61_01';
 
 require Exporter;
 our @ISA = ('Exporter');
index 9609f64..ce1247c 100644 (file)
@@ -10,7 +10,7 @@ use Config;
 
 our @ISA = qw(Exporter);
 our @EXPORT = qw(&Mksymlists);
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 sub Mksymlists {
     my(%spec) = @_;
index 2d235ac..007cf0d 100644 (file)
@@ -3,7 +3,7 @@ package ExtUtils::testlib;
 use strict;
 use warnings;
 
-our $VERSION = '6.59';
+our $VERSION = '6.61_01';
 
 use Cwd;
 use File::Spec;
index 98601d6..44a01e3 100644 (file)
@@ -107,7 +107,7 @@ delete $ENV{PATHEXT} unless $had_pathext;
 # init_others(): check if all keys are created and set?
 # qw( TOUCH CHMOD CP RM_F RM_RF MV NOOP TEST_F LD AR LDLOADLIBS DEV_NUL )
 {
-    my $mm_w32 = bless( { BASEEXT => 'Foo' }, 'MM' );
+    my $mm_w32 = bless( { BASEEXT => 'Foo', MAKE => $Config{make} }, 'MM' );
     $mm_w32->init_others();
     my @keys = qw( TOUCH CHMOD CP RM_F RM_RF MV NOOP 
                    TEST_F LD AR LDLOADLIBS DEV_NULL );
@@ -124,6 +124,7 @@ delete $ENV{PATHEXT} unless $had_pathext;
         NAME         => 'TestMM_Win32', 
         VERSION      => '1.00',
         PM           => { 'MM_Win32.pm' => 1 },
+        MAKE         => $Config{make},
     }, 'MM';
 
     # XXX Hack until we have a proper init method.
index 4523441..5e89295 100644 (file)
@@ -6,15 +6,16 @@ BEGIN {
 
 chdir 't';
 
+use Config;
 use MakeMaker::Test::Utils;
-use Test::More tests => 11;
+use Test::More tests => 16;
 use File::Spec;
 
 my $TB = Test::More->builder;
 
 BEGIN { use_ok('ExtUtils::MM') }
 
-my $mm = bless { NAME => "Foo" }, 'MM';
+my $mm = bless { NAME => "Foo", MAKE => $Config{make} }, 'MM';
 isa_ok($mm, 'ExtUtils::MakeMaker');
 isa_ok($mm, 'ExtUtils::MM_Any');
 
@@ -47,6 +48,13 @@ try_oneliner(q{print " \" < "}, [],  q{ " < },  'quote, then bracket' );
 try_oneliner(q{print " < \"\" < \" < \" < "}, [],  q{ < "" < " < " < },  'quotes and brackets mixed' );
 try_oneliner(q{print " < \" | \" < | \" < \" < "}, [],  q{ < " | " < | " < " < },  'brackets, pipes and quotes' );
 
+# some examples from http://www.autohotkey.net/~deleyd/parameters/parameters.htm#CPP
+try_oneliner(q{print q[ &<>^|()@ ! ]}, [],  q{ &<>^|()@ ! },  'example 8.1' );
+try_oneliner(q{print q[ &<>^|@()!"&<>^|@()! ]}, [],  q{ &<>^|@()!"&<>^|@()! },  'example 8.2' );
+try_oneliner(q{print q[ "&<>^|@() !"&<>^|@() !" ]}, [],  q{ "&<>^|@() !"&<>^|@() !" },  'example 8.3' );
+try_oneliner(q{print q[ "C:\TEST A\" ]}, [],  q{ "C:\TEST A\" },  'example 8.4' );
+try_oneliner(q{print q[ "C:\TEST %&^ A\" ]}, [],  q{ "C:\TEST %&^ A\" },  'example 8.5' );
+
 # XXX gotta rethink the newline test.  The Makefile does newline
 # escaping, then the shell.
 
index e57a542..6e6bab3 100644 (file)
@@ -6,6 +6,7 @@ BEGIN {
 
 chdir 't';
 
+use Config;
 use ExtUtils::MM;
 use MakeMaker::Test::Utils;
 
@@ -15,7 +16,7 @@ my $Is_Win32 = $^O eq 'MSWin32';
 use Test::More tests => 7;
 
 my $perl = which_perl;
-my $mm = bless { NAME => "Foo" }, "MM";
+my $mm = bless { NAME => "Foo", MAKE => $Config{make} }, "MM";
 
 # I don't expect anything to have a length shorter than 256 chars.
 cmp_ok( $mm->max_exec_len, '>=', 256,   'max_exec_len' );