Upgrade to MakeMaker 6.17.
authorJarkko Hietaniemi <jhi@iki.fi>
Tue, 16 Sep 2003 04:57:08 +0000 (04:57 +0000)
committerJarkko Hietaniemi <jhi@iki.fi>
Tue, 16 Sep 2003 04:57:08 +0000 (04:57 +0000)
p4raw-id: //depot/perl@21238

15 files changed:
lib/ExtUtils/Changes
lib/ExtUtils/Install.pm
lib/ExtUtils/MANIFEST.SKIP
lib/ExtUtils/META.yml
lib/ExtUtils/MM_Any.pm
lib/ExtUtils/MM_Unix.pm
lib/ExtUtils/MM_VMS.pm
lib/ExtUtils/MM_Win32.pm
lib/ExtUtils/MakeMaker.pm
lib/ExtUtils/Manifest.pm
lib/ExtUtils/README
lib/ExtUtils/t/MM_Win32.t
lib/ExtUtils/t/Manifest.t
lib/ExtUtils/t/basic.t
t/lib/MakeMaker/Test/Utils.pm

index 4e0ed06..3cbeddb 100644 (file)
@@ -1,3 +1,15 @@
+6.17 Sun Sep 14 20:52:45 PDT 2003
+    - Fixing LD so it can be set properly on Win32. (Orton Yves)
+    * Fixing the init_PERL() "tack $Config{exe_ext} onto $^X" logic so 
+      it works on VMS allowing $^X to be found.
+    * Fixing make install UNINST=1 on Windows so it can search PERL5LIB
+      (Orton Yves)
+    - Fixing "could not open MANIFEST" test for OS/2 (and probably others) 
+      where a read-only file cannot be deleted.
+    - Hacking around the fact that when built for debugging, VMS creates
+      ndbgperl.exe.
+    - Eliminating the never implemented "help" argument.
+
 6.16 Mon Aug 18 01:39:51 PDT 2003
     * Fixing the max exec length for Windows to account for old
       versions of nmake (the one you can download for free from MS).
index b5ebab6..18510ad 100644 (file)
@@ -12,7 +12,6 @@ use Config qw(%Config);
 $Is_VMS     = $^O eq 'VMS';
 $Is_MacPerl = $^O eq 'MacOS';
 
-my $splitchar = $^O eq 'VMS' ? '|' : ($^O eq 'os2' || $^O eq 'dos') ? ';' : ':';
 my $Inc_uninstall_warn_handler;
 
 # install relative to here
