Lines 1-132
Link Here
|
1 |
#! %%PREFIX%%/bin/perl -w |
1 |
#!/bin/sh |
2 |
# $FreeBSD: ports/lang/perl5.8/files/use.perl,v 1.6 2002/07/21 17:09:12 tobez Exp $ |
2 |
|
3 |
use strict; |
3 |
PREFIX="%%PREFIX%%" |
4 |
|
4 |
preserve_system="a2p c2ph find2perl h2ph h2xs perlbug perlcc perldoc pl2pm \ |
5 |
# XXX what to do with perldoc, pelbug, perlcc ?? |
5 |
pod2html pod2latex pod2man pod2text s2p splain" |
6 |
|
6 |
|
7 |
sub usage |
7 |
if [ -f /sbin/sysctl -a -x /sbin/sysctl ] ; then |
8 |
{ |
8 |
osreldate=`/sbin/sysctl -n kern.osreldate` |
9 |
print STDERR <<EOF; |
9 |
else |
10 |
Usage: |
10 |
osreldate=`/usr/sbin/sysctl -n kern.osreldate` |
11 |
$0 port -> /usr/bin/perl is the perl5 port |
11 |
fi |
12 |
$0 system -> /usr/bin/perl is the system perl |
12 |
|
13 |
EOF |
13 |
if [ "x$1" = "x" ]; then |
14 |
exit 2; |
14 |
echo "Usage:" |
15 |
} |
15 |
echo -n "$0 <version>" |
16 |
|
16 |
if [ $osreldate -lt 500043 ] ; then |
17 |
my $port_perl = '%%PREFIX%%/bin/perl'; |
17 |
echo -n "|system" |
18 |
$port_perl =~ tr|/|/|s; |
18 |
fi |
19 |
|
19 |
echo "<version> - set perl version as active perl" |
20 |
my $ident = `/usr/bin/ident -q /usr/bin/perl5`; |
20 |
if [ $osreldate -lt 500043 ] ; then |
21 |
|
21 |
echo "system - set system perl as active" |
22 |
@ARGV == 1 or usage(); |
22 |
fi |
23 |
if ($ARGV[0] eq 'port') { |
23 |
exit 2 |
24 |
switch_to_port(); |
24 |
fi |
25 |
} elsif ($ARGV[0] eq 'system') { |
25 |
|
26 |
switch_to_system(); |
26 |
# Runned for a first time - there is no active perl yet |
27 |
} else { |
27 |
if [ "$1" != "system" -a ! -e /usr/bin/perl ]; then |
28 |
usage(); |
28 |
${PREFIX}/bin/set.perl$1 active |
29 |
} |
29 |
exit 0 |
30 |
exit 0; |
30 |
fi |
31 |
|
31 |
|
32 |
# Both functions depend on the idea that switch_to_port leaves |
32 |
if [ -e ${PREFIX}/bin/perl -a ! -L ${PREFIX}/bin/perl ]; then |
33 |
# perl5 alone. If the wrapper is installed on a -current system, |
33 |
echo "FATAL: ${PREFIX}/bin/perl is not symlink." |
34 |
# /usr/bin/perl5 will also be the wrapper. |
34 |
echo "You have old style perl port installed. Reinstall it." |
35 |
|
35 |
exit 1 |
36 |
sub switch_to_system |
36 |
fi |
37 |
{ |
37 |
|
38 |
# protect against cases where people use PREFIX=/usr |
38 |
# Get current active perl version |
39 |
if ($port_perl ne '/usr/bin/perl') { |
39 |
if [ -L ${PREFIX}/bin/perl ]; then |
40 |
unlink '/usr/bin/perl', '/usr/bin/suidperl', |
40 |
active_version=`realpath ${PREFIX}/bin/perl|sed -e 's#.*perl-\(.*\)/perl#\1#'` |
41 |
'/usr/bin/perl%%PERL_VERSION%%'; |
41 |
fi |
42 |
|
42 |
|
43 |
link '/usr/bin/perl5', '/usr/bin/perl'; |
43 |
if [ "x${active_version}" = "x$1" ]; then |
44 |
link '/usr/bin/perl5', '/usr/bin/perl%%PERL_VERSION%%'; |
44 |
echo "perl $1 is already active" |
45 |
|
45 |
exit 0 |
46 |
if ($ident =~ m#src/usr.bin/perl/perl.c#) { |
46 |
fi |
47 |
link '/usr/bin/perl5', '/usr/bin/suidperl'; |
47 |
if [ "$1" = "system" -a -e /usr/bin/perl -a ! -L /usr/bin/perl ]; then |
48 |
} else { |
48 |
echo "system perl is already active" |
49 |
link '/usr/bin/sperl5', '/usr/bin/suidperl'; |
49 |
exit 0 |
50 |
} |
50 |
fi |
51 |
} |
51 |
|
52 |
|
52 |
if [ "$1" != "system" -a ! -f ${PREFIX}/bin/set.perl$1 ]; then |
53 |
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!"; |
53 |
echo "perl version $1 is not installed" |
54 |
print MK <<EOF; |
54 |
exit 1 |
55 |
# -- use.perl generated deltas -- # |
55 |
fi |
56 |
# Created: @{[scalar localtime]} |
56 |
|
57 |
# Setting to use base system perl: |
57 |
# There is no system perl on 5.x |
58 |
.undef PERL_VER |
58 |
if [ $osreldate -ge 500043 -a $1 = "system" ]; then |
59 |
.undef PERL_VERSION |
59 |
exit 1 |
60 |
.undef PERL_ARCH |
60 |
fi |
61 |
.undef NOPERL |
61 |
|
62 |
.undef NO_PERL |
62 |
if [ "$1" != "system" -a "x${active_version}" != "x" -a ! -x ${PREFIX}/bin/set.perl${active_version} ]; then |
63 |
|
63 |
echo "FATAL: can't find ${PREFIX}/bin/set.perl${active_version} script" |
64 |
EOF |
64 |
echo 1 |
65 |
close MK; |
65 |
fi |
66 |
|
66 |
|
67 |
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!"; |
67 |
# Deactivate active perl |
68 |
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!"; |
68 |
if [ -e /usr/bin/perl -a ! -L /usr/bin/perl ]; then |
69 |
while (<MPOLD>) { |
69 |
for f in ${preserve_system}; do |
70 |
next if m|use.perl generated line|; |
70 |
mv /usr/bin/$f /usr/bin/${f}.sys |
71 |
next if m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/%%PERL_VERSION%%/man\s*$|; |
71 |
done |
72 |
print MPNEW; |
72 |
else |
73 |
} |
73 |
if [ -e /usr/bin/perl ]; then |
74 |
close MPNEW; |
74 |
${PREFIX}/bin/set.perl${active_version} inactive |
75 |
close MPOLD; |
75 |
fi |
76 |
rename '/etc/manpath.config', '/etc/manpath.config.bak'; |
76 |
fi |
77 |
rename '/etc/manpath.config.new', '/etc/manpath.config'; |
77 |
|
78 |
} |
78 |
if [ $osreldate -lt 500043 -a $1 = "system" ]; then |
79 |
|
79 |
ln -f /usr/bin/perl5.005* /usr/bin/perl |
80 |
sub switch_to_port |
80 |
ln -f /usr/bin/perl5.005* /usr/bin/perl5 |
81 |
{ |
81 |
ln -f /usr/bin/sperl5.005* /usr/bin/sperl5 |
82 |
# protect against cases where people use PREFIX=/usr |
82 |
ln -f /usr/bin/sperl5.005* /usr/bin/suidperl |
83 |
if ($port_perl ne '/usr/bin/perl') { |
83 |
for f in ${preserve_system}; do |
84 |
if ($ident =~ m#src/usr.bin/perl/perl.c#) { |
84 |
mv /usr/bin/${f}.sys /usr/bin/$f |
85 |
rename '/usr/bin/perl', '/usr/bin/perl-wrapper'; |
85 |
done |
86 |
} else { |
86 |
exit 0 |
87 |
unlink '/usr/bin/perl'; |
87 |
fi |
88 |
} |
88 |
|
89 |
|
89 |
${PREFIX}/bin/set.perl$1 active |
90 |
unlink '/usr/bin/suidperl', '/usr/bin/perl%%PERL_VERSION%%'; |
|
|
91 |
|
92 |
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl'; |
93 |
symlink '%%PREFIX%%/bin/suidperl', '/usr/bin/suidperl'; |
94 |
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl%%PERL_VERSION%%'; |
95 |
} |
96 |
|
97 |
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!"; |
98 |
print MK <<EOF; |
99 |
# -- use.perl generated deltas -- # |
100 |
# Created: @{[scalar localtime]} |
101 |
# Setting to use base perl from ports: |
102 |
PERL_VER=%%PERL_VER%% |
103 |
PERL_VERSION=%%PERL_VERSION%% |
104 |
PERL_ARCH=%%PERL_ARCH%% |
105 |
NOPERL=yo |
106 |
NO_PERL=yo |
107 |
NO_PERL_WRAPPER=yo |
108 |
|
109 |
EOF |
110 |
close MK; |
111 |
|
112 |
my $perl_port_manpath = <<EOF; |
113 |
# -- use.perl generated line -- # |
114 |
OPTIONAL_MANPATH %%PREFIX%%/lib/perl5/%%PERL_VERSION%%/man |
115 |
EOF |
116 |
|
117 |
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!"; |
118 |
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!"; |
119 |
my $modified = 0; |
120 |
while (<MPOLD>) { |
121 |
if (!$modified && m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/\S+/man\s*$|) { |
122 |
print MPNEW $perl_port_manpath; |
123 |
$modified = 1; |
124 |
} |
125 |
print MPNEW; |
126 |
} |
127 |
print MPNEW $perl_port_manpath unless $modified; |
128 |
close MPNEW; |
129 |
close MPOLD; |
130 |
rename '/etc/manpath.config', '/etc/manpath.config.bak'; |
131 |
rename '/etc/manpath.config.new', '/etc/manpath.config'; |
132 |
} |