1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-19 19:59:43 +00:00

Update to 5.8.6. Also:

- redirect output from h2ph to /dev/null [1];
- fix File::Path insecure file/directory permissions [2];
  this resolves CAN-2004-0452
  (http://vuxml.freebsd.org/c418d472-6bd1-11d9-93ca-000a95bc6fae.html);
- for OSVERSION < 500036, create symlinks in /usr/bin not only for
  perl and suidperl, but also for a2p, c2ph, find2perl, h2ph, h2xs,
  perlbug, perlcc, perldoc, pl2pm, pod2html, pod2latex, pod2man,
  pod2text, s2p, and splain;  perl and suidperl are still enough for
  more recent FreeBSD versions [3];
- clean up created symlinks upon deinstallation [4];
- try to cleanup symlinks created by older versions of lang/perl5 and
  lang/perl5.8, during both installation and deinstallation [5];
- added support for DISABLE_BSDPAN environment variable [6];
- be explicit about use.perl usage after installation of 4.X systems
  [7];
- respect __MAKE_CONF partially (the build-time value is used) [8];
- fix threaded build - respect PTHREAD_CFLAGS and PTHREAD_LIBS [9].
- use.perl is now the same as pkg-install is now the same as
  pkg-deinstall;  apart from the changes already mentioned above, this
  is a shell script now;
- use.perl's logic is also simplified in several ways [10];
- fix a BSDPAN bug [11].

Outstanding issues: Module::Build support for BSDPAN, SU_CMD support (PR
70831), PR 64963 (partially), and anything else that I forgot.

[1] Nudged by: krion
[2] Reported by: nectar
    Patch from: Chris Turner @ RedHat
[3] PR: 55760, 57151, 58406
[4] Requested by: kris
    PR: 54262
[5] PR: 51281, 51539
[6] PR: 57134
[7] PR: 60736
[8] PR: 74431
[9] PR: 73233
[10] Perl version submitted by des, implemented in sh
[11] Reported by: Alexander Nagilum <freebsd %at% nagilum de>
This commit is contained in:
Anton Berezin 2005-02-01 13:36:21 +00:00
parent c5b56371c3
commit 45dd233be8
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=127845
45 changed files with 1815 additions and 895 deletions

View File

@ -19,7 +19,7 @@ DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
MAINTAINER= tobez@FreeBSD.org
COMMENT= Practical Extraction and Report Language
PERL_VER= 5.8.5
PERL_VER= 5.8.6
PERL_ARCH= mach
PERL_VERSION= ${PERL_VER}
@ -39,8 +39,6 @@ CONFIGURE_ARGS= -sde -Dprefix=${PREFIX} \
-Dcc="${CC}" -Doptimize="${CFLAGS}" -Duseshrplib \
-Dccflags=-DAPPLLIB_EXP=\"${BSDPAN_DEST}\"
INCLUDEDIR= /usr/include
.include "Makefile.man"
.include <bsd.port.pre.mk>
@ -51,7 +49,6 @@ PLIST_SUB+= ENABLE_SUIDPERL=""
CONFIGURE_ARGS+= -Ud_dosuid
PLIST_SUB+= ENABLE_SUIDPERL="@comment "
.endif
# INSTALLS_SHLIB= yes
.if defined(WITH_GDBM)
CONFIGURE_ARGS+= -Di_gdbm
@ -69,10 +66,16 @@ WITH_PERL_MALLOC= yes
.endif
.if defined(WITH_THREADS)
.if ${ARCH} == "amd64"
IGNORE= Threaded perl does not pass tests on ${ARCH}
.endif
CONFIGURE_ARGS+= -Dusethreads=y
PKGNAMESUFFIX= -threaded
# it seems perl malloc has problems with threaded perl on FreeBSD
.undef WITH_PERL_MALLOC
.if ${OSVERSION} < 492000
CONFIGURE_ARGS+= -Ud_gethostbyaddr_r
.endif
.else
CONFIGURE_ARGS+= -Dusethreads=n
.endif
@ -89,8 +92,10 @@ CONFIGURE_ARGS+= -Duse64bitint
.if ${OSVERSION} < 502100
LATEST_LINK= perl5.8
PLIST_SUB+= NEED_USE_PERL=""
.else
PKGMESSAGE= ${PKGDIR}/.not-here
PLIST_SUB+= NEED_USE_PERL="@comment "
.endif
.if defined(WITH_GDBM)
@ -103,16 +108,34 @@ test:
BSDPAN_DEST= ${PREFIX}/lib/perl5/${PERL_VER}/BSDPAN
BSDPAN_FILES= BSDPAN.pm BSDPAN/Override.pm Config.pm \
ExtUtils/MM_Unix.pm ExtUtils/Packlist.pm
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-5.8.5
ExtUtils/MM_Unix.pm \
ExtUtils/MakeMaker.pm \
ExtUtils/Packlist.pm
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-${PORTVERSION}
PKGINSTALL= ${WRKDIR}/pkg-install
PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
USE_REINPLACE= yes
post-patch:
${SED} -e 's|%%PREFIX%%|${PREFIX}|g;' \
-e 's|%%PERL_VER%%|${PERL_VER}|g;' \
-e 's|%%PERL_VERSION%%|${PERL_VERSION}|g;' \
-e 's|%%PERL_ARCH%%|${PERL_ARCH}|g;' \
-e 's|%%MAKE_CONF%%|${__MAKE_CONF}|g;' \
${FILESDIR}/use.perl \
> ${WRKDIR}/use.perl
${CP} ${WRKDIR}/use.perl ${PKGINSTALL}
${CP} ${WRKDIR}/use.perl ${PKGDEINSTALL}
.if defined(WITH_THREADS)
${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%|${PTHREAD_LIBS}|g;' \
-e 's|%%PTHREAD_CFLAGS%%|${PTHREAD_CFLAGS}|g;' \
${WRKSRC}/hints/freebsd.sh
.else
${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%||g;' \
-e 's|%%PTHREAD_CFLAGS%%||g;' \
${WRKSRC}/hints/freebsd.sh
.endif
pre-install:
@${RM} -f ${PREFIX}/bin/perl${PERL_VER}
@ -122,20 +145,15 @@ post-install:
@${STRIP_CMD} ${PREFIX}/bin/perl${PERL_VER}
@${STRIP_CMD} ${PREFIX}/bin/perl
@${LN} -sf ${PREFIX}/bin/perl${PERL_VER} ${PREFIX}/bin/perl5
${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${PREFIX}/bin/use.perl
.for files in ${BSDPAN_FILES}
${MKDIR} ${BSDPAN_DEST}/${files:H}
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
${BSDPAN_WRKSRC}/${files} ${BSDPAN_DEST}/${files}
.endfor
@(cd ${INCLUDEDIR} && ${PREFIX}/bin/h2ph *.h machine/*.h sys/*.h)
${MKDIR} ${PREFIX}/${SITE_PERL_REL}/auto
${MKDIR} ${PREFIX}/${SITE_PERL_REL}/${PERL_ARCH}/auto
${MKDIR} ${PREFIX}/lib/perl5/${PERL_VER}/man/man3
PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
.if ${OSVERSION} < 502100
${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${PREFIX}/bin/use.perl
@fmt ${PKGMESSAGE}
.else
@${PREFIX}/bin/use.perl port
.endif
.include <bsd.port.post.mk>

View File

@ -1,4 +1,4 @@
# $Id$
# $FreeBSD$
MAN1+= a2p.1
MAN1+= c2ph.1
@ -23,6 +23,7 @@ MAN1+= perl582delta.1
MAN1+= perl583delta.1
MAN1+= perl584delta.1
MAN1+= perl585delta.1
MAN1+= perl586delta.1
MAN1+= perl58delta.1
MAN1+= perlaix.1
MAN1+= perlamiga.1

View File

@ -1,4 +1,4 @@
MD5 (perl-5.8.5.tar.bz2) = 9db6be76aa275f415d75c224ad1d4029
SIZE (perl-5.8.5.tar.bz2) = 9464689
MD5 (BSDPAN-5.8.5.tar.bz2) = 9a752ebc0d65671aeaa5350a260f516e
SIZE (BSDPAN-5.8.5.tar.bz2) = 6278
MD5 (perl-5.8.6.tar.bz2) = 3d030b6ff2a433840edb1a407d18dc0a
SIZE (perl-5.8.6.tar.bz2) = 9693085
MD5 (BSDPAN-5.8.6.tar.bz2) = e2be13e3698b3d95de3368a58be8a540
SIZE (BSDPAN-5.8.6.tar.bz2) = 8217

View File

@ -0,0 +1,30 @@
$FreeBSD$
--- lib/File/Path.pm.orig Sat Jan 29 20:23:40 2005
+++ lib/File/Path.pm Sat Jan 29 20:24:56 2005
@@ -196,7 +196,7 @@ sub rmtree {
# it's also intended to change it to writable in case we have
# to recurse in which case we are better than rm -rf for
# subtrees with strange permissions
- chmod(0777, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
+ chmod(0700, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
or carp "Can't make directory $root read+writeable: $!"
unless $safe;
@@ -230,7 +230,7 @@ sub rmtree {
print "skipped $root\n" if $verbose;
next;
}
- chmod 0777, $root
+ chmod 0700, $root
or carp "Can't make directory $root writeable: $!"
if $force_writeable;
print "rmdir $root\n" if $verbose;
@@ -252,7 +252,7 @@ sub rmtree {
print "skipped $root\n" if $verbose;
next;
}
- chmod 0666, $root
+ chmod 0600, $root
or carp "Can't make file $root writeable: $!"
if $force_writeable;
print "unlink $root\n" if $verbose;

View File

@ -1,20 +1,51 @@
--- hints/freebsd.sh.orig Sun May 30 17:55:47 2004
+++ hints/freebsd.sh Sun May 30 17:57:16 2004
@@ -88,6 +88,7 @@ case "$osvers" in
--- hints/freebsd.sh.orig Wed Mar 24 22:47:33 2004
+++ hints/freebsd.sh Sun Jan 30 23:39:33 2005
@@ -88,6 +88,8 @@ case "$osvers" in
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
libswanted=`echo $libswanted | sed 's/ bind / /'`
+ libswanted=`echo $libswanted | sed 's/ dl / /'`
+ libswanted=`echo $libswanted | sed 's/ c / /'`
# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
libswanted=`echo $libswanted | sed 's/ iconv / /'`
d_setregid='define'
@@ -102,6 +103,9 @@ case "$osvers" in
@@ -102,6 +103,10 @@ case "$osvers" in
;;
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
+ libswanted=`echo $libswanted | sed 's/ bind / /'`
+ libswanted=`echo $libswanted | sed 's/ dl / /'`
+ libswanted=`echo $libswanted | sed 's/ iconv / /'`
+ libswanted=`echo $libswanted | sed 's/ c / /'`
;;
esac
@@ -119,7 +123,7 @@ case "$osvers" in
if [ x$objformat = xelf ]; then
libpth="/usr/lib /usr/local/lib"
glibpth="/usr/lib /usr/local/lib"
- ldflags="-Wl,-E "
+ ldflags="%%PTHREAD_LIBS%% -Wl,-E"
lddlflags="-shared "
else
if [ -e /usr/lib/aout ]; then
@@ -136,7 +140,7 @@ case "$osvers" in
0*|1*|2*|3*) ;;
*)
- ccflags="${ccflags} -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
+ ccflags="${ccflags} %%PTHREAD_CFLAGS%% -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then
usenm=false
fi
@@ -183,7 +187,9 @@ esac
# This script UU/usethreads.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to use threads.
-cat > UU/usethreads.cbu <<'EOCBU'
+## not quite - modern FreeBSD perl port is supposed to take care of that
+## we just add extra libraries and cflags nowadays
+cat > /dev/null <<'EOCBU'
case "$usethreads" in
$define|true|[yY]*)
lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'`

View File

@ -1,134 +1,264 @@
#! %%PREFIX%%/bin/perl -w
#!/bin/sh
# $FreeBSD$
use strict;
# XXX what to do with perldoc, pelbug, perlcc ??
this=`echo -n $0 | /usr/bin/sed -e 's!^.*/!!'`
PERL_VERSION="%%PERL_VERSION%%"
MAKE_CONF=%%MAKE_CONF%%
banner=`date +"%F %T"`
banner="# added by use.perl $banner"
if [ -z "${OSVERSION}" ]; then
if [ -f /sbin/sysctl -a -x /sbin/sysctl ] ; then
osreldate=`/sbin/sysctl -n kern.osreldate`
else
osreldate=`/usr/sbin/sysctl -n kern.osreldate`
fi
else
osreldate=${OSVERSION}
fi
sub usage
if [ "x$this" = "xuse.perl" ]; then
PKG_PREFIX="%%PREFIX%%"
if [ "$1" = "port" ] ; then
need_remove_links=yes
need_create_links=yes
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
need_spam_make_conf=yes
need_spam_manpath=yes
elif [ "$1" = "system" ] ; then
need_remove_links=yes
if [ $osreldate -lt 500036 ] ; then
need_base_system_perl=yes
fi
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
else
echo 'Usage:
$0 port -> /usr/bin/perl is the perl5 port
$0 system -> /usr/bin/perl is the system perl'
exit 2;
fi
else
if [ "$2" = "POST-INSTALL" ] ; then
need_remove_links=yes
if [ $osreldate -ge 502100 ] ; then
need_create_links=yes
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
need_spam_make_conf=yes
need_spam_manpath=yes
fi
need_post_install=yes
elif [ "$2" = "POST-DEINSTALL" ] ; then
need_remove_links=yes
if [ $osreldate -lt 500036 ] ; then
need_base_system_perl=yes
fi
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
else
exit 0;
fi
fi
link_list="
a2p
c2ph
find2perl
h2ph
h2xs
perlbug
perlcc
perldoc
pl2pm
pod2html
pod2latex
pod2man
pod2text
s2p
splain"
if [ $osreldate -ge 500036 ] ; then
link_list=""
fi
special_link_list="
perl
perl5
suidperl"
do_remove_links()
{
print STDERR <<EOF;
Usage:
$0 port -> /usr/bin/perl is the perl5 port
$0 system -> /usr/bin/perl is the system perl
EOF
exit 2;
echo "Removing stale symlinks from /usr/bin..."
for binary in $link_list $special_link_list
do
if [ -L "/usr/bin/$binary" ] ; then
echo " Removing /usr/bin/$binary"
/bin/rm -f "/usr/bin/$binary"
else
echo " Skipping /usr/bin/$binary"
fi
done
bins=`/bin/ls /usr/bin/*perl*5.* ${PKG_PREFIX}/bin/*perl*5.* 2>/dev/null`
for binary in $bins
do
if [ -L "$binary" ] ; then
echo " Removing $binary installed by an older perl port"
/bin/rm -f "$binary"
fi
done
echo "Done."
}
my $port_perl = '%%PREFIX%%/bin/perl';
$port_perl =~ tr|/|/|s;
my $ident = `[ -r /usr/bin/perl5 ] && /usr/bin/ident -q /usr/bin/perl5`;
@ARGV == 1 or usage();
if ($ARGV[0] eq 'port') {
switch_to_port();
} elsif ($ARGV[0] eq 'system') {
switch_to_system();
} else {
usage();
}
exit 0;
# Both functions depend on the idea that switch_to_port leaves
# perl5 alone. If the wrapper is installed on a -current system,
# /usr/bin/perl5 will also be the wrapper.
sub switch_to_system
do_create_links()
{
# protect against cases where people use PREFIX=/usr
if ($port_perl ne '/usr/bin/perl') {
unlink '/usr/bin/perl', '/usr/bin/suidperl',
'/usr/bin/perl%%PERL_VERSION%%';
link '/usr/bin/perl5', '/usr/bin/perl';
link '/usr/bin/perl5', '/usr/bin/perl%%PERL_VERSION%%';
if ($ident =~ m#src/usr.bin/perl/perl.c#) {
link '/usr/bin/perl5', '/usr/bin/suidperl';
} else {
link '/usr/bin/sperl5', '/usr/bin/suidperl';
}
}
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!";
print MK <<EOF;
# -- use.perl generated deltas -- #
# Created: @{[scalar localtime]}
# Setting to use base system perl:
.undef PERL_VER
.undef PERL_VERSION
.undef PERL_ARCH
.undef NOPERL
.undef NO_PERL
EOF
close MK;
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!";
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!";
while (<MPOLD>) {
next if m|use.perl generated line|;
next if m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/%%PERL_VERSION%%/man\s*$|;
next if m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/%%PERL_VERSION%%/perl/man\s*$|;
print MPNEW;
}
close MPNEW;
close MPOLD;
rename '/etc/manpath.config', '/etc/manpath.config.bak';
rename '/etc/manpath.config.new', '/etc/manpath.config';
echo "Creating various symlinks in /usr/bin..."
for binary in $link_list
do
if [ -f "/usr/bin/$binary" ] ; then
echo " Backing up /usr/bin/$binary as /usr/bin/$binary.freebsd"
/bin/mv -f "/usr/bin/$binary" "/usr/bin/$binary.freebsd"
fi
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is still there, which should not happen"
elif [ -e "$PKG_PREFIX/bin/$binary" ] ; then
echo " Symlinking $PKG_PREFIX/bin/$binary to /usr/bin/$binary"
/bin/ln -sf "$PKG_PREFIX/bin/$binary" "/usr/bin/$binary"
else
echo " *** $PKG_PREFIX/bin/$binary is not there, a symlink won't do any good"
fi
done
for binary in $special_link_list
do
if [ -f "/usr/bin/$binary" ] ; then
echo " Removing /usr/bin/$binary"
fi
bin=`echo $binary | /usr/bin/sed -e 's!perl5!perl!'`
bin=`echo $bin | /usr/bin/sed -e 's!suidperl!sperl!'`
if [ -e "/usr/bin/$binary.XXX" ] ; then
echo " *** /usr/bin/$binary is still there, which should not happen"
elif [ -e "$PKG_PREFIX/bin/${bin}%%PERL_VERSION%%" ] ; then
echo " Symlinking $PKG_PREFIX/bin/${bin}%%PERL_VERSION%% to /usr/bin/$binary"
/bin/ln -sf "$PKG_PREFIX/bin/${bin}%%PERL_VERSION%%" "/usr/bin/$binary"
else
echo " *** $PKG_PREFIX/bin/${bin}%%PERL_VERSION%% is not there, a symlink won't do any good"
fi
done
echo "Done."
}
sub switch_to_port
do_base_system_perl()
{
# protect against cases where people use PREFIX=/usr
if ($port_perl ne '/usr/bin/perl') {
if ($ident =~ m#src/usr.bin/perl/perl.c#) {
rename '/usr/bin/perl', '/usr/bin/perl-wrapper';
} else {
unlink '/usr/bin/perl';
}
unlink '/usr/bin/suidperl', '/usr/bin/perl%%PERL_VERSION%%';
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl';
symlink '%%PREFIX%%/bin/suidperl', '/usr/bin/suidperl';
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl%%PERL_VERSION%%';
}
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!";
print MK <<EOF;
# -- use.perl generated deltas -- #
# Created: @{[scalar localtime]}
# Setting to use base perl from ports:
PERL_VER=%%PERL_VER%%
PERL_VERSION=%%PERL_VERSION%%
PERL_ARCH=%%PERL_ARCH%%
NOPERL=yo
NO_PERL=yo
NO_PERL_WRAPPER=yo
EOF
close MK;
my $perl_port_manpath = <<EOF;
# -- use.perl generated line -- #
OPTIONAL_MANPATH %%PREFIX%%/lib/perl5/%%PERL_VERSION%%/man
OPTIONAL_MANPATH %%PREFIX%%/lib/perl5/%%PERL_VERSION%%/perl/man
EOF
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!";
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!";
my $modified = 0;
while (<MPOLD>) {
if (!$modified && m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/\S+/man\s*$|) {
print MPNEW $perl_port_manpath;
$modified = 1;
}
print MPNEW;
}
print MPNEW $perl_port_manpath unless $modified;
close MPNEW;
close MPOLD;
rename '/etc/manpath.config', '/etc/manpath.config.bak';
rename '/etc/manpath.config.new', '/etc/manpath.config';
echo "Restoring base system perl binaries..."
for binary in $link_list
do
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is there, which should not happen"
else
if [ -f "/usr/bin/$binary.freebsd" ] ; then
echo " Moving /usr/bin/$binary.freebsd to /usr/bin/$binary"
/bin/mv -f "/usr/bin/$binary.freebsd" "/usr/bin/$binary"
else
echo " *** /usr/bin/$binary.freebsd is NOT there, nothing to restore"
fi
fi
done
for binary in $special_link_list
do
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is there, which should not happen"
else
bin=`echo $binary | /usr/bin/sed -e 's!perl5!perl!'`
bin=`echo $bin | /usr/bin/sed -e 's!suidperl!sperl!'`
bins=`/bin/ls /usr/bin/${bin}5.* 2>/dev/null | /usr/bin/sort`
bin=""
for b in $bins
do
if [ -f $b -a ! -L $b ] ; then
bin=$b
fi
done
if [ -z $bin ] ; then
echo " *** cannot find what /usr/bin/$binary shall be restored FROM"
elif [ -f $bin ] ; then
echo " Hardlinking $bin to /usr/bin/$binary"
ln -f "$bin" "/usr/bin/$binary"
else
echo " *** $bin is NOT there, nothing to restore"
fi
fi
done
echo "Done."
}
do_post_install()
{
INCLUDEDIR=/usr/include
install -d ${PKG_PREFIX}/lib/perl5/site_perl/%%PERL_VERSION%%/%%PERL_ARCH%%/auto
install -d ${PKG_PREFIX}/lib/perl5/site_perl/%%PERL_VERSION%%/auto
install -d ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/man/man3
cd ${INCLUDEDIR} && ${PKG_PREFIX}/bin/h2ph *.h machine/*.h sys/*.h >/dev/null
}
do_cleanup_make_conf()
{
echo -n "Cleaning up ${MAKE_CONF}..."
if [ -f ${MAKE_CONF} ] ; then
/usr/bin/awk 's=0;
/^#.*use.perl/ { s=1; mode=1 }
/^#/ { s=1; if (mode != 1) { mode=0 } }
/.*PERL.*=/ { s=1; if (mode == 1) { mode=2 } }
/^$/ { s=1; if (mode != 2) { mode = 0 } }
{ if (s != 1) { mode = 0 } if (mode == 0) print }' ${MAKE_CONF} >${MAKE_CONF}.new
/bin/mv ${MAKE_CONF} ${MAKE_CONF}.bak
/bin/mv ${MAKE_CONF}.new ${MAKE_CONF}
fi
echo " Done."
}
do_cleanup_manpath()
{
echo -n "Cleaning up /etc/manpath.config..."
if [ -f /etc/manpath.config ] ; then
/usr/bin/awk 's=0;
/^#.*use.perl/ { s=1; mode=1 }
/^#/ { s=1; if (mode != 1) { mode=0 } }
/^OPTIONAL_MANPATH.*perl5/ { s=1; if (mode == 1) { mode=2 } }
/^$/ { s=1; if (mode != 2) { mode = 0 } }
{ if (s != 1) { mode = 0 } if (mode == 0) print }' /etc/manpath.config >/etc/manpath.config.new
/bin/mv /etc/manpath.config /etc/manpath.config.bak
/bin/mv /etc/manpath.config.new /etc/manpath.config
fi
echo " Done."
}
do_spam_make_conf()
{
echo -n "Spamming ${MAKE_CONF}..."
echo "$banner" >>${MAKE_CONF}
echo "PERL_VER=%%PERL_VER%%" >>${MAKE_CONF}
echo "PERL_VERSION=%%PERL_VERSION%%" >>${MAKE_CONF}
if [ $osreldate -lt 500036 ] ; then
echo "NOPERL=yes" >>${MAKE_CONF}
fi
echo " Done."
}
do_spam_manpath()
{
echo -n "Spamming /etc/manpath.config..."
echo "$banner" >>/etc/manpath.config
echo "OPTIONAL_MANPATH ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/man" >>/etc/manpath.config
echo "OPTIONAL_MANPATH ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/perl/man" >>/etc/manpath.config
echo " Done."
}
[ $need_remove_links ] && do_remove_links
[ $need_create_links ] && do_create_links
[ $need_base_system_perl ] && do_base_system_perl
[ $need_post_install ] && do_post_install
[ $need_cleanup_make_conf ] && do_cleanup_make_conf
[ $need_spam_make_conf ] && do_spam_make_conf
[ $need_cleanup_manpath ] && do_cleanup_manpath
[ $need_spam_manpath ] && do_spam_manpath
exit 0

View File

@ -1,28 +0,0 @@
#!/bin/sh
if [ "$2" != POST-INSTALL ] ; then
exit 0
fi
INCLUDEDIR=/usr/include
install -d ${PKG_PREFIX}/lib/perl5/site_perl/5.8.5/mach/auto
install -d ${PKG_PREFIX}/lib/perl5/site_perl/5.8.5/auto
install -d ${PKG_PREFIX}/lib/perl5/5.8.5/man/man3
cd ${INCLUDEDIR} && ${PKG_PREFIX}/bin/h2ph *.h machine/*.h sys/*.h
if [ -z "${OSVERSION}" ]; then
if [ -f /sbin/sysctl -a -x /sbin/sysctl ] ; then
osreldate=`/sbin/sysctl -n kern.osreldate`
else
osreldate=`/usr/sbin/sysctl -n kern.osreldate`
fi
else
osreldate=${OSVERSION}
fi
if [ $osreldate -ge 502100 ] ; then
${PKG_PREFIX}/bin/use.perl port
fi
exit 0

View File

@ -15,6 +15,10 @@ also put some variables into your /etc/make.conf file, so that newly
installed ports (not packages!) will use new version of perl, and the
system upgrades from the source will not overwrite the changes made.
Note that use.perl port is specific to a given perl installation. If
you later upgrade the perl port, run use.perl port again to update the
symbolic links and /etc/make.conf.
At any time you can also type
use.perl system

View File

@ -11,7 +11,7 @@ bin/libnetcfg
bin/perl
bin/perl%%PERL_VER%%
@exec ln -fs %D/%F %B/perl5
@unexec rm %B/perl5
@unexec rm -f %B/perl5 2>&1 >/dev/null || true
bin/perlbug
bin/perlcc
bin/perldoc
@ -32,7 +32,7 @@ bin/s2p
%%ENABLE_SUIDPERL%%bin/sperl%%PERL_VER%%
bin/splain
%%ENABLE_SUIDPERL%%bin/suidperl
bin/use.perl
%%NEED_USE_PERL%%bin/use.perl
bin/xsubpp
lib/perl5/%%PERL_VER%%/AnyDBM_File.pm
lib/perl5/%%PERL_VER%%/Attribute/Handlers.pm
@ -62,6 +62,7 @@ lib/perl5/%%PERL_VER%%/BSDPAN/BSDPAN.pm
lib/perl5/%%PERL_VER%%/BSDPAN/BSDPAN/Override.pm
lib/perl5/%%PERL_VER%%/BSDPAN/Config.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/MM_Unix.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/MakeMaker.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/Packlist.pm
lib/perl5/%%PERL_VER%%/Benchmark.pm
lib/perl5/%%PERL_VER%%/CGI.pm
@ -869,6 +870,7 @@ lib/perl5/%%PERL_VER%%/pod/perl582delta.pod
lib/perl5/%%PERL_VER%%/pod/perl583delta.pod
lib/perl5/%%PERL_VER%%/pod/perl584delta.pod
lib/perl5/%%PERL_VER%%/pod/perl585delta.pod
lib/perl5/%%PERL_VER%%/pod/perl586delta.pod
lib/perl5/%%PERL_VER%%/pod/perl58delta.pod
lib/perl5/%%PERL_VER%%/pod/perlaix.pod
lib/perl5/%%PERL_VER%%/pod/perlamiga.pod
@ -1458,12 +1460,9 @@ lib/perl5/%%PERL_VER%%/warnings/register.pm
@dirrm lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils
@dirrm lib/perl5/%%PERL_VER%%/BSDPAN
@unexec find %D/%%SITE_PERL%%/%%PERL_ARCH%%/ -name '*.ph' -delete 2>/dev/null || true
@unexec rmdir %D/%%SITE_PERL%% 2>/dev/null || true
@unexec rmdir %D/lib/perl5/site_perl 2>/dev/null || true
%%GDBM%%@dirrm lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/auto/GDBM_File
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto/POSIX/SigAction 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto/POSIX 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/threads 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/XS 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/Sys 2>/dev/null || true
@ -1566,7 +1565,6 @@ lib/perl5/%%PERL_VER%%/warnings/register.pm
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/MIME 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/KR 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/JP 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/CPAN 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Carp 2>/dev/null || true
@dirrm lib/perl5/%%PERL_VER%%/unicore/To

View File

@ -19,7 +19,7 @@ DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
MAINTAINER= tobez@FreeBSD.org
COMMENT= Practical Extraction and Report Language
PERL_VER= 5.8.5
PERL_VER= 5.8.6
PERL_ARCH= mach
PERL_VERSION= ${PERL_VER}
@ -39,8 +39,6 @@ CONFIGURE_ARGS= -sde -Dprefix=${PREFIX} \
-Dcc="${CC}" -Doptimize="${CFLAGS}" -Duseshrplib \
-Dccflags=-DAPPLLIB_EXP=\"${BSDPAN_DEST}\"
INCLUDEDIR= /usr/include
.include "Makefile.man"
.include <bsd.port.pre.mk>
@ -51,7 +49,6 @@ PLIST_SUB+= ENABLE_SUIDPERL=""
CONFIGURE_ARGS+= -Ud_dosuid
PLIST_SUB+= ENABLE_SUIDPERL="@comment "
.endif
# INSTALLS_SHLIB= yes
.if defined(WITH_GDBM)
CONFIGURE_ARGS+= -Di_gdbm
@ -69,10 +66,16 @@ WITH_PERL_MALLOC= yes
.endif
.if defined(WITH_THREADS)
.if ${ARCH} == "amd64"
IGNORE= Threaded perl does not pass tests on ${ARCH}
.endif
CONFIGURE_ARGS+= -Dusethreads=y
PKGNAMESUFFIX= -threaded
# it seems perl malloc has problems with threaded perl on FreeBSD
.undef WITH_PERL_MALLOC
.if ${OSVERSION} < 492000
CONFIGURE_ARGS+= -Ud_gethostbyaddr_r
.endif
.else
CONFIGURE_ARGS+= -Dusethreads=n
.endif
@ -89,8 +92,10 @@ CONFIGURE_ARGS+= -Duse64bitint
.if ${OSVERSION} < 502100
LATEST_LINK= perl5.8
PLIST_SUB+= NEED_USE_PERL=""
.else
PKGMESSAGE= ${PKGDIR}/.not-here
PLIST_SUB+= NEED_USE_PERL="@comment "
.endif
.if defined(WITH_GDBM)
@ -103,16 +108,34 @@ test:
BSDPAN_DEST= ${PREFIX}/lib/perl5/${PERL_VER}/BSDPAN
BSDPAN_FILES= BSDPAN.pm BSDPAN/Override.pm Config.pm \
ExtUtils/MM_Unix.pm ExtUtils/Packlist.pm
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-5.8.5
ExtUtils/MM_Unix.pm \
ExtUtils/MakeMaker.pm \
ExtUtils/Packlist.pm
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-${PORTVERSION}
PKGINSTALL= ${WRKDIR}/pkg-install
PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
USE_REINPLACE= yes
post-patch:
${SED} -e 's|%%PREFIX%%|${PREFIX}|g;' \
-e 's|%%PERL_VER%%|${PERL_VER}|g;' \
-e 's|%%PERL_VERSION%%|${PERL_VERSION}|g;' \
-e 's|%%PERL_ARCH%%|${PERL_ARCH}|g;' \
-e 's|%%MAKE_CONF%%|${__MAKE_CONF}|g;' \
${FILESDIR}/use.perl \
> ${WRKDIR}/use.perl
${CP} ${WRKDIR}/use.perl ${PKGINSTALL}
${CP} ${WRKDIR}/use.perl ${PKGDEINSTALL}
.if defined(WITH_THREADS)
${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%|${PTHREAD_LIBS}|g;' \
-e 's|%%PTHREAD_CFLAGS%%|${PTHREAD_CFLAGS}|g;' \
${WRKSRC}/hints/freebsd.sh
.else
${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%||g;' \
-e 's|%%PTHREAD_CFLAGS%%||g;' \
${WRKSRC}/hints/freebsd.sh
.endif
pre-install:
@${RM} -f ${PREFIX}/bin/perl${PERL_VER}
@ -122,20 +145,15 @@ post-install:
@${STRIP_CMD} ${PREFIX}/bin/perl${PERL_VER}
@${STRIP_CMD} ${PREFIX}/bin/perl
@${LN} -sf ${PREFIX}/bin/perl${PERL_VER} ${PREFIX}/bin/perl5
${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${PREFIX}/bin/use.perl
.for files in ${BSDPAN_FILES}
${MKDIR} ${BSDPAN_DEST}/${files:H}
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
${BSDPAN_WRKSRC}/${files} ${BSDPAN_DEST}/${files}
.endfor
@(cd ${INCLUDEDIR} && ${PREFIX}/bin/h2ph *.h machine/*.h sys/*.h)
${MKDIR} ${PREFIX}/${SITE_PERL_REL}/auto
${MKDIR} ${PREFIX}/${SITE_PERL_REL}/${PERL_ARCH}/auto
${MKDIR} ${PREFIX}/lib/perl5/${PERL_VER}/man/man3
PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
.if ${OSVERSION} < 502100
${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${PREFIX}/bin/use.perl
@fmt ${PKGMESSAGE}
.else
@${PREFIX}/bin/use.perl port
.endif
.include <bsd.port.post.mk>

View File

@ -1,4 +1,4 @@
# $Id$
# $FreeBSD$
MAN1+= a2p.1
MAN1+= c2ph.1
@ -23,6 +23,7 @@ MAN1+= perl582delta.1
MAN1+= perl583delta.1
MAN1+= perl584delta.1
MAN1+= perl585delta.1
MAN1+= perl586delta.1
MAN1+= perl58delta.1
MAN1+= perlaix.1
MAN1+= perlamiga.1

View File

@ -1,4 +1,4 @@
MD5 (perl-5.8.5.tar.bz2) = 9db6be76aa275f415d75c224ad1d4029
SIZE (perl-5.8.5.tar.bz2) = 9464689
MD5 (BSDPAN-5.8.5.tar.bz2) = 9a752ebc0d65671aeaa5350a260f516e
SIZE (BSDPAN-5.8.5.tar.bz2) = 6278
MD5 (perl-5.8.6.tar.bz2) = 3d030b6ff2a433840edb1a407d18dc0a
SIZE (perl-5.8.6.tar.bz2) = 9693085
MD5 (BSDPAN-5.8.6.tar.bz2) = e2be13e3698b3d95de3368a58be8a540
SIZE (BSDPAN-5.8.6.tar.bz2) = 8217

View File

@ -0,0 +1,30 @@
$FreeBSD$
--- lib/File/Path.pm.orig Sat Jan 29 20:23:40 2005
+++ lib/File/Path.pm Sat Jan 29 20:24:56 2005
@@ -196,7 +196,7 @@ sub rmtree {
# it's also intended to change it to writable in case we have
# to recurse in which case we are better than rm -rf for
# subtrees with strange permissions
- chmod(0777, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
+ chmod(0700, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
or carp "Can't make directory $root read+writeable: $!"
unless $safe;
@@ -230,7 +230,7 @@ sub rmtree {
print "skipped $root\n" if $verbose;
next;
}
- chmod 0777, $root
+ chmod 0700, $root
or carp "Can't make directory $root writeable: $!"
if $force_writeable;
print "rmdir $root\n" if $verbose;
@@ -252,7 +252,7 @@ sub rmtree {
print "skipped $root\n" if $verbose;
next;
}
- chmod 0666, $root
+ chmod 0600, $root
or carp "Can't make file $root writeable: $!"
if $force_writeable;
print "unlink $root\n" if $verbose;

View File

@ -1,20 +1,51 @@
--- hints/freebsd.sh.orig Sun May 30 17:55:47 2004
+++ hints/freebsd.sh Sun May 30 17:57:16 2004
@@ -88,6 +88,7 @@ case "$osvers" in
--- hints/freebsd.sh.orig Wed Mar 24 22:47:33 2004
+++ hints/freebsd.sh Sun Jan 30 23:39:33 2005
@@ -88,6 +88,8 @@ case "$osvers" in
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
libswanted=`echo $libswanted | sed 's/ bind / /'`
+ libswanted=`echo $libswanted | sed 's/ dl / /'`
+ libswanted=`echo $libswanted | sed 's/ c / /'`
# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
libswanted=`echo $libswanted | sed 's/ iconv / /'`
d_setregid='define'
@@ -102,6 +103,9 @@ case "$osvers" in
@@ -102,6 +103,10 @@ case "$osvers" in
;;
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
+ libswanted=`echo $libswanted | sed 's/ bind / /'`
+ libswanted=`echo $libswanted | sed 's/ dl / /'`
+ libswanted=`echo $libswanted | sed 's/ iconv / /'`
+ libswanted=`echo $libswanted | sed 's/ c / /'`
;;
esac
@@ -119,7 +123,7 @@ case "$osvers" in
if [ x$objformat = xelf ]; then
libpth="/usr/lib /usr/local/lib"
glibpth="/usr/lib /usr/local/lib"
- ldflags="-Wl,-E "
+ ldflags="%%PTHREAD_LIBS%% -Wl,-E"
lddlflags="-shared "
else
if [ -e /usr/lib/aout ]; then
@@ -136,7 +140,7 @@ case "$osvers" in
0*|1*|2*|3*) ;;
*)
- ccflags="${ccflags} -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
+ ccflags="${ccflags} %%PTHREAD_CFLAGS%% -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then
usenm=false
fi
@@ -183,7 +187,9 @@ esac
# This script UU/usethreads.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to use threads.
-cat > UU/usethreads.cbu <<'EOCBU'
+## not quite - modern FreeBSD perl port is supposed to take care of that
+## we just add extra libraries and cflags nowadays
+cat > /dev/null <<'EOCBU'
case "$usethreads" in
$define|true|[yY]*)
lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'`

View File

@ -1,134 +1,264 @@
#! %%PREFIX%%/bin/perl -w
#!/bin/sh
# $FreeBSD$
use strict;
# XXX what to do with perldoc, pelbug, perlcc ??
this=`echo -n $0 | /usr/bin/sed -e 's!^.*/!!'`
PERL_VERSION="%%PERL_VERSION%%"
MAKE_CONF=%%MAKE_CONF%%
banner=`date +"%F %T"`
banner="# added by use.perl $banner"
if [ -z "${OSVERSION}" ]; then
if [ -f /sbin/sysctl -a -x /sbin/sysctl ] ; then
osreldate=`/sbin/sysctl -n kern.osreldate`
else
osreldate=`/usr/sbin/sysctl -n kern.osreldate`
fi
else
osreldate=${OSVERSION}
fi
sub usage
if [ "x$this" = "xuse.perl" ]; then
PKG_PREFIX="%%PREFIX%%"
if [ "$1" = "port" ] ; then
need_remove_links=yes
need_create_links=yes
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
need_spam_make_conf=yes
need_spam_manpath=yes
elif [ "$1" = "system" ] ; then
need_remove_links=yes
if [ $osreldate -lt 500036 ] ; then
need_base_system_perl=yes
fi
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
else
echo 'Usage:
$0 port -> /usr/bin/perl is the perl5 port
$0 system -> /usr/bin/perl is the system perl'
exit 2;
fi
else
if [ "$2" = "POST-INSTALL" ] ; then
need_remove_links=yes
if [ $osreldate -ge 502100 ] ; then
need_create_links=yes
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
need_spam_make_conf=yes
need_spam_manpath=yes
fi
need_post_install=yes
elif [ "$2" = "POST-DEINSTALL" ] ; then
need_remove_links=yes
if [ $osreldate -lt 500036 ] ; then
need_base_system_perl=yes
fi
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
else
exit 0;
fi
fi
link_list="
a2p
c2ph
find2perl
h2ph
h2xs
perlbug
perlcc
perldoc
pl2pm
pod2html
pod2latex
pod2man
pod2text
s2p
splain"
if [ $osreldate -ge 500036 ] ; then
link_list=""
fi
special_link_list="
perl
perl5
suidperl"
do_remove_links()
{
print STDERR <<EOF;
Usage:
$0 port -> /usr/bin/perl is the perl5 port
$0 system -> /usr/bin/perl is the system perl
EOF
exit 2;
echo "Removing stale symlinks from /usr/bin..."
for binary in $link_list $special_link_list
do
if [ -L "/usr/bin/$binary" ] ; then
echo " Removing /usr/bin/$binary"
/bin/rm -f "/usr/bin/$binary"
else
echo " Skipping /usr/bin/$binary"
fi
done
bins=`/bin/ls /usr/bin/*perl*5.* ${PKG_PREFIX}/bin/*perl*5.* 2>/dev/null`
for binary in $bins
do
if [ -L "$binary" ] ; then
echo " Removing $binary installed by an older perl port"
/bin/rm -f "$binary"
fi
done
echo "Done."
}
my $port_perl = '%%PREFIX%%/bin/perl';
$port_perl =~ tr|/|/|s;
my $ident = `[ -r /usr/bin/perl5 ] && /usr/bin/ident -q /usr/bin/perl5`;
@ARGV == 1 or usage();
if ($ARGV[0] eq 'port') {
switch_to_port();
} elsif ($ARGV[0] eq 'system') {
switch_to_system();
} else {
usage();
}
exit 0;
# Both functions depend on the idea that switch_to_port leaves
# perl5 alone. If the wrapper is installed on a -current system,
# /usr/bin/perl5 will also be the wrapper.
sub switch_to_system
do_create_links()
{
# protect against cases where people use PREFIX=/usr
if ($port_perl ne '/usr/bin/perl') {
unlink '/usr/bin/perl', '/usr/bin/suidperl',
'/usr/bin/perl%%PERL_VERSION%%';
link '/usr/bin/perl5', '/usr/bin/perl';
link '/usr/bin/perl5', '/usr/bin/perl%%PERL_VERSION%%';
if ($ident =~ m#src/usr.bin/perl/perl.c#) {
link '/usr/bin/perl5', '/usr/bin/suidperl';
} else {
link '/usr/bin/sperl5', '/usr/bin/suidperl';
}
}
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!";
print MK <<EOF;
# -- use.perl generated deltas -- #
# Created: @{[scalar localtime]}
# Setting to use base system perl:
.undef PERL_VER
.undef PERL_VERSION
.undef PERL_ARCH
.undef NOPERL
.undef NO_PERL
EOF
close MK;
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!";
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!";
while (<MPOLD>) {
next if m|use.perl generated line|;
next if m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/%%PERL_VERSION%%/man\s*$|;
next if m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/%%PERL_VERSION%%/perl/man\s*$|;
print MPNEW;
}
close MPNEW;
close MPOLD;
rename '/etc/manpath.config', '/etc/manpath.config.bak';
rename '/etc/manpath.config.new', '/etc/manpath.config';
echo "Creating various symlinks in /usr/bin..."
for binary in $link_list
do
if [ -f "/usr/bin/$binary" ] ; then
echo " Backing up /usr/bin/$binary as /usr/bin/$binary.freebsd"
/bin/mv -f "/usr/bin/$binary" "/usr/bin/$binary.freebsd"
fi
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is still there, which should not happen"
elif [ -e "$PKG_PREFIX/bin/$binary" ] ; then
echo " Symlinking $PKG_PREFIX/bin/$binary to /usr/bin/$binary"
/bin/ln -sf "$PKG_PREFIX/bin/$binary" "/usr/bin/$binary"
else
echo " *** $PKG_PREFIX/bin/$binary is not there, a symlink won't do any good"
fi
done
for binary in $special_link_list
do
if [ -f "/usr/bin/$binary" ] ; then
echo " Removing /usr/bin/$binary"
fi
bin=`echo $binary | /usr/bin/sed -e 's!perl5!perl!'`
bin=`echo $bin | /usr/bin/sed -e 's!suidperl!sperl!'`
if [ -e "/usr/bin/$binary.XXX" ] ; then
echo " *** /usr/bin/$binary is still there, which should not happen"
elif [ -e "$PKG_PREFIX/bin/${bin}%%PERL_VERSION%%" ] ; then
echo " Symlinking $PKG_PREFIX/bin/${bin}%%PERL_VERSION%% to /usr/bin/$binary"
/bin/ln -sf "$PKG_PREFIX/bin/${bin}%%PERL_VERSION%%" "/usr/bin/$binary"
else
echo " *** $PKG_PREFIX/bin/${bin}%%PERL_VERSION%% is not there, a symlink won't do any good"
fi
done
echo "Done."
}
sub switch_to_port
do_base_system_perl()
{
# protect against cases where people use PREFIX=/usr
if ($port_perl ne '/usr/bin/perl') {
if ($ident =~ m#src/usr.bin/perl/perl.c#) {
rename '/usr/bin/perl', '/usr/bin/perl-wrapper';
} else {
unlink '/usr/bin/perl';
}
unlink '/usr/bin/suidperl', '/usr/bin/perl%%PERL_VERSION%%';
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl';
symlink '%%PREFIX%%/bin/suidperl', '/usr/bin/suidperl';
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl%%PERL_VERSION%%';
}
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!";
print MK <<EOF;
# -- use.perl generated deltas -- #
# Created: @{[scalar localtime]}
# Setting to use base perl from ports:
PERL_VER=%%PERL_VER%%
PERL_VERSION=%%PERL_VERSION%%
PERL_ARCH=%%PERL_ARCH%%
NOPERL=yo
NO_PERL=yo
NO_PERL_WRAPPER=yo
EOF
close MK;
my $perl_port_manpath = <<EOF;
# -- use.perl generated line -- #
OPTIONAL_MANPATH %%PREFIX%%/lib/perl5/%%PERL_VERSION%%/man
OPTIONAL_MANPATH %%PREFIX%%/lib/perl5/%%PERL_VERSION%%/perl/man
EOF
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!";
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!";
my $modified = 0;
while (<MPOLD>) {
if (!$modified && m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/\S+/man\s*$|) {
print MPNEW $perl_port_manpath;
$modified = 1;
}
print MPNEW;
}
print MPNEW $perl_port_manpath unless $modified;
close MPNEW;
close MPOLD;
rename '/etc/manpath.config', '/etc/manpath.config.bak';
rename '/etc/manpath.config.new', '/etc/manpath.config';
echo "Restoring base system perl binaries..."
for binary in $link_list
do
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is there, which should not happen"
else
if [ -f "/usr/bin/$binary.freebsd" ] ; then
echo " Moving /usr/bin/$binary.freebsd to /usr/bin/$binary"
/bin/mv -f "/usr/bin/$binary.freebsd" "/usr/bin/$binary"
else
echo " *** /usr/bin/$binary.freebsd is NOT there, nothing to restore"
fi
fi
done
for binary in $special_link_list
do
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is there, which should not happen"
else
bin=`echo $binary | /usr/bin/sed -e 's!perl5!perl!'`
bin=`echo $bin | /usr/bin/sed -e 's!suidperl!sperl!'`
bins=`/bin/ls /usr/bin/${bin}5.* 2>/dev/null | /usr/bin/sort`
bin=""
for b in $bins
do
if [ -f $b -a ! -L $b ] ; then
bin=$b
fi
done
if [ -z $bin ] ; then
echo " *** cannot find what /usr/bin/$binary shall be restored FROM"
elif [ -f $bin ] ; then
echo " Hardlinking $bin to /usr/bin/$binary"
ln -f "$bin" "/usr/bin/$binary"
else
echo " *** $bin is NOT there, nothing to restore"
fi
fi
done
echo "Done."
}
do_post_install()
{
INCLUDEDIR=/usr/include
install -d ${PKG_PREFIX}/lib/perl5/site_perl/%%PERL_VERSION%%/%%PERL_ARCH%%/auto
install -d ${PKG_PREFIX}/lib/perl5/site_perl/%%PERL_VERSION%%/auto
install -d ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/man/man3
cd ${INCLUDEDIR} && ${PKG_PREFIX}/bin/h2ph *.h machine/*.h sys/*.h >/dev/null
}
do_cleanup_make_conf()
{
echo -n "Cleaning up ${MAKE_CONF}..."
if [ -f ${MAKE_CONF} ] ; then
/usr/bin/awk 's=0;
/^#.*use.perl/ { s=1; mode=1 }
/^#/ { s=1; if (mode != 1) { mode=0 } }
/.*PERL.*=/ { s=1; if (mode == 1) { mode=2 } }
/^$/ { s=1; if (mode != 2) { mode = 0 } }
{ if (s != 1) { mode = 0 } if (mode == 0) print }' ${MAKE_CONF} >${MAKE_CONF}.new
/bin/mv ${MAKE_CONF} ${MAKE_CONF}.bak
/bin/mv ${MAKE_CONF}.new ${MAKE_CONF}
fi
echo " Done."
}
do_cleanup_manpath()
{
echo -n "Cleaning up /etc/manpath.config..."
if [ -f /etc/manpath.config ] ; then
/usr/bin/awk 's=0;
/^#.*use.perl/ { s=1; mode=1 }
/^#/ { s=1; if (mode != 1) { mode=0 } }
/^OPTIONAL_MANPATH.*perl5/ { s=1; if (mode == 1) { mode=2 } }
/^$/ { s=1; if (mode != 2) { mode = 0 } }
{ if (s != 1) { mode = 0 } if (mode == 0) print }' /etc/manpath.config >/etc/manpath.config.new
/bin/mv /etc/manpath.config /etc/manpath.config.bak
/bin/mv /etc/manpath.config.new /etc/manpath.config
fi
echo " Done."
}
do_spam_make_conf()
{
echo -n "Spamming ${MAKE_CONF}..."
echo "$banner" >>${MAKE_CONF}
echo "PERL_VER=%%PERL_VER%%" >>${MAKE_CONF}
echo "PERL_VERSION=%%PERL_VERSION%%" >>${MAKE_CONF}
if [ $osreldate -lt 500036 ] ; then
echo "NOPERL=yes" >>${MAKE_CONF}
fi
echo " Done."
}
do_spam_manpath()
{
echo -n "Spamming /etc/manpath.config..."
echo "$banner" >>/etc/manpath.config
echo "OPTIONAL_MANPATH ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/man" >>/etc/manpath.config
echo "OPTIONAL_MANPATH ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/perl/man" >>/etc/manpath.config
echo " Done."
}
[ $need_remove_links ] && do_remove_links
[ $need_create_links ] && do_create_links
[ $need_base_system_perl ] && do_base_system_perl
[ $need_post_install ] && do_post_install
[ $need_cleanup_make_conf ] && do_cleanup_make_conf
[ $need_spam_make_conf ] && do_spam_make_conf
[ $need_cleanup_manpath ] && do_cleanup_manpath
[ $need_spam_manpath ] && do_spam_manpath
exit 0

View File

@ -1,28 +0,0 @@
#!/bin/sh
if [ "$2" != POST-INSTALL ] ; then
exit 0
fi
INCLUDEDIR=/usr/include
install -d ${PKG_PREFIX}/lib/perl5/site_perl/5.8.5/mach/auto
install -d ${PKG_PREFIX}/lib/perl5/site_perl/5.8.5/auto
install -d ${PKG_PREFIX}/lib/perl5/5.8.5/man/man3
cd ${INCLUDEDIR} && ${PKG_PREFIX}/bin/h2ph *.h machine/*.h sys/*.h
if [ -z "${OSVERSION}" ]; then
if [ -f /sbin/sysctl -a -x /sbin/sysctl ] ; then
osreldate=`/sbin/sysctl -n kern.osreldate`
else
osreldate=`/usr/sbin/sysctl -n kern.osreldate`
fi
else
osreldate=${OSVERSION}
fi
if [ $osreldate -ge 502100 ] ; then
${PKG_PREFIX}/bin/use.perl port
fi
exit 0

View File

@ -15,6 +15,10 @@ also put some variables into your /etc/make.conf file, so that newly
installed ports (not packages!) will use new version of perl, and the
system upgrades from the source will not overwrite the changes made.
Note that use.perl port is specific to a given perl installation. If
you later upgrade the perl port, run use.perl port again to update the
symbolic links and /etc/make.conf.
At any time you can also type
use.perl system

View File

@ -11,7 +11,7 @@ bin/libnetcfg
bin/perl
bin/perl%%PERL_VER%%
@exec ln -fs %D/%F %B/perl5
@unexec rm %B/perl5
@unexec rm -f %B/perl5 2>&1 >/dev/null || true
bin/perlbug
bin/perlcc
bin/perldoc
@ -32,7 +32,7 @@ bin/s2p
%%ENABLE_SUIDPERL%%bin/sperl%%PERL_VER%%
bin/splain
%%ENABLE_SUIDPERL%%bin/suidperl
bin/use.perl
%%NEED_USE_PERL%%bin/use.perl
bin/xsubpp
lib/perl5/%%PERL_VER%%/AnyDBM_File.pm
lib/perl5/%%PERL_VER%%/Attribute/Handlers.pm
@ -62,6 +62,7 @@ lib/perl5/%%PERL_VER%%/BSDPAN/BSDPAN.pm
lib/perl5/%%PERL_VER%%/BSDPAN/BSDPAN/Override.pm
lib/perl5/%%PERL_VER%%/BSDPAN/Config.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/MM_Unix.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/MakeMaker.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/Packlist.pm
lib/perl5/%%PERL_VER%%/Benchmark.pm
lib/perl5/%%PERL_VER%%/CGI.pm
@ -869,6 +870,7 @@ lib/perl5/%%PERL_VER%%/pod/perl582delta.pod
lib/perl5/%%PERL_VER%%/pod/perl583delta.pod
lib/perl5/%%PERL_VER%%/pod/perl584delta.pod
lib/perl5/%%PERL_VER%%/pod/perl585delta.pod
lib/perl5/%%PERL_VER%%/pod/perl586delta.pod
lib/perl5/%%PERL_VER%%/pod/perl58delta.pod
lib/perl5/%%PERL_VER%%/pod/perlaix.pod
lib/perl5/%%PERL_VER%%/pod/perlamiga.pod
@ -1458,12 +1460,9 @@ lib/perl5/%%PERL_VER%%/warnings/register.pm
@dirrm lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils
@dirrm lib/perl5/%%PERL_VER%%/BSDPAN
@unexec find %D/%%SITE_PERL%%/%%PERL_ARCH%%/ -name '*.ph' -delete 2>/dev/null || true
@unexec rmdir %D/%%SITE_PERL%% 2>/dev/null || true
@unexec rmdir %D/lib/perl5/site_perl 2>/dev/null || true
%%GDBM%%@dirrm lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/auto/GDBM_File
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto/POSIX/SigAction 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto/POSIX 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/threads 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/XS 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/Sys 2>/dev/null || true
@ -1566,7 +1565,6 @@ lib/perl5/%%PERL_VER%%/warnings/register.pm
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/MIME 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/KR 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/JP 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/CPAN 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Carp 2>/dev/null || true
@dirrm lib/perl5/%%PERL_VER%%/unicore/To

View File

@ -19,7 +19,7 @@ DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
MAINTAINER= tobez@FreeBSD.org
COMMENT= Practical Extraction and Report Language
PERL_VER= 5.8.5
PERL_VER= 5.8.6
PERL_ARCH= mach
PERL_VERSION= ${PERL_VER}
@ -39,8 +39,6 @@ CONFIGURE_ARGS= -sde -Dprefix=${PREFIX} \
-Dcc="${CC}" -Doptimize="${CFLAGS}" -Duseshrplib \
-Dccflags=-DAPPLLIB_EXP=\"${BSDPAN_DEST}\"
INCLUDEDIR= /usr/include
.include "Makefile.man"
.include <bsd.port.pre.mk>
@ -51,7 +49,6 @@ PLIST_SUB+= ENABLE_SUIDPERL=""
CONFIGURE_ARGS+= -Ud_dosuid
PLIST_SUB+= ENABLE_SUIDPERL="@comment "
.endif
# INSTALLS_SHLIB= yes
.if defined(WITH_GDBM)
CONFIGURE_ARGS+= -Di_gdbm
@ -69,10 +66,16 @@ WITH_PERL_MALLOC= yes
.endif
.if defined(WITH_THREADS)
.if ${ARCH} == "amd64"
IGNORE= Threaded perl does not pass tests on ${ARCH}
.endif
CONFIGURE_ARGS+= -Dusethreads=y
PKGNAMESUFFIX= -threaded
# it seems perl malloc has problems with threaded perl on FreeBSD
.undef WITH_PERL_MALLOC
.if ${OSVERSION} < 492000
CONFIGURE_ARGS+= -Ud_gethostbyaddr_r
.endif
.else
CONFIGURE_ARGS+= -Dusethreads=n
.endif
@ -89,8 +92,10 @@ CONFIGURE_ARGS+= -Duse64bitint
.if ${OSVERSION} < 502100
LATEST_LINK= perl5.8
PLIST_SUB+= NEED_USE_PERL=""
.else
PKGMESSAGE= ${PKGDIR}/.not-here
PLIST_SUB+= NEED_USE_PERL="@comment "
.endif
.if defined(WITH_GDBM)
@ -103,16 +108,34 @@ test:
BSDPAN_DEST= ${PREFIX}/lib/perl5/${PERL_VER}/BSDPAN
BSDPAN_FILES= BSDPAN.pm BSDPAN/Override.pm Config.pm \
ExtUtils/MM_Unix.pm ExtUtils/Packlist.pm
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-5.8.5
ExtUtils/MM_Unix.pm \
ExtUtils/MakeMaker.pm \
ExtUtils/Packlist.pm
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-${PORTVERSION}
PKGINSTALL= ${WRKDIR}/pkg-install
PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
USE_REINPLACE= yes
post-patch:
${SED} -e 's|%%PREFIX%%|${PREFIX}|g;' \
-e 's|%%PERL_VER%%|${PERL_VER}|g;' \
-e 's|%%PERL_VERSION%%|${PERL_VERSION}|g;' \
-e 's|%%PERL_ARCH%%|${PERL_ARCH}|g;' \
-e 's|%%MAKE_CONF%%|${__MAKE_CONF}|g;' \
${FILESDIR}/use.perl \
> ${WRKDIR}/use.perl
${CP} ${WRKDIR}/use.perl ${PKGINSTALL}
${CP} ${WRKDIR}/use.perl ${PKGDEINSTALL}
.if defined(WITH_THREADS)
${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%|${PTHREAD_LIBS}|g;' \
-e 's|%%PTHREAD_CFLAGS%%|${PTHREAD_CFLAGS}|g;' \
${WRKSRC}/hints/freebsd.sh
.else
${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%||g;' \
-e 's|%%PTHREAD_CFLAGS%%||g;' \
${WRKSRC}/hints/freebsd.sh
.endif
pre-install:
@${RM} -f ${PREFIX}/bin/perl${PERL_VER}
@ -122,20 +145,15 @@ post-install:
@${STRIP_CMD} ${PREFIX}/bin/perl${PERL_VER}
@${STRIP_CMD} ${PREFIX}/bin/perl
@${LN} -sf ${PREFIX}/bin/perl${PERL_VER} ${PREFIX}/bin/perl5
${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${PREFIX}/bin/use.perl
.for files in ${BSDPAN_FILES}
${MKDIR} ${BSDPAN_DEST}/${files:H}
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
${BSDPAN_WRKSRC}/${files} ${BSDPAN_DEST}/${files}
.endfor
@(cd ${INCLUDEDIR} && ${PREFIX}/bin/h2ph *.h machine/*.h sys/*.h)
${MKDIR} ${PREFIX}/${SITE_PERL_REL}/auto
${MKDIR} ${PREFIX}/${SITE_PERL_REL}/${PERL_ARCH}/auto
${MKDIR} ${PREFIX}/lib/perl5/${PERL_VER}/man/man3
PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
.if ${OSVERSION} < 502100
${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${PREFIX}/bin/use.perl
@fmt ${PKGMESSAGE}
.else
@${PREFIX}/bin/use.perl port
.endif
.include <bsd.port.post.mk>

View File

@ -1,4 +1,4 @@
# $Id$
# $FreeBSD$
MAN1+= a2p.1
MAN1+= c2ph.1
@ -23,6 +23,7 @@ MAN1+= perl582delta.1
MAN1+= perl583delta.1
MAN1+= perl584delta.1
MAN1+= perl585delta.1
MAN1+= perl586delta.1
MAN1+= perl58delta.1
MAN1+= perlaix.1
MAN1+= perlamiga.1

View File

@ -1,4 +1,4 @@
MD5 (perl-5.8.5.tar.bz2) = 9db6be76aa275f415d75c224ad1d4029
SIZE (perl-5.8.5.tar.bz2) = 9464689
MD5 (BSDPAN-5.8.5.tar.bz2) = 9a752ebc0d65671aeaa5350a260f516e
SIZE (BSDPAN-5.8.5.tar.bz2) = 6278
MD5 (perl-5.8.6.tar.bz2) = 3d030b6ff2a433840edb1a407d18dc0a
SIZE (perl-5.8.6.tar.bz2) = 9693085
MD5 (BSDPAN-5.8.6.tar.bz2) = e2be13e3698b3d95de3368a58be8a540
SIZE (BSDPAN-5.8.6.tar.bz2) = 8217

View File

@ -0,0 +1,30 @@
$FreeBSD$
--- lib/File/Path.pm.orig Sat Jan 29 20:23:40 2005
+++ lib/File/Path.pm Sat Jan 29 20:24:56 2005
@@ -196,7 +196,7 @@ sub rmtree {
# it's also intended to change it to writable in case we have
# to recurse in which case we are better than rm -rf for
# subtrees with strange permissions
- chmod(0777, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
+ chmod(0700, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
or carp "Can't make directory $root read+writeable: $!"
unless $safe;
@@ -230,7 +230,7 @@ sub rmtree {
print "skipped $root\n" if $verbose;
next;
}
- chmod 0777, $root
+ chmod 0700, $root
or carp "Can't make directory $root writeable: $!"
if $force_writeable;
print "rmdir $root\n" if $verbose;
@@ -252,7 +252,7 @@ sub rmtree {
print "skipped $root\n" if $verbose;
next;
}
- chmod 0666, $root
+ chmod 0600, $root
or carp "Can't make file $root writeable: $!"
if $force_writeable;
print "unlink $root\n" if $verbose;

View File

@ -1,20 +1,51 @@
--- hints/freebsd.sh.orig Sun May 30 17:55:47 2004
+++ hints/freebsd.sh Sun May 30 17:57:16 2004
@@ -88,6 +88,7 @@ case "$osvers" in
--- hints/freebsd.sh.orig Wed Mar 24 22:47:33 2004
+++ hints/freebsd.sh Sun Jan 30 23:39:33 2005
@@ -88,6 +88,8 @@ case "$osvers" in
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
libswanted=`echo $libswanted | sed 's/ bind / /'`
+ libswanted=`echo $libswanted | sed 's/ dl / /'`
+ libswanted=`echo $libswanted | sed 's/ c / /'`
# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
libswanted=`echo $libswanted | sed 's/ iconv / /'`
d_setregid='define'
@@ -102,6 +103,9 @@ case "$osvers" in
@@ -102,6 +103,10 @@ case "$osvers" in
;;
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
+ libswanted=`echo $libswanted | sed 's/ bind / /'`
+ libswanted=`echo $libswanted | sed 's/ dl / /'`
+ libswanted=`echo $libswanted | sed 's/ iconv / /'`
+ libswanted=`echo $libswanted | sed 's/ c / /'`
;;
esac
@@ -119,7 +123,7 @@ case "$osvers" in
if [ x$objformat = xelf ]; then
libpth="/usr/lib /usr/local/lib"
glibpth="/usr/lib /usr/local/lib"
- ldflags="-Wl,-E "
+ ldflags="%%PTHREAD_LIBS%% -Wl,-E"
lddlflags="-shared "
else
if [ -e /usr/lib/aout ]; then
@@ -136,7 +140,7 @@ case "$osvers" in
0*|1*|2*|3*) ;;
*)
- ccflags="${ccflags} -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
+ ccflags="${ccflags} %%PTHREAD_CFLAGS%% -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then
usenm=false
fi
@@ -183,7 +187,9 @@ esac
# This script UU/usethreads.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to use threads.
-cat > UU/usethreads.cbu <<'EOCBU'
+## not quite - modern FreeBSD perl port is supposed to take care of that
+## we just add extra libraries and cflags nowadays
+cat > /dev/null <<'EOCBU'
case "$usethreads" in
$define|true|[yY]*)
lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'`

View File

@ -1,134 +1,264 @@
#! %%PREFIX%%/bin/perl -w
#!/bin/sh
# $FreeBSD$
use strict;
# XXX what to do with perldoc, pelbug, perlcc ??
this=`echo -n $0 | /usr/bin/sed -e 's!^.*/!!'`
PERL_VERSION="%%PERL_VERSION%%"
MAKE_CONF=%%MAKE_CONF%%
banner=`date +"%F %T"`
banner="# added by use.perl $banner"
if [ -z "${OSVERSION}" ]; then
if [ -f /sbin/sysctl -a -x /sbin/sysctl ] ; then
osreldate=`/sbin/sysctl -n kern.osreldate`
else
osreldate=`/usr/sbin/sysctl -n kern.osreldate`
fi
else
osreldate=${OSVERSION}
fi
sub usage
if [ "x$this" = "xuse.perl" ]; then
PKG_PREFIX="%%PREFIX%%"
if [ "$1" = "port" ] ; then
need_remove_links=yes
need_create_links=yes
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
need_spam_make_conf=yes
need_spam_manpath=yes
elif [ "$1" = "system" ] ; then
need_remove_links=yes
if [ $osreldate -lt 500036 ] ; then
need_base_system_perl=yes
fi
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
else
echo 'Usage:
$0 port -> /usr/bin/perl is the perl5 port
$0 system -> /usr/bin/perl is the system perl'
exit 2;
fi
else
if [ "$2" = "POST-INSTALL" ] ; then
need_remove_links=yes
if [ $osreldate -ge 502100 ] ; then
need_create_links=yes
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
need_spam_make_conf=yes
need_spam_manpath=yes
fi
need_post_install=yes
elif [ "$2" = "POST-DEINSTALL" ] ; then
need_remove_links=yes
if [ $osreldate -lt 500036 ] ; then
need_base_system_perl=yes
fi
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
else
exit 0;
fi
fi
link_list="
a2p
c2ph
find2perl
h2ph
h2xs
perlbug
perlcc
perldoc
pl2pm
pod2html
pod2latex
pod2man
pod2text
s2p
splain"
if [ $osreldate -ge 500036 ] ; then
link_list=""
fi
special_link_list="
perl
perl5
suidperl"
do_remove_links()
{
print STDERR <<EOF;
Usage:
$0 port -> /usr/bin/perl is the perl5 port
$0 system -> /usr/bin/perl is the system perl
EOF
exit 2;
echo "Removing stale symlinks from /usr/bin..."
for binary in $link_list $special_link_list
do
if [ -L "/usr/bin/$binary" ] ; then
echo " Removing /usr/bin/$binary"
/bin/rm -f "/usr/bin/$binary"
else
echo " Skipping /usr/bin/$binary"
fi
done
bins=`/bin/ls /usr/bin/*perl*5.* ${PKG_PREFIX}/bin/*perl*5.* 2>/dev/null`
for binary in $bins
do
if [ -L "$binary" ] ; then
echo " Removing $binary installed by an older perl port"
/bin/rm -f "$binary"
fi
done
echo "Done."
}
my $port_perl = '%%PREFIX%%/bin/perl';
$port_perl =~ tr|/|/|s;
my $ident = `[ -r /usr/bin/perl5 ] && /usr/bin/ident -q /usr/bin/perl5`;
@ARGV == 1 or usage();
if ($ARGV[0] eq 'port') {
switch_to_port();
} elsif ($ARGV[0] eq 'system') {
switch_to_system();
} else {
usage();
}
exit 0;
# Both functions depend on the idea that switch_to_port leaves
# perl5 alone. If the wrapper is installed on a -current system,
# /usr/bin/perl5 will also be the wrapper.
sub switch_to_system
do_create_links()
{
# protect against cases where people use PREFIX=/usr
if ($port_perl ne '/usr/bin/perl') {
unlink '/usr/bin/perl', '/usr/bin/suidperl',
'/usr/bin/perl%%PERL_VERSION%%';
link '/usr/bin/perl5', '/usr/bin/perl';
link '/usr/bin/perl5', '/usr/bin/perl%%PERL_VERSION%%';
if ($ident =~ m#src/usr.bin/perl/perl.c#) {
link '/usr/bin/perl5', '/usr/bin/suidperl';
} else {
link '/usr/bin/sperl5', '/usr/bin/suidperl';
}
}
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!";
print MK <<EOF;
# -- use.perl generated deltas -- #
# Created: @{[scalar localtime]}
# Setting to use base system perl:
.undef PERL_VER
.undef PERL_VERSION
.undef PERL_ARCH
.undef NOPERL
.undef NO_PERL
EOF
close MK;
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!";
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!";
while (<MPOLD>) {
next if m|use.perl generated line|;
next if m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/%%PERL_VERSION%%/man\s*$|;
next if m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/%%PERL_VERSION%%/perl/man\s*$|;
print MPNEW;
}
close MPNEW;
close MPOLD;
rename '/etc/manpath.config', '/etc/manpath.config.bak';
rename '/etc/manpath.config.new', '/etc/manpath.config';
echo "Creating various symlinks in /usr/bin..."
for binary in $link_list
do
if [ -f "/usr/bin/$binary" ] ; then
echo " Backing up /usr/bin/$binary as /usr/bin/$binary.freebsd"
/bin/mv -f "/usr/bin/$binary" "/usr/bin/$binary.freebsd"
fi
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is still there, which should not happen"
elif [ -e "$PKG_PREFIX/bin/$binary" ] ; then
echo " Symlinking $PKG_PREFIX/bin/$binary to /usr/bin/$binary"
/bin/ln -sf "$PKG_PREFIX/bin/$binary" "/usr/bin/$binary"
else
echo " *** $PKG_PREFIX/bin/$binary is not there, a symlink won't do any good"
fi
done
for binary in $special_link_list
do
if [ -f "/usr/bin/$binary" ] ; then
echo " Removing /usr/bin/$binary"
fi
bin=`echo $binary | /usr/bin/sed -e 's!perl5!perl!'`
bin=`echo $bin | /usr/bin/sed -e 's!suidperl!sperl!'`
if [ -e "/usr/bin/$binary.XXX" ] ; then
echo " *** /usr/bin/$binary is still there, which should not happen"
elif [ -e "$PKG_PREFIX/bin/${bin}%%PERL_VERSION%%" ] ; then
echo " Symlinking $PKG_PREFIX/bin/${bin}%%PERL_VERSION%% to /usr/bin/$binary"
/bin/ln -sf "$PKG_PREFIX/bin/${bin}%%PERL_VERSION%%" "/usr/bin/$binary"
else
echo " *** $PKG_PREFIX/bin/${bin}%%PERL_VERSION%% is not there, a symlink won't do any good"
fi
done
echo "Done."
}
sub switch_to_port
do_base_system_perl()
{
# protect against cases where people use PREFIX=/usr
if ($port_perl ne '/usr/bin/perl') {
if ($ident =~ m#src/usr.bin/perl/perl.c#) {
rename '/usr/bin/perl', '/usr/bin/perl-wrapper';
} else {
unlink '/usr/bin/perl';
}
unlink '/usr/bin/suidperl', '/usr/bin/perl%%PERL_VERSION%%';
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl';
symlink '%%PREFIX%%/bin/suidperl', '/usr/bin/suidperl';
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl%%PERL_VERSION%%';
}
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!";
print MK <<EOF;
# -- use.perl generated deltas -- #
# Created: @{[scalar localtime]}
# Setting to use base perl from ports:
PERL_VER=%%PERL_VER%%
PERL_VERSION=%%PERL_VERSION%%
PERL_ARCH=%%PERL_ARCH%%
NOPERL=yo
NO_PERL=yo
NO_PERL_WRAPPER=yo
EOF
close MK;
my $perl_port_manpath = <<EOF;
# -- use.perl generated line -- #
OPTIONAL_MANPATH %%PREFIX%%/lib/perl5/%%PERL_VERSION%%/man
OPTIONAL_MANPATH %%PREFIX%%/lib/perl5/%%PERL_VERSION%%/perl/man
EOF
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!";
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!";
my $modified = 0;
while (<MPOLD>) {
if (!$modified && m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/\S+/man\s*$|) {
print MPNEW $perl_port_manpath;
$modified = 1;
}
print MPNEW;
}
print MPNEW $perl_port_manpath unless $modified;
close MPNEW;
close MPOLD;
rename '/etc/manpath.config', '/etc/manpath.config.bak';
rename '/etc/manpath.config.new', '/etc/manpath.config';
echo "Restoring base system perl binaries..."
for binary in $link_list
do
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is there, which should not happen"
else
if [ -f "/usr/bin/$binary.freebsd" ] ; then
echo " Moving /usr/bin/$binary.freebsd to /usr/bin/$binary"
/bin/mv -f "/usr/bin/$binary.freebsd" "/usr/bin/$binary"
else
echo " *** /usr/bin/$binary.freebsd is NOT there, nothing to restore"
fi
fi
done
for binary in $special_link_list
do
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is there, which should not happen"
else
bin=`echo $binary | /usr/bin/sed -e 's!perl5!perl!'`
bin=`echo $bin | /usr/bin/sed -e 's!suidperl!sperl!'`
bins=`/bin/ls /usr/bin/${bin}5.* 2>/dev/null | /usr/bin/sort`
bin=""
for b in $bins
do
if [ -f $b -a ! -L $b ] ; then
bin=$b
fi
done
if [ -z $bin ] ; then
echo " *** cannot find what /usr/bin/$binary shall be restored FROM"
elif [ -f $bin ] ; then
echo " Hardlinking $bin to /usr/bin/$binary"
ln -f "$bin" "/usr/bin/$binary"
else
echo " *** $bin is NOT there, nothing to restore"
fi
fi
done
echo "Done."
}
do_post_install()
{
INCLUDEDIR=/usr/include
install -d ${PKG_PREFIX}/lib/perl5/site_perl/%%PERL_VERSION%%/%%PERL_ARCH%%/auto
install -d ${PKG_PREFIX}/lib/perl5/site_perl/%%PERL_VERSION%%/auto
install -d ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/man/man3
cd ${INCLUDEDIR} && ${PKG_PREFIX}/bin/h2ph *.h machine/*.h sys/*.h >/dev/null
}
do_cleanup_make_conf()
{
echo -n "Cleaning up ${MAKE_CONF}..."
if [ -f ${MAKE_CONF} ] ; then
/usr/bin/awk 's=0;
/^#.*use.perl/ { s=1; mode=1 }
/^#/ { s=1; if (mode != 1) { mode=0 } }
/.*PERL.*=/ { s=1; if (mode == 1) { mode=2 } }
/^$/ { s=1; if (mode != 2) { mode = 0 } }
{ if (s != 1) { mode = 0 } if (mode == 0) print }' ${MAKE_CONF} >${MAKE_CONF}.new
/bin/mv ${MAKE_CONF} ${MAKE_CONF}.bak
/bin/mv ${MAKE_CONF}.new ${MAKE_CONF}
fi
echo " Done."
}
do_cleanup_manpath()
{
echo -n "Cleaning up /etc/manpath.config..."
if [ -f /etc/manpath.config ] ; then
/usr/bin/awk 's=0;
/^#.*use.perl/ { s=1; mode=1 }
/^#/ { s=1; if (mode != 1) { mode=0 } }
/^OPTIONAL_MANPATH.*perl5/ { s=1; if (mode == 1) { mode=2 } }
/^$/ { s=1; if (mode != 2) { mode = 0 } }
{ if (s != 1) { mode = 0 } if (mode == 0) print }' /etc/manpath.config >/etc/manpath.config.new
/bin/mv /etc/manpath.config /etc/manpath.config.bak
/bin/mv /etc/manpath.config.new /etc/manpath.config
fi
echo " Done."
}
do_spam_make_conf()
{
echo -n "Spamming ${MAKE_CONF}..."
echo "$banner" >>${MAKE_CONF}
echo "PERL_VER=%%PERL_VER%%" >>${MAKE_CONF}
echo "PERL_VERSION=%%PERL_VERSION%%" >>${MAKE_CONF}
if [ $osreldate -lt 500036 ] ; then
echo "NOPERL=yes" >>${MAKE_CONF}
fi
echo " Done."
}
do_spam_manpath()
{
echo -n "Spamming /etc/manpath.config..."
echo "$banner" >>/etc/manpath.config
echo "OPTIONAL_MANPATH ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/man" >>/etc/manpath.config
echo "OPTIONAL_MANPATH ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/perl/man" >>/etc/manpath.config
echo " Done."
}
[ $need_remove_links ] && do_remove_links
[ $need_create_links ] && do_create_links
[ $need_base_system_perl ] && do_base_system_perl
[ $need_post_install ] && do_post_install
[ $need_cleanup_make_conf ] && do_cleanup_make_conf
[ $need_spam_make_conf ] && do_spam_make_conf
[ $need_cleanup_manpath ] && do_cleanup_manpath
[ $need_spam_manpath ] && do_spam_manpath
exit 0

View File

@ -1,28 +0,0 @@
#!/bin/sh
if [ "$2" != POST-INSTALL ] ; then
exit 0
fi
INCLUDEDIR=/usr/include
install -d ${PKG_PREFIX}/lib/perl5/site_perl/5.8.5/mach/auto
install -d ${PKG_PREFIX}/lib/perl5/site_perl/5.8.5/auto
install -d ${PKG_PREFIX}/lib/perl5/5.8.5/man/man3
cd ${INCLUDEDIR} && ${PKG_PREFIX}/bin/h2ph *.h machine/*.h sys/*.h
if [ -z "${OSVERSION}" ]; then
if [ -f /sbin/sysctl -a -x /sbin/sysctl ] ; then
osreldate=`/sbin/sysctl -n kern.osreldate`
else
osreldate=`/usr/sbin/sysctl -n kern.osreldate`
fi
else
osreldate=${OSVERSION}
fi
if [ $osreldate -ge 502100 ] ; then
${PKG_PREFIX}/bin/use.perl port
fi
exit 0

View File

@ -15,6 +15,10 @@ also put some variables into your /etc/make.conf file, so that newly
installed ports (not packages!) will use new version of perl, and the
system upgrades from the source will not overwrite the changes made.
Note that use.perl port is specific to a given perl installation. If
you later upgrade the perl port, run use.perl port again to update the
symbolic links and /etc/make.conf.
At any time you can also type
use.perl system

View File

@ -11,7 +11,7 @@ bin/libnetcfg
bin/perl
bin/perl%%PERL_VER%%
@exec ln -fs %D/%F %B/perl5
@unexec rm %B/perl5
@unexec rm -f %B/perl5 2>&1 >/dev/null || true
bin/perlbug
bin/perlcc
bin/perldoc
@ -32,7 +32,7 @@ bin/s2p
%%ENABLE_SUIDPERL%%bin/sperl%%PERL_VER%%
bin/splain
%%ENABLE_SUIDPERL%%bin/suidperl
bin/use.perl
%%NEED_USE_PERL%%bin/use.perl
bin/xsubpp
lib/perl5/%%PERL_VER%%/AnyDBM_File.pm
lib/perl5/%%PERL_VER%%/Attribute/Handlers.pm
@ -62,6 +62,7 @@ lib/perl5/%%PERL_VER%%/BSDPAN/BSDPAN.pm
lib/perl5/%%PERL_VER%%/BSDPAN/BSDPAN/Override.pm
lib/perl5/%%PERL_VER%%/BSDPAN/Config.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/MM_Unix.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/MakeMaker.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/Packlist.pm
lib/perl5/%%PERL_VER%%/Benchmark.pm
lib/perl5/%%PERL_VER%%/CGI.pm
@ -869,6 +870,7 @@ lib/perl5/%%PERL_VER%%/pod/perl582delta.pod
lib/perl5/%%PERL_VER%%/pod/perl583delta.pod
lib/perl5/%%PERL_VER%%/pod/perl584delta.pod
lib/perl5/%%PERL_VER%%/pod/perl585delta.pod
lib/perl5/%%PERL_VER%%/pod/perl586delta.pod
lib/perl5/%%PERL_VER%%/pod/perl58delta.pod
lib/perl5/%%PERL_VER%%/pod/perlaix.pod
lib/perl5/%%PERL_VER%%/pod/perlamiga.pod
@ -1458,12 +1460,9 @@ lib/perl5/%%PERL_VER%%/warnings/register.pm
@dirrm lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils
@dirrm lib/perl5/%%PERL_VER%%/BSDPAN
@unexec find %D/%%SITE_PERL%%/%%PERL_ARCH%%/ -name '*.ph' -delete 2>/dev/null || true
@unexec rmdir %D/%%SITE_PERL%% 2>/dev/null || true
@unexec rmdir %D/lib/perl5/site_perl 2>/dev/null || true
%%GDBM%%@dirrm lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/auto/GDBM_File
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto/POSIX/SigAction 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto/POSIX 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/threads 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/XS 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/Sys 2>/dev/null || true
@ -1566,7 +1565,6 @@ lib/perl5/%%PERL_VER%%/warnings/register.pm
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/MIME 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/KR 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/JP 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/CPAN 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Carp 2>/dev/null || true
@dirrm lib/perl5/%%PERL_VER%%/unicore/To

View File

@ -19,7 +19,7 @@ DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
MAINTAINER= tobez@FreeBSD.org
COMMENT= Practical Extraction and Report Language
PERL_VER= 5.8.5
PERL_VER= 5.8.6
PERL_ARCH= mach
PERL_VERSION= ${PERL_VER}
@ -39,8 +39,6 @@ CONFIGURE_ARGS= -sde -Dprefix=${PREFIX} \
-Dcc="${CC}" -Doptimize="${CFLAGS}" -Duseshrplib \
-Dccflags=-DAPPLLIB_EXP=\"${BSDPAN_DEST}\"
INCLUDEDIR= /usr/include
.include "Makefile.man"
.include <bsd.port.pre.mk>
@ -51,7 +49,6 @@ PLIST_SUB+= ENABLE_SUIDPERL=""
CONFIGURE_ARGS+= -Ud_dosuid
PLIST_SUB+= ENABLE_SUIDPERL="@comment "
.endif
# INSTALLS_SHLIB= yes
.if defined(WITH_GDBM)
CONFIGURE_ARGS+= -Di_gdbm
@ -69,10 +66,16 @@ WITH_PERL_MALLOC= yes
.endif
.if defined(WITH_THREADS)
.if ${ARCH} == "amd64"
IGNORE= Threaded perl does not pass tests on ${ARCH}
.endif
CONFIGURE_ARGS+= -Dusethreads=y
PKGNAMESUFFIX= -threaded
# it seems perl malloc has problems with threaded perl on FreeBSD
.undef WITH_PERL_MALLOC
.if ${OSVERSION} < 492000
CONFIGURE_ARGS+= -Ud_gethostbyaddr_r
.endif
.else
CONFIGURE_ARGS+= -Dusethreads=n
.endif
@ -89,8 +92,10 @@ CONFIGURE_ARGS+= -Duse64bitint
.if ${OSVERSION} < 502100
LATEST_LINK= perl5.8
PLIST_SUB+= NEED_USE_PERL=""
.else
PKGMESSAGE= ${PKGDIR}/.not-here
PLIST_SUB+= NEED_USE_PERL="@comment "
.endif
.if defined(WITH_GDBM)
@ -103,16 +108,34 @@ test:
BSDPAN_DEST= ${PREFIX}/lib/perl5/${PERL_VER}/BSDPAN
BSDPAN_FILES= BSDPAN.pm BSDPAN/Override.pm Config.pm \
ExtUtils/MM_Unix.pm ExtUtils/Packlist.pm
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-5.8.5
ExtUtils/MM_Unix.pm \
ExtUtils/MakeMaker.pm \
ExtUtils/Packlist.pm
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-${PORTVERSION}
PKGINSTALL= ${WRKDIR}/pkg-install
PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
USE_REINPLACE= yes
post-patch:
${SED} -e 's|%%PREFIX%%|${PREFIX}|g;' \
-e 's|%%PERL_VER%%|${PERL_VER}|g;' \
-e 's|%%PERL_VERSION%%|${PERL_VERSION}|g;' \
-e 's|%%PERL_ARCH%%|${PERL_ARCH}|g;' \
-e 's|%%MAKE_CONF%%|${__MAKE_CONF}|g;' \
${FILESDIR}/use.perl \
> ${WRKDIR}/use.perl
${CP} ${WRKDIR}/use.perl ${PKGINSTALL}
${CP} ${WRKDIR}/use.perl ${PKGDEINSTALL}
.if defined(WITH_THREADS)
${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%|${PTHREAD_LIBS}|g;' \
-e 's|%%PTHREAD_CFLAGS%%|${PTHREAD_CFLAGS}|g;' \
${WRKSRC}/hints/freebsd.sh
.else
${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%||g;' \
-e 's|%%PTHREAD_CFLAGS%%||g;' \
${WRKSRC}/hints/freebsd.sh
.endif
pre-install:
@${RM} -f ${PREFIX}/bin/perl${PERL_VER}
@ -122,20 +145,15 @@ post-install:
@${STRIP_CMD} ${PREFIX}/bin/perl${PERL_VER}
@${STRIP_CMD} ${PREFIX}/bin/perl
@${LN} -sf ${PREFIX}/bin/perl${PERL_VER} ${PREFIX}/bin/perl5
${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${PREFIX}/bin/use.perl
.for files in ${BSDPAN_FILES}
${MKDIR} ${BSDPAN_DEST}/${files:H}
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
${BSDPAN_WRKSRC}/${files} ${BSDPAN_DEST}/${files}
.endfor
@(cd ${INCLUDEDIR} && ${PREFIX}/bin/h2ph *.h machine/*.h sys/*.h)
${MKDIR} ${PREFIX}/${SITE_PERL_REL}/auto
${MKDIR} ${PREFIX}/${SITE_PERL_REL}/${PERL_ARCH}/auto
${MKDIR} ${PREFIX}/lib/perl5/${PERL_VER}/man/man3
PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
.if ${OSVERSION} < 502100
${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${PREFIX}/bin/use.perl
@fmt ${PKGMESSAGE}
.else
@${PREFIX}/bin/use.perl port
.endif
.include <bsd.port.post.mk>

View File

@ -1,4 +1,4 @@
# $Id$
# $FreeBSD$
MAN1+= a2p.1
MAN1+= c2ph.1
@ -23,6 +23,7 @@ MAN1+= perl582delta.1
MAN1+= perl583delta.1
MAN1+= perl584delta.1
MAN1+= perl585delta.1
MAN1+= perl586delta.1
MAN1+= perl58delta.1
MAN1+= perlaix.1
MAN1+= perlamiga.1

View File

@ -1,4 +1,4 @@
MD5 (perl-5.8.5.tar.bz2) = 9db6be76aa275f415d75c224ad1d4029
SIZE (perl-5.8.5.tar.bz2) = 9464689
MD5 (BSDPAN-5.8.5.tar.bz2) = 9a752ebc0d65671aeaa5350a260f516e
SIZE (BSDPAN-5.8.5.tar.bz2) = 6278
MD5 (perl-5.8.6.tar.bz2) = 3d030b6ff2a433840edb1a407d18dc0a
SIZE (perl-5.8.6.tar.bz2) = 9693085
MD5 (BSDPAN-5.8.6.tar.bz2) = e2be13e3698b3d95de3368a58be8a540
SIZE (BSDPAN-5.8.6.tar.bz2) = 8217

View File

@ -0,0 +1,30 @@
$FreeBSD$
--- lib/File/Path.pm.orig Sat Jan 29 20:23:40 2005
+++ lib/File/Path.pm Sat Jan 29 20:24:56 2005
@@ -196,7 +196,7 @@ sub rmtree {
# it's also intended to change it to writable in case we have
# to recurse in which case we are better than rm -rf for
# subtrees with strange permissions
- chmod(0777, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
+ chmod(0700, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
or carp "Can't make directory $root read+writeable: $!"
unless $safe;
@@ -230,7 +230,7 @@ sub rmtree {
print "skipped $root\n" if $verbose;
next;
}
- chmod 0777, $root
+ chmod 0700, $root
or carp "Can't make directory $root writeable: $!"
if $force_writeable;
print "rmdir $root\n" if $verbose;
@@ -252,7 +252,7 @@ sub rmtree {
print "skipped $root\n" if $verbose;
next;
}
- chmod 0666, $root
+ chmod 0600, $root
or carp "Can't make file $root writeable: $!"
if $force_writeable;
print "unlink $root\n" if $verbose;

View File

@ -1,20 +1,51 @@
--- hints/freebsd.sh.orig Sun May 30 17:55:47 2004
+++ hints/freebsd.sh Sun May 30 17:57:16 2004
@@ -88,6 +88,7 @@ case "$osvers" in
--- hints/freebsd.sh.orig Wed Mar 24 22:47:33 2004
+++ hints/freebsd.sh Sun Jan 30 23:39:33 2005
@@ -88,6 +88,8 @@ case "$osvers" in
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
libswanted=`echo $libswanted | sed 's/ bind / /'`
+ libswanted=`echo $libswanted | sed 's/ dl / /'`
+ libswanted=`echo $libswanted | sed 's/ c / /'`
# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
libswanted=`echo $libswanted | sed 's/ iconv / /'`
d_setregid='define'
@@ -102,6 +103,9 @@ case "$osvers" in
@@ -102,6 +103,10 @@ case "$osvers" in
;;
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
+ libswanted=`echo $libswanted | sed 's/ bind / /'`
+ libswanted=`echo $libswanted | sed 's/ dl / /'`
+ libswanted=`echo $libswanted | sed 's/ iconv / /'`
+ libswanted=`echo $libswanted | sed 's/ c / /'`
;;
esac
@@ -119,7 +123,7 @@ case "$osvers" in
if [ x$objformat = xelf ]; then
libpth="/usr/lib /usr/local/lib"
glibpth="/usr/lib /usr/local/lib"
- ldflags="-Wl,-E "
+ ldflags="%%PTHREAD_LIBS%% -Wl,-E"
lddlflags="-shared "
else
if [ -e /usr/lib/aout ]; then
@@ -136,7 +140,7 @@ case "$osvers" in
0*|1*|2*|3*) ;;
*)
- ccflags="${ccflags} -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
+ ccflags="${ccflags} %%PTHREAD_CFLAGS%% -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then
usenm=false
fi
@@ -183,7 +187,9 @@ esac
# This script UU/usethreads.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to use threads.
-cat > UU/usethreads.cbu <<'EOCBU'
+## not quite - modern FreeBSD perl port is supposed to take care of that
+## we just add extra libraries and cflags nowadays
+cat > /dev/null <<'EOCBU'
case "$usethreads" in
$define|true|[yY]*)
lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'`

View File

@ -1,134 +1,264 @@
#! %%PREFIX%%/bin/perl -w
#!/bin/sh
# $FreeBSD$
use strict;
# XXX what to do with perldoc, pelbug, perlcc ??
this=`echo -n $0 | /usr/bin/sed -e 's!^.*/!!'`
PERL_VERSION="%%PERL_VERSION%%"
MAKE_CONF=%%MAKE_CONF%%
banner=`date +"%F %T"`
banner="# added by use.perl $banner"
if [ -z "${OSVERSION}" ]; then
if [ -f /sbin/sysctl -a -x /sbin/sysctl ] ; then
osreldate=`/sbin/sysctl -n kern.osreldate`
else
osreldate=`/usr/sbin/sysctl -n kern.osreldate`
fi
else
osreldate=${OSVERSION}
fi
sub usage
if [ "x$this" = "xuse.perl" ]; then
PKG_PREFIX="%%PREFIX%%"
if [ "$1" = "port" ] ; then
need_remove_links=yes
need_create_links=yes
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
need_spam_make_conf=yes
need_spam_manpath=yes
elif [ "$1" = "system" ] ; then
need_remove_links=yes
if [ $osreldate -lt 500036 ] ; then
need_base_system_perl=yes
fi
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
else
echo 'Usage:
$0 port -> /usr/bin/perl is the perl5 port
$0 system -> /usr/bin/perl is the system perl'
exit 2;
fi
else
if [ "$2" = "POST-INSTALL" ] ; then
need_remove_links=yes
if [ $osreldate -ge 502100 ] ; then
need_create_links=yes
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
need_spam_make_conf=yes
need_spam_manpath=yes
fi
need_post_install=yes
elif [ "$2" = "POST-DEINSTALL" ] ; then
need_remove_links=yes
if [ $osreldate -lt 500036 ] ; then
need_base_system_perl=yes
fi
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
else
exit 0;
fi
fi
link_list="
a2p
c2ph
find2perl
h2ph
h2xs
perlbug
perlcc
perldoc
pl2pm
pod2html
pod2latex
pod2man
pod2text
s2p
splain"
if [ $osreldate -ge 500036 ] ; then
link_list=""
fi
special_link_list="
perl
perl5
suidperl"
do_remove_links()
{
print STDERR <<EOF;
Usage:
$0 port -> /usr/bin/perl is the perl5 port
$0 system -> /usr/bin/perl is the system perl
EOF
exit 2;
echo "Removing stale symlinks from /usr/bin..."
for binary in $link_list $special_link_list
do
if [ -L "/usr/bin/$binary" ] ; then
echo " Removing /usr/bin/$binary"
/bin/rm -f "/usr/bin/$binary"
else
echo " Skipping /usr/bin/$binary"
fi
done
bins=`/bin/ls /usr/bin/*perl*5.* ${PKG_PREFIX}/bin/*perl*5.* 2>/dev/null`
for binary in $bins
do
if [ -L "$binary" ] ; then
echo " Removing $binary installed by an older perl port"
/bin/rm -f "$binary"
fi
done
echo "Done."
}
my $port_perl = '%%PREFIX%%/bin/perl';
$port_perl =~ tr|/|/|s;
my $ident = `[ -r /usr/bin/perl5 ] && /usr/bin/ident -q /usr/bin/perl5`;
@ARGV == 1 or usage();
if ($ARGV[0] eq 'port') {
switch_to_port();
} elsif ($ARGV[0] eq 'system') {
switch_to_system();
} else {
usage();
}
exit 0;
# Both functions depend on the idea that switch_to_port leaves
# perl5 alone. If the wrapper is installed on a -current system,
# /usr/bin/perl5 will also be the wrapper.
sub switch_to_system
do_create_links()
{
# protect against cases where people use PREFIX=/usr
if ($port_perl ne '/usr/bin/perl') {
unlink '/usr/bin/perl', '/usr/bin/suidperl',
'/usr/bin/perl%%PERL_VERSION%%';
link '/usr/bin/perl5', '/usr/bin/perl';
link '/usr/bin/perl5', '/usr/bin/perl%%PERL_VERSION%%';
if ($ident =~ m#src/usr.bin/perl/perl.c#) {
link '/usr/bin/perl5', '/usr/bin/suidperl';
} else {
link '/usr/bin/sperl5', '/usr/bin/suidperl';
}
}
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!";
print MK <<EOF;
# -- use.perl generated deltas -- #
# Created: @{[scalar localtime]}
# Setting to use base system perl:
.undef PERL_VER
.undef PERL_VERSION
.undef PERL_ARCH
.undef NOPERL
.undef NO_PERL
EOF
close MK;
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!";
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!";
while (<MPOLD>) {
next if m|use.perl generated line|;
next if m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/%%PERL_VERSION%%/man\s*$|;
next if m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/%%PERL_VERSION%%/perl/man\s*$|;
print MPNEW;
}
close MPNEW;
close MPOLD;
rename '/etc/manpath.config', '/etc/manpath.config.bak';
rename '/etc/manpath.config.new', '/etc/manpath.config';
echo "Creating various symlinks in /usr/bin..."
for binary in $link_list
do
if [ -f "/usr/bin/$binary" ] ; then
echo " Backing up /usr/bin/$binary as /usr/bin/$binary.freebsd"
/bin/mv -f "/usr/bin/$binary" "/usr/bin/$binary.freebsd"
fi
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is still there, which should not happen"
elif [ -e "$PKG_PREFIX/bin/$binary" ] ; then
echo " Symlinking $PKG_PREFIX/bin/$binary to /usr/bin/$binary"
/bin/ln -sf "$PKG_PREFIX/bin/$binary" "/usr/bin/$binary"
else
echo " *** $PKG_PREFIX/bin/$binary is not there, a symlink won't do any good"
fi
done
for binary in $special_link_list
do
if [ -f "/usr/bin/$binary" ] ; then
echo " Removing /usr/bin/$binary"
fi
bin=`echo $binary | /usr/bin/sed -e 's!perl5!perl!'`
bin=`echo $bin | /usr/bin/sed -e 's!suidperl!sperl!'`
if [ -e "/usr/bin/$binary.XXX" ] ; then
echo " *** /usr/bin/$binary is still there, which should not happen"
elif [ -e "$PKG_PREFIX/bin/${bin}%%PERL_VERSION%%" ] ; then
echo " Symlinking $PKG_PREFIX/bin/${bin}%%PERL_VERSION%% to /usr/bin/$binary"
/bin/ln -sf "$PKG_PREFIX/bin/${bin}%%PERL_VERSION%%" "/usr/bin/$binary"
else
echo " *** $PKG_PREFIX/bin/${bin}%%PERL_VERSION%% is not there, a symlink won't do any good"
fi
done
echo "Done."
}
sub switch_to_port
do_base_system_perl()
{
# protect against cases where people use PREFIX=/usr
if ($port_perl ne '/usr/bin/perl') {
if ($ident =~ m#src/usr.bin/perl/perl.c#) {
rename '/usr/bin/perl', '/usr/bin/perl-wrapper';
} else {
unlink '/usr/bin/perl';
}
unlink '/usr/bin/suidperl', '/usr/bin/perl%%PERL_VERSION%%';
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl';
symlink '%%PREFIX%%/bin/suidperl', '/usr/bin/suidperl';
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl%%PERL_VERSION%%';
}
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!";
print MK <<EOF;
# -- use.perl generated deltas -- #
# Created: @{[scalar localtime]}
# Setting to use base perl from ports:
PERL_VER=%%PERL_VER%%
PERL_VERSION=%%PERL_VERSION%%
PERL_ARCH=%%PERL_ARCH%%
NOPERL=yo
NO_PERL=yo
NO_PERL_WRAPPER=yo
EOF
close MK;
my $perl_port_manpath = <<EOF;
# -- use.perl generated line -- #
OPTIONAL_MANPATH %%PREFIX%%/lib/perl5/%%PERL_VERSION%%/man
OPTIONAL_MANPATH %%PREFIX%%/lib/perl5/%%PERL_VERSION%%/perl/man
EOF
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!";
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!";
my $modified = 0;
while (<MPOLD>) {
if (!$modified && m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/\S+/man\s*$|) {
print MPNEW $perl_port_manpath;
$modified = 1;
}
print MPNEW;
}
print MPNEW $perl_port_manpath unless $modified;
close MPNEW;
close MPOLD;
rename '/etc/manpath.config', '/etc/manpath.config.bak';
rename '/etc/manpath.config.new', '/etc/manpath.config';
echo "Restoring base system perl binaries..."
for binary in $link_list
do
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is there, which should not happen"
else
if [ -f "/usr/bin/$binary.freebsd" ] ; then
echo " Moving /usr/bin/$binary.freebsd to /usr/bin/$binary"
/bin/mv -f "/usr/bin/$binary.freebsd" "/usr/bin/$binary"
else
echo " *** /usr/bin/$binary.freebsd is NOT there, nothing to restore"
fi
fi
done
for binary in $special_link_list
do
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is there, which should not happen"
else
bin=`echo $binary | /usr/bin/sed -e 's!perl5!perl!'`
bin=`echo $bin | /usr/bin/sed -e 's!suidperl!sperl!'`
bins=`/bin/ls /usr/bin/${bin}5.* 2>/dev/null | /usr/bin/sort`
bin=""
for b in $bins
do
if [ -f $b -a ! -L $b ] ; then
bin=$b
fi
done
if [ -z $bin ] ; then
echo " *** cannot find what /usr/bin/$binary shall be restored FROM"
elif [ -f $bin ] ; then
echo " Hardlinking $bin to /usr/bin/$binary"
ln -f "$bin" "/usr/bin/$binary"
else
echo " *** $bin is NOT there, nothing to restore"
fi
fi
done
echo "Done."
}
do_post_install()
{
INCLUDEDIR=/usr/include
install -d ${PKG_PREFIX}/lib/perl5/site_perl/%%PERL_VERSION%%/%%PERL_ARCH%%/auto
install -d ${PKG_PREFIX}/lib/perl5/site_perl/%%PERL_VERSION%%/auto
install -d ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/man/man3
cd ${INCLUDEDIR} && ${PKG_PREFIX}/bin/h2ph *.h machine/*.h sys/*.h >/dev/null
}
do_cleanup_make_conf()
{
echo -n "Cleaning up ${MAKE_CONF}..."
if [ -f ${MAKE_CONF} ] ; then
/usr/bin/awk 's=0;
/^#.*use.perl/ { s=1; mode=1 }
/^#/ { s=1; if (mode != 1) { mode=0 } }
/.*PERL.*=/ { s=1; if (mode == 1) { mode=2 } }
/^$/ { s=1; if (mode != 2) { mode = 0 } }
{ if (s != 1) { mode = 0 } if (mode == 0) print }' ${MAKE_CONF} >${MAKE_CONF}.new
/bin/mv ${MAKE_CONF} ${MAKE_CONF}.bak
/bin/mv ${MAKE_CONF}.new ${MAKE_CONF}
fi
echo " Done."
}
do_cleanup_manpath()
{
echo -n "Cleaning up /etc/manpath.config..."
if [ -f /etc/manpath.config ] ; then
/usr/bin/awk 's=0;
/^#.*use.perl/ { s=1; mode=1 }
/^#/ { s=1; if (mode != 1) { mode=0 } }
/^OPTIONAL_MANPATH.*perl5/ { s=1; if (mode == 1) { mode=2 } }
/^$/ { s=1; if (mode != 2) { mode = 0 } }
{ if (s != 1) { mode = 0 } if (mode == 0) print }' /etc/manpath.config >/etc/manpath.config.new
/bin/mv /etc/manpath.config /etc/manpath.config.bak
/bin/mv /etc/manpath.config.new /etc/manpath.config
fi
echo " Done."
}
do_spam_make_conf()
{
echo -n "Spamming ${MAKE_CONF}..."
echo "$banner" >>${MAKE_CONF}
echo "PERL_VER=%%PERL_VER%%" >>${MAKE_CONF}
echo "PERL_VERSION=%%PERL_VERSION%%" >>${MAKE_CONF}
if [ $osreldate -lt 500036 ] ; then
echo "NOPERL=yes" >>${MAKE_CONF}
fi
echo " Done."
}
do_spam_manpath()
{
echo -n "Spamming /etc/manpath.config..."
echo "$banner" >>/etc/manpath.config
echo "OPTIONAL_MANPATH ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/man" >>/etc/manpath.config
echo "OPTIONAL_MANPATH ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/perl/man" >>/etc/manpath.config
echo " Done."
}
[ $need_remove_links ] && do_remove_links
[ $need_create_links ] && do_create_links
[ $need_base_system_perl ] && do_base_system_perl
[ $need_post_install ] && do_post_install
[ $need_cleanup_make_conf ] && do_cleanup_make_conf
[ $need_spam_make_conf ] && do_spam_make_conf
[ $need_cleanup_manpath ] && do_cleanup_manpath
[ $need_spam_manpath ] && do_spam_manpath
exit 0

View File

@ -1,28 +0,0 @@
#!/bin/sh
if [ "$2" != POST-INSTALL ] ; then
exit 0
fi
INCLUDEDIR=/usr/include
install -d ${PKG_PREFIX}/lib/perl5/site_perl/5.8.5/mach/auto
install -d ${PKG_PREFIX}/lib/perl5/site_perl/5.8.5/auto
install -d ${PKG_PREFIX}/lib/perl5/5.8.5/man/man3
cd ${INCLUDEDIR} && ${PKG_PREFIX}/bin/h2ph *.h machine/*.h sys/*.h
if [ -z "${OSVERSION}" ]; then
if [ -f /sbin/sysctl -a -x /sbin/sysctl ] ; then
osreldate=`/sbin/sysctl -n kern.osreldate`
else
osreldate=`/usr/sbin/sysctl -n kern.osreldate`
fi
else
osreldate=${OSVERSION}
fi
if [ $osreldate -ge 502100 ] ; then
${PKG_PREFIX}/bin/use.perl port
fi
exit 0

View File

@ -15,6 +15,10 @@ also put some variables into your /etc/make.conf file, so that newly
installed ports (not packages!) will use new version of perl, and the
system upgrades from the source will not overwrite the changes made.
Note that use.perl port is specific to a given perl installation. If
you later upgrade the perl port, run use.perl port again to update the
symbolic links and /etc/make.conf.
At any time you can also type
use.perl system

View File

@ -11,7 +11,7 @@ bin/libnetcfg
bin/perl
bin/perl%%PERL_VER%%
@exec ln -fs %D/%F %B/perl5
@unexec rm %B/perl5
@unexec rm -f %B/perl5 2>&1 >/dev/null || true
bin/perlbug
bin/perlcc
bin/perldoc
@ -32,7 +32,7 @@ bin/s2p
%%ENABLE_SUIDPERL%%bin/sperl%%PERL_VER%%
bin/splain
%%ENABLE_SUIDPERL%%bin/suidperl
bin/use.perl
%%NEED_USE_PERL%%bin/use.perl
bin/xsubpp
lib/perl5/%%PERL_VER%%/AnyDBM_File.pm
lib/perl5/%%PERL_VER%%/Attribute/Handlers.pm
@ -62,6 +62,7 @@ lib/perl5/%%PERL_VER%%/BSDPAN/BSDPAN.pm
lib/perl5/%%PERL_VER%%/BSDPAN/BSDPAN/Override.pm
lib/perl5/%%PERL_VER%%/BSDPAN/Config.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/MM_Unix.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/MakeMaker.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/Packlist.pm
lib/perl5/%%PERL_VER%%/Benchmark.pm
lib/perl5/%%PERL_VER%%/CGI.pm
@ -869,6 +870,7 @@ lib/perl5/%%PERL_VER%%/pod/perl582delta.pod
lib/perl5/%%PERL_VER%%/pod/perl583delta.pod
lib/perl5/%%PERL_VER%%/pod/perl584delta.pod
lib/perl5/%%PERL_VER%%/pod/perl585delta.pod
lib/perl5/%%PERL_VER%%/pod/perl586delta.pod
lib/perl5/%%PERL_VER%%/pod/perl58delta.pod
lib/perl5/%%PERL_VER%%/pod/perlaix.pod
lib/perl5/%%PERL_VER%%/pod/perlamiga.pod
@ -1458,12 +1460,9 @@ lib/perl5/%%PERL_VER%%/warnings/register.pm
@dirrm lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils
@dirrm lib/perl5/%%PERL_VER%%/BSDPAN
@unexec find %D/%%SITE_PERL%%/%%PERL_ARCH%%/ -name '*.ph' -delete 2>/dev/null || true
@unexec rmdir %D/%%SITE_PERL%% 2>/dev/null || true
@unexec rmdir %D/lib/perl5/site_perl 2>/dev/null || true
%%GDBM%%@dirrm lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/auto/GDBM_File
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto/POSIX/SigAction 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto/POSIX 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/threads 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/XS 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/Sys 2>/dev/null || true
@ -1566,7 +1565,6 @@ lib/perl5/%%PERL_VER%%/warnings/register.pm
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/MIME 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/KR 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/JP 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/CPAN 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Carp 2>/dev/null || true
@dirrm lib/perl5/%%PERL_VER%%/unicore/To

View File

@ -19,7 +19,7 @@ DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
MAINTAINER= tobez@FreeBSD.org
COMMENT= Practical Extraction and Report Language
PERL_VER= 5.8.5
PERL_VER= 5.8.6
PERL_ARCH= mach
PERL_VERSION= ${PERL_VER}
@ -39,8 +39,6 @@ CONFIGURE_ARGS= -sde -Dprefix=${PREFIX} \
-Dcc="${CC}" -Doptimize="${CFLAGS}" -Duseshrplib \
-Dccflags=-DAPPLLIB_EXP=\"${BSDPAN_DEST}\"
INCLUDEDIR= /usr/include
.include "Makefile.man"
.include <bsd.port.pre.mk>
@ -51,7 +49,6 @@ PLIST_SUB+= ENABLE_SUIDPERL=""
CONFIGURE_ARGS+= -Ud_dosuid
PLIST_SUB+= ENABLE_SUIDPERL="@comment "
.endif
# INSTALLS_SHLIB= yes
.if defined(WITH_GDBM)
CONFIGURE_ARGS+= -Di_gdbm
@ -69,10 +66,16 @@ WITH_PERL_MALLOC= yes
.endif
.if defined(WITH_THREADS)
.if ${ARCH} == "amd64"
IGNORE= Threaded perl does not pass tests on ${ARCH}
.endif
CONFIGURE_ARGS+= -Dusethreads=y
PKGNAMESUFFIX= -threaded
# it seems perl malloc has problems with threaded perl on FreeBSD
.undef WITH_PERL_MALLOC
.if ${OSVERSION} < 492000
CONFIGURE_ARGS+= -Ud_gethostbyaddr_r
.endif
.else
CONFIGURE_ARGS+= -Dusethreads=n
.endif
@ -89,8 +92,10 @@ CONFIGURE_ARGS+= -Duse64bitint
.if ${OSVERSION} < 502100
LATEST_LINK= perl5.8
PLIST_SUB+= NEED_USE_PERL=""
.else
PKGMESSAGE= ${PKGDIR}/.not-here
PLIST_SUB+= NEED_USE_PERL="@comment "
.endif
.if defined(WITH_GDBM)
@ -103,16 +108,34 @@ test:
BSDPAN_DEST= ${PREFIX}/lib/perl5/${PERL_VER}/BSDPAN
BSDPAN_FILES= BSDPAN.pm BSDPAN/Override.pm Config.pm \
ExtUtils/MM_Unix.pm ExtUtils/Packlist.pm
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-5.8.5
ExtUtils/MM_Unix.pm \
ExtUtils/MakeMaker.pm \
ExtUtils/Packlist.pm
BSDPAN_WRKSRC= ${WRKDIR}/BSDPAN-${PORTVERSION}
PKGINSTALL= ${WRKDIR}/pkg-install
PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
USE_REINPLACE= yes
post-patch:
${SED} -e 's|%%PREFIX%%|${PREFIX}|g;' \
-e 's|%%PERL_VER%%|${PERL_VER}|g;' \
-e 's|%%PERL_VERSION%%|${PERL_VERSION}|g;' \
-e 's|%%PERL_ARCH%%|${PERL_ARCH}|g;' \
-e 's|%%MAKE_CONF%%|${__MAKE_CONF}|g;' \
${FILESDIR}/use.perl \
> ${WRKDIR}/use.perl
${CP} ${WRKDIR}/use.perl ${PKGINSTALL}
${CP} ${WRKDIR}/use.perl ${PKGDEINSTALL}
.if defined(WITH_THREADS)
${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%|${PTHREAD_LIBS}|g;' \
-e 's|%%PTHREAD_CFLAGS%%|${PTHREAD_CFLAGS}|g;' \
${WRKSRC}/hints/freebsd.sh
.else
${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%||g;' \
-e 's|%%PTHREAD_CFLAGS%%||g;' \
${WRKSRC}/hints/freebsd.sh
.endif
pre-install:
@${RM} -f ${PREFIX}/bin/perl${PERL_VER}
@ -122,20 +145,15 @@ post-install:
@${STRIP_CMD} ${PREFIX}/bin/perl${PERL_VER}
@${STRIP_CMD} ${PREFIX}/bin/perl
@${LN} -sf ${PREFIX}/bin/perl${PERL_VER} ${PREFIX}/bin/perl5
${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${PREFIX}/bin/use.perl
.for files in ${BSDPAN_FILES}
${MKDIR} ${BSDPAN_DEST}/${files:H}
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
${BSDPAN_WRKSRC}/${files} ${BSDPAN_DEST}/${files}
.endfor
@(cd ${INCLUDEDIR} && ${PREFIX}/bin/h2ph *.h machine/*.h sys/*.h)
${MKDIR} ${PREFIX}/${SITE_PERL_REL}/auto
${MKDIR} ${PREFIX}/${SITE_PERL_REL}/${PERL_ARCH}/auto
${MKDIR} ${PREFIX}/lib/perl5/${PERL_VER}/man/man3
PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
.if ${OSVERSION} < 502100
${INSTALL_SCRIPT} ${WRKDIR}/use.perl ${PREFIX}/bin/use.perl
@fmt ${PKGMESSAGE}
.else
@${PREFIX}/bin/use.perl port
.endif
.include <bsd.port.post.mk>

View File

@ -1,4 +1,4 @@
# $Id$
# $FreeBSD$
MAN1+= a2p.1
MAN1+= c2ph.1
@ -23,6 +23,7 @@ MAN1+= perl582delta.1
MAN1+= perl583delta.1
MAN1+= perl584delta.1
MAN1+= perl585delta.1
MAN1+= perl586delta.1
MAN1+= perl58delta.1
MAN1+= perlaix.1
MAN1+= perlamiga.1

View File

@ -1,4 +1,4 @@
MD5 (perl-5.8.5.tar.bz2) = 9db6be76aa275f415d75c224ad1d4029
SIZE (perl-5.8.5.tar.bz2) = 9464689
MD5 (BSDPAN-5.8.5.tar.bz2) = 9a752ebc0d65671aeaa5350a260f516e
SIZE (BSDPAN-5.8.5.tar.bz2) = 6278
MD5 (perl-5.8.6.tar.bz2) = 3d030b6ff2a433840edb1a407d18dc0a
SIZE (perl-5.8.6.tar.bz2) = 9693085
MD5 (BSDPAN-5.8.6.tar.bz2) = e2be13e3698b3d95de3368a58be8a540
SIZE (BSDPAN-5.8.6.tar.bz2) = 8217

View File

@ -0,0 +1,30 @@
$FreeBSD$
--- lib/File/Path.pm.orig Sat Jan 29 20:23:40 2005
+++ lib/File/Path.pm Sat Jan 29 20:24:56 2005
@@ -196,7 +196,7 @@ sub rmtree {
# it's also intended to change it to writable in case we have
# to recurse in which case we are better than rm -rf for
# subtrees with strange permissions
- chmod(0777, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
+ chmod(0700, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
or carp "Can't make directory $root read+writeable: $!"
unless $safe;
@@ -230,7 +230,7 @@ sub rmtree {
print "skipped $root\n" if $verbose;
next;
}
- chmod 0777, $root
+ chmod 0700, $root
or carp "Can't make directory $root writeable: $!"
if $force_writeable;
print "rmdir $root\n" if $verbose;
@@ -252,7 +252,7 @@ sub rmtree {
print "skipped $root\n" if $verbose;
next;
}
- chmod 0666, $root
+ chmod 0600, $root
or carp "Can't make file $root writeable: $!"
if $force_writeable;
print "unlink $root\n" if $verbose;

View File

@ -1,20 +1,51 @@
--- hints/freebsd.sh.orig Sun May 30 17:55:47 2004
+++ hints/freebsd.sh Sun May 30 17:57:16 2004
@@ -88,6 +88,7 @@ case "$osvers" in
--- hints/freebsd.sh.orig Wed Mar 24 22:47:33 2004
+++ hints/freebsd.sh Sun Jan 30 23:39:33 2005
@@ -88,6 +88,8 @@ case "$osvers" in
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
libswanted=`echo $libswanted | sed 's/ bind / /'`
+ libswanted=`echo $libswanted | sed 's/ dl / /'`
+ libswanted=`echo $libswanted | sed 's/ c / /'`
# iconv gone in Perl 5.8.1, but if someone compiles 5.8.0 or earlier.
libswanted=`echo $libswanted | sed 's/ iconv / /'`
d_setregid='define'
@@ -102,6 +103,9 @@ case "$osvers" in
@@ -102,6 +103,10 @@ case "$osvers" in
;;
esac
libswanted=`echo $libswanted | sed 's/ malloc / /'`
+ libswanted=`echo $libswanted | sed 's/ bind / /'`
+ libswanted=`echo $libswanted | sed 's/ dl / /'`
+ libswanted=`echo $libswanted | sed 's/ iconv / /'`
+ libswanted=`echo $libswanted | sed 's/ c / /'`
;;
esac
@@ -119,7 +123,7 @@ case "$osvers" in
if [ x$objformat = xelf ]; then
libpth="/usr/lib /usr/local/lib"
glibpth="/usr/lib /usr/local/lib"
- ldflags="-Wl,-E "
+ ldflags="%%PTHREAD_LIBS%% -Wl,-E"
lddlflags="-shared "
else
if [ -e /usr/lib/aout ]; then
@@ -136,7 +140,7 @@ case "$osvers" in
0*|1*|2*|3*) ;;
*)
- ccflags="${ccflags} -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
+ ccflags="${ccflags} %%PTHREAD_CFLAGS%% -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then
usenm=false
fi
@@ -183,7 +187,9 @@ esac
# This script UU/usethreads.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to use threads.
-cat > UU/usethreads.cbu <<'EOCBU'
+## not quite - modern FreeBSD perl port is supposed to take care of that
+## we just add extra libraries and cflags nowadays
+cat > /dev/null <<'EOCBU'
case "$usethreads" in
$define|true|[yY]*)
lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print $NF}'|sed -n '$p'`

View File

@ -1,134 +1,264 @@
#! %%PREFIX%%/bin/perl -w
#!/bin/sh
# $FreeBSD$
use strict;
# XXX what to do with perldoc, pelbug, perlcc ??
this=`echo -n $0 | /usr/bin/sed -e 's!^.*/!!'`
PERL_VERSION="%%PERL_VERSION%%"
MAKE_CONF=%%MAKE_CONF%%
banner=`date +"%F %T"`
banner="# added by use.perl $banner"
if [ -z "${OSVERSION}" ]; then
if [ -f /sbin/sysctl -a -x /sbin/sysctl ] ; then
osreldate=`/sbin/sysctl -n kern.osreldate`
else
osreldate=`/usr/sbin/sysctl -n kern.osreldate`
fi
else
osreldate=${OSVERSION}
fi
sub usage
if [ "x$this" = "xuse.perl" ]; then
PKG_PREFIX="%%PREFIX%%"
if [ "$1" = "port" ] ; then
need_remove_links=yes
need_create_links=yes
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
need_spam_make_conf=yes
need_spam_manpath=yes
elif [ "$1" = "system" ] ; then
need_remove_links=yes
if [ $osreldate -lt 500036 ] ; then
need_base_system_perl=yes
fi
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
else
echo 'Usage:
$0 port -> /usr/bin/perl is the perl5 port
$0 system -> /usr/bin/perl is the system perl'
exit 2;
fi
else
if [ "$2" = "POST-INSTALL" ] ; then
need_remove_links=yes
if [ $osreldate -ge 502100 ] ; then
need_create_links=yes
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
need_spam_make_conf=yes
need_spam_manpath=yes
fi
need_post_install=yes
elif [ "$2" = "POST-DEINSTALL" ] ; then
need_remove_links=yes
if [ $osreldate -lt 500036 ] ; then
need_base_system_perl=yes
fi
need_cleanup_make_conf=yes
need_cleanup_manpath=yes
else
exit 0;
fi
fi
link_list="
a2p
c2ph
find2perl
h2ph
h2xs
perlbug
perlcc
perldoc
pl2pm
pod2html
pod2latex
pod2man
pod2text
s2p
splain"
if [ $osreldate -ge 500036 ] ; then
link_list=""
fi
special_link_list="
perl
perl5
suidperl"
do_remove_links()
{
print STDERR <<EOF;
Usage:
$0 port -> /usr/bin/perl is the perl5 port
$0 system -> /usr/bin/perl is the system perl
EOF
exit 2;
echo "Removing stale symlinks from /usr/bin..."
for binary in $link_list $special_link_list
do
if [ -L "/usr/bin/$binary" ] ; then
echo " Removing /usr/bin/$binary"
/bin/rm -f "/usr/bin/$binary"
else
echo " Skipping /usr/bin/$binary"
fi
done
bins=`/bin/ls /usr/bin/*perl*5.* ${PKG_PREFIX}/bin/*perl*5.* 2>/dev/null`
for binary in $bins
do
if [ -L "$binary" ] ; then
echo " Removing $binary installed by an older perl port"
/bin/rm -f "$binary"
fi
done
echo "Done."
}
my $port_perl = '%%PREFIX%%/bin/perl';
$port_perl =~ tr|/|/|s;
my $ident = `[ -r /usr/bin/perl5 ] && /usr/bin/ident -q /usr/bin/perl5`;
@ARGV == 1 or usage();
if ($ARGV[0] eq 'port') {
switch_to_port();
} elsif ($ARGV[0] eq 'system') {
switch_to_system();
} else {
usage();
}
exit 0;
# Both functions depend on the idea that switch_to_port leaves
# perl5 alone. If the wrapper is installed on a -current system,
# /usr/bin/perl5 will also be the wrapper.
sub switch_to_system
do_create_links()
{
# protect against cases where people use PREFIX=/usr
if ($port_perl ne '/usr/bin/perl') {
unlink '/usr/bin/perl', '/usr/bin/suidperl',
'/usr/bin/perl%%PERL_VERSION%%';
link '/usr/bin/perl5', '/usr/bin/perl';
link '/usr/bin/perl5', '/usr/bin/perl%%PERL_VERSION%%';
if ($ident =~ m#src/usr.bin/perl/perl.c#) {
link '/usr/bin/perl5', '/usr/bin/suidperl';
} else {
link '/usr/bin/sperl5', '/usr/bin/suidperl';
}
}
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!";
print MK <<EOF;
# -- use.perl generated deltas -- #
# Created: @{[scalar localtime]}
# Setting to use base system perl:
.undef PERL_VER
.undef PERL_VERSION
.undef PERL_ARCH
.undef NOPERL
.undef NO_PERL
EOF
close MK;
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!";
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!";
while (<MPOLD>) {
next if m|use.perl generated line|;
next if m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/%%PERL_VERSION%%/man\s*$|;
next if m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/%%PERL_VERSION%%/perl/man\s*$|;
print MPNEW;
}
close MPNEW;
close MPOLD;
rename '/etc/manpath.config', '/etc/manpath.config.bak';
rename '/etc/manpath.config.new', '/etc/manpath.config';
echo "Creating various symlinks in /usr/bin..."
for binary in $link_list
do
if [ -f "/usr/bin/$binary" ] ; then
echo " Backing up /usr/bin/$binary as /usr/bin/$binary.freebsd"
/bin/mv -f "/usr/bin/$binary" "/usr/bin/$binary.freebsd"
fi
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is still there, which should not happen"
elif [ -e "$PKG_PREFIX/bin/$binary" ] ; then
echo " Symlinking $PKG_PREFIX/bin/$binary to /usr/bin/$binary"
/bin/ln -sf "$PKG_PREFIX/bin/$binary" "/usr/bin/$binary"
else
echo " *** $PKG_PREFIX/bin/$binary is not there, a symlink won't do any good"
fi
done
for binary in $special_link_list
do
if [ -f "/usr/bin/$binary" ] ; then
echo " Removing /usr/bin/$binary"
fi
bin=`echo $binary | /usr/bin/sed -e 's!perl5!perl!'`
bin=`echo $bin | /usr/bin/sed -e 's!suidperl!sperl!'`
if [ -e "/usr/bin/$binary.XXX" ] ; then
echo " *** /usr/bin/$binary is still there, which should not happen"
elif [ -e "$PKG_PREFIX/bin/${bin}%%PERL_VERSION%%" ] ; then
echo " Symlinking $PKG_PREFIX/bin/${bin}%%PERL_VERSION%% to /usr/bin/$binary"
/bin/ln -sf "$PKG_PREFIX/bin/${bin}%%PERL_VERSION%%" "/usr/bin/$binary"
else
echo " *** $PKG_PREFIX/bin/${bin}%%PERL_VERSION%% is not there, a symlink won't do any good"
fi
done
echo "Done."
}
sub switch_to_port
do_base_system_perl()
{
# protect against cases where people use PREFIX=/usr
if ($port_perl ne '/usr/bin/perl') {
if ($ident =~ m#src/usr.bin/perl/perl.c#) {
rename '/usr/bin/perl', '/usr/bin/perl-wrapper';
} else {
unlink '/usr/bin/perl';
}
unlink '/usr/bin/suidperl', '/usr/bin/perl%%PERL_VERSION%%';
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl';
symlink '%%PREFIX%%/bin/suidperl', '/usr/bin/suidperl';
symlink '%%PREFIX%%/bin/perl', '/usr/bin/perl%%PERL_VERSION%%';
}
open MK, ">> /etc/make.conf" or die "/etc/make.conf: $!";
print MK <<EOF;
# -- use.perl generated deltas -- #
# Created: @{[scalar localtime]}
# Setting to use base perl from ports:
PERL_VER=%%PERL_VER%%
PERL_VERSION=%%PERL_VERSION%%
PERL_ARCH=%%PERL_ARCH%%
NOPERL=yo
NO_PERL=yo
NO_PERL_WRAPPER=yo
EOF
close MK;
my $perl_port_manpath = <<EOF;
# -- use.perl generated line -- #
OPTIONAL_MANPATH %%PREFIX%%/lib/perl5/%%PERL_VERSION%%/man
OPTIONAL_MANPATH %%PREFIX%%/lib/perl5/%%PERL_VERSION%%/perl/man
EOF
open MPOLD, "< /etc/manpath.config" or die "/etc/manpath.config: $!";
open MPNEW, "> /etc/manpath.config.new" or die "/etc/manpath.config.new: $!";
my $modified = 0;
while (<MPOLD>) {
if (!$modified && m|^\s*OPTIONAL_MANPATH\s+\S+/lib/perl5/\S+/man\s*$|) {
print MPNEW $perl_port_manpath;
$modified = 1;
}
print MPNEW;
}
print MPNEW $perl_port_manpath unless $modified;
close MPNEW;
close MPOLD;
rename '/etc/manpath.config', '/etc/manpath.config.bak';
rename '/etc/manpath.config.new', '/etc/manpath.config';
echo "Restoring base system perl binaries..."
for binary in $link_list
do
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is there, which should not happen"
else
if [ -f "/usr/bin/$binary.freebsd" ] ; then
echo " Moving /usr/bin/$binary.freebsd to /usr/bin/$binary"
/bin/mv -f "/usr/bin/$binary.freebsd" "/usr/bin/$binary"
else
echo " *** /usr/bin/$binary.freebsd is NOT there, nothing to restore"
fi
fi
done
for binary in $special_link_list
do
if [ -e "/usr/bin/$binary" ] ; then
echo " *** /usr/bin/$binary is there, which should not happen"
else
bin=`echo $binary | /usr/bin/sed -e 's!perl5!perl!'`
bin=`echo $bin | /usr/bin/sed -e 's!suidperl!sperl!'`
bins=`/bin/ls /usr/bin/${bin}5.* 2>/dev/null | /usr/bin/sort`
bin=""
for b in $bins
do
if [ -f $b -a ! -L $b ] ; then
bin=$b
fi
done
if [ -z $bin ] ; then
echo " *** cannot find what /usr/bin/$binary shall be restored FROM"
elif [ -f $bin ] ; then
echo " Hardlinking $bin to /usr/bin/$binary"
ln -f "$bin" "/usr/bin/$binary"
else
echo " *** $bin is NOT there, nothing to restore"
fi
fi
done
echo "Done."
}
do_post_install()
{
INCLUDEDIR=/usr/include
install -d ${PKG_PREFIX}/lib/perl5/site_perl/%%PERL_VERSION%%/%%PERL_ARCH%%/auto
install -d ${PKG_PREFIX}/lib/perl5/site_perl/%%PERL_VERSION%%/auto
install -d ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/man/man3
cd ${INCLUDEDIR} && ${PKG_PREFIX}/bin/h2ph *.h machine/*.h sys/*.h >/dev/null
}
do_cleanup_make_conf()
{
echo -n "Cleaning up ${MAKE_CONF}..."
if [ -f ${MAKE_CONF} ] ; then
/usr/bin/awk 's=0;
/^#.*use.perl/ { s=1; mode=1 }
/^#/ { s=1; if (mode != 1) { mode=0 } }
/.*PERL.*=/ { s=1; if (mode == 1) { mode=2 } }
/^$/ { s=1; if (mode != 2) { mode = 0 } }
{ if (s != 1) { mode = 0 } if (mode == 0) print }' ${MAKE_CONF} >${MAKE_CONF}.new
/bin/mv ${MAKE_CONF} ${MAKE_CONF}.bak
/bin/mv ${MAKE_CONF}.new ${MAKE_CONF}
fi
echo " Done."
}
do_cleanup_manpath()
{
echo -n "Cleaning up /etc/manpath.config..."
if [ -f /etc/manpath.config ] ; then
/usr/bin/awk 's=0;
/^#.*use.perl/ { s=1; mode=1 }
/^#/ { s=1; if (mode != 1) { mode=0 } }
/^OPTIONAL_MANPATH.*perl5/ { s=1; if (mode == 1) { mode=2 } }
/^$/ { s=1; if (mode != 2) { mode = 0 } }
{ if (s != 1) { mode = 0 } if (mode == 0) print }' /etc/manpath.config >/etc/manpath.config.new
/bin/mv /etc/manpath.config /etc/manpath.config.bak
/bin/mv /etc/manpath.config.new /etc/manpath.config
fi
echo " Done."
}
do_spam_make_conf()
{
echo -n "Spamming ${MAKE_CONF}..."
echo "$banner" >>${MAKE_CONF}
echo "PERL_VER=%%PERL_VER%%" >>${MAKE_CONF}
echo "PERL_VERSION=%%PERL_VERSION%%" >>${MAKE_CONF}
if [ $osreldate -lt 500036 ] ; then
echo "NOPERL=yes" >>${MAKE_CONF}
fi
echo " Done."
}
do_spam_manpath()
{
echo -n "Spamming /etc/manpath.config..."
echo "$banner" >>/etc/manpath.config
echo "OPTIONAL_MANPATH ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/man" >>/etc/manpath.config
echo "OPTIONAL_MANPATH ${PKG_PREFIX}/lib/perl5/%%PERL_VERSION%%/perl/man" >>/etc/manpath.config
echo " Done."
}
[ $need_remove_links ] && do_remove_links
[ $need_create_links ] && do_create_links
[ $need_base_system_perl ] && do_base_system_perl
[ $need_post_install ] && do_post_install
[ $need_cleanup_make_conf ] && do_cleanup_make_conf
[ $need_spam_make_conf ] && do_spam_make_conf
[ $need_cleanup_manpath ] && do_cleanup_manpath
[ $need_spam_manpath ] && do_spam_manpath
exit 0

View File

@ -1,28 +0,0 @@
#!/bin/sh
if [ "$2" != POST-INSTALL ] ; then
exit 0
fi
INCLUDEDIR=/usr/include
install -d ${PKG_PREFIX}/lib/perl5/site_perl/5.8.5/mach/auto
install -d ${PKG_PREFIX}/lib/perl5/site_perl/5.8.5/auto
install -d ${PKG_PREFIX}/lib/perl5/5.8.5/man/man3
cd ${INCLUDEDIR} && ${PKG_PREFIX}/bin/h2ph *.h machine/*.h sys/*.h
if [ -z "${OSVERSION}" ]; then
if [ -f /sbin/sysctl -a -x /sbin/sysctl ] ; then
osreldate=`/sbin/sysctl -n kern.osreldate`
else
osreldate=`/usr/sbin/sysctl -n kern.osreldate`
fi
else
osreldate=${OSVERSION}
fi
if [ $osreldate -ge 502100 ] ; then
${PKG_PREFIX}/bin/use.perl port
fi
exit 0

View File

@ -15,6 +15,10 @@ also put some variables into your /etc/make.conf file, so that newly
installed ports (not packages!) will use new version of perl, and the
system upgrades from the source will not overwrite the changes made.
Note that use.perl port is specific to a given perl installation. If
you later upgrade the perl port, run use.perl port again to update the
symbolic links and /etc/make.conf.
At any time you can also type
use.perl system

View File

@ -11,7 +11,7 @@ bin/libnetcfg
bin/perl
bin/perl%%PERL_VER%%
@exec ln -fs %D/%F %B/perl5
@unexec rm %B/perl5
@unexec rm -f %B/perl5 2>&1 >/dev/null || true
bin/perlbug
bin/perlcc
bin/perldoc
@ -32,7 +32,7 @@ bin/s2p
%%ENABLE_SUIDPERL%%bin/sperl%%PERL_VER%%
bin/splain
%%ENABLE_SUIDPERL%%bin/suidperl
bin/use.perl
%%NEED_USE_PERL%%bin/use.perl
bin/xsubpp
lib/perl5/%%PERL_VER%%/AnyDBM_File.pm
lib/perl5/%%PERL_VER%%/Attribute/Handlers.pm
@ -62,6 +62,7 @@ lib/perl5/%%PERL_VER%%/BSDPAN/BSDPAN.pm
lib/perl5/%%PERL_VER%%/BSDPAN/BSDPAN/Override.pm
lib/perl5/%%PERL_VER%%/BSDPAN/Config.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/MM_Unix.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/MakeMaker.pm
lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils/Packlist.pm
lib/perl5/%%PERL_VER%%/Benchmark.pm
lib/perl5/%%PERL_VER%%/CGI.pm
@ -869,6 +870,7 @@ lib/perl5/%%PERL_VER%%/pod/perl582delta.pod
lib/perl5/%%PERL_VER%%/pod/perl583delta.pod
lib/perl5/%%PERL_VER%%/pod/perl584delta.pod
lib/perl5/%%PERL_VER%%/pod/perl585delta.pod
lib/perl5/%%PERL_VER%%/pod/perl586delta.pod
lib/perl5/%%PERL_VER%%/pod/perl58delta.pod
lib/perl5/%%PERL_VER%%/pod/perlaix.pod
lib/perl5/%%PERL_VER%%/pod/perlamiga.pod
@ -1458,12 +1460,9 @@ lib/perl5/%%PERL_VER%%/warnings/register.pm
@dirrm lib/perl5/%%PERL_VER%%/BSDPAN/ExtUtils
@dirrm lib/perl5/%%PERL_VER%%/BSDPAN
@unexec find %D/%%SITE_PERL%%/%%PERL_ARCH%%/ -name '*.ph' -delete 2>/dev/null || true
@unexec rmdir %D/%%SITE_PERL%% 2>/dev/null || true
@unexec rmdir %D/lib/perl5/site_perl 2>/dev/null || true
%%GDBM%%@dirrm lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/auto/GDBM_File
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto/POSIX/SigAction 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto/POSIX 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/auto 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/threads 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/XS 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/%%PERL_ARCH%%/Sys 2>/dev/null || true
@ -1566,7 +1565,6 @@ lib/perl5/%%PERL_VER%%/warnings/register.pm
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/MIME 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/KR 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode/JP 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Encode 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/CPAN 2>/dev/null || true
@unexec rmdir %D/lib/perl5/%%PERL_VER%%/Carp 2>/dev/null || true
@dirrm lib/perl5/%%PERL_VER%%/unicore/To