| 1 | #!./perl
|
|---|
| 2 |
|
|---|
| 3 | BEGIN {
|
|---|
| 4 | require 5.004;
|
|---|
| 5 | chdir '..' if !-d 'lib' and -d '../lib';
|
|---|
| 6 | @INC = 'lib';
|
|---|
| 7 | $ENV{PERL5LIB} = 'lib';
|
|---|
| 8 | }
|
|---|
| 9 |
|
|---|
| 10 | use strict;
|
|---|
| 11 | my ($Is_VMS, $Is_W32, $Is_OS2, $Is_Cygwin, $Is_Darwin,
|
|---|
| 12 | $nonono, $dostrip, $versiononly, $silent, $verbose, $force,
|
|---|
| 13 | $otherperls, $archname, $Is_NetWare, $nwinstall, $nopods);
|
|---|
| 14 | use vars qw /$depth/;
|
|---|
| 15 |
|
|---|
| 16 | BEGIN {
|
|---|
| 17 | $Is_VMS = $^O eq 'VMS';
|
|---|
| 18 | $Is_W32 = $^O eq 'MSWin32';
|
|---|
| 19 | $Is_OS2 = $^O eq 'os2';
|
|---|
| 20 | $Is_Cygwin = $^O eq 'cygwin';
|
|---|
| 21 | $Is_Darwin = $^O eq 'darwin';
|
|---|
| 22 | if ($Is_VMS) { eval 'use VMS::Filespec;' }
|
|---|
| 23 | }
|
|---|
| 24 |
|
|---|
| 25 | my $scr_ext = ($Is_VMS ? '.Com' : $Is_W32 ? '.bat' : '');
|
|---|
| 26 |
|
|---|
| 27 | use File::Find;
|
|---|
| 28 | use File::Compare;
|
|---|
| 29 | use File::Copy ();
|
|---|
| 30 | use File::Path ();
|
|---|
| 31 | use ExtUtils::Packlist;
|
|---|
| 32 | use Config;
|
|---|
| 33 | use subs qw(unlink link chmod);
|
|---|
| 34 |
|
|---|
| 35 | if ($Config{d_umask}) {
|
|---|
| 36 | umask(022); # umasks like 077 aren't that useful for installations
|
|---|
| 37 | }
|
|---|
| 38 |
|
|---|
| 39 | $Is_NetWare = $Config{osname} eq 'NetWare';
|
|---|
| 40 | if ($Is_NetWare) {
|
|---|
| 41 | $Is_W32 = 0;
|
|---|
| 42 | $scr_ext = '.pl';
|
|---|
| 43 | }
|
|---|
| 44 |
|
|---|
| 45 | # override the ones in the rest of the script
|
|---|
| 46 | sub mkpath {
|
|---|
| 47 | File::Path::mkpath(@_) unless $nonono;
|
|---|
| 48 | }
|
|---|
| 49 |
|
|---|
| 50 | my $mainperldir = "/usr/bin";
|
|---|
| 51 | my $exe_ext = $Config{exe_ext};
|
|---|
| 52 |
|
|---|
| 53 | # Allow ``make install PERLNAME=something_besides_perl'':
|
|---|
| 54 | my $perl = defined($ENV{PERLNAME}) ? $ENV{PERLNAME} : 'perl';
|
|---|
| 55 |
|
|---|
| 56 | # This is the base used for versioned names, like "perl5.6.0".
|
|---|
| 57 | # It's separate because a common use of $PERLNAME is to install
|
|---|
| 58 | # perl as "perl5", if that's used as base for versioned files you
|
|---|
| 59 | # get "perl55.6.0".
|
|---|
| 60 | my $perl_verbase = defined($ENV{PERLNAME_VERBASE})
|
|---|
| 61 | ? $ENV{PERLNAME_VERBASE}
|
|---|
| 62 | : $perl;
|
|---|
| 63 | my $dbg = '';
|
|---|
| 64 | my $ndbg = '';
|
|---|
| 65 | if ( $Is_VMS ) {
|
|---|
| 66 | if ( defined $Config{usevmsdebug} ) {
|
|---|
| 67 | if ( $Config{usevmsdebug} eq 'define' ) {
|
|---|
| 68 | $dbg = 'dbg';
|
|---|
| 69 | $ndbg = 'ndbg';
|
|---|
| 70 | }
|
|---|
| 71 | }
|
|---|
| 72 | }
|
|---|
| 73 |
|
|---|
| 74 | $otherperls = 1;
|
|---|
| 75 | my $destdir = '';
|
|---|
| 76 | while (@ARGV) {
|
|---|
| 77 | $nonono = 1 if $ARGV[0] eq '-n';
|
|---|
| 78 | $dostrip = 1 if $ARGV[0] eq '-s';
|
|---|
| 79 | $versiononly = 1 if $ARGV[0] eq '-v';
|
|---|
| 80 | $versiononly = 0 if $ARGV[0] eq '+v';
|
|---|
| 81 | $silent = 1 if $ARGV[0] eq '-S';
|
|---|
| 82 | $otherperls = 0 if $ARGV[0] eq '-o';
|
|---|
| 83 | $force = 1 if $ARGV[0] eq '-f';
|
|---|
| 84 | $verbose = 1 if $ARGV[0] eq '-V' || $ARGV [0] eq '-n';
|
|---|
| 85 | $archname = 1 if $ARGV[0] eq '-A';
|
|---|
| 86 | $nwinstall = 1 if $ARGV[0] eq '-netware';
|
|---|
| 87 | $nopods = 1 if $ARGV[0] eq '-p';
|
|---|
| 88 | $destdir = $1 if $ARGV[0] =~ /^-?-destdir=(.*)$/;
|
|---|
| 89 | if ($ARGV[0] eq '-?' or $ARGV[0] =~ /^-?-h/) {
|
|---|
| 90 | print <<"EOT";
|
|---|
| 91 | Usage $0: [switches]
|
|---|
| 92 | -n Don't actually run any commands; just print them.
|
|---|
| 93 | -s Run strip on installed binaries.
|
|---|
| 94 | -v Only install perl as a binary with the version number in the name.
|
|---|
| 95 | (Override whatever config.sh says)
|
|---|
| 96 | +v Install perl as "perl" and as a binary with the version number in
|
|---|
| 97 | the name. (Override whatever config.sh says)
|
|---|
| 98 | -S Silent mode.
|
|---|
| 99 | -f Force installation (don't check if same version is there)
|
|---|
| 100 | -o Skip checking for other copies of perl in your PATH.
|
|---|
| 101 | -V Verbose mode.
|
|---|
| 102 | -A Also install perl with the architecture's name in the perl binary's
|
|---|
| 103 | name.
|
|---|
| 104 | -p Don't install the pod files. [This will break use diagnostics;]
|
|---|
| 105 | -netware Install correctly on a Netware server.
|
|---|
| 106 | -destdir Prefix installation directories by this string.
|
|---|
| 107 | EOT
|
|---|
| 108 | exit;
|
|---|
| 109 | }
|
|---|
| 110 | shift;
|
|---|
| 111 | }
|
|---|
| 112 |
|
|---|
| 113 | $versiononly = 1 if $Config{versiononly} && !defined $versiononly;
|
|---|
| 114 | my (@scripts, @tolink);
|
|---|
| 115 | open SCRIPTS, "utils.lst" or die "Can't open utils.lst: $!";
|
|---|
| 116 | while (<SCRIPTS>) {
|
|---|
| 117 | next if /^#/;
|
|---|
| 118 | s/\s*#\s*pod\s*=.*//; # install script regardless of pod location
|
|---|
| 119 | next if /a2p/; # a2p is binary, to be installed separately
|
|---|
| 120 | chomp;
|
|---|
| 121 | if (/(\S*)\s*#\s*link\s*=\s*(\S*)/) {
|
|---|
| 122 | push @scripts, $1;
|
|---|
| 123 | push @tolink, [$1, $2];
|
|---|
| 124 | } else {
|
|---|
| 125 | push @scripts, $_;
|
|---|
| 126 | }
|
|---|
| 127 | }
|
|---|
| 128 | close SCRIPTS;
|
|---|
| 129 |
|
|---|
| 130 | if ($scr_ext) { @scripts = map { "$_$scr_ext" } @scripts; }
|
|---|
| 131 |
|
|---|
| 132 | my @pods = $nopods ? () : (<pod/*.pod>, 'x2p/a2p.pod');
|
|---|
| 133 |
|
|---|
| 134 | # Specify here any .pm files that are actually architecture-dependent.
|
|---|
| 135 | # (Those included with XS extensions under ext/ are automatically
|
|---|
| 136 | # added later.)
|
|---|
| 137 | # Now that the default privlib has the full perl version number included,
|
|---|
| 138 | # we no longer have to play the trick of sticking version-specific .pm
|
|---|
| 139 | # files under the archlib directory.
|
|---|
| 140 | my %archpms = (
|
|---|
| 141 | Config => 1,
|
|---|
| 142 | lib => 1,
|
|---|
| 143 | Cwd => 1,
|
|---|
| 144 | );
|
|---|
| 145 |
|
|---|
| 146 | if ($^O eq 'dos') {
|
|---|
| 147 | push(@scripts,'djgpp/fixpmain');
|
|---|
| 148 | $archpms{config} = $archpms{filehand} = 1;
|
|---|
| 149 | }
|
|---|
| 150 |
|
|---|
| 151 | if ((-e "testcompile") && (defined($ENV{'COMPILE'}))) {
|
|---|
| 152 | push(@scripts, map("$_.exe", @scripts));
|
|---|
| 153 | }
|
|---|
| 154 |
|
|---|
| 155 | find(sub {
|
|---|
| 156 | if ("$File::Find::dir/$_" =~ m{^ext\b(.*)/([^/]+)\.pm$}) {
|
|---|
| 157 | my($path, $modname) = ($1,$2);
|
|---|
| 158 |
|
|---|
| 159 | # strip trailing component first
|
|---|
| 160 | $path =~ s{/[^/]*$}{};
|
|---|
| 161 |
|
|---|
| 162 | # strip optional "/lib";
|
|---|
| 163 | $path =~ s{/lib\b}{};
|
|---|
| 164 |
|
|---|
| 165 | # strip any leading /
|
|---|
| 166 | $path =~ s{^/}{};
|
|---|
| 167 |
|
|---|
| 168 | # reconstitute canonical module name
|
|---|
| 169 | $modname = "$path/$modname" if length $path;
|
|---|
| 170 |
|
|---|
| 171 | # remember it
|
|---|
| 172 | $archpms{$modname} = 1;
|
|---|
| 173 | }
|
|---|
| 174 | }, 'ext');
|
|---|
| 175 |
|
|---|
| 176 | # print "[$_]\n" for sort keys %archpms;
|
|---|
| 177 |
|
|---|
| 178 | my $ver = $Config{version};
|
|---|
| 179 | my $release = substr($],0,3); # Not used currently.
|
|---|
| 180 | my $patchlevel = substr($],3,2);
|
|---|
| 181 | die "Patchlevel of perl ($patchlevel)",
|
|---|
| 182 | "and patchlevel of config.sh ($Config{'PERL_VERSION'}) don't match\n"
|
|---|
| 183 | if $patchlevel != $Config{'PERL_VERSION'};
|
|---|
| 184 |
|
|---|
| 185 | # Fetch some frequently-used items from %Config
|
|---|
| 186 | my $installbin = "$destdir$Config{installbin}";
|
|---|
| 187 | my $installscript = "$destdir$Config{installscript}";
|
|---|
| 188 | my $installprivlib = "$destdir$Config{installprivlib}";
|
|---|
| 189 | my $installarchlib = "$destdir$Config{installarchlib}";
|
|---|
| 190 | my $installsitelib = "$destdir$Config{installsitelib}";
|
|---|
| 191 | my $installsitearch = "$destdir$Config{installsitearch}";
|
|---|
| 192 | my $installman1dir = "$destdir$Config{installman1dir}";
|
|---|
| 193 | my $man1ext = $Config{man1ext};
|
|---|
| 194 | my $libperl = $Config{libperl};
|
|---|
| 195 | # Shared library and dynamic loading suffixes.
|
|---|
| 196 | my $so = $Config{so};
|
|---|
| 197 | my $dlext = $Config{dlext};
|
|---|
| 198 | my $dlsrc = $Config{dlsrc};
|
|---|
| 199 | if ($^O eq 'os390') {
|
|---|
| 200 | my $pwd;
|
|---|
| 201 | chomp($pwd=`pwd`);
|
|---|
| 202 | my $archlibexp = $Config{archlibexp};
|
|---|
| 203 | my $usedl = $Config{usedl};
|
|---|
| 204 | if ($usedl eq 'define') {
|
|---|
| 205 | `./$^X -pibak -e 's{$pwd\/libperl.x}{$archlibexp/CORE/libperl.x}' lib/Config.pm`;
|
|---|
| 206 | }
|
|---|
| 207 | }
|
|---|
| 208 |
|
|---|
| 209 | if ($nwinstall) {
|
|---|
| 210 | # This is required only if we are installing on a NetWare server
|
|---|
| 211 | $installscript = $Config{installnwscripts};
|
|---|
| 212 | $installprivlib = $Config{installnwlib};
|
|---|
| 213 | $installarchlib = $Config{installnwlib};
|
|---|
| 214 | $installsitelib = $Config{installnwlib};
|
|---|
| 215 | }
|
|---|
| 216 |
|
|---|
| 217 | my $d_dosuid = $Config{d_dosuid};
|
|---|
| 218 | my $binexp = $Config{binexp};
|
|---|
| 219 |
|
|---|
| 220 | if ($Is_VMS) { # Hang in there until File::Spec hits the big time
|
|---|
| 221 | foreach ( \$installbin, \$installscript, \$installprivlib,
|
|---|
| 222 | \$installarchlib, \$installsitelib, \$installsitearch,
|
|---|
| 223 | \$installman1dir ) {
|
|---|
| 224 | $$_ = unixify($$_); $$_ =~ s:/$::;
|
|---|
| 225 | }
|
|---|
| 226 | }
|
|---|
| 227 |
|
|---|
| 228 | # Do some quick sanity checks.
|
|---|
| 229 |
|
|---|
| 230 | if (!$nonono && $d_dosuid && $>) { die "You must run as root to install suidperl\n"; }
|
|---|
| 231 |
|
|---|
| 232 | $installbin || die "No installbin directory in config.sh\n";
|
|---|
| 233 | -d $installbin || mkpath($installbin, $verbose, 0777);
|
|---|
| 234 | -d $installbin || $nonono || die "$installbin is not a directory\n";
|
|---|
| 235 | -w $installbin || $nonono || die "$installbin is not writable by you\n"
|
|---|
| 236 | unless $installbin =~ m#^/afs/# || $nonono;
|
|---|
| 237 |
|
|---|
| 238 | if (!$Is_NetWare) {
|
|---|
| 239 | if (!$Is_VMS) {
|
|---|
| 240 | -x 'perl' . $exe_ext || die "perl isn't executable!\n";
|
|---|
| 241 | }
|
|---|
| 242 | else {
|
|---|
| 243 | -x $ndbg . 'perl' . $exe_ext || die "${ndbg}perl$exe_ext isn't executable!\n";
|
|---|
| 244 | if ($dbg) {
|
|---|
| 245 | -x $dbg . 'perl' . $exe_ext || die "${dbg}perl$exe_ext isn't executable!\n";
|
|---|
| 246 | }
|
|---|
| 247 | }
|
|---|
| 248 | -x 'suidperl' . $exe_ext|| die "suidperl isn't executable!\n" if $d_dosuid;
|
|---|
| 249 |
|
|---|
| 250 | -f 't/rantests' || $Is_W32
|
|---|
| 251 | || warn "WARNING: You've never run 'make test' or",
|
|---|
| 252 | " some tests failed! (Installing anyway.)\n";
|
|---|
| 253 | } #if (!$Is_NetWare)
|
|---|
| 254 |
|
|---|
| 255 | # This will be used to store the packlist
|
|---|
| 256 | my $packlist = ExtUtils::Packlist->new("$installarchlib/.packlist");
|
|---|
| 257 |
|
|---|
| 258 | if (($Is_W32 and ! $Is_NetWare) or $Is_Cygwin) {
|
|---|
| 259 | my $perldll;
|
|---|
| 260 |
|
|---|
| 261 | if ($Is_Cygwin) {
|
|---|
| 262 | $perldll = $libperl;
|
|---|
| 263 | my $v_e_r_s = $ver; $v_e_r_s =~ tr/./_/;
|
|---|
| 264 | $perldll =~ s/(\..*)?$/$v_e_r_s.$dlext/;
|
|---|
| 265 | $perldll =~ s/^lib/cyg/;
|
|---|
| 266 | if ($Config{useshrplib} eq 'true') {
|
|---|
| 267 | # install ld2 and perlld as well
|
|---|
| 268 | foreach ('ld2', 'perlld') {
|
|---|
| 269 | safe_unlink("$installbin/$_");
|
|---|
| 270 | copy("$_", "$installbin/$_");
|
|---|
| 271 | chmod(0755, "$installbin/$_");
|
|---|
| 272 | $packlist->{"$installbin/$_"} = { type => 'file' };
|
|---|
| 273 | };
|
|---|
| 274 | open (LD2, ">$installbin/ld2");
|
|---|
| 275 | print LD2 <<SHELL;
|
|---|
| 276 | #!/bin/sh
|
|---|
| 277 | #
|
|---|
| 278 | # ld wrapper, passes all args to perlld;
|
|---|
| 279 | #
|
|---|
| 280 | for trythis in $installbin/perl
|
|---|
| 281 | do
|
|---|
| 282 | if [ -x \$trythis ]
|
|---|
| 283 | then
|
|---|
| 284 | \$trythis $installbin/perlld "\$\@"
|
|---|
| 285 | exit \$?
|
|---|
| 286 | fi
|
|---|
| 287 | done
|
|---|
| 288 | # hard luck!
|
|---|
| 289 | echo I see no perl executable around there
|
|---|
| 290 | echo perl is required to build dynamic libraries
|
|---|
| 291 | echo look if the path to perl in /bin/ld2 is correct
|
|---|
| 292 | exit 1
|
|---|
| 293 | SHELL
|
|---|
| 294 | close LD2;
|
|---|
| 295 | chmod(0755, "$installbin/ld2");
|
|---|
| 296 | };
|
|---|
| 297 | } else {
|
|---|
| 298 | $perldll = 'perl58.' . $dlext;
|
|---|
| 299 | }
|
|---|
| 300 |
|
|---|
| 301 | if ($dlsrc ne "dl_none.xs") {
|
|---|
| 302 | -f $perldll || die "No perl DLL built\n";
|
|---|
| 303 | }
|
|---|
| 304 |
|
|---|
| 305 | # Install the DLL
|
|---|
| 306 | safe_unlink("$installbin/$perldll");
|
|---|
| 307 | copy("$perldll", "$installbin/$perldll");
|
|---|
| 308 | chmod(0755, "$installbin/$perldll");
|
|---|
| 309 | $packlist->{"$installbin/$perldll"} = { type => 'file' };
|
|---|
| 310 | } # if (($Is_W32 and ! $Is_NetWare) or $Is_Cygwin)
|
|---|
| 311 |
|
|---|
| 312 | # First we install the version-numbered executables.
|
|---|
| 313 |
|
|---|
| 314 | if ($Is_VMS) {
|
|---|
| 315 | safe_unlink("$installbin/perl_setup.com");
|
|---|
| 316 | copy("perl_setup.com", "$installbin/perl_setup.com");
|
|---|
| 317 | chmod(0755, "$installbin/perl_setup.com");
|
|---|
| 318 | safe_unlink("$installbin/$dbg$perl$exe_ext");
|
|---|
| 319 | copy("$dbg$perl$exe_ext", "$installbin/$dbg$perl$exe_ext");
|
|---|
| 320 | chmod(0755, "$installbin/$dbg$perl$exe_ext");
|
|---|
| 321 | safe_unlink("$installbin/$dbg${perl}shr$exe_ext");
|
|---|
| 322 | copy("$dbg${perl}shr$exe_ext", "$installbin/$dbg${perl}shr$exe_ext");
|
|---|
| 323 | chmod(0755, "$installbin/$dbg${perl}shr$exe_ext");
|
|---|
| 324 | if ($ndbg) {
|
|---|
| 325 | safe_unlink("$installbin/$ndbg$perl$exe_ext");
|
|---|
| 326 | copy("$ndbg$perl$exe_ext", "$installbin/$ndbg$perl$exe_ext");
|
|---|
| 327 | chmod(0755, "$installbin/$ndbg$perl$exe_ext");
|
|---|
| 328 | safe_unlink("$installbin/${dbg}a2p$exe_ext");
|
|---|
| 329 | copy("x2p/${dbg}a2p$exe_ext", "$installbin/${dbg}a2p$exe_ext");
|
|---|
| 330 | chmod(0755, "$installbin/${dbg}a2p$exe_ext");
|
|---|
| 331 | }
|
|---|
| 332 | }
|
|---|
| 333 | elsif ($^O eq 'mpeix') {
|
|---|
| 334 | # MPE lacks hard links and requires that executables with special
|
|---|
| 335 | # capabilities reside in the MPE namespace.
|
|---|
| 336 | safe_unlink("$installbin/perl$ver$exe_ext", $Config{perlpath});
|
|---|
| 337 | # Install the primary executable into the MPE namespace as perlpath.
|
|---|
| 338 | copy("perl$exe_ext", $Config{perlpath});
|
|---|
| 339 | chmod(0755, $Config{perlpath});
|
|---|
| 340 | # Create a backup copy with the version number.
|
|---|
| 341 | link($Config{perlpath}, "$installbin/perl$ver$exe_ext");
|
|---|
| 342 | }
|
|---|
| 343 | elsif ($^O ne 'dos') {
|
|---|
| 344 | if (!$Is_NetWare) {
|
|---|
| 345 | safe_unlink("$installbin/$perl_verbase$ver$exe_ext");
|
|---|
| 346 | copy("perl$exe_ext", "$installbin/$perl_verbase$ver$exe_ext");
|
|---|
| 347 | strip("$installbin/$perl_verbase$ver$exe_ext");
|
|---|
| 348 | chmod(0755, "$installbin/$perl_verbase$ver$exe_ext");
|
|---|
| 349 | }
|
|---|
| 350 | else {
|
|---|
| 351 | # If installing onto a NetWare server
|
|---|
| 352 | if ($nwinstall) {
|
|---|
| 353 | # Copy perl.nlm, echo.nlm, type.nlm, a2p.nlm & cgi2perl.nlm
|
|---|
| 354 | mkpath($Config{installnwsystem}, 1, 0777);
|
|---|
| 355 | copy("netware\\".$ENV{'MAKE_TYPE'}."\\perl.nlm", $Config{installnwsystem});
|
|---|
| 356 | copy("netware\\testnlm\\echo\\echo.nlm", $Config{installnwsystem});
|
|---|
| 357 | copy("netware\\testnlm\\type\\type.nlm", $Config{installnwsystem});
|
|---|
| 358 | copy("x2p\\a2p.nlm", $Config{installnwsystem});
|
|---|
| 359 | chmod(0755, "$Config{installnwsystem}\\perl.nlm");
|
|---|
| 360 | mkpath($Config{installnwlcgi}, 1, 0777);
|
|---|
| 361 | copy("lib\\auto\\cgi2perl\\cgi2perl.nlm", $Config{installnwlcgi});
|
|---|
| 362 | }
|
|---|
| 363 | } #if (!$Is_NetWare)
|
|---|
| 364 | }
|
|---|
| 365 | else {
|
|---|
| 366 | safe_unlink("$installbin/$perl.exe");
|
|---|
| 367 | copy("perl.exe", "$installbin/$perl.exe");
|
|---|
| 368 | }
|
|---|
| 369 |
|
|---|
| 370 | safe_unlink("$installbin/s$perl_verbase$ver$exe_ext");
|
|---|
| 371 | if ($d_dosuid) {
|
|---|
| 372 | copy("suidperl$exe_ext", "$installbin/s$perl_verbase$ver$exe_ext");
|
|---|
| 373 | chmod(04711, "$installbin/s$perl_verbase$ver$exe_ext");
|
|---|
| 374 | }
|
|---|
| 375 |
|
|---|
| 376 | # Install library files.
|
|---|
| 377 |
|
|---|
| 378 | my ($do_installarchlib, $do_installprivlib) = (0, 0);
|
|---|
| 379 |
|
|---|
| 380 | mkpath($installprivlib, $verbose, 0777);
|
|---|
| 381 | mkpath($installarchlib, $verbose, 0777);
|
|---|
| 382 | mkpath($installsitelib, $verbose, 0777) if ($installsitelib);
|
|---|
| 383 | mkpath($installsitearch, $verbose, 0777) if ($installsitearch);
|
|---|
| 384 |
|
|---|
| 385 | if (chdir "lib") {
|
|---|
| 386 | $do_installarchlib = ! samepath($installarchlib, '.');
|
|---|
| 387 | $do_installprivlib = ! samepath($installprivlib, '.');
|
|---|
| 388 | $do_installprivlib = 0 if $versiononly && !($installprivlib =~ m/\Q$ver/);
|
|---|
| 389 |
|
|---|
| 390 | if ($do_installarchlib || $do_installprivlib) {
|
|---|
| 391 | find(\&installlib, '.');
|
|---|
| 392 | }
|
|---|
| 393 | chdir ".." || die "Can't cd back to source directory: $!\n";
|
|---|
| 394 | }
|
|---|
| 395 | else {
|
|---|
| 396 | warn "Can't cd to lib to install lib files: $!\n";
|
|---|
| 397 | }
|
|---|
| 398 |
|
|---|
| 399 | # Install header files and libraries.
|
|---|
| 400 | mkpath("$installarchlib/CORE", $verbose, 0777);
|
|---|
| 401 | my @corefiles;
|
|---|
| 402 | if ($Is_VMS) { # We did core file selection during build
|
|---|
| 403 | my $coredir = "lib/$Config{archname}/$ver/CORE";
|
|---|
| 404 | $coredir =~ tr/./_/;
|
|---|
| 405 | map { s|^$coredir/||i; } @corefiles = <$coredir/*.*>;
|
|---|
| 406 | }
|
|---|
| 407 | else {
|
|---|
| 408 | # [als] hard-coded 'libperl' name... not good!
|
|---|
| 409 | @corefiles = <*.h *.inc libperl*.* perl*$Config{lib_ext}>;
|
|---|
| 410 |
|
|---|
| 411 | # AIX needs perl.exp installed as well.
|
|---|
| 412 | push(@corefiles,'perl.exp') if $^O eq 'aix';
|
|---|
| 413 | if ($^O eq 'mpeix') {
|
|---|
| 414 | # MPE needs mpeixish.h installed as well.
|
|---|
| 415 | mkpath("$installarchlib/CORE/mpeix", $verbose, 0777);
|
|---|
| 416 | push(@corefiles,'mpeix/mpeixish.h');
|
|---|
| 417 | }
|
|---|
| 418 | # If they have built sperl.o...
|
|---|
| 419 | push(@corefiles,'sperl.o') if -f 'sperl.o';
|
|---|
| 420 | }
|
|---|
| 421 | foreach my $file (@corefiles) {
|
|---|
| 422 | # HP-UX (at least) needs to maintain execute permissions
|
|---|
| 423 | # on dynamically-loadable libraries. So we do it for all.
|
|---|
| 424 | if (copy_if_diff($file,"$installarchlib/CORE/$file")) {
|
|---|
| 425 | if ($file =~ /\.(\Q$so\E|\Q$dlext\E)$/) {
|
|---|
| 426 | strip("-S", "$installarchlib/CORE/$file") if $^O =~ /^(rhapsody|darwin)$/;
|
|---|
| 427 | chmod(0555, "$installarchlib/CORE/$file");
|
|---|
| 428 | } else {
|
|---|
| 429 | chmod(0444, "$installarchlib/CORE/$file");
|
|---|
| 430 | }
|
|---|
| 431 | }
|
|---|
| 432 | }
|
|---|
| 433 |
|
|---|
| 434 | # Switch in the 5.005-threads versions of he threadsafe queue and semaphore
|
|---|
| 435 | # modules if so needed.
|
|---|
| 436 | if ($Config{use5005threads}) {
|
|---|
| 437 | for my $m (qw(Queue Semaphore)) {
|
|---|
| 438 | my $t = "$installprivlib/Thread/$m.pm";
|
|---|
| 439 | unlink $t;
|
|---|
| 440 | copy("ext/Thread/$m.pmx", $t);
|
|---|
| 441 | chmod(0444, $t);
|
|---|
| 442 | }
|
|---|
| 443 | }
|
|---|
| 444 |
|
|---|
| 445 | # Install main perl executables
|
|---|
| 446 | # Make links to ordinary names if installbin directory isn't current directory.
|
|---|
| 447 |
|
|---|
| 448 | if (! $versiononly && ! samepath($installbin, '.') && ($^O ne 'dos') && ! $Is_VMS && ! $Is_NetWare) {
|
|---|
| 449 | safe_unlink("$installbin/$perl$exe_ext", "$installbin/suid$perl$exe_ext");
|
|---|
| 450 | if ($^O eq 'mpeix') {
|
|---|
| 451 | # MPE doesn't support hard links, so use a symlink.
|
|---|
| 452 | # We don't want another cloned copy.
|
|---|
| 453 | symlink($Config{perlpath}, "$installbin/perl$exe_ext");
|
|---|
| 454 | } elsif ($^O eq 'vos') {
|
|---|
| 455 | # VOS doesn't support hard links, so use a symlink.
|
|---|
| 456 | symlink("$installbin/$perl_verbase$ver$exe_ext",
|
|---|
| 457 | "$installbin/$perl$exe_ext");
|
|---|
| 458 | } else {
|
|---|
| 459 | link("$installbin/$perl_verbase$ver$exe_ext",
|
|---|
| 460 | "$installbin/$perl$exe_ext");
|
|---|
| 461 | }
|
|---|
| 462 | link("$installbin/$perl_verbase$ver$exe_ext",
|
|---|
| 463 | "$installbin/suid$perl$exe_ext")
|
|---|
|
|---|