use strict;
use Exporter ();
-use Carp ();
+use Carp;
use Config;
use File::Basename qw(basename dirname fileparse);
use File::Spec;
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
$cflags{$_} =~ s/^\s+//;
$cflags{$_} =~ s/\s+/ /g;
$cflags{$_} =~ s/\s+$//;
- $self->{uc $_} = $cflags{$_};
+ $self->{uc $_} ||= $cflags{$_};
}
if ($self->{POLLUTE}) {
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
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";
}
";
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";
}
for $tmp (qw(
PERM_RW PERM_RWX
)
- ) {
+ )
+ {
my $method = lc($tmp);
# warn "self[$self] method[$method]";
push @m, "$tmp = ", $self->$method(), "\n";
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;
}
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
# 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';
}
}
}
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
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 = <FIXIN>);
next unless $line =~ s/^\s*\#!\s*//; # Not a shbang file.
# (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
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 (
$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
# 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}";
# 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");
}
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});
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;
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
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) \
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 ::
};
$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}};
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;
$_
}; \$$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;
}
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];
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;
}
my($self, %attribs) = @_;
my $tests = $attribs{TESTS} || '';
if (!$tests && -d 't') {
- $tests = $Is_Win32 ? join(' ', <t\\*.t>) : 't/*.t';
+ $tests = $self->find_tests;
}
# note: 'test.pl' name is also hardcoded in init_dirscan()
my(@m);