#!./perl
BEGIN {
- require 5.003_90;
+ require 5.004;
+ chdir '..' if !-d 'lib' and -d '..\lib';
@INC = 'lib';
$ENV{PERL5LIB} = 'lib';
}
@pods = (<pod/*.pod>);
%archpms = (Config => 1, FileHandle => 1, overload => 1);
+
+if ($^O eq 'dos') {
+ push(@scripts,'djgpp/fixpmain');
+ $archpms{config} = $archpms{filehand} = 1;
+}
+
find(sub {
if ("$File::Find::dir/$_" =~ m{^ext/[^/]+/(.*)\.pm$}) {
(my $pm = $1) =~ s{^lib/}{};
-x 'perl' . $exe_ext || die "perl isn't executable!\n";
-x 'suidperl' . $exe_ext|| die "suidperl isn't executable!\n" if $d_dosuid;
--x 't/TEST' || warn "WARNING: You've never run 'make test'!!!",
- " (Installing anyway.)\n";
+-x 't/TEST' || $^O eq 'MSWin32'
+ || warn "WARNING: You've never run 'make test'!!!",
+ " (Installing anyway.)\n";
+
+if ($^O eq 'MSWin32') {
+
+-f 'perl.' . $dlext || die "No perl DLL built\n";
+
+# Install the DLL
+
+safe_unlink("$installbin/perl.$dlext");
+copy("perl.$dlext", "$installbin/perl.$dlext");
+chmod(0755, "$installbin/perl.$dlext");
+}
# First we install the version-numbered executables.
-safe_unlink("$installbin/perl$ver$exe_ext");
-copy("perl$exe_ext", "$installbin/perl$ver$exe_ext");
-chmod(0755, "$installbin/perl$ver$exe_ext");
+if ($^O ne 'dos') {
+ safe_unlink("$installbin/perl$ver$exe_ext");
+ copy("perl$exe_ext", "$installbin/perl$ver$exe_ext");
+ chmod(0755, "$installbin/perl$ver$exe_ext");
+} else {
+ safe_unlink("$installbin/perl.exe");
+ copy("perl.exe", "$installbin/perl.exe");
+}
safe_unlink("$installbin/sperl$ver$exe_ext");
if ($d_dosuid) {
push(@corefiles,'sperl.o') if -f 'sperl.o';
foreach $file (@corefiles) {
# HP-UX (at least) needs to maintain execute permissions
- # on dynamically-loaded libraries.
+ # on dynamically-loadable libraries. So we do it for all.
copy_if_diff($file,"$installarchlib/CORE/$file")
- and chmod($file =~ /^\.(so|$dlext)$/ ? 0555 : 0444,
+ and chmod($file =~ /\.(so|\Q$dlext\E)$/ ? 0555 : 0444,
"$installarchlib/CORE/$file");
}
+# Install main perl executables
+# Make links to ordinary names if installbin directory isn't current directory.
+
+if (! $versiononly && ! samepath($installbin, '.') && ($^O ne 'dos')) {
+ safe_unlink("$installbin/perl$exe_ext", "$installbin/suidperl$exe_ext");
+ link("$installbin/perl$ver$exe_ext", "$installbin/perl$exe_ext");
+ link("$installbin/sperl$ver$exe_ext", "$installbin/suidperl$exe_ext")
+ if $d_dosuid;
+}
+
# Offer to install perl in a "standard" location
$mainperl_is_instperl = 0;
-if (!$versiononly && !$nonono && -t STDIN && -t STDERR
+if (!$versiononly && !$nonono && $^O ne 'MSWin32' && -t STDIN && -t STDERR
&& -w $mainperldir && ! samepath($mainperldir, $installbin)) {
local($usrbinperl) = "$mainperldir/perl$exe_ext";
local($instperl) = "$installbin/perl$exe_ext";
# Make links to ordinary names if installbin directory isn't current directory.
-if (! $versiononly && ! samepath($installbin, '.')) {
- safe_unlink("$installbin/perl$exe_ext", "$installbin/suidperl$exe_ext");
- link("$installbin/perl$ver$exe_ext", "$installbin/perl$exe_ext");
- link("$installbin/sperl$ver$exe_ext", "$installbin/suidperl$exe_ext")
- if $d_dosuid;
-}
-
if (!$versiononly && ! samepath($installbin, 'x2p')) {
safe_unlink("$installbin/a2p$exe_ext");
copy("x2p/a2p$exe_ext", "$installbin/a2p$exe_ext");
if (! $versiononly) {
safe_unlink("$installscript/pstruct");
- link("$installscript/c2ph","$installscript/pstruct");
+ if ($^O eq 'dos') {
+ copy("$installscript/c2ph","$installscript/pstruct");
+ } else {
+ link("$installscript/c2ph","$installscript/pstruct");
+ }
}
# Install pod pages. Where? I guess in $installprivlib/pod.
"${installarchlib}/pod/perldiag.pod");
if (compare($from, $to) || $nonono) {
mkpath("${installarchlib}/pod", 1, 0777);
- link($from, $to);
+ unlink($to);
+ link($from, $to) if ($^O ne 'dos');
}
}
if (!$versiononly) {
- $dirsep = ($^O eq 'os2') ? ';' : ':' ;
+ $dirsep = ($^O eq 'os2' || $^O eq 'MSWin32') ? ';' : ':' ;
($path = $ENV{"PATH"}) =~ s:\\:/:g ;
@path = split(/$dirsep/, $path);
@otherperls = ();
foreach $name (@names) {
next unless -e $name;
- chmod 0777, $name if $^O eq 'os2';
+ chmod 0777, $name if ($^O eq 'os2' || $^O eq 'MSWin32');
print STDERR " unlink $name\n";
( CORE::unlink($name) and ++$cnt
or warn "Couldn't unlink $name: $!\n" ) unless $nonono;
local @names = @_;
foreach $name (@names) {
next unless -e $name;
- chmod 0777, $name if $^O eq 'os2';
+ chmod 0777, $name if ($^O eq 'os2' || $^O eq 'MSWin32');
print STDERR " unlink $name\n";
next if CORE::unlink($name);
warn "Couldn't unlink $name: $!\n";
eval {
CORE::link($from, $to)
? $success++
- : warn "Couldn't link $from to $to: $!\n"
+ : ($from =~ m#^/afs/# || $to =~ m#^/afs/#)
+ ? die "AFS" # okay inside eval {}
+ : warn "Couldn't link $from to $to: $!\n"
unless $nonono;
};
if ($@) {
sub chmod {
local($mode,$name) = @_;
+ return if ($^O eq 'dos');
printf STDERR " chmod %o %s\n", $mode, $name;
CORE::chmod($mode,$name)
|| warn sprintf("Couldn't chmod %o %s: $!\n", $mode, $name)
sub samepath {
local($p1, $p2) = @_;
- local($dev1, $ino1, $dev2, $ino2);
+
+ return (lc($p1) eq lc($p2)) if ($^O eq 'MSWin32');
if ($p1 ne $p2) {
+ local($dev1, $ino1, $dev2, $ino2);
($dev1, $ino1) = stat($p1);
($dev2, $ino2) = stat($p2);
($dev1 == $dev2 && $ino1 == $ino2);
local($depth) = $dir ? "lib/$dir" : "lib";
my $name = $_;
+
+ if ($name eq 'CVS' && -d $name) {
+ $File::Find::prune = 1;
+ return;
+ }
# ignore patch backups and the .exists files.
return if $name =~ m{\.orig$|~$|^\.exists};
my $installlib = $installprivlib;
if ($dir =~ /^auto/ ||
- ($name =~ /^(.*)\.(?:pm|pod)$/ && $archpms{$1})) {
+ ($name =~ /^(.*)\.(?:pm|pod)$/ && $archpms{$1}) ||
+ ($name =~ /^(.*)\.(?:h|lib)$/i && $^O eq 'MSWin32')
+ ) {
$installlib = $installarchlib;
return unless $do_installarchlib;
} else {
}
if (-f $_) {
- if (/\.al$/ || /\.ix$/) {
+ if (/\.(?:al|ix)$/ && !($dir =~ m[^auto/(.*)$] && $archpms{$1})) {
$installlib = $installprivlib;
#We're installing *.al and *.ix files into $installprivlib,
#but we have to delete old *.al and *.ix files from the 5.000