4 $nonono = 1 if $ARGV[0] eq '-n';
5 $versiononly = 1 if $ARGV[0] eq '-v';
10 @manpages = ('perl.man', 'h2ph.man');
12 $version = sprintf("%5.3f", $]);
13 $release = substr($version,0,3);
14 $patchlevel = substr($version,3,2);
16 # Read in the config file.
18 open(CONFIG, "config.sh") || die "You haven't run Configure yet!\n";
20 if (s/^(\w+=)/\$$1/) {
21 $accum =~ s/'undef'/undef/g;
28 # Do some quick sanity checks.
30 if ($d_dosuid && $>) { die "You must run as root to install suidperl\n"; }
32 $installbin || die "No installbin directory in config.sh\n";
33 -d $installbin || die "$installbin is not a directory\n";
34 -w $installbin || die "$installbin is not writable by you\n"
35 unless $installbin =~ m#^/afs/#;
37 -x 'perl' || die "perl isn't executable!\n";
38 -x 'taintperl' || die "taintperl isn't executable!\n";
39 -x 'suidperl' || die "suidperl isn't executable!\n" if $d_dosuid;
41 -x 't/TEST' || warn "WARNING: You've never run 'make test'!!!",
42 " (Installing anyway.)\n";
44 # First we install the version-numbered executables.
46 $ver = sprintf("%5.3f", $]);
48 &unlink("$installbin/perl$ver");
49 &cmd("cp perl $installbin/perl$ver");
51 &unlink("$installbin/tperl$ver");
52 &cmd("cp taintperl $installbin/tperl$ver");
53 &chmod(0755, "$installbin/tperl$ver"); # force non-suid for security
55 &unlink("$installbin/sperl$ver");
57 &cmd("cp suidperl $installbin/sperl$ver");
58 &chmod(04711, "$installbin/sperl$ver");
61 exit 0 if $versiononly;
63 # Make links to ordinary names if installbin directory isn't current directory.
65 ($bdev,$bino) = stat($installbin);
66 ($ddev,$dino) = stat('.');
68 if ($bdev != $ddev || $bino != $dino) {
69 &unlink("$installbin/perl", "$installbin/taintperl", "$installbin/suidperl");
70 &link("$installbin/perl$ver", "$installbin/perl");
71 &link("$installbin/tperl$ver", "$installbin/taintperl");
72 &link("$installbin/sperl$ver", "$installbin/suidperl") if $d_dosuid;
75 # Make some enemies in the name of standardization. :-)
77 ($udev,$uino) = stat("/usr/bin");
79 if (-w _ && ($udev != $ddev || $uino != $dino) && !$nonono) {
80 unlink "/usr/bin/perl";
81 eval 'symlink("$installbin/perl", "/usr/bin/perl")' ||
82 eval 'link("$installbin/perl", "/usr/bin/perl")' ||
83 &cmd("cp $installbin/perl /usr/bin");
91 &cmd("cp $_ $scriptdir");
92 &chmod(0755, "$scriptdir/$_");
95 # Install library files.
97 &makedir($installprivlib);
99 ($pdev,$pino) = stat($installprivlib);
101 if ($pdev != $ddev || $pino != $dino) {
102 &cmd("cd lib && cp *.pl $installprivlib");
110 ($mdev,$mino) = stat($mansrc);
111 if ($mdev != $ddev || $mino != $dino) {
113 ($new = $_) =~ s/man$/$manext/;
114 print STDERR " Installing $mansrc/$new\n";
117 open(MO,">$mansrc/$new");
118 print MO ".ds RP Release $release Patchlevel $patchlevel\n";
128 print STDERR " Installation complete\n";
132 ###############################################################################
137 foreach $name (@names) {
138 next unless -e $name;
139 print STDERR " unlink $name\n";
140 unlink($name) || warn "Couldn't unlink $name: $!\n" unless $nonono;
146 print STDERR " $cmd\n";
149 warn "Command failed!!!\n" if $?;
154 local($from,$to) = @_;
156 print STDERR " ln $from $to\n";
157 link($from,$to) || warn "Couldn't link $from to $to: $!\n" unless $nonono;
161 local($mode,$name) = @_;
163 printf STDERR " chmod %o %s\n", $mode, $name;
164 chmod($mode,$name) || warn "Couldn't chmod $mode $name: $!\n"
171 local($shortdir) = $dir;
173 $shortdir =~ s#(.*)/.*#$1#;
176 print STDERR " mkdir $dir\n";
177 mkdir($dir, 0777) || warn "Couldn't create $dir: $!\n" unless $nonono;