diff options
author | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2003-09-16 19:08:16 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2003-09-16 19:08:16 +0000 |
commit | 4d52b5f03674d45d88465516f7d7ddaa3078cd28 (patch) | |
tree | cb17e362206e045e65d342bb1cad37f1940d0029 | |
parent | 9f048d315e2a327e44bc12afba24f371d38c9cbe (diff) | |
download | perl-4d52b5f03674d45d88465516f7d7ddaa3078cd28.tar.gz |
Upgrade to ExtUtils::MakeMaker 6.17.
p4raw-id: //depot/maint-5.6/perl-5.6.2@21248
-rw-r--r-- | lib/ExtUtils/Changes | 12 | ||||
-rw-r--r-- | lib/ExtUtils/Install.pm | 3 | ||||
-rw-r--r-- | lib/ExtUtils/META.yml | 4 | ||||
-rw-r--r-- | lib/ExtUtils/MM_Unix.pm | 23 | ||||
-rw-r--r-- | lib/ExtUtils/MM_VMS.pm | 48 | ||||
-rw-r--r-- | lib/ExtUtils/MM_Win32.pm | 3 | ||||
-rw-r--r-- | lib/ExtUtils/MakeMaker.pm | 7 | ||||
-rw-r--r-- | lib/ExtUtils/MakeMaker/Tutorial.pod | 6 | ||||
-rw-r--r-- | lib/ExtUtils/Manifest.pm | 18 | ||||
-rw-r--r-- | lib/ExtUtils/t/Manifest.t | 13 |
10 files changed, 85 insertions, 52 deletions
diff --git a/lib/ExtUtils/Changes b/lib/ExtUtils/Changes index 4e0ed06692..3cbeddb84b 100644 --- a/lib/ExtUtils/Changes +++ b/lib/ExtUtils/Changes @@ -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). diff --git a/lib/ExtUtils/Install.pm b/lib/ExtUtils/Install.pm index b5ebab6b5c..18510ade4b 100644 --- a/lib/ExtUtils/Install.pm +++ b/lib/ExtUtils/Install.pm @@ -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 diff --git a/lib/ExtUtils/META.yml b/lib/ExtUtils/META.yml index c1ae878cd7..c8515482da 100644 --- a/lib/ExtUtils/META.yml +++ b/lib/ExtUtils/META.yml @@ -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 diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm index 23701e0eac..3821a3571d 100644 --- a/lib/ExtUtils/MM_Unix.pm +++ b/lib/ExtUtils/MM_Unix.pm @@ -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,7 +2322,10 @@ 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}; @@ -2345,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/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 diff --git a/lib/ExtUtils/MM_VMS.pm b/lib/ExtUtils/MM_VMS.pm index 8ac90bfbee..a21a0d9b3a 100644 --- a/lib/ExtUtils/MM_VMS.pm +++ b/lib/ExtUtils/MM_VMS.pm @@ -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){ diff --git a/lib/ExtUtils/MM_Win32.pm b/lib/ExtUtils/MM_Win32.pm index be9de22d26..8fe0b96d95 100644 --- a/lib/ExtUtils/MM_Win32.pm +++ b/lib/ExtUtils/MM_Win32.pm @@ -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'; diff --git a/lib/ExtUtils/MakeMaker.pm b/lib/ExtUtils/MakeMaker.pm index 13bb850129..9b7d6ebfad 100644 --- a/lib/ExtUtils/MakeMaker.pm +++ b/lib/ExtUtils/MakeMaker.pm @@ -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 diff --git a/lib/ExtUtils/MakeMaker/Tutorial.pod b/lib/ExtUtils/MakeMaker/Tutorial.pod index b25e1bb2be..aec12b6f0d 100644 --- a/lib/ExtUtils/MakeMaker/Tutorial.pod +++ b/lib/ExtUtils/MakeMaker/Tutorial.pod @@ -86,7 +86,7 @@ A simple listing of all the files in your distribution. MANIFEST lib/Your/Module.pm -Filepaths in a MANIFEST always use Unix conventions (ie. /) even if you're +File paths in a MANIFEST always use Unix conventions (ie. /) even if you're not on Unix. You can write this by hand or generate it with 'make manifest'. @@ -144,7 +144,7 @@ Suggested information to include here: A file full of regular expressions to exclude when using 'make manifest' to generate the MANIFEST. These regular expressions -are checked against each filepath found in the distrubtion (so +are checked against each file path found in the distribution (so you're matching against "t/foo.t" not "foo.t"). Here's a sample: @@ -172,7 +172,7 @@ L<perlmodstyle> gives stylistic help writing a module. L<perlnewmod> gives more information about how to write a module. There are modules to help you through the process of writing a module: -L<ExtUtils::ModuleMaker>, L<Module::Setup>, L<CPAN::MakeMaker> +L<ExtUtils::ModuleMaker>, L<Module::Install>, L<PAR> =cut diff --git a/lib/ExtUtils/Manifest.pm b/lib/ExtUtils/Manifest.pm index 819e72cbc8..f6dea291d9 100644 --- a/lib/ExtUtils/Manifest.pm +++ b/lib/ExtUtils/Manifest.pm @@ -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; } diff --git a/lib/ExtUtils/t/Manifest.t b/lib/ExtUtils/t/Manifest.t index 50cf8697c7..215a24b14e 100644 --- a/lib/ExtUtils/t/Manifest.t +++ b/lib/ExtUtils/t/Manifest.t @@ -191,30 +191,34 @@ is( $files->{yarrow}, 'hock',' with comment' ); is( $files->{foobar}, '', ' preserved old entries' ); add_file('MANIFEST' => 'Makefile.PL'); -maniadd({ 'META.yml' => 'Module meta-data (added by MakeMaker)' }); +maniadd({ foo => 'bar' }); $files = maniread; # VMS downcases the MANIFEST. We normalize it here to match. %$files = map { (lc $_ => $files->{$_}) } keys %$files; my %expect = ( 'makefile.pl' => '', - 'meta.yml' => 'Module meta-data (added by MakeMaker)' + 'foo' => 'bar' ); is_deeply( $files, \%expect, 'maniadd() vs MANIFEST without trailing newline'); +add_file('MANIFEST' => 'Makefile.PL'); +maniadd({ foo => 'bar' }); + SKIP: { chmod( 0400, 'MANIFEST' ); skip "Can't make MANIFEST read-only", 2 if -w 'MANIFEST'; eval { - maniadd({ 'META.yml' => 'hock' }); + maniadd({ 'foo' => 'bar' }); }; is( $@, '', "maniadd() won't open MANIFEST if it doesn't need to" ); 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' ); } @@ -224,7 +228,6 @@ END { # now get rid of the parent directory ok( chdir( $cwd ), 'return to parent directory' ); - unlink('mantest/MANIFEST'); remove_dir( 'mantest' ); } |