diff options
Diffstat (limited to 'installperl')
-rwxr-xr-x | installperl | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/installperl b/installperl index 8f8f7e79ef..a9082df737 100755 --- a/installperl +++ b/installperl @@ -167,27 +167,30 @@ foreach $file (@corefiles) { $mainperl_is_instperl = 0; if (-w $mainperldir && ! &samepath($mainperldir, $installbin) && !$nonono) { - # First make sure $mainperldir/perl is not already the same as - # the perl we just installed - if (-x "$mainperldir/perl$exe_ext") { + local($usrbinperl) = "$mainperldir/perl$exe_ext"; + local($instperl) = "$installbin/perl$exe_ext"; + local($expinstperl) = "$binexp/perl$exe_ext"; + + # First make sure $usrbinperl is not already the same as the perl we + # just installed. + if (-x $usrbinperl) { # Try to be clever about mainperl being a symbolic link # to binexp/perl if binexp and installbin are different. $mainperl_is_instperl = - &samepath("$mainperldir/perl$exe_ext", "$installbin/perl$exe_ext") || + &samepath($usrbinperl, $instperl) || (($binexp ne $installbin) && - (-l "$mainperldir/perl$exe_ext") && - ((readlink "$mainperldir/perl$exe_ext") eq "$binexp/perl$exe_ext")); + (-l $usrbinperl) && + ((readlink $usrbinperl) eq $expinstperl)); } if ((! $mainperl_is_instperl) && - (&yn("Many scripts expect perl to be installed as " . - "$mainperldir/perl.\n" . - "Do you wish to have $mainperldir/perl be the same as\n" . - "$binexp/perl? [y] "))) + (&yn("Many scripts expect perl to be installed as $usrbinperl.\n" . + "Do you wish to have $usrbinperl be the same as\n" . + "$expinstperl? [y] "))) { - unlink("$mainperldir/perl$exe_ext"); - CORE::link("$installbin/perl$exe_ext", "$mainperldir/perl$exe_ext") || - symlink("$binexp/perl$exe_ext", "$mainperldir/perl$exe_ext") || - cmd("cp $installbin/perl$exe_ext $mainperldir$exe_ext"); + unlink($usrbinperl); + eval { CORE::link $instperl, $usrbinperl } || + eval { symlink $expinstperl, $usrbinperl } || + cmd("cp $instperl $usrbinperl"); $mainperl_is_instperl = 1; } } |