X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=installperl;h=d4cb71185ac5ab3aa8fef0f73bae51fa54f82488;hb=dfa3a3d32f999ad1e84b6c1f00ad651a83b7102c;hp=ddbe5956e85fa719cdfc3a6705c6b2b217415d8a;hpb=5f05dabc4054964aa3b10f44f8468547f051cdf8;p=p5sagit%2Fp5-mst-13.2.git diff --git a/installperl b/installperl index ddbe595..d4cb711 100755 --- a/installperl +++ b/installperl @@ -30,6 +30,14 @@ umask 022; @pods = (); +%archpms = (Config => 1, FileHandle => 1, overload => 1); +find(sub { + if ("$File::Find::dir/$_" =~ m{^ext/[^/]+/(.*)\.pm$}) { + (my $pm = $1) =~ s{^lib/}{}; + $archpms{$pm} = 1; + } + }, 'ext'); + $ver = $]; $release = substr($ver,0,3); # Not used presently. $patchlevel = substr($ver,3,2); @@ -160,15 +168,19 @@ push(@corefiles,'perl.exp') if $^O eq 'aix'; # If they have built sperl.o... push(@corefiles,'sperl.o') if -f 'sperl.o'; foreach $file (@corefiles) { - cp_if_diff($file,"$installarchlib/CORE/$file"); - &chmod($file =~ /^libperl/ ? 0555 : 0444,"$installarchlib/CORE/$file"); + # HP-UX (at least) needs to maintain execute permissions + # on dynamically-loaded libraries. + cp_if_diff($file,"$installarchlib/CORE/$file") + and &chmod($file =~ /^\.(so|$dlext)$/ ? 0555 : 0444, + "$installarchlib/CORE/$file"); } # Offer to install perl in a "standard" location $mainperl_is_instperl = 0; -if (-w $mainperldir && ! &samepath($mainperldir, $installbin) && !$nonono) { +if (!$nonono && -t STDIN && -t STDERR + && -w $mainperldir && ! &samepath($mainperldir, $installbin)) { local($usrbinperl) = "$mainperldir/perl$exe_ext"; local($instperl) = "$installbin/perl$exe_ext"; local($expinstperl) = "$binexp/perl$exe_ext"; @@ -180,6 +192,7 @@ if (-w $mainperldir && ! &samepath($mainperldir, $installbin) && !$nonono) { # to binexp/perl if binexp and installbin are different. $mainperl_is_instperl = &samepath($usrbinperl, $instperl) || + &samepath($usrbinperl, $expinstperl) || (($binexp ne $installbin) && (-l $usrbinperl) && ((readlink $usrbinperl) eq $expinstperl)); @@ -344,11 +357,9 @@ sub installlib { $name = "$dir/$name" if $dir ne ''; - # ignore Chip-style patch backups. - return if grep(/^P\d+$/, split(m{/+}, $name)); - my $installlib = $installprivlib; - if ($dir =~ /^auto/ || $name =~ /^(Config|FileHandle|Safe)\.pm$/) { + if ($dir =~ /^auto/ || + ($name =~ /^(.*)\.(?:pm|pod)$/ && $archpms{$1})) { $installlib = $installarchlib; return unless $do_installarchlib; } else { @@ -367,15 +378,11 @@ sub installlib { if (compare($_, "$installlib/$name") || $nonono) { &unlink("$installlib/$name"); mkpath("$installlib/$dir", 1, 0777); - cp_if_diff($_, "$installlib/$name"); # HP-UX (at least) needs to maintain execute permissions # on dynamically-loaded libraries. - if ($name =~ /\.(so|$dlext)$/o) { - &chmod(0555, "$installlib/$name"); - } - else { - &chmod(0444, "$installlib/$name"); - } + cp_if_diff($_, "$installlib/$name") + and &chmod($name =~ /\.(so|$dlext)$/o ? 0555 : 0444, + "$installlib/$name"); } } elsif (-d $_) { mkpath("$installlib/$name", 1, 0777); @@ -390,6 +397,7 @@ sub installlib { # and then try to link against the installed libperl.a, you might # get an error message to the effect that the symbol table is older # than the library. +# Return true if copying occurred. sub cp_if_diff { my($from,$to)=@_; -f $from || die "$0: $from not found"; @@ -405,5 +413,6 @@ sub cp_if_diff { ($atime, $mtime) = (stat $from)[8,9]; utime $atime, $mtime, $to; } + 1; } }