BEGIN {
require 5.004;
- chdir '..' if !-d 'lib' and -d '..\lib';
+ chdir '..' if !-d 'lib' and -d '../lib';
@INC = 'lib';
$ENV{PERL5LIB} = 'lib';
}
my $perl_verbase = defined($ENV{PERLNAME_VERBASE})
? $ENV{PERLNAME_VERBASE}
: $perl;
+my $dbg = '';
+my $ndbg = '';
+if ( $Is_VMS ) {
+ if ( defined $Config{usevmsdebug} ) {
+ if ( $Config{usevmsdebug} eq 'define' ) {
+ $dbg = 'dbg';
+ $ndbg = 'ndbg';
+ }
+ }
+}
$otherperls = 1;
my $destdir = '';
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;
}
unless $installbin =~ m#^/afs/# || $nonono;
if (!$Is_NetWare) {
+if (!$Is_VMS) {
-x 'perl' . $exe_ext || die "perl isn't executable!\n";
+}
+else {
+-x $ndbg . 'perl' . $exe_ext || die "${ndbg}perl$exe_ext isn't executable!\n";
+ if ($dbg) {
+ -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
# First we install the version-numbered executables.
if ($Is_VMS) {
- safe_unlink("$installbin/$perl$exe_ext");
- copy("perl$exe_ext", "$installbin/$perl$exe_ext");
- chmod(0755, "$installbin/$perl$exe_ext");
- safe_unlink("$installbin/${perl}shr$exe_ext");
- copy("perlshr$exe_ext", "$installbin/${perl}shr$exe_ext");
- chmod(0755, "$installbin/${perl}shr$exe_ext");
+ safe_unlink("$installbin/perl_setup.com");
+ copy("perl_setup.com", "$installbin/perl_setup.com");
+ chmod(0755, "$installbin/perl_setup.com");
+ safe_unlink("$installbin/$dbg$perl$exe_ext");
+ copy("$dbg$perl$exe_ext", "$installbin/$dbg$perl$exe_ext");
+ chmod(0755, "$installbin/$dbg$perl$exe_ext");
+ safe_unlink("$installbin/$dbg${perl}shr$exe_ext");
+ copy("$dbg${perl}shr$exe_ext", "$installbin/$dbg${perl}shr$exe_ext");
+ chmod(0755, "$installbin/$dbg${perl}shr$exe_ext");
+ if ($ndbg) {
+ safe_unlink("$installbin/$ndbg$perl$exe_ext");
+ copy("$ndbg$perl$exe_ext", "$installbin/$ndbg$perl$exe_ext");
+ chmod(0755, "$installbin/$ndbg$perl$exe_ext");
+ safe_unlink("$installbin/${dbg}a2p$exe_ext");
+ copy("x2p/${dbg}a2p$exe_ext", "$installbin/${dbg}a2p$exe_ext");
+ chmod(0755, "$installbin/${dbg}a2p$exe_ext");
+ }
}
elsif ($^O eq 'mpeix') {
# MPE lacks hard links and requires that executables with special
}
# Make links to ordinary names if installbin directory isn't current directory.
-if (!$Is_NetWare) {
+if (!$Is_NetWare && $dbg eq '') {
if (! samepath($installbin, 'x2p')) {
my $base = 'a2p';
$base .= $ver if $versiononly;
$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 and the instmodsh and xsubpp
+ # scripts in lib/ExtUtils (they're installed later with other utils)
+ return if $name =~ /^(?:cpan|instmodsh|xsubpp)\z/;
+ # ignore the Makefiles
+ return if $name =~ /^makefile$/i;
# ignore the test extensions
return if $dir =~ m{ext/XS/(?:APItest|Typemap)/};