X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FExtUtils%2FMM_Unix.pm;h=bb760133809480e6a8a41b0267b60e0b13aa24fd;hb=d71e5ff2e4c4bd22812aaff6cc21c601469f9238;hp=f3643448f31b1e51e5171b3a61531246930d9244;hpb=80a5d8e74b5512d4ab704d0e83466ae41247ce55;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm index f364344..bb76013 100644 --- a/lib/ExtUtils/MM_Unix.pm +++ b/lib/ExtUtils/MM_Unix.pm @@ -5,7 +5,7 @@ require 5.005_03; # Maybe further back, dunno use strict; use Exporter (); -use Carp (); +use Carp; use Config; use File::Basename qw(basename dirname fileparse); use File::Spec; @@ -13,25 +13,23 @@ use DirHandle; use strict; use vars qw($VERSION @ISA $Is_Mac $Is_OS2 $Is_VMS $Is_Win32 $Is_Dos $Is_VOS - $Verbose %pm %static $Xsubpp_Version); + $Verbose %pm %static $Xsubpp_Version + %Config_Override + ); use ExtUtils::MakeMaker qw($Verbose neatvalue); -$VERSION = '1.20_01'; +$VERSION = '1.33'; require ExtUtils::MM_Any; @ISA = qw(ExtUtils::MM_Any); $Is_OS2 = $^O eq 'os2'; $Is_Mac = $^O eq 'MacOS'; -$Is_Win32 = $^O eq 'MSWin32'; +$Is_Win32 = $^O eq 'MSWin32' || $Config{osname} eq 'NetWare'; $Is_Dos = $^O eq 'dos'; $Is_VOS = $^O eq 'vos'; - -if ($Is_VMS = $^O eq 'VMS') { - require VMS::Filespec; - import VMS::Filespec qw( &vmsify ); -} +$Is_VMS = $^O eq 'VMS'; =head1 NAME @@ -304,7 +302,7 @@ sub cflags { $cflags{$_} =~ s/^\s+//; $cflags{$_} =~ s/\s+/ /g; $cflags{$_} =~ s/\s+$//; - $self->{uc $_} = $cflags{$_}; + $self->{uc $_} ||= $cflags{$_}; } if ($self->{POLLUTE}) { @@ -479,17 +477,23 @@ sub constants { for $tmp (qw/ AR_STATIC_ARGS NAME DISTNAME NAME_SYM VERSION - VERSION_SYM XS_VERSION INST_BIN INST_LIB - INST_ARCHLIB INST_SCRIPT PREFIX INSTALLDIRS - INSTALLPRIVLIB INSTALLARCHLIB INSTALLSITELIB - INSTALLSITEARCH INSTALLBIN INSTALLSCRIPT PERL_LIB - PERL_ARCHLIB SITELIBEXP SITEARCHEXP LIBPERL_A MYEXTLIB + VERSION_SYM XS_VERSION + INST_ARCHLIB INST_SCRIPT INST_BIN INST_LIB + INSTALLDIRS + PREFIX SITEPREFIX VENDORPREFIX + INSTALLPRIVLIB INSTALLSITELIB INSTALLVENDORLIB + INSTALLARCHLIB INSTALLSITEARCH INSTALLVENDORARCH + INSTALLBIN INSTALLSITEBIN INSTALLVENDORBIN INSTALLSCRIPT + PERL_LIB PERL_ARCHLIB + SITELIBEXP SITEARCHEXP + LIBPERL_A MYEXTLIB FIRST_MAKEFILE MAKE_APERL_FILE PERLMAINCC PERL_SRC PERL_INC PERL FULLPERL PERLRUN FULLPERLRUN PERLRUNINST FULLPERLRUNINST ABSPERL ABSPERLRUN ABSPERLRUNINST FULL_AR PERL_CORE NOOP NOECHO - / ) { + / ) + { next unless defined $self->{$tmp}; # pathnames can have sharp signs in them; escape them so @@ -521,7 +525,8 @@ MM_VERSION = $ExtUtils::MakeMaker::VERSION for $tmp (qw/ FULLEXT BASEEXT PARENT_NAME DLBASE VERSION_FROM INC DEFINE OBJECT LDFROM LINKTYPE PM_FILTER - / ) { + / ) + { next unless defined $self->{$tmp}; push @m, "$tmp = $self->{$tmp}\n"; } @@ -537,9 +542,12 @@ MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})." "; for $tmp (qw/ - INST_MAN1DIR INSTALLMAN1DIR MAN1EXT - INST_MAN3DIR INSTALLMAN3DIR MAN3EXT - /) { + INST_MAN1DIR MAN1EXT + INSTALLMAN1DIR INSTALLSITEMAN1DIR INSTALLVENDORMAN1DIR + INST_MAN3DIR MAN3EXT + INSTALLMAN3DIR INSTALLSITEMAN3DIR INSTALLVENDORMAN3DIR + /) + { next unless defined $self->{$tmp}; push @m, "$tmp = $self->{$tmp}\n"; } @@ -547,7 +555,8 @@ MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})." for $tmp (qw( PERM_RW PERM_RWX ) - ) { + ) + { my $method = lc($tmp); # warn "self[$self] method[$method]"; push @m, "$tmp = ", $self->$method(), "\n"; @@ -852,8 +861,8 @@ sub dist_test { push @m, q{ disttest : distdir cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL - cd $(DISTVNAME) && $(MAKE) - cd $(DISTVNAME) && $(MAKE) test + cd $(DISTVNAME) && $(MAKE) $(PASTHRU) + cd $(DISTVNAME) && $(MAKE) test $(PASTHRU) }; join "", @m; } @@ -995,7 +1004,7 @@ $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists push(@m,' $(RM_F) $@ '); - my $libs = $self->{LDLOADLIBS} || ''; + my $libs = '$(LDLOADLIBS)'; if ($^O eq 'netbsd') { # Use nothing on static perl platforms, and to the flags needed @@ -1004,9 +1013,9 @@ $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists # or -R to add paths to the run-time library search path. if ($Config{'useshrplib'}) { if ($Config{'lddlflags'} =~ /-Wl,-R/) { - $libs = '-L$(PERL_INC) -Wl,-R$(INSTALLARCHLIB)/CORE -lperl'; + $libs .= ' -L$(PERL_INC) -Wl,-R$(INSTALLARCHLIB)/CORE -lperl'; } elsif ($Config{'lddlflags'} =~ /-R/) { - $libs = '-L$(PERL_INC) -R$(INSTALLARCHLIB)/CORE -lperl'; + $libs .= ' -L$(PERL_INC) -R$(INSTALLARCHLIB)/CORE -lperl'; } } } @@ -1089,6 +1098,20 @@ in these dirs: 0; # false and not empty } +=item find_tests + + my $test = $mm->find_tests; + +Returns a string suitable for feeding to the shell to return all +tests in t/*.t. + +=cut + +sub find_tests { + my($self) = shift; + return 't/*.t'; +} + =back =head2 Methods to actually produce chunks of text for the Makefile @@ -1113,7 +1136,7 @@ sub fixin { # stolen from the pink Camel book, more or less for my $file (@files) { local(*FIXIN); local(*FIXOUT); - open(FIXIN, $file) or Carp::croak "Can't process '$file': $!"; + open(FIXIN, $file) or croak "Can't process '$file': $!"; local $/ = "\n"; chomp(my $line = ); next unless $line =~ s/^\s*\#!\s*//; # Not a shbang file. @@ -1326,8 +1349,15 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc) # (which includes PARENT_NAME). This is a subtle distinction but one # that's important for nested modules. - $self->{PMLIBDIRS} = ['lib', $self->{BASEEXT}] + if ($Is_VMS) { + # avoid logical name collisions by adding directory syntax + $self->{PMLIBDIRS} = ['./lib', './' . $self->{BASEEXT}] unless $self->{PMLIBDIRS}; + } + else { + $self->{PMLIBDIRS} = ['lib', $self->{BASEEXT}] + unless $self->{PMLIBDIRS}; + } #only existing directories that aren't in $dir are allowed @@ -1543,8 +1573,19 @@ sub init_main { if ($self->{PERL_SRC}){ $self->{PERL_LIB} ||= File::Spec->catdir("$self->{PERL_SRC}","lib"); - $self->{PERL_ARCHLIB} = $self->{PERL_LIB}; - $self->{PERL_INC} = ($Is_Win32) ? File::Spec->catdir($self->{PERL_LIB},"CORE") : $self->{PERL_SRC}; + + if (defined $Cross::platform) { + $self->{PERL_ARCHLIB} = + File::Spec->catdir("$self->{PERL_SRC}","xlib",$Cross::platform); + $self->{PERL_INC} = + File::Spec->catdir("$self->{PERL_SRC}","xlib",$Cross::platform, + $Is_Win32?("CORE"):()); + } + else { + $self->{PERL_ARCHLIB} = $self->{PERL_LIB}; + $self->{PERL_INC} = ($Is_Win32) ? + File::Spec->catdir($self->{PERL_LIB},"CORE") : $self->{PERL_SRC}; + } # catch a situation that has occurred a few times in the past: unless ( @@ -1580,7 +1621,6 @@ from the perl source tree. $self->{PERL_INC} = File::Spec->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now my $perl_h; - no warnings 'uninitialized' ; if (not -f ($perl_h = File::Spec->catfile($self->{PERL_INC},"perl.h")) and not $old){ # Maybe somebody tries to build an extension with an @@ -1678,17 +1718,21 @@ usually solves this kind of problem. # Determine VERSION and VERSION_FROM ($self->{DISTNAME}=$self->{NAME}) =~ s#(::)#-#g unless $self->{DISTNAME}; if ($self->{VERSION_FROM}){ - $self->{VERSION} = $self->parse_version($self->{VERSION_FROM}) or - Carp::carp "WARNING: Setting VERSION via file '$self->{VERSION_FROM}' failed\n" + $self->{VERSION} = $self->parse_version($self->{VERSION_FROM}); + if( $self->{VERSION} eq 'undef' ) { + carp "WARNING: Setting VERSION via file ". + "'$self->{VERSION_FROM}' failed\n"; + } } # strip blanks - if ($self->{VERSION}) { + if (defined $self->{VERSION}) { $self->{VERSION} =~ s/^\s+//; $self->{VERSION} =~ s/\s+$//; } - - $self->{VERSION} ||= "0.10"; + else { + $self->{VERSION} = ''; + } ($self->{VERSION_SYM} = $self->{VERSION}) =~ s/\W/_/g; $self->{DISTVNAME} = "$self->{DISTNAME}-$self->{VERSION}"; @@ -1794,7 +1838,14 @@ sub init_INST { # you to build directly into, say $Config{privlibexp}. unless ($self->{INST_LIB}){ if ($self->{PERL_CORE}) { - $self->{INST_LIB} = $self->{INST_ARCHLIB} = $self->{PERL_LIB}; + if (defined $Cross::platform) { + $self->{INST_LIB} = $self->{INST_ARCHLIB} = + File::Spec->catdir($self->{PERL_LIB},"..","xlib", + $Cross::platform); + } + else { + $self->{INST_LIB} = $self->{INST_ARCHLIB} = $self->{PERL_LIB}; + } } else { $self->{INST_LIB} = File::Spec->catdir($Curdir,"blib","lib"); } @@ -1829,22 +1880,217 @@ INSTALLDIRS) and PREFIX. sub init_INSTALL { my($self) = shift; + $self->init_lib2arch; + + if( $Config{usevendorprefix} ) { + $Config_Override{installvendorman1dir} = + File::Spec->catdir($Config{vendorprefixexp}, 'man', 'man$(MAN1EXT)'); + $Config_Override{installvendorman3dir} = + File::Spec->catdir($Config{vendorprefixexp}, 'man', 'man$(MAN3EXT)'); + } + else { + $Config_Override{installvendorman1dir} = ''; + $Config_Override{installvendorman3dir} = ''; + } + + my $iprefix = $Config{installprefixexp} || $Config{installprefix} || + $Config{prefixexp} || $Config{prefix} || ''; + my $vprefix = $Config{usevendorprefix} ? $Config{vendorprefixexp} : ''; + my $sprefix = $Config{siteprefixexp} || ''; + + # 5.005_03 doesn't have a siteprefix. + $sprefix = $iprefix unless $sprefix; + + # There are often no Config.pm defaults for these, but we can make + # it up. + unless( $Config{installsiteman1dir} ) { + $Config_Override{installsiteman1dir} = + File::Spec->catdir($sprefix, 'man', 'man$(MAN1EXT)'); + } + + unless( $Config{installsiteman3dir} ) { + $Config_Override{installsiteman3dir} = + File::Spec->catdir($sprefix, 'man', 'man$(MAN3EXT)'); + } + + unless( $Config{installsitebin} ) { + $Config_Override{installsitebin} = + File::Spec->catdir($sprefix, 'bin'); + } + + my $u_prefix = $self->{PREFIX} || ''; + my $u_sprefix = $self->{SITEPREFIX} || $u_prefix; + my $u_vprefix = $self->{VENDORPREFIX} || $u_prefix; + + $self->{PREFIX} ||= $u_prefix || $iprefix; + $self->{SITEPREFIX} ||= $u_sprefix || $sprefix; + $self->{VENDORPREFIX} ||= $u_vprefix || $vprefix; + + my $arch = $Config{archname}; + my $version = $Config{version}; + + # default style + my $libstyle = 'lib/perl5'; + my $manstyle = ''; + + if( $self->{LIBSTYLE} ) { + $libstyle = $self->{LIBSTYLE}; + $manstyle = $self->{LIBSTYLE} eq 'lib/perl5' ? 'lib/perl5' : ''; + } + + # Some systems, like VOS, set installman*dir to '' if they can't + # read man pages. + for my $num (1, 3) { + $self->{'INSTALLMAN'.$num.'DIR'} ||= 'none' + unless $Config{'installman'.$num.'dir'}; + } + + my %bin_layouts = + ( + bin => { s => $iprefix, + r => $u_prefix, + d => 'bin' }, + vendorbin => { s => $vprefix, + r => $u_vprefix, + d => 'bin' }, + sitebin => { s => $sprefix, + r => $u_sprefix, + d => 'bin' }, + script => { s => $iprefix, + r => $u_prefix, + d => 'bin' }, + ); + + my %man_layouts = + ( + man1dir => { s => $iprefix, + r => $u_prefix, + d => 'man/man$(MAN1EXT)', + style => $manstyle, }, + siteman1dir => { s => $sprefix, + r => $u_sprefix, + d => 'man/man$(MAN1EXT)', + style => $manstyle, }, + vendorman1dir => { s => $vprefix, + r => $u_vprefix, + d => 'man/man$(MAN1EXT)', + style => $manstyle, }, + + man3dir => { s => $iprefix, + r => $u_prefix, + d => 'man/man$(MAN3EXT)', + style => $manstyle, }, + siteman3dir => { s => $sprefix, + r => $u_sprefix, + d => 'man/man$(MAN3EXT)', + style => $manstyle, }, + vendorman3dir => { s => $vprefix, + r => $u_vprefix, + d => 'man/man$(MAN3EXT)', + style => $manstyle, }, + ); + + my %lib_layouts = + ( + privlib => { s => $iprefix, + r => $u_prefix, + d => '', + style => $libstyle, }, + vendorlib => { s => $vprefix, + r => $u_vprefix, + d => '', + style => $libstyle, }, + sitelib => { s => $sprefix, + r => $u_sprefix, + d => 'site_perl', + style => $libstyle, }, + + archlib => { s => $iprefix, + r => $u_prefix, + d => "$version/$arch", + style => $libstyle }, + vendorarch => { s => $vprefix, + r => $u_vprefix, + d => "$version/$arch", + style => $libstyle }, + sitearch => { s => $sprefix, + r => $u_sprefix, + d => "site_perl/$version/$arch", + style => $libstyle }, + ); + + + # Special case for LIB. + if( $self->{LIB} ) { + foreach my $var (keys %lib_layouts) { + my $Installvar = uc "install$var"; + + if( $var =~ /arch/ ) { + $self->{$Installvar} ||= + File::Spec->catdir($self->{LIB}, $Config{archname}); + } + else { + $self->{$Installvar} ||= $self->{LIB}; + } + } + } + + + my %layouts = (%bin_layouts, %man_layouts, %lib_layouts); + while( my($var, $layout) = each(%layouts) ) { + my($s, $r, $d, $style) = @{$layout}{qw(s r d style)}; + + print STDERR "Prefixing $var\n" if $Verbose >= 2; + + my $installvar = "install$var"; + my $Installvar = uc $installvar; + next if $self->{$Installvar}; + + if( $r ) { + $d = "$style/$d" if $style; + $self->prefixify($installvar, $s, $r, $d); + } + else { + $self->{$Installvar} = $Config_Override{$installvar} || + $Config{$installvar}; + } + + print STDERR " $Installvar == $self->{$Installvar}\n" + if $Verbose >= 2; + } + + return 1; +} + +=begin _protected + +=item init_lib2arch + + $mm->init_lib2arch + +=end _protected + +=cut + +sub init_lib2arch { + my($self) = shift; + # The user who requests an installation directory explicitly # should not have to tell us an architecture installation directory # as well. We look if a directory exists that is named after the # architecture. If not we take it as a sign that it should be the # same as the requested installation directory. Otherwise we take # the found one. - # We do the same thing twice: for privlib/archlib and for sitelib/sitearch - for my $libpair ({l=>"privlib", a=>"archlib"}, - {l=>"sitelib", a=>"sitearch"}) + for my $libpair ({l=>"privlib", a=>"archlib"}, + {l=>"sitelib", a=>"sitearch"}, + {l=>"vendorlib", a=>"vendorarch"}, + ) { my $lib = "install$libpair->{l}"; my $Lib = uc $lib; my $Arch = uc "install$libpair->{a}"; if( $self->{$Lib} && ! $self->{$Arch} ){ my($ilib) = $Config{$lib}; - $ilib = VMS::Filespec::unixify($ilib) if $Is_VMS; $self->prefixify($Arch,$ilib,$self->{$Lib}); @@ -1856,89 +2102,9 @@ sub init_INSTALL { print STDOUT "Defaulting $Arch to $self->{$Arch}\n" if $Verbose; } } - - # we have to look at the relation between $Config{prefix} and the - # requested values. We're going to set the $Config{prefix} part of - # all the installation path variables to literally $(PREFIX), so - # the user can still say make PREFIX=foo - my($configure_prefix) = $Config{'prefix'}; - $configure_prefix = VMS::Filespec::unixify($configure_prefix) if $Is_VMS; - $self->{PREFIX} ||= $configure_prefix; - - - my($search_prefix, $replace_prefix); - # If the prefix contains perl, Configure shapes the tree as follows: - # perlprefix/lib/ INSTALLPRIVLIB - # perlprefix/lib/pod/ - # perlprefix/lib/site_perl/ INSTALLSITELIB - # perlprefix/bin/ INSTALLBIN - # perlprefix/man/ INSTALLMAN1DIR - # else - # prefix/lib/perl5/ INSTALLPRIVLIB - # prefix/lib/perl5/pod/ - # prefix/lib/perl5/site_perl/ INSTALLSITELIB - # prefix/bin/ INSTALLBIN - # prefix/lib/perl5/man/ INSTALLMAN1DIR - # - # The above results in various kinds of breakage on various - # platforms, so we cope with it as follows: if prefix/lib/perl5 - # or prefix/lib/perl5/man exist, we'll replace those instead - # of /prefix/{lib,man} - - $replace_prefix = '$(PREFIX)'; - for my $install_variable (qw/INSTALLBIN INSTALLSCRIPT/) - { - $self->prefixify($install_variable,$configure_prefix,$replace_prefix); - } - - my $funkylibdir = File::Spec->catdir($configure_prefix,"lib","perl5"); - $funkylibdir = '' unless -d $funkylibdir; - $search_prefix = $funkylibdir || - File::Spec->catdir($configure_prefix,"lib"); - - if ($self->{LIB}) { - $self->{INSTALLPRIVLIB} = $self->{INSTALLSITELIB} = $self->{LIB}; - $self->{INSTALLARCHLIB} = $self->{INSTALLSITEARCH} = - File::Spec->catdir($self->{LIB},$Config{'archname'}); - } - else { - if (-d File::Spec->catdir($self->{PREFIX},"lib","perl5")) { - $replace_prefix = File::Spec->catdir(qq[\$\(PREFIX\)],"lib", - "perl5"); - } - else { - $replace_prefix = File::Spec->catdir(qq[\$\(PREFIX\)],"lib"); - } - for my $install_variable (qw/ - INSTALLPRIVLIB - INSTALLARCHLIB - INSTALLSITELIB - INSTALLSITEARCH - /) - { - $self->prefixify($install_variable,$search_prefix,$replace_prefix); - } - } - my $funkymandir = File::Spec->catdir($configure_prefix,"lib","perl5","man"); - $funkymandir = '' unless -d $funkymandir; - $search_prefix = $funkymandir || File::Spec->catdir($configure_prefix,"man"); - if (-d File::Spec->catdir($self->{PREFIX},"lib","perl5", "man")) { - $replace_prefix = File::Spec->catdir(qq[\$\(PREFIX\)],"lib", "perl5", "man"); - } - else { - $replace_prefix = File::Spec->catdir(qq[\$\(PREFIX\)],"man"); - } - for my $install_variable (qw/ - INSTALLMAN1DIR - INSTALLMAN3DIR - /) - { - $self->prefixify($install_variable,$search_prefix,$replace_prefix); - } - - return 1; } + =item init_PERL $mm->init_PERL; @@ -2059,6 +2225,8 @@ install_perl :: all pure_perl_install doc_perl_install install_site :: all pure_site_install doc_site_install +install_vendor :: all pure_vendor_install doc_vendor_install + pure_install :: pure_$(INSTALLDIRS)_install doc_install :: doc_$(INSTALLDIRS)_install @@ -2090,13 +2258,22 @@ pure_site_install :: write }.File::Spec->catfile('$(INSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \ $(INST_LIB) $(INSTALLSITELIB) \ $(INST_ARCHLIB) $(INSTALLSITEARCH) \ - $(INST_BIN) $(INSTALLBIN) \ + $(INST_BIN) $(INSTALLSITEBIN) \ $(INST_SCRIPT) $(INSTALLSCRIPT) \ - $(INST_MAN1DIR) $(INSTALLMAN1DIR) \ - $(INST_MAN3DIR) $(INSTALLMAN3DIR) + $(INST_MAN1DIR) $(INSTALLSITEMAN1DIR) \ + $(INST_MAN3DIR) $(INSTALLSITEMAN3DIR) }.$self->{NOECHO}.q{$(WARN_IF_OLD_PACKLIST) \ }.File::Spec->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{ +pure_vendor_install :: + }.$self->{NOECHO}.q{$(MOD_INSTALL) \ + $(INST_LIB) $(INSTALLVENDORLIB) \ + $(INST_ARCHLIB) $(INSTALLVENDORARCH) \ + $(INST_BIN) $(INSTALLVENDORBIN) \ + $(INST_SCRIPT) $(INSTALLSCRIPT) \ + $(INST_MAN1DIR) $(INSTALLVENDORMAN1DIR) \ + $(INST_MAN3DIR) $(INSTALLVENDORMAN3DIR) + doc_perl_install :: -}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB) -}.$self->{NOECHO}.q{$(DOC_INSTALL) \ @@ -2115,7 +2292,9 @@ doc_site_install :: LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.File::Spec->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{ + >> }.File::Spec->catfile('$(INSTALLSITEARCH)','perllocal.pod').q{ + +doc_vendor_install :: }; @@ -2572,7 +2751,7 @@ q[-e 'next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M "], $self->{MAKEFILE}, q[";' \\ -e 'print "Manifying $$m{$$_}\n";' \\ -e 'system(q[$(PERLRUN) $(POD2MAN_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\\047t install $$m{$$_}\n";' \\ --e 'chmod(oct($(PERM_RW))), $$m{$$_} or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}' +-e 'chmod(oct($(PERM_RW)), $$m{$$_}) or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}' ]; push @m, "\nmanifypods : pure_all "; push @m, join " \\\n\t", keys %{$self->{MAN1PODS}}, keys %{$self->{MAN3PODS}}; @@ -2647,7 +2826,8 @@ sub needs_linking { my($self) = shift; my($child,$caller); $caller = (caller(0))[3]; - Carp::confess("Needs_linking called too early") if $caller =~ /^ExtUtils::MakeMaker::/; + confess("Needs_linking called too early") if + $caller =~ /^ExtUtils::MakeMaker::/; return $self->{NEEDS_LINKING} if defined $self->{NEEDS_LINKING}; if ($self->has_link_code or $self->{MAKEAPERL}){ $self->{NEEDS_LINKING} = 1; @@ -2737,13 +2917,14 @@ sub parse_version { $_ }; \$$2 }; - no warnings; + local $^W = 0; $result = eval($eval); warn "Could not eval '$eval' in $parsefile: $@" if $@; - $result = "undef" unless defined $result; last; } close FH; + + $result = "undef" unless defined $result; return $result; } @@ -2987,8 +3168,8 @@ sub ppd { if ($self->{ABSTRACT_FROM}){ $self->{ABSTRACT} = $self->parse_abstract($self->{ABSTRACT_FROM}) or - Carp::carp "WARNING: Setting ABSTRACT via file ". - "'$self->{ABSTRACT_FROM}' failed\n"; + carp "WARNING: Setting ABSTRACT via file ". + "'$self->{ABSTRACT_FROM}' failed\n"; } my ($pack_ver) = join ",", (split (/\./, $self->{VERSION}), (0)x4)[0..3]; @@ -3076,23 +3257,21 @@ simply use '/home/foo/man/man1'. sub prefixify { my($self,$var,$sprefix,$rprefix,$default) = @_; - my $path = $self->{uc $var} || $Config{lc $var}; - - print STDERR "Prefixing $var=$path\n" if $Verbose >= 2; - print STDERR " from $sprefix to $rprefix\n" - if $Verbose >= 2; + my $path = $self->{uc $var} || + $Config_Override{lc $var} || $Config{lc $var} || ''; - $path = VMS::Filespec::unixpath($path) if $Is_VMS; + print STDERR " prefixify $var => $path\n" if $Verbose >= 2; + print STDERR " from $sprefix to $rprefix\n" if $Verbose >= 2; - unless( $path =~ s,^\Q$sprefix\E(?=/|\z),$rprefix,s ) { + unless( $path =~ s{^\Q$sprefix\E\b}{$rprefix}s ) { - print STDERR " cannot prefix, using default.\n" if $Verbose >= 2; - print STDERR " no default!\n" if $Verbose >= 2; + print STDERR " cannot prefix, using default.\n" if $Verbose >= 2; + print STDERR " no default!\n" if !$default && $Verbose >= 2; $path = File::Spec->catdir($rprefix, $default) if $default; } - print " now $path\n" if $Verbose >= 2; + print " now $path\n" if $Verbose >= 2; return $self->{uc $var} = $path; } @@ -3407,7 +3586,7 @@ sub test { my($self, %attribs) = @_; my $tests = $attribs{TESTS} || ''; if (!$tests && -d 't') { - $tests = $Is_Win32 ? join(' ', ) : 't/*.t'; + $tests = $self->find_tests; } # note: 'test.pl' name is also hardcoded in init_dirscan() my(@m);