@@ -335,7 +334,7 @@ sub inc_uninstall {
     my $file = (File::Spec->splitpath($filepath))[2];
     my %seen_dir = ();
 
-    my @PERL_ENV_LIB = split $splitchar, defined $ENV{'PERL5LIB'} 
+    my @PERL_ENV_LIB = split $Config{path_sep}, defined $ENV{'PERL5LIB'} 
       ? $ENV{'PERL5LIB'} : $ENV{'PERLLIB'} || '';
 
     foreach $dir (@INC, @PERL_ENV_LIB, @Config{qw(archlibexp
index 41f89ae..62b78ee 100644 (file)
@@ -1,22 +1,17 @@
-# Avoid version control files.
-\bRCS\b
+\.ppd$
 \bCVS\b
-,v$
-\B\.svn\b
-
-# Avoid Makemaker generated and utility files.
-\bMANIFEST\.bak
-\bMakefile$
-\bblib/
-\bMakeMaker-\d
-\bpm_to_blib$
-
-# Avoid Module::Build generated and utility files.
-\bBuild$
-\b_build/
-
-# Avoid temp and backup files.
 ~$
+t/lib/File/
+t/Big-Dummy
+t/Problem-Module
+.gz$
+.bak$
+Makefile$
+MANIFEST.perl$
 \.old$
-\#$
-\b\.#
+merge_bleadperl$
+^blib/
+^pm_to_blib
+.DS_Store
+\#
+^bleadperl\.patch$
index c1ae878..c851548 100644 (file)
@@ -1,7 +1,7 @@
 # http://module-build.sourceforge.net/META-spec.html
 #XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
 name:         ExtUtils-MakeMaker
-version:      6.16
+version:      6.17
 version_from: lib/ExtUtils/MakeMaker.pm
 installdirs:  perl
 requires:
@@ -11,4 +11,4 @@ requires:
     Pod::Man:                      0
 
 distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.16
+generated_by: ExtUtils::MakeMaker version 6.17
index 8b418c0..5d8d640 100644 (file)
@@ -11,7 +11,7 @@ use File::Spec;
 
 =head1 NAME
 
-ExtUtils::MM_Any - Platform agnostic MM methods
+ExtUtils::MM_Any - Platform-agnostic MM methods
 
 =head1 SYNOPSIS
 
index 80e7a6e..3821a35 100644 (file)
@@ -20,7 +20,7 @@ use vars qw($VERSION @ISA
 
 use ExtUtils::MakeMaker qw($Verbose neatvalue);
 
-$VERSION = '1.41';
+$VERSION = '1.42';
 
 require ExtUtils::MM_Any;
 @ISA = qw(ExtUtils::MM_Any);
@@ -1669,7 +1669,7 @@ sub init_DIRFILESEP {
 
 Initializes AR, AR_STATIC_ARGS, BASEEXT, CONFIG, DISTNAME, DLBASE,
 EXE_EXT, FULLEXT, FULLPERL, FULLPERLRUN, FULLPERLRUNINST, INST_*,
-INSTALL*, INSTALLDIRS, LD, LIB_EXT, LIBPERL_A, MAP_TARGET, NAME,
+INSTALL*, INSTALLDIRS, LIB_EXT, LIBPERL_A, MAP_TARGET, NAME,
 OBJ_EXT, PARENT_NAME, PERL, PERL_ARCHLIB, PERL_INC, PERL_LIB,
 PERL_SRC, PERLRUN, PERLRUNINST, PREFIX, VERSION,
 VERSION_SYM, XS_VERSION.
@@ -1870,7 +1870,6 @@ usually solves this kind of problem.
     $self->{AR_STATIC_ARGS} ||= "cr";
 
     # These should never be needed
-    $self->{LD} ||= 'ld';
     $self->{OBJ_EXT} ||= '.o';
     $self->{LIB_EXT} ||= '.a';
 
@@ -1887,7 +1886,7 @@ usually solves this kind of problem.
 
 =item init_others
 
-Initializes EXTRALIBS, BSLOADLIBS, LDLOADLIBS, LIBS, LD_RUN_PATH,
+Initializes EXTRALIBS, BSLOADLIBS, LDLOADLIBS, LIBS, LD_RUN_PATH, LD,
 OBJECT, BOOTDEP, PERLMAINCC, LDFROM, LINKTYPE, SHELL, NOOP,
 FIRST_MAKEFILE, MAKEFILE_OLD, NOECHO, RM_F, RM_RF, TEST_F,
 TOUCH, CP, MV, CHMOD, UMASK_NULL, ECHO, ECHO_N
@@ -1897,6 +1896,8 @@ TOUCH, CP, MV, CHMOD, UMASK_NULL, ECHO, ECHO_N
 sub init_others {      # --- Initialize Other Attributes
     my($self) = shift;
 
+    $self->{LD} ||= 'ld';
+
     # Compute EXTRALIBS, BSLOADLIBS and LDLOADLIBS from $self->{LIBS}
     # Lets look at $self->{LIBS} carefully: It may be an anon array, a string or
     # undefined. In any case we turn it into an anon array:
@@ -2321,21 +2322,15 @@ sub init_PERL {
 
     # Build up a set of file names (not command names).
     my $thisperl = $self->canonpath($^X);
-    $thisperl .= $Config{exe_ext} unless $thisperl =~ m/$Config{exe_ext}$/i;
+    $thisperl .= $Config{exe_ext} unless 
+                # VMS might have a file version # at the end
+      $Is_VMS ? $thisperl =~ m/$Config{exe_ext}(;\d+)?$/i
+              : $thisperl =~ m/$Config{exe_ext}$/i;
 
     # We need a relative path to perl when in the core.
     $thisperl = $self->abs2rel($thisperl) if $self->{PERL_CORE};
 
     my @perls = ($thisperl);
-    my $ndbg = '';
-    if ( $Is_VMS ) {
-        if ( defined( $Config{usevmsdebug} ) ) {
-            if ( $Config{usevmsdebug} eq 'define' ) {
-                push @perls, map { "$_$Config{exe_ext}" } ('ndbgperl');
-                $ndbg = 'ndbg';
-            }
-        }
-    }
     push @perls, map { "$_$Config{exe_ext}" }
                      ('perl', 'perl5', "perl$Config{version}");
 
@@ -2354,8 +2349,15 @@ sub init_PERL {
     # don't check if perl is executable, maybe they have decided to
     # supply switches with perl
 
+    # When built for debugging, VMS doesn't create perl.exe but ndbgperl.exe.
+    my $perl_name = 'perl';
+    $perl_name = 'ndbgperl' if $Is_VMS && 
+      defined $Config{usevmsdebug} && $Config{usevmsdebug} eq 'define';
+
+    # XXX This logic is flawed.  If "miniperl" is anywhere in the path
+    # it will get confused.  It should be fixed to work only on the filename.
     # Define 'FULLPERL' to be a non-miniperl (used in test: target)
-    ($self->{FULLPERL} = $self->{PERL}) =~ s/miniperl/${ndbg}perl/i
+    ($self->{FULLPERL} = $self->{PERL}) =~ s/miniperl/$perl_name/i
        unless $self->{FULLPERL};
 
     # Little hack to get around VMS's find_perl putting "MCR" in front
index 8ac90bf..a21a0d9 100644 (file)
@@ -21,7 +21,7 @@ BEGIN {
 use File::Basename;
 use vars qw($Revision @ISA $VERSION);
 ($VERSION) = '5.70';
-($Revision) = q$Revision: 1.109 $ =~ /Revision:\s+(\S+)/;
+($Revision) = q$Revision: 1.110 $ =~ /Revision:\s+(\S+)/;
 
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
@@ -164,25 +164,33 @@ sub find_perl {
     my($rslt);
     my($inabs) = 0;
     local *TCF;
-    # Check in relative directories first, so we pick up the current
-    # version of Perl if we're running MakeMaker as part of the main build.
-    @sdirs = sort { my($absa) = $self->file_name_is_absolute($a);
-                    my($absb) = $self->file_name_is_absolute($b);
-                    if ($absa && $absb) { return $a cmp $b }
-                    else { return $absa ? 1 : ($absb ? -1 : ($a cmp $b)); }
-                  } @$dirs;
-    # Check miniperl before perl, and check names likely to contain
-    # version numbers before "generic" names, so we pick up an
-    # executable that's less likely to be from an old installation.
-    @snames = sort { my($ba) = $a =~ m!([^:>\]/]+)$!;  # basename
-                     my($bb) = $b =~ m!([^:>\]/]+)$!;
-                     my($ahasdir) = (length($a) - length($ba) > 0);
-                     my($bhasdir) = (length($b) - length($bb) > 0);
-                     if    ($ahasdir and not $bhasdir) { return 1; }
-                     elsif ($bhasdir and not $ahasdir) { return -1; }
-                     else { $bb =~ /\d/ <=> $ba =~ /\d/
-                            or substr($ba,0,1) cmp substr($bb,0,1)
-                            or length($bb) <=> length($ba) } } @$names;
+
+    if( $self->{PERL_CORE} ) {
+        # Check in relative directories first, so we pick up the current
+        # version of Perl if we're running MakeMaker as part of the main build.
+        @sdirs = sort { my($absa) = $self->file_name_is_absolute($a);
+                        my($absb) = $self->file_name_is_absolute($b);
+                        if ($absa && $absb) { return $a cmp $b }
+                        else { return $absa ? 1 : ($absb ? -1 : ($a cmp $b)); }
+                      } @$dirs;
+        # Check miniperl before perl, and check names likely to contain
+        # version numbers before "generic" names, so we pick up an
+        # executable that's less likely to be from an old installation.
+        @snames = sort { my($ba) = $a =~ m!([^:>\]/]+)$!;  # basename
+                         my($bb) = $b =~ m!([^:>\]/]+)$!;
+                         my($ahasdir) = (length($a) - length($ba) > 0);
+                         my($bhasdir) = (length($b) - length($bb) > 0);
+                         if    ($ahasdir and not $bhasdir) { return 1; }
+                         elsif ($bhasdir and not $ahasdir) { return -1; }
+                         else { $bb =~ /\d/ <=> $ba =~ /\d/
+                                  or substr($ba,0,1) cmp substr($bb,0,1)
+                                  or length($bb) <=> length($ba) } } @$names;
+    }
+    else {
+        @sdirs  = @$dirs;
+        @snames = @$names;
+    }
+
     # Image names containing Perl version use '_' instead of '.' under VMS
     foreach $name (@snames) { $name =~ s/\.(\d+)$/_$1/; }
     if ($trace >= 2){
index be9de22..8fe0b96 100644 (file)
@@ -29,7 +29,7 @@ use vars qw(@ISA $VERSION $BORLAND $GCC $DMAKE $NMAKE);
 require ExtUtils::MM_Any;
 require ExtUtils::MM_Unix;
 @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-$VERSION = '1.08';
+$VERSION = '1.09';
 
 $ENV{EMXSHELL} = 'sh'; # to run `commands`
 
@@ -181,7 +181,6 @@ sub init_others {
     $self->{TEST_F}   ||= '$(PERLRUN) -MExtUtils::Command -e test_f';
     $self->{DEV_NULL} ||= '> NUL';
 
-    # technically speaking, these should be in init_main()
     $self->{LD}     ||= $Config{ld} || 'link';
     $self->{AR}     ||= $Config{ar} || 'lib';
 
index 13bb850..9b7d6eb 100644 (file)
@@ -2,8 +2,8 @@ package ExtUtils::MakeMaker;
 
 BEGIN {require 5.005_03;}
 
-$VERSION = '6.16';
-($Revision) = q$Revision: 1.131 $ =~ /Revision:\s+(\S+)/;
+$VERSION = '6.17';
+($Revision) = q$Revision: 1.133 $ =~ /Revision:\s+(\S+)/;
 
 require Exporter;
 use Config;
@@ -661,7 +661,6 @@ sub parse_args{
     my($self, @args) = @_;
     foreach (@args) {
         unless (m/(.*?)=(.*)/) {
-            help(),exit 1 if m/^help$/;
             ++$Verbose if m/^verb/;
             next;
         }
@@ -2041,7 +2040,7 @@ MakeMaker object. The following lines will be parsed o.k.:
 
     $VERSION = '1.00';
     *VERSION = \'1.01';
-    $VERSION = sprintf "%d.%03d", q$Revision: 1.131 $ =~ /(\d+)/g;
+    $VERSION = sprintf "%d.%03d", q$Revision: 1.133 $ =~ /(\d+)/g;
     $FOO::VERSION = '1.10';
     *FOO::VERSION = \'1.11';
     our $VERSION = 1.2.3;       # new for perl5.6.0 
index 819e72c..f6dea29 100644 (file)
@@ -12,7 +12,7 @@ use vars qw($VERSION @ISA @EXPORT_OK
           $Is_MacOS $Is_VMS 
           $Debug $Verbose $Quiet $MANIFEST $DEFAULT_MSKIP);
 
-$VERSION = 1.41;
+$VERSION = 1.42;
 @ISA=('Exporter');
 @EXPORT_OK = qw(mkmanifest
                 manicheck  filecheck  fullcheck  skipcheck
@@ -539,17 +539,19 @@ sub maniadd {
     _fix_manifest($MANIFEST);
 
     my $manifest = maniread();
-    my $is_open;
-    foreach my $file (_sort keys %$additions) {
-        next if exists $manifest->{$file};
+    my @needed = grep { !exists $manifest->{$_} } keys %$additions;
+    return 1 unless @needed;
 
-        $is_open++ or open(MANIFEST, ">>$MANIFEST") or 
-          die "Could not open $MANIFEST: $!";
+    open(MANIFEST, ">>$MANIFEST") or 
+      die "maniadd() could not open $MANIFEST: $!";
 
+    foreach my $file (_sort @needed) {
         my $comment = $additions->{$file} || '';
-        printf MANIFEST "%-40s%s\n", $file, $comment;
+        printf MANIFEST "%-40s %s\n", $file, $comment;
     }
-    close MANIFEST if $is_open;
+    close MANIFEST or die "Error closing $MANIFEST: $!";
+
+    return 1;
 }
 
 
index eda94c0..4d6eed7 100644 (file)
@@ -1,10 +1,42 @@
-This is a CPAN distribution of the venerable MakeMaker module.
+This is a CPAN distribution of the venerable MakeMaker module.  It has been
+backported to work with Perl 5.005_03 and up.
+
+If you do not have a make program, several can be found...
+
+Most Unixen: The make utility which comes with your operating system
+should work fine.  If you don't have one, GNU make is recommended,
+most others (Sun, BSD, etc...) will work fine as well.
+
+Windows: nmake or dmake will work.  GNU make will *not*.
+ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe
+http://search.cpan.org/author/GSAR/dmake-4.1pl1-win32/
+
+VMS: MMS or the free MadGoat MaKe utility (MMK) will work.
+http://www.madgoat.com/mmk.html
+
+If all else fails there is a pure Perl version of make available on
+CPAN which should work on most Unixen.
+http://search.cpan.org/author/NI-S/Make-1.00/
 
 
 PLEASE NOTE: This distribution does not include the xsubpp or typemap
 programs.  They are extremely specific to your version or Perl, so
 MakeMaker will simply use the one which came with your copy of Perl.
-Do not delete your old ExtUtils/ directory.
+Do not delete your old ExtUtils/ directory.  An upgraded version of xsubpp
+can be found in the ExtUtils::ParseXS module.
+
+Known Good Systems:
+
+Every stable MakeMaker release is tested at least on:
+
+MacOS X
+Linux/x86
+ActivePerl on Windows 98
+Cygwin on Windows 98
+OpenVMS
+
+Covering the major portability flavors MakeMaker has to cover.
+(I'm always on the lookout for DJGPP, Solaris, *BSD and OS/2 users)
 
 
 Known Problems:
index 315b915..1431aba 100644 (file)
@@ -112,7 +112,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( {}, 'MM' );
+    my $mm_w32 = bless( { BASEEXT => 'Foo' }, 'MM' );
     $mm_w32->init_others();
     my @keys = qw( TOUCH CHMOD CP RM_F RM_RF MV NOOP 
                    TEST_F LD AR LDLOADLIBS DEV_NULL );
index ec7115c..215a24b 100644 (file)
@@ -215,7 +215,7 @@ SKIP: {
     eval {
         maniadd({ 'grrrwoof' => 'yippie' });
     };
-    like( $@, qr/^Could not open MANIFEST/,  
+    like( $@, qr/^\Qmaniadd() could not open MANIFEST:\E/,  
                  "maniadd() dies if it can't open the MANIFEST" );
 
     chmod( 0600, 'MANIFEST' );
@@ -228,7 +228,6 @@ END {
 
        # now get rid of the parent directory
        ok( chdir( $cwd ), 'return to parent directory' );
-       unlink('mantest/MANIFEST');
        remove_dir( 'mantest' );
 }
 
index 0c05a5e..960a75d 100644 (file)
@@ -42,6 +42,7 @@ ok( chdir('Big-Dummy'), "chdir'd to Big-Dummy" ) ||
   diag("chdir failed: $!");
 
 my @mpl_out = run(qq{$perl Makefile.PL "PREFIX=../dummy-install"});
+END { rmtree '../dummy-install'; }
 
 cmp_ok( $?, '==', 0, 'Makefile.PL exited with zero' ) ||
   diag(@mpl_out);
index 4fdb736..be3ec73 100644 (file)
@@ -9,7 +9,7 @@ use vars qw($VERSION @ISA @EXPORT);
 require Exporter;
 @ISA = qw(Exporter);
 
-$VERSION = 0.03;
+$VERSION = 0.02;
 
 @EXPORT = qw(which_perl perl_lib makefile_name makefile_backup
              make make_run run make_macro calibrate_mtime