Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Change PatchPerl to use Hints and bump version to 0.24

  • Loading branch information...
commit bef4dbc7a8de0d806fd036203b1bec5929d77e88 1 parent 52d2af6
@bingos authored
Showing with 13 additions and 548 deletions.
  1. +1 −1  dist.ini
  2. +12 −547 lib/Devel/PatchPerl.pm
View
2  dist.ini
@@ -1,5 +1,5 @@
name = Devel-PatchPerl
-version = 0.22
+version = 0.24
author = Chris Williams <chris@bingosnet.co.uk>
license = Perl_5
copyright_holder = Chris Williams and Marcus Holland-Moritz
View
559 lib/Devel/PatchPerl.pm
@@ -8,6 +8,7 @@ use File::pushd qw[pushd];
use File::Spec;
use IO::File;
use IPC::Cmd qw[can_run run];
+use Devel::PatchPerl::Hints qw[hint_file];
use vars qw[@ISA @EXPORT_OK];
@ISA = qw(Exporter);
@@ -105,15 +106,7 @@ my @patch = (
qr/.*/,
],
subs => [
- [ \&_patch_nbsd_hints ],
- ],
- },
- {
- perl => [
- qr/.*/,
- ],
- subs => [
- [ \&_patch_fbsd_hints ],
+ [ \&_patch_hints ],
],
},
{
@@ -213,6 +206,16 @@ sub _determine {
return $version;
}
+sub _patch_hints {
+ return unless my ($file,$data) = hint_file();
+ my $path = File::Spec->catfile( 'hints', $file );
+ chmod 0755, $path or die "$!\n";
+ open my $fh, '>', $file or die "$!\n";
+ print $fh $data;
+ close $fh;
+ return 1;
+}
+
sub _patch_db
{
my $ver = shift;
@@ -333,225 +336,6 @@ sub _patch_makedepend_lc
END
}
-sub _patch_nbsd_hints {
-return unless $^O eq 'netbsd';
-chmod 0755, 'hints/netbsd.sh' or die "$!\n";
-open my $fh, '>', 'hints/netbsd.sh' or die "$\n";
-print $fh <<BADGER;
-# hints/netbsd.sh
-case "\$archname" in
-'')
- archname=`uname -m`-\${osname}
- ;;
-esac
-
-case "\$osvers" in
-0.9|0.8*)
- usedl="\$undef"
- ;;
-*)
- case `uname -m` in
- pmax)
- # NetBSD 1.3 and 1.3.1 on pmax shipped an `old' ld.so,
- # which will not work.
- case "\$osvers" in
- 1.3|1.3.1)
- d_dlopen=\$undef
- ;;
- esac
- ;;
- esac
- if test -f /usr/libexec/ld.elf_so; then
- # ELF
- d_dlopen=\$define
- d_dlerror=\$define
- cccdlflags="-DPIC -fPIC \$cccdlflags"
- lddlflags="--whole-archive -shared \$lddlflags"
- rpathflag="-Wl,-rpath,"
- case "\$osvers" in
- 1.[0-5]*)
- ccdlflags="-Wl,-whole-archive -lgcc \
- -Wl,-no-whole-archive -Wl,-E \$ccdlflags"
- ;;
- *)
- ccdlflags="-Wl,-E \$ccdlflags"
- ;;
- esac
- elif test -f /usr/libexec/ld.so; then
- # a.out
- d_dlopen=\$define
- d_dlerror=\$define
- cccdlflags="-DPIC -fPIC \$cccdlflags"
- lddlflags="-Bshareable \$lddlflags"
- rpathflag="-R"
- else
- d_dlopen=\$undef
- rpathflag=
- fi
- ;;
-esac
-
-case "\$osvers" in
-0.9*|1.[012]*|1.3|1.3.1)
- d_setregid="\$undef"
- d_setreuid="\$undef"
- ;;
-esac
-case "\$osvers" in
-0.9*|1.*|2.*|3.*|4.*|5.*)
- d_getprotoent_r="\$undef"
- d_getprotobyname_r="\$undef"
- d_getprotobynumber_r="\$undef"
- d_setprotoent_r="\$undef"
- d_endprotoent_r="\$undef"
- d_getservent_r="\$undef"
- d_getservbyname_r="\$undef"
- d_getservbyport_r="\$undef"
- d_setservent_r="\$undef"
- d_endservent_r="\$undef"
- d_getprotoent_r_proto="0"
- d_getprotobyname_r_proto="0"
- d_getprotobynumber_r_proto="0"
- d_setprotoent_r_proto="0"
- d_endprotoent_r_proto="0"
- d_getservent_r_proto="0"
- d_getservbyname_r_proto="0"
- d_getservbyport_r_proto="0"
- d_setservent_r_proto="0"
- d_endservent_r_proto="0"
- ;;
-esac
-
-# These are obsolete in any netbsd.
-d_setrgid="\$undef"
-d_setruid="\$undef"
-
-# there's no problem with vfork.
-usevfork=true
-
-# This is there but in machine/ieeefp_h.
-ieeefp_h="define"
-
-# 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'
-case "\$usethreads" in
-\$define|true|[yY]*)
- lpthread=
- for xxx in pthread; do
- for yyy in \$loclibpth \$plibpth \$glibpth dummy; do
- zzz=\$yyy/lib\$xxx.a
- if test -f "\$zzz"; then
- lpthread=\$xxx
- break;
- fi
- zzz=\$yyy/lib\$xxx.so
- if test -f "\$zzz"; then
- lpthread=\$xxx
- break;
- fi
- zzz=`ls \$yyy/lib\$xxx.so.* 2>/dev/null`
- if test "X\$zzz" != X; then
- lpthread=\$xxx
- break;
- fi
- done
- if test "X\$lpthread" != X; then
- break;
- fi
- done
- if test "X\$lpthread" != X; then
- # Add -lpthread.
- libswanted="\$libswanted \$lpthread"
- # There is no libc_r as of NetBSD 1.5.2, so no c -> c_r.
- # This will be revisited when NetBSD gains a native pthreads
- # implementation.
- else
- echo "\$0: No POSIX threads library (-lpthread) found. " \
- "You may want to install GNU pth. Aborting." >&4
- exit 1
- fi
- unset lpthread
-
- # several reentrant functions are embeded in libc, but haven't
- # been added to the header files yet. Let's hold off on using
- # them until they are a valid part of the API
- case "\$osvers" in
- [012].*|3.[0-1])
- d_getprotobyname_r=\$undef
- d_getprotobynumber_r=\$undef
- d_getprotoent_r=\$undef
- d_getservbyname_r=\$undef
- d_getservbyport_r=\$undef
- d_getservent_r=\$undef
- d_setprotoent_r=\$undef
- d_setservent_r=\$undef
- d_endprotoent_r=\$undef
- d_endservent_r=\$undef ;;
- esac
- ;;
-
-esac
-EOCBU
-
-# Set sensible defaults for NetBSD: look for local software in
-# /usr/pkg (NetBSD Packages Collection) and in /usr/local.
-#
-loclibpth="/usr/pkg/lib /usr/local/lib"
-locincpth="/usr/pkg/include /usr/local/include"
-case "\$rpathflag" in
-'')
- ldflags=
- ;;
-*)
- ldflags=
- for yyy in \$loclibpth; do
- ldflags="\$ldflags \$rpathflag\$yyy"
- done
- ;;
-esac
-
-case `uname -m` in
-alpha)
- echo 'int main() {}' > try.c
- gcc=`\${cc:-cc} -v -c try.c 2>&1|grep 'gcc version egcs-2'`
- case "\$gcc" in
- '' | "gcc version egcs-2.95."[3-9]*) ;; # 2.95.3 or better okay
- *) cat >&4 <<EOF
-***
-*** Your gcc (\$gcc) is known to be
-*** too buggy on netbsd/alpha to compile Perl with optimization.
-*** It is suggested you install the lang/gcc package which should
-*** have at least gcc 2.95.3 which should work okay: use for example
-*** Configure -Dcc=/usr/pkg/gcc-2.95.3/bin/cc. You could also
-*** Configure -Doptimize=-O0 to compile Perl without any optimization
-*** but that is not recommended.
-***
-EOF
- exit 1
- ;;
- esac
- rm -f try.*
- ;;
-esac
-
-# NetBSD/sparc 1.5.3/1.6.1 dumps core in the semid_ds test of Configure.
-case `uname -m` in
-sparc) d_semctl_semid_ds=undef ;;
-esac
-
-# malloc wrap works
-case "\$usemallocwrap" in
-'') usemallocwrap='define' ;;
-esac
-
-# don't use perl malloc by default
-case "\$usemymalloc" in
-'') usemymalloc=n ;;
-esac
-BADGER
-close $fh;
-}
sub _patch_makedepend_SH
{
@@ -1832,325 +1616,6 @@ BADGER
}
}
-sub _patch_fbsd_hints {
-return unless $^O eq 'freebsd';
-chmod 0755, 'hints/freebsd.sh' or die "$!\n";
-open my $fh, '>', 'hints/freebsd.sh' or die "$\n";
-print $fh <<BADGER;
-# Original based on info from
-# Carl M. Fongheiser <cmf\@ins.infonet.net>
-# Date: Thu, 28 Jul 1994 19:17:05 -0500 (CDT)
-#
-# Additional 1.1.5 defines from
-# Ollivier Robert <Ollivier.Robert\@keltia.frmug.fr.net>
-# Date: Wed, 28 Sep 1994 00:37:46 +0100 (MET)
-#
-# Additional 2.* defines from
-# Ollivier Robert <Ollivier.Roberti\@keltia.frmug.fr.net>
-# Date: Sat, 8 Apr 1995 20:53:41 +0200 (MET DST)
-#
-# Additional 2.0.5 and 2.1 defined from
-# Ollivier Robert <Ollivier.Robert\@keltia.frmug.fr.net>
-# Date: Fri, 12 May 1995 14:30:38 +0200 (MET DST)
-#
-# Additional 2.2 defines from
-# Mark Murray <mark\@grondar.za>
-# Date: Wed, 6 Nov 1996 09:44:58 +0200 (MET)
-#
-# Modified to ensure we replace -lc with -lc_r, and
-# to put in place-holders for various specific hints.
-# Andy Dougherty <doughera\@lafayette.edu>
-# Date: Tue Mar 10 16:07:00 EST 1998
-#
-# Support for FreeBSD/ELF
-# Ollivier Robert <roberto\@keltia.freenix.fr>
-# Date: Wed Sep 2 16:22:12 CEST 1998
-#
-# The two flags "-fpic -DPIC" are used to indicate a
-# will-be-shared object. Configure will guess the -fpic, (and the
-# -DPIC is not used by perl proper) but the full define is included to
-# be consistent with the FreeBSD general shared libs building process.
-#
-# setreuid and friends are inherently broken in all versions of FreeBSD
-# before 2.1-current (before approx date 4/15/95). It is fixed in 2.0.5
-# and what-will-be-2.1
-#
-
-case "\$osvers" in
-0.*|1.0*)
- usedl="\$undef"
- ;;
-1.1*)
- malloctype='void *'
- groupstype='int'
- d_setregid='undef'
- d_setreuid='undef'
- d_setrgid='undef'
- d_setruid='undef'
- ;;
-2.0-release*)
- d_setregid='undef'
- d_setreuid='undef'
- d_setrgid='undef'
- d_setruid='undef'
- ;;
-#
-# Trying to cover 2.0.5, 2.1-current and future 2.1/2.2
-# It does not covert all 2.1-current versions as the output of uname
-# changed a few times.
-#
-# Even though seteuid/setegid are available, they've been turned off
-# because perl isn't coded with saved set[ug]id variables in mind.
-# In addition, a small patch is required to suidperl to avoid a security
-# problem with FreeBSD.
-#
-2.0.5*|2.0-built*|2.1*)
- usevfork='true'
- case "\$usemymalloc" in
- "") usemymalloc='n'
- ;;
- esac
- d_setregid='define'
- d_setreuid='define'
- d_setegid='undef'
- d_seteuid='undef'
- test -r ./broken-db.msg && . ./broken-db.msg
- ;;
-#
-# 2.2 and above have phkmalloc(3).
-# don't use -lmalloc (maybe there's an old one from 1.1.5.1 floating around)
-2.2*)
- usevfork='true'
- case "\$usemymalloc" in
- "") usemymalloc='n'
- ;;
- esac
- libswanted=`echo \$libswanted | sed 's/ malloc / /'`
- libswanted=`echo \$libswanted | sed 's/ bind / /'`
- # 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'
- d_setreuid='define'
- d_setegid='define'
- d_seteuid='define'
- # d_dosuid='define' # Obsolete.
- ;;
-*) usevfork='true'
- case "\$usemymalloc" in
- "") usemymalloc='n'
- ;;
- esac
- libswanted=`echo \$libswanted | sed 's/ malloc / /'`
- ;;
-esac
-
-# Dynamic Loading flags have not changed much, so they are separated
-# out here to avoid duplicating them everywhere.
-case "\$osvers" in
-0.*|1.0*) ;;
-
-1*|2*) cccdlflags='-DPIC -fpic'
- lddlflags="-Bshareable \$lddlflags"
- ;;
-
-3*|4*|5*|6*)
- objformat=`/usr/bin/objformat`
- if [ x\$objformat = xaout ]; then
- if [ -e /usr/lib/aout ]; then
- libpth="/usr/lib/aout /usr/local/lib /usr/lib"
- glibpth="/usr/lib/aout /usr/local/lib /usr/lib"
- fi
- lddlflags='-Bshareable'
- else
- libpth="/usr/lib /usr/local/lib"
- glibpth="/usr/lib /usr/local/lib"
- ldflags="-Wl,-E "
- lddlflags="-shared "
- fi
- cccdlflags='-DPIC -fPIC'
- ;;
-*)
- libpth="/usr/lib /usr/local/lib"
- glibpth="/usr/lib /usr/local/lib"
- ldflags="-Wl,-E "
- lddlflags="-shared "
- cccdlflags='-DPIC -fPIC'
- ;;
-esac
-
-case "\$osvers" in
-0*|1*|2*|3*) ;;
-
-*)
- ccflags="\${ccflags} -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H"
- if /usr/bin/file -L /usr/lib/libc.so | /usr/bin/grep -vq "not stripped" ; then
- usenm=false
- fi
- ;;
-esac
-
-cat <<'EOM' >&4
-
-Some users have reported that Configure halts when testing for
-the O_NONBLOCK symbol with a syntax error. This is apparently a
-sh error. Rerunning Configure with ksh apparently fixes the
-problem. Try
- ksh Configure [your options]
-
-EOM
-
-# From: Anton Berezin <tobez\@plab.ku.dk>
-# To: perl5-porters\@perl.org
-# Subject: [PATCH 5.005_54] Configure - hints/freebsd.sh signal handler type
-# Date: 30 Nov 1998 19:46:24 +0100
-# Message-ID: <864srhhvcv.fsf\@lion.plab.ku.dk>
-
-signal_t='void'
-d_voidsig='define'
-
-# set libperl.so.X.X for 2.2.X
-case "\$osvers" in
-2.2*)
- # unfortunately this code gets executed before
- # the equivalent in the main Configure so we copy a little
- # from Configure XXX Configure should be fixed.
- if \$test -r \$src/patchlevel.h;then
- patchlevel=`awk '/define[ ]+PERL_VERSION/ {print \$3}' \$src/patchlevel.h`
- subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print \$3}' \$src/patchlevel.h`
- else
- patchlevel=0
- subversion=0
- fi
- libperl="libperl.so.\$patchlevel.\$subversion"
- unset patchlevel
- unset subversion
- ;;
-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'
-case "\$usethreads" in
-\$define|true|[yY]*)
- lc_r=`/sbin/ldconfig -r|grep ':-lc_r'|awk '{print \$NF}'|sed -n '\$p'`
- case "\$osvers" in
- 0*|1*|2.0*|2.1*) cat <<EOM >&4
-I did not know that FreeBSD \$osvers supports POSIX threads.
-
-Feel free to tell perlbug\@perl.org otherwise.
-EOM
- exit 1
- ;;
-
- 2.2.[0-7]*)
- cat <<EOM >&4
-POSIX threads are not supported well by FreeBSD \$osvers.
-
-Please consider upgrading to at least FreeBSD 2.2.8,
-or preferably to the most recent -RELEASE or -STABLE
-version (see http://www.freebsd.org/releases/).
-
-(While 2.2.7 does have pthreads, it has some problems
- with the combination of threads and pipes and therefore
- many Perl tests will either hang or fail.)
-EOM
- exit 1
- ;;
-
- [3-5].*)
- if [ ! -r "\$lc_r" ]; then
- cat <<EOM >&4
-POSIX threads should be supported by FreeBSD \$osvers --
-but your system is missing the shared libc_r.
-(/sbin/ldconfig -r doesn't find any).
-
-Consider using the latest STABLE release.
-EOM
- exit 1
- fi
- # 500016 is the first osreldate in which one could
- # just link against libc_r without disposing of libc
- # at the same time. 500016 ... up to whatever it was
- # on the 31st of August 2003 can still be used with -pthread,
- # but it is not necessary.
-
- # Anton Berezin says that post 500something we're wrong to be
- # to be using -lc_r, and should just be using -pthread on the
- # linker line.
- # So presumably really we should be checking that \$osver is 5.*)
- # and that `/sbin/sysctl -n kern.osreldate` -ge 500016
- # or -lt 500something and only in that range not doing this:
- ldflags="-pthread \$ldflags"
-
- # Both in 4.x and 5.x gethostbyaddr_r exists but
- # it is "Temporary function, not threadsafe"...
- # Presumably earlier it didn't even exist.
- d_gethostbyaddr_r="undef"
- d_gethostbyaddr_r_proto="0"
- ;;
-
- *)
- # 7.x doesn't install libc_r by default, and Configure
- # would fail in the code following
- #
- # gethostbyaddr_r() appears to have been implemented in 6.x+
- ldflags="-pthread \$ldflags"
- ;;
-
- esac
-
- case "\$osvers" in
- [1-4]*)
- set `echo X "\$libswanted "| sed -e 's/ c / c_r /'`
- shift
- libswanted="\$*"
- ;;
- *)
- set `echo X "\$libswanted "| sed -e 's/ c //'`
- shift
- libswanted="\$*"
- ;;
- esac
-
- # Configure will probably pick the wrong libc to use for nm scan.
- # The safest quick-fix is just to not use nm at all...
- usenm=false
-
- case "\$osvers" in
- 2.2.8*)
- # ... but this does not apply for 2.2.8 - we know it's safe
- libc="\$lc_r"
- usenm=true
- ;;
- esac
-
- unset lc_r
-
- # Even with the malloc mutexes the Perl malloc does not
- # seem to be threadsafe in FreeBSD?
- case "\$usemymalloc" in
- '') usemymalloc=n ;;
- esac
-esac
-EOCBU
-
-# malloc wrap works
-case "\$usemallocwrap" in
-'') usemallocwrap='define' ;;
-esac
-
-# XXX Under FreeBSD 6.0 (and probably most other similar versions)
-# Perl_die(NULL) generates a warning:
-# pp_sys.c:491: warning: null format string
-# Configure supposedely tests for this, but apparently the test doesn't
-# work. Volunteers with FreeBSD are needed to improving the Configure test.
-# Meanwhile, the following workaround should be safe on all versions
-# of FreeBSD.
-d_printf_format_null='undef'
-BADGER
-close $fh;
-}
-
qq[patchin'];
=pod
Please sign in to comment.
Something went wrong with that request. Please try again.