}
$otherperls = 1;
+# This little hack simplifies making the code after the comment "Fetch some
+# frequently-used items from %Config" warning free. With $opts{destdir} always
+# defined, it's also possible to make the s/\Q$opts{destdir}\E unconditional.
+
+$opts{destdir} = '';
# Consider refactoring this to use Getopt::Long once Getopt::Long's planned
# feature is implemented, to distinguish + and - options.
while (@ARGV) {
push(@scripts, map("$_.exe", @scripts));
}
+# Exclude nonxs extensions that are not architecture dependent
+my @nonxs = grep(!/^Errno$/, split(' ', $Config{'nonxs_ext'}));
+
find(sub {
- if ("$File::Find::dir/$_" =~ m{^ext\b(.*)/([^/]+)\.pm$}) {
+ if (($File::Find::name =~ m{^ext\b(.*)/([^/]+)\.pm$}) &&
+ ! grep { (my $dir = $_) =~ s/\//-/g;
+ $File::Find::name =~ /^ext\/$dir/ } @nonxs)
+ {
my($path, $modname) = ($1,$2);
# strip to optional "/lib", or remove trailing component
$installsitelib = $Config{installnwlib};
}
-my $d_dosuid = $Config{d_dosuid};
my $binexp = $Config{binexp};
if ($Is_VMS) { # Hang in there until File::Spec hits the big time
# Do some quick sanity checks.
-if (!$opts{notify} && $d_dosuid && $>) { die "You must run as root to install suidperl\n"; }
-
$installbin || die "No installbin directory in config.sh\n";
-d $installbin || mkpath($installbin, $opts{verbose}, 0777);
-d $installbin || $opts{notify} || die "$installbin is not a directory\n";
-x $dbg . 'perl' . $exe_ext || die "${dbg}perl$exe_ext isn't executable!\n";
}
}
--x 'suidperl' . $exe_ext|| die "suidperl isn't executable!\n" if $d_dosuid;
-f 't/rantests' || $Is_W32
|| warn "WARNING: You've never run 'make test' or",
copy("perl.exe", "$installbin/$perl.exe");
}
-safe_unlink("$installbin/s$perl_verbase$ver$exe_ext");
-if ($d_dosuid) {
- copy("suidperl$exe_ext", "$installbin/s$perl_verbase$ver$exe_ext");
- chmod(04711, "$installbin/s$perl_verbase$ver$exe_ext");
-}
-
# Install library files.
my ($do_installarchlib, $do_installprivlib) = (0, 0);
map { s|^$coredir/||i; } @corefiles = <$coredir/*.*>;
}
elsif ($Is_Cygwin) { # On Cygwin symlink it to CORE to make Makefile happy
+ @corefiles = <*.h libperl*.* perl*$Config{lib_ext}>;
my $coredll = "$installarchlib/CORE/$libperl";
+ safe_unlink($coredll);
( $Config{'d_link'} eq 'define' &&
- eval { CORE::link "$installbin/$libperl", $coredll } ) ||
- eval { symlink "$installbin/$libperl", $coredll } ||
- copy("$installbin/$libperl", $coredll);
- @corefiles = <*.h libperl*.* perl*$Config{lib_ext}>;
+ eval {
+ CORE::link("$installbin/$libperl", $coredll);
+ $packlist->{$coredll} = { from => "$installbin/$libperl",
+ type => 'link' };
+ }
+ ) ||
+ eval {
+ symlink("$installbin/$libperl", $coredll);
+ $packlist->{$coredll} = { from => "$installbin/$libperl",
+ type => 'link' };
+ } ||
+ ( copy("$installbin/$libperl", $coredll) &&
+ push(@corefiles, $coredll)
+ )
} else {
# [als] hard-coded 'libperl' name... not good!
@corefiles = <*.h libperl*.* perl*$Config{lib_ext}>;
link("$installbin/$perl_verbase$ver$exe_ext",
"$installbin/$perl$exe_ext");
}
- link("$installbin/$perl_verbase$ver$exe_ext",
- "$installbin/suid$perl$exe_ext")
- if $d_dosuid;
}
# For development purposes it can be very useful to have multiple perls
next unless m,^/,;
# Use &samepath here because some systems have other dirs linked
# to $mainperldir (like SunOS)
+ next unless -d;
next if samepath($_, $binexp);
next if samepath($_, cwd());
next if ($mainperl_is_instperl && samepath($_, $mainperldir));
my($from,$to) = @_;
my $xto = $to;
- $xto =~ s/^\Q$opts{destdir}\E// if $opts{destdir};
+ $xto =~ s/^\Q$opts{destdir}\E//;
print $opts{verbose} ? " cp $from $xto\n" : " $xto\n"
unless $opts{silent};
print " creating new version of $xto\n"
$name = "$dir/$name" if $dir ne '';
+ return if $name eq 'ExtUtils/XSSymSet.pm' and !$Is_VMS;
+
my $installlib = $installprivlib;
- if ($dir =~ /^auto/ ||
+ if ($dir =~ /^auto\// ||
($name =~ /^(.*)\.(?:pm|pod)$/ && $archpms{$1}) ||
($name =~ /^(.*)\.(?:h|lib)$/i && ($Is_W32 || $Is_NetWare)) ||
- $name eq 'Config_heavy.pl'
+ $name=~/^Config_(heavy\|git)\.pl\z/
) {
$installlib = $installarchlib;
return unless $do_installarchlib;
unlink("$installarchlib/$name");
}
my $xname = "$installlib/$name";
- $xname =~ s/^\Q$opts{destdir}\E// if $opts{destdir};
+ $xname =~ s/^\Q$opts{destdir}\E//;
$packlist->{$xname} = { type => 'file' };
if ($force || compare($_, "$installlib/$name") || $opts{notify}) {
unlink("$installlib/$name");
my($from,$to)=@_;
return 1 if (($^O eq 'VMS') && (-d $from));
my $xto = $to;
- $xto =~ s/^\Q$opts{destdir}\E// if $opts{destdir};
+ $xto =~ s/^\Q$opts{destdir}\E//;
my $perlpodbadsymlink;
if ($from =~ m!^pod/perl[\w-]+\.pod$! &&
-l $from &&