name.
-p Don't install the pod files. [This will break use diagnostics;]
-netware Install correctly on a Netware server.
+ -destdir Prefix installation directories by this string.
EOT
exit;
}
if ($scr_ext) { @scripts = map { "$_$scr_ext" } @scripts; }
-my @pods = $nopods ? () : (<pod/*.pod>);
+my @pods = $nopods ? () : (<pod/*.pod>, 'x2p/a2p.pod');
# Specify here any .pm files that are actually architecture-dependent.
# (Those included with XS extensions under ext/ are automatically
" some tests failed! (Installing anyway.)\n";
} #if (!$Is_NetWare)
+# This will be used to store the packlist
+my $packlist = ExtUtils::Packlist->new("$installarchlib/.packlist");
+
if (($Is_W32 and ! $Is_NetWare) or $Is_Cygwin) {
my $perldll;
safe_unlink("$installbin/$_");
copy("$_", "$installbin/$_");
chmod(0755, "$installbin/$_");
+ $packlist->{"$installbin/$_"} = { type => 'file' };
};
open (LD2, ">$installbin/ld2");
print LD2 <<SHELL;
safe_unlink("$installbin/$perldll");
copy("$perldll", "$installbin/$perldll");
chmod(0755, "$installbin/$perldll");
+ $packlist->{"$installbin/$perldll"} = { type => 'file' };
} # if (($Is_W32 and ! $Is_NetWare) or $Is_Cygwin)
-# This will be used to store the packlist
-my $packlist = ExtUtils::Packlist->new("$installarchlib/.packlist");
-
# First we install the version-numbered executables.
if ($Is_VMS) {
}
else {
# [als] hard-coded 'libperl' name... not good!
- @corefiles = <*.h libperl*.*>;
+ @corefiles = <*.h libperl*.* perl*$Config{lib_ext}>;
# AIX needs perl.exp installed as well.
push(@corefiles,'perl.exp') if $^O eq 'aix';
link("$installbin/$perl_verbase$ver$exe_ext",
"$installbin/$perl$exe_ext");
}
- link("$installbin/s$perl_verbase$ver$exe_ext",
+ link("$installbin/$perl_verbase$ver$exe_ext",
"$installbin/suid$perl$exe_ext")
if $d_dosuid;
}
$packlist->{$xto} = { from => $xfrom, type => 'link' };
};
if ($@) {
- warn $@;
+ warn "Replacing link() with File::Copy::copy(): $@";
print $verbose ? " cp $from $xto\n" : " $xto\n" unless $silent;
print " creating new version of $xto\n"
if $Is_VMS and -e $to and !$silent;
- File::Copy::copy($from, $to)
- ? $success++
- : warn "Couldn't copy $from to $to: $!\n"
- unless $nonono;
+ unless ($nonono or File::Copy::copy($from, $to) and ++$success) {
+ # Might have been that F::C::c can't overwrite the target
+ warn "Couldn't copy $from to $to: $!\n"
+ unless -f $to and (chmod(0666, $to), unlink $to)
+ and File::Copy::copy($from, $to) and ++$success;
+ }
$packlist->{$xto} = { type => 'file' };
}
$success;
$xto =~ s/^\Q$destdir\E// if $destdir;
print $verbose ? " cp $from $xto\n" : " $xto\n" unless $silent;
print " creating new version of $xto\n" if $Is_VMS and -e $to and !$silent;
- File::Copy::copy($from, $to)
- || warn "Couldn't copy $from to $to: $!\n"
- unless $nonono;
+ unless ($nonono or File::Copy::copy($from, $to)) {
+ # Might have been that F::C::c can't overwrite the target
+ warn "Couldn't copy $from to $to: $!\n"
+ unless -f $to and (chmod(0666, $to), unlink $to)
+ and File::Copy::copy($from, $to);
+ }
$packlist->{$xto} = { type => 'file' };
}
my $name = $_;
# Ignore version control directories.
- if (($name eq 'CVS' or $name eq 'RCS' or $name eq '.svn') and -d $name) {
+ if ($name =~ /^(?:CVS|RCS|SCCS|\.svn)\z/ and -d $name) {
$File::Find::prune = 1;
return;
}
# .exists files, .PL files, and test files.
return if $name =~ m{\.orig$|\.rej$|~$|^#.+#$|,v$|^\.exists|\.PL$|\.plc$|\.t$|^test\.pl$} ||
$dir =~ m{/t(?:/|$)};
- # ignore the cpan script in lib/CPAN/bin (installed later with other utils)
- return if $name eq 'cpan';
+ # ignore the cpan script in lib/CPAN/bin, the instmodsh and xsubpp
+ # scripts in lib/ExtUtils, and the prove script in lib/Test/Harness
+ # as well as the corelist script from lib/Module/CoreList/bin
+ # (they're installed later with other utils)
+ return if $name =~ /^(?:cpan|instmodsh|prove|corelist)\z/;
# ignore the Makefiles
return if $name =~ /^makefile$/i;
# ignore the test extensions
return if $dir =~ m{ext/XS/(?:APItest|Typemap)/};
+ # ignore READMEs, MANIFESTs, INSTALL docs, META.ymls and change logs.
+ # Changes.e2x and README.e2x are needed by enc2xs.
+ return if $name =~ m{^(?:README|MANIFEST|META\.yml|INSTALL)$};
+ return if $name =~ m{^(?:TODO|BUGS|CREDITS)$}i;
+ return if $name =~ m{^change(?:s|log)(?:\.libnet)?$}i;
+
$name = "$dir/$name" if $dir ne '';
my $installlib = $installprivlib;
if ($dir =~ /^auto/ ||
($name =~ /^(.*)\.(?:pm|pod)$/ && $archpms{$1}) ||
- ($name =~ /^(.*)\.(?:h|lib)$/i && ($Is_W32 || $Is_NetWare))
+ ($name =~ /^(.*)\.(?:h|lib)$/i && ($Is_W32 || $Is_NetWare)) ||
+ $name eq 'Config_heavy.pl'
) {
$installlib = $installarchlib;
return unless $do_installarchlib;