diff options
-rw-r--r-- | lang/perl5/Makefile | 208 | ||||
-rw-r--r-- | lang/perl5/buildlink3.mk | 20 | ||||
-rw-r--r-- | lang/perl5/distinfo | 22 | ||||
-rw-r--r-- | lang/perl5/files/Policy.sh | 120 | ||||
-rw-r--r-- | lang/perl5/patches/patch-aa | 6 | ||||
-rw-r--r-- | lang/perl5/patches/patch-ac | 18 | ||||
-rw-r--r-- | lang/perl5/patches/patch-ah | 99 | ||||
-rw-r--r-- | lang/perl5/patches/patch-ba | 28 | ||||
-rw-r--r-- | lang/perl5/patches/patch-ci | 21 | ||||
-rw-r--r-- | lang/perl5/patches/patch-co | 28 | ||||
-rw-r--r-- | lang/perl5/patches/patch-db | 73 | ||||
-rw-r--r-- | lang/perl5/patches/patch-fa | 565 | ||||
-rw-r--r-- | lang/perl5/patches/patch-zc | 23 | ||||
-rw-r--r-- | lang/perl5/patches/patch-zd | 11 |
14 files changed, 224 insertions, 1018 deletions
diff --git a/lang/perl5/Makefile b/lang/perl5/Makefile index 8e1bd13e663..8264fdf5eae 100644 --- a/lang/perl5/Makefile +++ b/lang/perl5/Makefile @@ -1,10 +1,10 @@ -# $NetBSD: Makefile,v 1.159 2010/06/27 13:38:39 spz Exp $ +# $NetBSD: Makefile,v 1.160 2010/08/19 20:47:09 seb Exp $ .include "license.mk" -DISTNAME= perl-5.10.1 +DISTNAME= perl-5.12.1 CATEGORIES= lang devel perl5 -PKGREVISION= 2 +#PKGREVISION= 1 MASTER_SITES= ${MASTER_SITE_PERL_CPAN:S,/modules/by-module/$,/src/5.0/,} DISTFILES+= ${DISTNAME}${EXTRACT_SUFX} @@ -69,63 +69,35 @@ PERL5_SITELIB= ${PERL5_SITEBASE}/lib/perl5/site_perl/${PERL5_API_VERS} HAS_CONFIGURE= yes CONFIGURE_SCRIPT= ./Configure CONFIGURE_ARGS+= -sde -CONFIGURE_ARGS+= -Darchname="${MACHINE_ARCH}-${LOWER_OPSYS}" -CONFIGURE_ARGS+= -Dcc=${CC:Q} -CONFIGURE_ARGS+= -Doptimize=${CFLAGS:M*:Q} -CONFIGURE_ARGS+= -Ui_malloc -CONFIGURE_ARGS+= -Uinstallusrbinperl MAKE_ENV+= LC_ALL="C" TEST_TARGET= test -### -### Installation directories for "perl", "vendor" and "site" bits. -### -CONFIGURE_ARGS+= -Dinstallstyle="lib/perl5" -CONFIGURE_ARGS+= -Dprefix=${PERL5_PREFIX:Q} -CONFIGURE_ARGS+= -Dsiteprefix=${PERL5_SITEPREFIX:Q} -CONFIGURE_ARGS+= -Dvendorprefix=${PERL5_VENDORPREFIX:Q} - -# The Perl Configure script will install scripts into "*/script" -# directories if they exist, so override with explicit settings. -# +# Policy.sh generation +# (see comments in files/Policy.sh) +SUBST_CLASSES+= policysh +SUBST_STAGE.policysh= pre-configure +SUBST_FILES.policysh= Policy.sh +SUBST_VARS.policysh+= MACHINE_ARCH +SUBST_VARS.policysh+= LOWER_OPSYS +SUBST_VARS.policysh+= CC +SUBST_VARS.policysh+= CFLAGS +SUBST_VARS.policysh+= PERL5_PREFIX +SUBST_VARS.policysh+= PERL5_SITEPREFIX +SUBST_VARS.policysh+= PERL5_VENDORPREFIX PERL5_SCRIPTDIR= ${PERL5_PERLBASE}/bin - -CONFIGURE_ARGS+= -Dscriptdir=${PERL5_SCRIPTDIR:Q} -CONFIGURE_ARGS+= -Dsitescript=${PERL5_SITEBASE:Q}/bin -CONFIGURE_ARGS+= -Dvendorscript=${PERL5_VENDORBASE:Q}/bin - -# Put any compiled binaries into vendor- and site-specific locations to -# avoid conflicts with each other. The perllink script will handle all -# the appropriate symlinking. -# -CONFIGURE_ARGS+= -Dsitebin=${PERL5_SITEBASE:Q}/bin -CONFIGURE_ARGS+= -Dvendorbin=${PERL5_VENDORBASE:Q}/bin - -# Put the API-specific files into API-specific directories instead -# of the default version-specific directories. -# -CONFIGURE_ARGS+= -Dprivlib=${PERL5_PRIVLIB:Q} -CONFIGURE_ARGS+= -Dsitelib=${PERL5_SITELIB:Q} -CONFIGURE_ARGS+= -Dvendorlib=${PERL5_VENDORLIB:Q} - -# Search for version-specific directories under these directories. -CONFIGURE_ARGS+= -Dsitelib_stem=${PERL5_SITEBASE:Q} -CONFIGURE_ARGS+= -Dvendorlib_stem=${PERL5_VENDORBASE:Q} - -# Avoid manpage conflicts between the standard Perl library, 3rd-party -# modules, and other packages. -# +SUBST_VARS.policysh+= PERL5_SCRIPTDIR +SUBST_VARS.policysh+= PERL5_PERLBASE +SUBST_VARS.policysh+= PERL5_SITEBASE +SUBST_VARS.policysh+= PERL5_VENDORBASE +SUBST_VARS.policysh+= PERL5_PRIVLIB +SUBST_VARS.policysh+= PERL5_SITELIB +SUBST_VARS.policysh+= PERL5_VENDORLIB PERL5_MAN1DIR= ${PERL5_PERLBASE}/${PKGMANDIR}/man1 - -CONFIGURE_ARGS+= -Dman1ext="1" -CONFIGURE_ARGS+= -Dman1dir=${PERL5_MAN1DIR:Q} -CONFIGURE_ARGS+= -Dsiteman1dir=${PERL5_SITEBASE:Q}/${PKGMANDIR:Q}/man1 -CONFIGURE_ARGS+= -Dvendorman1dir=${PERL5_VENDORBASE:Q}/${PKGMANDIR:Q}/man1 -CONFIGURE_ARGS+= -Dman3ext="3" -CONFIGURE_ARGS+= -Dman3dir=${PERL5_PERLBASE:Q}/${PKGMANDIR:Q}/man3 -CONFIGURE_ARGS+= -Dsiteman3dir=${PERL5_SITEBASE:Q}/${PKGMANDIR:Q}/man3 -CONFIGURE_ARGS+= -Dvendorman3dir=${PERL5_VENDORBASE:Q}/${PKGMANDIR:Q}/man3 +SUBST_VARS.policysh+= PERL5_MAN1DIR +SUBST_VARS.policysh+= PKGMANDIR +SUBST_VARS.policysh+= LOCALBASE +SUBST_VARS.policysh+= PTHREAD_LDFLAGS .if ${OPSYS} == "Darwin" # @@ -149,13 +121,13 @@ CONFIGURE_ARGS+= -Duseshrplib # files, so make sure the paths to the ones in ${TOOLS_DIR} aren't used. # USE_TOOLS+= hostname ln sed test -CONFIGURE_ARGS+= -Daphostname=${TOOLS_HOSTNAME_CMD:Q} -CONFIGURE_ARGS+= -Dln=${TOOLS_LN:Q} -CONFIGURE_ARGS+= -Dsed=${TOOLS_SED:Q} +SUBST_VARS.policysh+= TOOLS_HOSTNAME_CMD +SUBST_VARS.policysh+= TOOLS_LN TOOLS_ALIASES.sed+= ${TOOLS_SED:T} -CONFIGURE_ARGS+= -Dsh=${TOOLS_SH:Q} -CONFIGURE_ARGS+= -Dissymlink="${TOOLS_TEST} -h" -CONFIGURE_ARGS+= -Dperl5=${FALSE} +SUBST_VARS.policysh+= TOOLS_SED +SUBST_VARS.policysh+= TOOLS_SH +SUBST_VARS.policysh+= TOOLS_TEST +SUBST_VARS.policysh+= FALSE # Nail down the needed libraries for each platform here to avoid hidden # dependencies. If this isn't defined, then use the perl defaults for the @@ -164,14 +136,16 @@ CONFIGURE_ARGS+= -Dperl5=${FALSE} LIBSWANTED.Darwin= m c LIBSWANTED.DragonFly= m crypt LIBSWANTED.FreeBSD= m crypt +LIBSWANTED.HPUX= cl pthread $$libswanted # see Perl's README.hpux LIBSWANTED.IRIX= m crypt LIBSWANTED.Interix= m dl LIBSWANTED.Linux= m crypt dl nsl LIBSWANTED.NetBSD= m crypt LIBSWANTED.OpenBSD= m crypt LIBSWANTED.SunOS= m crypt dl socket nsl -LIBSWANTED.AIX= m crypt dl socket nsl bind c +LIBSWANTED.AIX= m crypt dl socket nsl bind c LIBSWANTED= ${LIBSWANTED.${OPSYS}} +SUBST_VARS.policysh+= LIBSWANTED # Nail down the directories in which the system libraries may be found. # If this isn't defined, then use the perl defaults for the particular @@ -186,21 +160,16 @@ SYSLIBPATH.OpenBSD= /usr/lib SYSLIBPATH.SunOS= /usr/lib SYSLIBPATH.AIX= /usr/lib SYSLIBPATH= ${SYSLIBPATH.${OPSYS}} - -# Nail down the directories in which headers and libraries of -# locally-installed software may be found. -# -LOCLIBPATH= ${LOCALBASE}/lib -LOCINCPATH= ${LOCALBASE}/include +SUBST_VARS.policysh+= SYSLIBPATH # On a.out platforms, we link with "ld" and on ELF platforms, we link with # "cc", so we need to use different options to pass the run-time search path # flags to the link command in the right way. # .if ${OBJECT_FMT} == "a.out" -LOCLIBRPATHFLAGS= ${LOCLIBPATH:S/^/${LINKER_RPATH_FLAG} /g} +LOCLIBRPATHFLAGS= ${LINKER_RPATH_FLAG} ${LOCALBASE}/lib .elif ${OBJECT_FMT} == "ELF" || ${OBJECT_FMT} == "XCOFF" -LOCLIBRPATHFLAGS= ${LOCLIBPATH:S/^/${COMPILER_RPATH_FLAG}/g} +LOCLIBRPATHFLAGS= ${COMPILER_RPATH_FLAG}${LOCALBASE}/lib .else LOCLIBRPATHFLAGS= # empty .endif @@ -283,34 +252,31 @@ CONFIGURE_ARGS+= -Uusemymalloc .if !empty(PKG_OPTIONS:M64bitint) CONFIGURE_ARGS+= -Duse64bitint -.if ${OBJECT_FMT} == "XCOFF" +. if ${OBJECT_FMT} == "XCOFF" LOCLIBRPATHFLAGS+= ${COMPILER_RPATH_FLAG}${PERL5_PRIVLIB}/${MACHINE_ARCH}-${LOWER_OPSYS}${PERL5_RPATH_THREAD}-multi-64int/CORE -.endif +. endif .elif !empty(PKG_OPTIONS:M64bitmore) CONFIGURE_ARGS+= -Dusemorebits -.if ${OBJECT_FMT} == "XCOFF" +. if ${OBJECT_FMT} == "XCOFF" LOCLIBRPATHFLAGS+= ${COMPILER_RPATH_FLAG}${PERL5_PRIVLIB}/${MACHINE_ARCH}-${LOWER_OPSYS}${PERL5_RPATH_THREAD}-multi-64int-ld/CORE -.endif +. endif .elif !empty(PKG_OPTIONS:M64bitall) CONFIGURE_ARGS+= -Duse64bitall -.if ${OBJECT_FMT} == "XCOFF" +. if ${OBJECT_FMT} == "XCOFF" LOCLIBRPATHFLAGS+= ${COMPILER_RPATH_FLAG}${PERL5_PRIVLIB}/${MACHINE_ARCH}-${LOWER_OPSYS}${PERL5_RPATH_THREAD}-multi-64all/CORE -.endif +. endif .elif !empty(PKG_OPTIONS:M64bitnone) CONFIGURE_ARGS+= -Uuse64bitall -Uusemorebits -Uuse64bitint -.if ${OBJECT_FMT} == "XCOFF" +. if ${OBJECT_FMT} == "XCOFF" LOCLIBRPATHFLAGS+= ${COMPILER_RPATH_FLAG}${PERL5_PRIVLIB}/${MACHINE_ARCH}-${LOWER_OPSYS}${PERL5_RPATH_THREAD}-multi/CORE -.endif +. endif .else -.if ${OBJECT_FMT} == "XCOFF" +. if ${OBJECT_FMT} == "XCOFF" BROKEN= XCOFF targets need the path specified where libperl.a resides.\ Please choose on of 64bitint 64bitmore 64bitall or 64bitnone to allow this. +. endif .endif -.endif - -.if !empty(LIBSWANTED) -CONFIGURE_ARGS+= -Dlibswanted=${LIBSWANTED:Q} -.endif +SUBST_VARS.policysh+= LOCLIBRPATHFLAGS # Remove a spurious workdir reference SUBST_CLASSES+= rm @@ -319,11 +285,10 @@ SUBST_FILES.rm= lib/Config_heavy.pl SUBST_SED.rm= -e "s!^rm_try='/.*/\.tools/bin/rm -f!rm_try='/bin/rm -f!" # Replace our perl as the interpreter -REPLACE_PERL+= lib/Class/ISA.pm REPLACE_PERL+= lib/File/DosGlob.pm REPLACE_PERL+= lib/version.pm -REPLACE_PERL+= lib/Math/BigFloat/Trace.pm -REPLACE_PERL+= lib/Math/BigInt/Trace.pm +REPLACE_PERL+= cpan/bignum/lib/Math/BigFloat/Trace.pm +REPLACE_PERL+= cpan/bignum/lib/Math/BigInt/Trace.pm REPLACE_PERL+= lib/unicore/mktables # And replace a perl interpreter during the pre-install stage @@ -338,11 +303,11 @@ SUBST_SED.miniperl= -e "1s:\#!./miniperl:\#!${PERL5}:" SUBST_CLASSES+= cpprun SUBST_STAGE.cpprun= pre-install SUBST_FILES.cpprun= lib/Config_heavy.pl -.if !empty(PKG_OPTIONS:Mthreads) +. if !empty(PKG_OPTIONS:Mthreads) SUBST_SED.cpprun= -e "s/cpprun=''/cpprun='cc_r -E'/" -.else +. else SUBST_SED.cpprun= -e "s/cpprun=''/cpprun='cc -E'/" -.endif +. endif .endif # Some platforms may want the directory mode not to be 0755. This @@ -351,65 +316,12 @@ SUBST_SED.cpprun= -e "s/cpprun=''/cpprun='cc -E'/" # SUBST_CLASSES+= dirmode SUBST_STAGE.dirmode= post-patch -SUBST_FILES.dirmode= installhtml installman installperl \ - lib/ExtUtils/Install.pm +SUBST_FILES.dirmode= installhtml install_lib.pl \ + dist/ExtUtils-Install/lib/ExtUtils/Install.pm SUBST_SED.dirmode= -e "s/755/${PKGDIRMODE}/g;/umask(/d" -# It's tough to guess which hints file will be used, so add our modifications -# to all of them: -# -# - Add the pkgsrc-derived LDFLAGS for linking against pthreads to the -# usethreads.cbu call-back script. -# -# - Generate a pkgsrc.cbu call-back script that sets the correct LDFLAGS -# for linking against pkgsrc-installed libraries. -# -# - Explicitly set the local compiler search paths to contain only the -# pkgsrc-controlled directories. -# -pre-configure: -.if defined(PTHREAD_LDFLAGS) && !empty(PTHREAD_LDFLAGS) - hintdir="${WRKSRC}/hints"; \ - for hints in $${hintdir}/*.sh; do \ - ${CHMOD} +w $${hints}; \ - { ${ECHO} ""; \ - ${ECHO} "cat >> UU/usethreads.cbu <<'EOCBU'"; \ - ${ECHO} ""; \ - ${ECHO} "# Add pkgsrc-derived ldflags to link with thread support."; \ - ${ECHO} 'ldflags="'${PTHREAD_LDFLAGS:Q}' $$ldflags"'; \ - ${ECHO} 'lddlflags="'${PTHREAD_LDFLAGS:Q}' $$lddlflags"'; \ - ${ECHO} "EOCBU"; \ - } >> $${hints}; \ - done -.endif - hintdir="${WRKSRC}/hints"; \ - for hints in $${hintdir}/*.sh; do \ - ${CHMOD} +w $${hints}; \ - { ${ECHO} ""; \ - ${ECHO} "cat > UU/pkgsrc.cbu <<'EOCBU'"; \ - ${ECHO} "# This script UU/pkgsrc.cbu will get 'called-back' by Configure to set"; \ - ${ECHO} '# linker options after all other call-back scripts have been invoked.'; \ - ${ECHO} 'ldflags="'${LOCLIBRPATHFLAGS:Q}' $$ldflags"'; \ - ${ECHO} 'lddlflags="'${LOCLIBRPATHFLAGS:Q}' $$lddlflags"'; \ - ${ECHO} "EOCBU"; \ - } >> $${hints}; \ - done - hintdir="${WRKSRC}/hints"; \ - for hints in $${hintdir}/*.sh; do \ - ${CHMOD} +w $${hints}; \ - { ${ECHO} ""; \ - ${ECHO} "# Set pkgsrc defaults for library and header search paths."; \ - ${ECHO} 'locincpth="'${LOCINCPATH:Q}'"'; \ - ${ECHO} 'loclibpth="'${LOCLIBPATH:Q}'"'; \ - } >> $${hints}; \ - done -.if !empty(SYSLIBPATH) - hintdir="${WRKSRC}/hints"; \ - for hints in $${hintdir}/*.sh; do \ - ${CHMOD} +w $${hints}; \ - ${ECHO} 'glibpth="'${SYSLIBPATH:Q}'"' >> $${hints}; \ - done -.endif +post-extract: + cp ${FILESDIR}/Policy.sh ${WRKSRC}/Policy.sh post-build: ${SED} -e "s,@PERL5@,"${PERL5:Q}",g" \ @@ -429,10 +341,10 @@ PLIST_SRC= ${WRKDIR}/.PLIST_SRC post-install: perl5-post-install perl5-post-install: - if ${TEST} -x ${DESTDIR}${PREFIX}/bin/a2p; then \ + ${RUN}if ${TEST} -x ${DESTDIR}${PREFIX}/bin/a2p; then \ strip ${DESTDIR}${PREFIX}/bin/a2p; \ fi - ${INSTALL_SCRIPT} ${WRKDIR}/perllink.sh ${DESTDIR}${PERL5_SCRIPTDIR}/perllink; \ + ${RUN}${INSTALL_SCRIPT} ${WRKDIR}/perllink.sh ${DESTDIR}${PERL5_SCRIPTDIR}/perllink; \ ${INSTALL_MAN} ${FILESDIR}/perllink.1 ${DESTDIR}${PERL5_MAN1DIR}/perllink.1; \ ${RM} -f ${DESTDIR}${PREFIX}/bin/perllink \ ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1/perllink.1; \ diff --git a/lang/perl5/buildlink3.mk b/lang/perl5/buildlink3.mk index 12abc3b3f83..ed8bfc009b0 100644 --- a/lang/perl5/buildlink3.mk +++ b/lang/perl5/buildlink3.mk @@ -1,4 +1,4 @@ -# $NetBSD: buildlink3.mk,v 1.45 2009/07/17 06:43:27 sno Exp $ +# $NetBSD: buildlink3.mk,v 1.46 2010/08/19 20:47:09 seb Exp $ BUILDLINK_TREE+= perl @@ -6,13 +6,13 @@ BUILDLINK_TREE+= perl PERL5_BUILDLINK3_MK:= .include "../../mk/bsd.fast.prefs.mk" -PERL5_REQD+= 5.10.0 +PERL5_REQD+= 5.12.0 .for _perl5_ver_ in ${PERL5_REQD} BUILDLINK_API_DEPENDS.perl+= perl>=${_perl5_ver_} .endfor -# Prevent p5-* etc. packages built for 5.10.0 to be used +# Prevent p5-* etc. packages built for 5.12.0 to be used # with the next incompatible version of perl: -BUILDLINK_API_DEPENDS.perl+= perl<5.12.0 +BUILDLINK_API_DEPENDS.perl+= perl<5.14.0 BUILDLINK_PKGSRCDIR.perl?= ../../lang/perl5 @@ -24,21 +24,19 @@ pkgbase := perl .include "../../mk/pkg-build-options.mk" PERL5_OPTIONS?= # empty -. if !empty(PERL5_OPTIONS:Mthreads) +.if !empty(PERL5_OPTIONS:Mthreads) INSTALL_TEMPLATES+= ${.CURDIR}/../../lang/perl5/files/install_threads.tmpl -. endif +.endif -. if ${PKG_INSTALLATION_TYPE} == "overwrite" +.if ${PKG_INSTALLATION_TYPE} == "overwrite" # # Perl keeps headers and odd libraries in an odd path not caught by the # default BUILDLINK_FILES_CMD, so name them to be symlinked into # ${BUILDLINK_DIR}. # .include "../../lang/perl5/vars.mk" -BUILDLINK_FILES.perl= \ - ${PERL5_SUB_INSTALLARCHLIB}/CORE/* \ - ${PERL5_SUB_INSTALLARCHLIB}/auto/DynaLoader/DynaLoader.a -. endif +BUILDLINK_FILES.perl= ${PERL5_SUB_INSTALLARCHLIB}/CORE/* +.endif .endif # PERL5_BUILDLINK3_MK BUILDLINK_TREE+= -perl diff --git a/lang/perl5/distinfo b/lang/perl5/distinfo index 8de02a0cfb0..03835eb164b 100644 --- a/lang/perl5/distinfo +++ b/lang/perl5/distinfo @@ -1,24 +1,18 @@ -$NetBSD: distinfo,v 1.65 2010/06/27 13:38:39 spz Exp $ +$NetBSD: distinfo,v 1.66 2010/08/19 20:47:09 seb Exp $ -SHA1 (perl-5.10.1.tar.gz) = 8536ed1c14444d1efea069525a816fbc7be7109f -RMD160 (perl-5.10.1.tar.gz) = 6fe727a5e8878c26b5bd7cfc7165e10f311f7214 -Size (perl-5.10.1.tar.gz) = 14117518 bytes -SHA1 (patch-aa) = 7f25db6568bb1b0d079efde82952b2fea919b7f8 +SHA1 (perl-5.12.1.tar.gz) = 83b99f08379782dc06594a85eeb279edc5b0ca44 +RMD160 (perl-5.12.1.tar.gz) = 2e2d08821bdf3ed87360af828e3b31f5861b4fdd +Size (perl-5.12.1.tar.gz) = 15122057 bytes +SHA1 (patch-aa) = 4c8197cdc0595a17ba377a28c7457f923c2d9bf9 SHA1 (patch-ab) = e3aa6bf9695addb9b754297120caf8683a625d1a -SHA1 (patch-ac) = c1893ea4cf4b89b03b3acc5dec9b5828d50c5dad -SHA1 (patch-ah) = 1d2f4049dcc8dafcd0eafad36a74531dc7f305c9 +SHA1 (patch-ah) = 7f4c84249cb804af69db389078f7b7cbfc97896c SHA1 (patch-ai) = 5abdbbddcba79088996056ab88a34db5fcd16b01 SHA1 (patch-aq) = 3ece22678e3e6dcd3cf641e6389ff203cbe351b9 -SHA1 (patch-ba) = 956faac66f446b05360be16b5d197280dea7f801 SHA1 (patch-ca) = bc3472f62773045916261e8e434af8f2e25b4f9a SHA1 (patch-ch) = 5b6a89c82e158bab0a5f06add48c28e600678099 -SHA1 (patch-ci) = e99836c538257f45917c3fb81f9c4d07df2e58e7 SHA1 (patch-ck) = 28207b8186c9ad194a1edc696159915bc16d1097 SHA1 (patch-cn) = 7ca2b1ff19f8371637a34ec26779b37d74c74cca -SHA1 (patch-co) = c4a4e30171cebb1ceaa14850b9be99ffa7c94519 -SHA1 (patch-db) = 3aef75518bfea88cb5166026f04ef4d7c016bc99 -SHA1 (patch-fa) = 0a496df9e340291a6162efb1b63b0420c2559be8 SHA1 (patch-ta) = 69f0d2df022eb8ff0dbcc77bde638cdc9c6391b1 -SHA1 (patch-zc) = a23002397ffaebb243f7683c95c8fb227af90f49 -SHA1 (patch-zd) = 1a4ae60e9ae350c813d8b91c61e93805b3e66210 +SHA1 (patch-zc) = 187b79978285058f37991278b99bbd4109344a2f +SHA1 (patch-zd) = 15532739b4a582da322d3e51fc364905bacbcd7e SHA1 (patch-ze) = 42ccdd60c8dc5c6e93ebcebd276aa5f7e60d07fe diff --git a/lang/perl5/files/Policy.sh b/lang/perl5/files/Policy.sh new file mode 100644 index 00000000000..28759350bf4 --- /dev/null +++ b/lang/perl5/files/Policy.sh @@ -0,0 +1,120 @@ +# $NetBSD: Policy.sh,v 1.1 2010/08/19 20:47:10 seb Exp $ +# +# Site-wide policy settings for pkgsrc Perl +# +archname='@MACHINE_ARCH@-@LOWER_OPSYS@' +cc='@CC@' +if $test -n '@CFLAGS@'; then + optimize='@CFLAGS@' +fi +i_malloc='undef' +installusrbinperl='undef' +installstyle='lib/perl5' + +# Perl embeds the full paths to the following tools in several installed +# files, so make sure the paths to the ones in ${TOOLS_DIR} aren't used. +aphostname='@TOOLS_HOSTNAME_CMD@' +ln='@TOOLS_LN@' +lns='@TOOLS_LN@ -s' +sed='@TOOLS_SED@' +sh='@TOOLS_SH@' +issymlink='@TOOLS_TEST@ -h' +perl5='@FALSE@' + +# Installation directories for "perl", "vendor" and "site" bits. +prefix='@PERL5_PREFIX@' +siteprefix='@PERL5_SITEPREFIX@' +vendorprefix='@PERL5_VENDORPREFIX@' + +# The Perl Configure script will install scripts into "*/script" +# directories if they exist, so override with explicit settings. +scriptdir='@PERL5_SCRIPTDIR@' +sitescript='@PERL5_SITEBASE@/bin' +vendorscript='@PERL5_VENDORBASE@/bin' + +# Put any compiled binaries into vendor- and site-specific locations to +# avoid conflicts with each other. The perllink script will handle all +# the appropriate symlinking. +sitebin='@PERL5_SITEBASE@/bin' +vendorbin='@PERL5_VENDORBASE@/bin' + +# Put the API-specific files into API-specific directories instead +# of the default version-specific directories. +privlib='@PERL5_PRIVLIB@' +sitelib='@PERL5_SITELIB@' +vendorlib='@PERL5_VENDORLIB@' + +# Search for version-specific directories under these directories. +sitelib_stem='@PERL5_SITEBASE@' +vendorlib_stem='@PERL5_VENDORBASE@' + +# Avoid manpage conflicts between the standard Perl library, 3rd-party +# modules, and other packages. +man1ext='1' +man1dir='@PERL5_MAN1DIR@' +siteman1dir='@PERL5_SITEBASE@/@PKGMANDIR@/man1' +vendorman1dir='@PERL5_VENDORBASE@/@PKGMANDIR@/man1' +man3ext='3' +man3dir='@PERL5_PERLBASE@/@PKGMANDIR@/man3' +siteman3dir='@PERL5_SITEBASE@/@PKGMANDIR@/man3' +vendorman3dir='@PERL5_VENDORBASE@/@PKGMANDIR@/man3' + +# Nail down the needed libraries for each platform here to avoid hidden +# dependencies. If this isn't defined, then use the perl defaults for the +# particular operating system. +if $test -n "@LIBSWANTED@"; then + libswanted="@LIBSWANTED@ " +fi + +# Add the pkgsrc-derived LDFLAGS for linking against pthreads to the +# usethreads.cbu call-back script +if $test -n "@PTHREAD_LDFLAGS@"; then + cat >> UU/usethreads.cbu <<EOCBU + +# Add pkgsrc-derived ldflags to link with thread support. +ldflags="@PTHREAD_LDFLAGS@ \$ldflags" +lddlflags="@PTHREAD_LDFLAGS@ \$lddlflags" +EOCBU +fi + +# Generate a pkgsrc.cbu call-back script that sets the correct LDFLAGS +# for linking against pkgsrc-installed libraries +cat > UU/pkgsrc.cbu <<EOCBU +# This script UU/pkgsrc.cbu will get 'called-back' by Configure +# *after* all hints + +# Sets the correct LDFLAGS for linking against pkgsrc-installed +# libraries +ldflags="@LOCLIBRPATHFLAGS@ \$ldflags" +lddlflags="@LOCLIBRPATHFLAGS@ \$lddlflags" + +# Set pkgsrc defaults for library and header search paths: +# nail down the directories in which headers and libraries of +# locally-installed software may be found. +loclibpth="@LOCALBASE@/lib" +locincpth="@LOCALBASE@/include" + +# Set pkgsrc defaults for "plateform"/general path used to +# find libraries +if $test -n "@SYSLIBPATH@"; then + glibpth="@SYSLIBPATH@" +fi + +# Strip /usr/local/lib... from ldflags +case "\$ldflags" in */usr/local/lib*) + set \`echo "X \$ldflags " | sed 's, [^ ]*/usr/local/lib[^ ]* , ,g'\` + shift + ldflags="\$*" + ;; +esac + +# Strip gdbm from libswanted +case "\$libswanted" in *gdbm*) + set \`echo "X \$libswanted " | sed 's, [^ ]*gdbm[^ ]* , ,g'\` + shift + libswanted="\$*" +esac + +# (re)Set sed here so that sed _and_ full_sed are correctly *both* set +sed='@TOOLS_SED@' +EOCBU diff --git a/lang/perl5/patches/patch-aa b/lang/perl5/patches/patch-aa index 8e9adfafc5a..86d67d995ce 100644 --- a/lang/perl5/patches/patch-aa +++ b/lang/perl5/patches/patch-aa @@ -1,7 +1,7 @@ -$NetBSD: patch-aa,v 1.32 2009/12/14 06:36:57 seb Exp $ +$NetBSD: patch-aa,v 1.33 2010/08/19 20:47:10 seb Exp $ ---- lib/ExtUtils/MM_Unix.pm.orig 2009-12-06 17:10:46.000000000 +0000 -+++ lib/ExtUtils/MM_Unix.pm 2009-12-06 17:12:37.000000000 +0000 +--- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm.orig 2010-05-21 03:45:50.000000000 +0000 ++++ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2010-05-21 03:46:44.000000000 +0000 @@ -28,8 +28,6 @@ $Is{VMS} = $^O eq 'VMS'; $Is{OSF} = $^O eq 'dec_osf'; diff --git a/lang/perl5/patches/patch-ac b/lang/perl5/patches/patch-ac deleted file mode 100644 index 9b30305f936..00000000000 --- a/lang/perl5/patches/patch-ac +++ /dev/null @@ -1,18 +0,0 @@ -$NetBSD: patch-ac,v 1.14 2009/12/22 04:39:59 dsainty Exp $ - -We intentionally wire down the 'libswanted' list in the package Makefile, -so don't let the hints file add new libraries that may be found outside -Pkgsrc control. - ---- hints/linux.sh 2009-02-13 11:58:12.000000000 +1300 -+++ hints/linux.sh 2009-12-22 16:46:41.400187863 +1300 -@@ -54,9 +54,6 @@ - shift - libswanted="$*" - --# Debian 4.0 puts ndbm in the -lgdbm_compat library. --libswanted="$libswanted gdbm_compat" -- - # If you have glibc, then report the version for ./myconfig bug reporting. - # (Configure doesn't need to know the specific version since it just uses - # gcc to load the library for all tests.) diff --git a/lang/perl5/patches/patch-ah b/lang/perl5/patches/patch-ah index 97ced6868a2..fee5640feeb 100644 --- a/lang/perl5/patches/patch-ah +++ b/lang/perl5/patches/patch-ah @@ -1,8 +1,6 @@ -$NetBSD: patch-ah,v 1.10 2008/10/10 21:58:43 he Exp $ - ---- perl.c.orig 2007-12-18 11:47:08.000000000 +0100 -+++ perl.c -@@ -1454,8 +1454,10 @@ S_procself_val(pTHX_ SV *sv, const char +--- perl.c.orig 2010-05-21 14:41:18.000000000 +0000 ++++ perl.c 2010-05-21 14:44:01.000000000 +0000 +@@ -1414,8 +1414,10 @@ to the executable (or returning an error from the readlink). Any valid path has a '/' in it somewhere, so use that to validate the result. See http://www.freebsd.org/cgi/query-pr.cgi?pr=35703 @@ -14,94 +12,3 @@ $NetBSD: patch-ah,v 1.10 2008/10/10 21:58:43 he Exp $ sv_setpvn(sv,buf,len); } else { -@@ -4747,45 +4749,8 @@ S_init_perllib(pTHX) - } - - /* Use the ~-expanded versions of APPLLIB (undocumented), -- ARCHLIB PRIVLIB SITEARCH SITELIB VENDORARCH and VENDORLIB -+ SITEARCH SITELIB VENDORARCH VENDORLIB ARCHLIB and PRIVLIB - */ --#ifdef APPLLIB_EXP -- incpush(APPLLIB_EXP, TRUE, TRUE, TRUE, TRUE); --#endif -- --#ifdef ARCHLIB_EXP -- incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE); --#endif --#ifdef MACOS_TRADITIONAL -- { -- Stat_t tmpstatbuf; -- SV * privdir = newSV(0); -- char * macperl = PerlEnv_getenv("MACPERL"); -- -- if (!macperl) -- macperl = ""; -- -- Perl_sv_setpvf(aTHX_ privdir, "%slib:", macperl); -- if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) -- incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); -- Perl_sv_setpvf(aTHX_ privdir, "%ssite_perl:", macperl); -- if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) -- incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); -- -- SvREFCNT_dec(privdir); -- } -- if (!PL_tainting) -- incpush(":", FALSE, FALSE, TRUE, FALSE); --#else --#ifndef PRIVLIB_EXP --# define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl" --#endif --#if defined(WIN32) -- incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE, TRUE); --#else -- incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE); --#endif -- - #ifdef SITEARCH_EXP - /* sitearch is always relative to sitelib on Windows for - * DLL-based path intuition to work correctly */ -@@ -4828,6 +4793,43 @@ S_init_perllib(pTHX) - incpush(PERL_VENDORLIB_STEM, FALSE, TRUE, TRUE, TRUE); - #endif - -+#ifdef APPLLIB_EXP -+ incpush(APPLLIB_EXP, TRUE, TRUE, TRUE, TRUE); -+#endif -+ -+#ifdef ARCHLIB_EXP -+ incpush(ARCHLIB_EXP, FALSE, FALSE, TRUE, TRUE); -+#endif -+#ifdef MACOS_TRADITIONAL -+ { -+ Stat_t tmpstatbuf; -+ SV * privdir = newSV(0); -+ char * macperl = PerlEnv_getenv("MACPERL"); -+ -+ if (!macperl) -+ macperl = ""; -+ -+ Perl_sv_setpvf(aTHX_ privdir, "%slib:", macperl); -+ if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) -+ incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); -+ Perl_sv_setpvf(aTHX_ privdir, "%ssite_perl:", macperl); -+ if (PerlLIO_stat(SvPVX(privdir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) -+ incpush(SvPVX(privdir), TRUE, FALSE, TRUE, FALSE); -+ -+ SvREFCNT_dec(privdir); -+ } -+ if (!PL_tainting) -+ incpush(":", FALSE, FALSE, TRUE, FALSE); -+#else -+#ifndef PRIVLIB_EXP -+# define PRIVLIB_EXP "/usr/local/lib/perl5:/usr/local/lib/perl" -+#endif -+#if defined(WIN32) -+ incpush(PRIVLIB_EXP, TRUE, FALSE, TRUE, TRUE); -+#else -+ incpush(PRIVLIB_EXP, FALSE, FALSE, TRUE, TRUE); -+#endif -+ - #ifdef PERL_OTHERLIBDIRS - incpush(PERL_OTHERLIBDIRS, TRUE, TRUE, TRUE, TRUE); - #endif diff --git a/lang/perl5/patches/patch-ba b/lang/perl5/patches/patch-ba deleted file mode 100644 index 37056184eca..00000000000 --- a/lang/perl5/patches/patch-ba +++ /dev/null @@ -1,28 +0,0 @@ -$NetBSD: patch-ba,v 1.6 2009/12/14 06:36:57 seb Exp $ - ---- hints/netbsd.sh.orig 2009-12-06 17:21:43.000000000 +0000 -+++ hints/netbsd.sh 2009-12-06 17:22:01.000000000 +0000 -@@ -175,23 +175,6 @@ - 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 diff --git a/lang/perl5/patches/patch-ci b/lang/perl5/patches/patch-ci deleted file mode 100644 index f6b8b515625..00000000000 --- a/lang/perl5/patches/patch-ci +++ /dev/null @@ -1,21 +0,0 @@ -$NetBSD: patch-ci,v 1.6 2009/12/14 06:36:57 seb Exp $ - ---- pp_sys.c.orig 2009-12-06 17:53:56.000000000 +0000 -+++ pp_sys.c 2009-12-06 17:55:04.000000000 +0000 -@@ -4463,12 +4463,15 @@ - when = (Time_t)SvIVx(POPs); - #endif - -- if (PL_op->op_type == OP_LOCALTIME) -+ if (PL_op->op_type == OP_LOCALTIME) { - #ifdef LOCALTIME_EDGECASE_BROKEN - tmbuf = S_my_localtime(aTHX_ &when); - #else -+ /* Explicitly invoke tzset() as localtime_r may not. */ -+ tzset(); - tmbuf = localtime(&when); - #endif -+ } - else - tmbuf = gmtime(&when); - diff --git a/lang/perl5/patches/patch-co b/lang/perl5/patches/patch-co deleted file mode 100644 index 61666c12f08..00000000000 --- a/lang/perl5/patches/patch-co +++ /dev/null @@ -1,28 +0,0 @@ -$NetBSD: patch-co,v 1.4 2009/12/14 06:36:57 seb Exp $ - ---- hints/freebsd.sh.orig 2009-12-06 18:06:01.000000000 +0000 -+++ hints/freebsd.sh 2009-12-06 18:06:31.000000000 +0000 -@@ -114,7 +114,7 @@ - lddlflags="-Bshareable $lddlflags" - ;; - --*) -+3*|4*|5*|6*) - objformat=`/usr/bin/objformat` - if [ x$objformat = xaout ]; then - if [ -e /usr/lib/aout ]; then -@@ -130,6 +130,14 @@ - 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 diff --git a/lang/perl5/patches/patch-db b/lang/perl5/patches/patch-db deleted file mode 100644 index b6852d6eca5..00000000000 --- a/lang/perl5/patches/patch-db +++ /dev/null @@ -1,73 +0,0 @@ -$NetBSD: patch-db,v 1.1 2009/10/13 10:38:31 hasso Exp $ - ---- hints/dragonfly.sh.orig 2009-10-09 15:28:17 +0200 -+++ hints/dragonfly.sh -@@ -19,18 +19,10 @@ esac - # out here to avoid duplicating them everywhere. - case "$osvers" in - *) objformat=`/usr/bin/objformat` -- if [ x$objformat = xelf ]; then -- libpth="/usr/lib /usr/local/lib" -- glibpth="/usr/lib /usr/local/lib" -- ldflags="-Wl,-E " -- lddlflags="-shared " -- else -- 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' -- fi -+ libpth="/usr/lib /usr/local/lib" -+ glibpth="/usr/lib /usr/local/lib" -+ ldflags="-Wl,-E " -+ lddlflags="-shared " - cccdlflags='-DPIC -fPIC' - ;; - esac -@@ -67,43 +59,16 @@ d_voidsig='define' - 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 -- *) 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). -+ *) ldflags="-pthread $ldflags" - --Consider using the latest STABLE release. --EOM -- exit 1 -- fi -- case "$osvers" in -- *) ldflags="-pthread $ldflags" -- ;; -- esac - # 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" -- ;; -- esac - -- set `echo X "$libswanted "| sed -e 's/ c / c_r /'` -- shift -- libswanted="$*" -- # 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 -- -- 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 diff --git a/lang/perl5/patches/patch-fa b/lang/perl5/patches/patch-fa deleted file mode 100644 index 21b68da38e6..00000000000 --- a/lang/perl5/patches/patch-fa +++ /dev/null @@ -1,565 +0,0 @@ -$NetBSD: patch-fa,v 1.1 2010/06/27 13:38:39 spz Exp $ - -fixes CVE-2010-1168 and CVE-2010-1447 by updating Safe.pm to the current -version - ---- ./ext/Safe/Safe.pm.orig 2009-08-22 18:39:32.000000000 +0000 -+++ ./ext/Safe/Safe.pm -@@ -2,8 +2,9 @@ package Safe; - - use 5.003_11; - use strict; -+use Scalar::Util qw(reftype); - --$Safe::VERSION = "2.18"; -+$Safe::VERSION = "2.27"; - - # *** Don't declare any lexicals above this point *** - # -@@ -11,18 +12,18 @@ $Safe::VERSION = "2.18"; - # see any lexicals in scope (apart from __ExPr__ which is unavoidable) - - sub lexless_anon_sub { -- # $_[0] is package; -- # $_[1] is strict flag; -+ # $_[0] is package; -+ # $_[1] is strict flag; - my $__ExPr__ = $_[2]; # must be a lexical to create the closure that -- # can be used to pass the value into the safe -- # world -+ # can be used to pass the value into the safe -+ # world - - # Create anon sub ref in root of compartment. - # Uses a closure (on $__ExPr__) to pass in the code to be executed. - # (eval on one line to keep line numbers as expected by caller) - eval sprintf - 'package %s; %s strict; sub { @_=(); eval q[my $__ExPr__;] . $__ExPr__; }', -- $_[0], $_[1] ? 'use' : 'no'; -+ $_[0], $_[1] ? 'use' : 'no'; - } - - use Carp; -@@ -30,6 +31,18 @@ BEGIN { eval q{ - use Carp::Heavy; - } } - -+use B (); -+BEGIN { -+ no strict 'refs'; -+ if (defined &B::sub_generation) { -+ *sub_generation = \&B::sub_generation; -+ } -+ else { -+ # fake sub generation changing for perls < 5.8.9 -+ my $sg; *sub_generation = sub { ++$sg }; -+ } -+} -+ - use Opcode 1.01, qw( - opset opset_to_ops opmask_add - empty_opset full_opset invert_opset verify_opset -@@ -38,6 +51,23 @@ use Opcode 1.01, qw( - - *ops_to_opset = \&opset; # Temporary alias for old Penguins - -+# Regular expressions and other unicode-aware code may need to call -+# utf8->SWASHNEW (via perl's utf8.c). That will fail unless we share the -+# SWASHNEW method. -+# Sadly we can't just add utf8::SWASHNEW to $default_share because perl's -+# utf8.c code does a fetchmethod on SWASHNEW to check if utf8.pm is loaded, -+# and sharing makes it look like the method exists. -+# The simplest and most robust fix is to ensure the utf8 module is loaded when -+# Safe is loaded. Then we can add utf8::SWASHNEW to $default_share. -+require utf8; -+# we must ensure that utf8_heavy.pl, where SWASHNEW is defined, is loaded -+# but without depending on knowledge of that implementation detail. -+# This code (//i on a unicode string) ensures utf8 is fully loaded -+# and also loads the ToFold SWASH. -+# (Swashes are cached internally by perl in PL_utf8_* variables -+# independent of being inside/outside of Safe. So once loaded they can be) -+do { my $a = pack('U',0xC4); my $b = chr 0xE4; utf8::upgrade $b; $a =~ /$b/i }; -+# now we can safely include utf8::SWASHNEW in $default_share defined below. - - my $default_root = 0; - # share *_ and functions defined in universal.c -@@ -57,10 +87,15 @@ my $default_share = [qw[ - &utf8::downgrade - &utf8::native_to_unicode - &utf8::unicode_to_native -+ &utf8::SWASHNEW - $version::VERSION - $version::CLASS -+ $version::STRICT -+ $version::LAX - @version::ISA --], ($] >= 5.008001 && qw[ -+], ($] < 5.010 && qw[ -+ &utf8::SWASHGET -+]), ($] >= 5.008001 && qw[ - &Regexp::DESTROY - ]), ($] >= 5.010 && qw[ - &re::is_regexp -@@ -93,6 +128,12 @@ my $default_share = [qw[ - &version::noop - &version::is_alpha - &version::qv -+ &version::vxs::declare -+ &version::vxs::qv -+ &version::vxs::_VERSION -+ &version::vxs::stringify -+ &version::vxs::new -+ &version::vxs::parse - ]), ($] >= 5.011 && qw[ - &re::regexp_pattern - ])]; -@@ -103,14 +144,14 @@ sub new { - bless $obj, $class; - - if (defined($root)) { -- croak "Can't use \"$root\" as root name" -- if $root =~ /^main\b/ or $root !~ /^\w[:\w]*$/; -- $obj->{Root} = $root; -- $obj->{Erase} = 0; -+ croak "Can't use \"$root\" as root name" -+ if $root =~ /^main\b/ or $root !~ /^\w[:\w]*$/; -+ $obj->{Root} = $root; -+ $obj->{Erase} = 0; - } - else { -- $obj->{Root} = "Safe::Root".$default_root++; -- $obj->{Erase} = 1; -+ $obj->{Root} = "Safe::Root".$default_root++; -+ $obj->{Erase} = 1; - } - - # use permit/deny methods instead till interface issues resolved -@@ -125,7 +166,9 @@ sub new { - # the whole glob *_ rather than $_ and @_ separately, otherwise - # @_ in non default packages within the compartment don't work. - $obj->share_from('main', $default_share); -+ - Opcode::_safe_pkg_prep($obj->{Root}) if($Opcode::VERSION > 1.04); -+ - return $obj; - } - -@@ -140,7 +183,7 @@ sub erase { - my ($stem, $leaf); - - no strict 'refs'; -- $pkg = "main::$pkg\::"; # expand to full symbol table name -+ $pkg = "main::$pkg\::"; # expand to full symbol table name - ($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/; - - # The 'my $foo' is needed! Without it you get an -@@ -149,7 +192,7 @@ sub erase { - - #warn "erase($pkg) stem=$stem, leaf=$leaf"; - #warn " stem_symtab hash ".scalar(%$stem_symtab)."\n"; -- # ", join(', ', %$stem_symtab),"\n"; -+ # ", join(', ', %$stem_symtab),"\n"; - - # delete $stem_symtab->{$leaf}; - -@@ -220,12 +263,12 @@ sub dump_mask { - } - - -- - sub share { - my($obj, @vars) = @_; - $obj->share_from(scalar(caller), \@vars); - } - -+ - sub share_from { - my $obj = shift; - my $pkg = shift; -@@ -236,26 +279,27 @@ sub share_from { - no strict 'refs'; - # Check that 'from' package actually exists - croak("Package \"$pkg\" does not exist") -- unless keys %{"$pkg\::"}; -+ unless keys %{"$pkg\::"}; - my $arg; - foreach $arg (@$vars) { -- # catch some $safe->share($var) errors: -- my ($var, $type); -- $type = $1 if ($var = $arg) =~ s/^(\W)//; -- # warn "share_from $pkg $type $var"; -- for (1..2) { # assign twice to avoid any 'used once' warnings -- *{$root."::$var"} = (!$type) ? \&{$pkg."::$var"} -- : ($type eq '&') ? \&{$pkg."::$var"} -- : ($type eq '$') ? \${$pkg."::$var"} -- : ($type eq '@') ? \@{$pkg."::$var"} -- : ($type eq '%') ? \%{$pkg."::$var"} -- : ($type eq '*') ? *{$pkg."::$var"} -- : croak(qq(Can't share "$type$var" of unknown type)); -- } -+ # catch some $safe->share($var) errors: -+ my ($var, $type); -+ $type = $1 if ($var = $arg) =~ s/^(\W)//; -+ # warn "share_from $pkg $type $var"; -+ for (1..2) { # assign twice to avoid any 'used once' warnings -+ *{$root."::$var"} = (!$type) ? \&{$pkg."::$var"} -+ : ($type eq '&') ? \&{$pkg."::$var"} -+ : ($type eq '$') ? \${$pkg."::$var"} -+ : ($type eq '@') ? \@{$pkg."::$var"} -+ : ($type eq '%') ? \%{$pkg."::$var"} -+ : ($type eq '*') ? *{$pkg."::$var"} -+ : croak(qq(Can't share "$type$var" of unknown type)); -+ } - } - $obj->share_record($pkg, $vars) unless $no_record or !$vars; - } - -+ - sub share_record { - my $obj = shift; - my $pkg = shift; -@@ -264,41 +308,137 @@ sub share_record { - # Record shares using keys of $obj->{Shares}. See reinit. - @{$shares}{@$vars} = ($pkg) x @$vars if @$vars; - } -+ -+ - sub share_redo { - my $obj = shift; - my $shares = \%{$obj->{Shares} ||= {}}; - my($var, $pkg); - while(($var, $pkg) = each %$shares) { -- # warn "share_redo $pkg\:: $var"; -- $obj->share_from($pkg, [ $var ], 1); -+ # warn "share_redo $pkg\:: $var"; -+ $obj->share_from($pkg, [ $var ], 1); - } - } -+ -+ - sub share_forget { - delete shift->{Shares}; - } - -+ - sub varglob { - my ($obj, $var) = @_; - no strict 'refs'; - return *{$obj->root()."::$var"}; - } - -+sub _clean_stash { -+ my ($root, $saved_refs) = @_; -+ $saved_refs ||= []; -+ no strict 'refs'; -+ foreach my $hook (qw(DESTROY AUTOLOAD), grep /^\(/, keys %$root) { -+ push @$saved_refs, \*{$root.$hook}; -+ delete ${$root}{$hook}; -+ } -+ -+ for (grep /::$/, keys %$root) { -+ next if \%{$root.$_} eq \%$root; -+ _clean_stash($root.$_, $saved_refs); -+ } -+} - - sub reval { - my ($obj, $expr, $strict) = @_; - my $root = $obj->{Root}; - -- my $evalsub = lexless_anon_sub($root,$strict, $expr); -- return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub); -+ my $evalsub = lexless_anon_sub($root, $strict, $expr); -+ # propagate context -+ my $sg = sub_generation(); -+ my @subret = (wantarray) -+ ? Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub) -+ : scalar Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub); -+ _clean_stash($root.'::') if $sg != sub_generation(); -+ $obj->wrap_code_refs_within(@subret); -+ return (wantarray) ? @subret : $subret[0]; - } - -+ -+sub wrap_code_refs_within { -+ my $obj = shift; -+ -+ $obj->_find_code_refs('wrap_code_ref', @_); -+} -+ -+ -+sub _find_code_refs { -+ my $obj = shift; -+ my $visitor = shift; -+ -+ for my $item (@_) { -+ my $reftype = $item && reftype $item -+ or next; -+ if ($reftype eq 'ARRAY') { -+ $obj->_find_code_refs($visitor, @$item); -+ } -+ elsif ($reftype eq 'HASH') { -+ $obj->_find_code_refs($visitor, values %$item); -+ } -+ # XXX GLOBs? -+ elsif ($reftype eq 'CODE') { -+ $item = $obj->$visitor($item); -+ } -+ } -+} -+ -+ -+sub wrap_code_ref { -+ my ($obj, $sub) = @_; -+ -+ # wrap code ref $sub with _safe_call_sv so that, when called, the -+ # execution will happen with the compartment fully 'in effect'. -+ -+ croak "Not a CODE reference" -+ if reftype $sub ne 'CODE'; -+ -+ my $ret = sub { -+ my @args = @_; # lexical to close over -+ my $sub_with_args = sub { $sub->(@args) }; -+ -+ my @subret; -+ my $error; -+ do { -+ local $@; # needed due to perl_call_sv(sv, G_EVAL|G_KEEPERR) -+ my $sg = sub_generation(); -+ @subret = (wantarray) -+ ? Opcode::_safe_call_sv($obj->{Root}, $obj->{Mask}, $sub_with_args) -+ : scalar Opcode::_safe_call_sv($obj->{Root}, $obj->{Mask}, $sub_with_args); -+ $error = $@; -+ _clean_stash($obj->{Root}.'::') if $sg != sub_generation(); -+ }; -+ if ($error) { # rethrow exception -+ $error =~ s/\t\(in cleanup\) //; # prefix added by G_KEEPERR -+ die $error; -+ } -+ return (wantarray) ? @subret : $subret[0]; -+ }; -+ -+ return $ret; -+} -+ -+ - sub rdo { - my ($obj, $file) = @_; - my $root = $obj->{Root}; - -+ my $sg = sub_generation(); - my $evalsub = eval -- sprintf('package %s; sub { @_ = (); do $file }', $root); -- return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub); -+ sprintf('package %s; sub { @_ = (); do $file }', $root); -+ my @subret = (wantarray) -+ ? Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub) -+ : scalar Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub); -+ _clean_stash($root.'::') if $sg != sub_generation(); -+ $obj->wrap_code_refs_within(@subret); -+ return (wantarray) ? @subret : $subret[0]; - } - - -@@ -390,15 +530,7 @@ of this software. - Your mileage will vary. If in any doubt B<do not use it>. - - --=head2 RECENT CHANGES -- --The interface to the Safe module has changed quite dramatically since --version 1 (as supplied with Perl5.002). Study these pages carefully if --you have code written to use Safe version 1 because you will need to --makes changes. -- -- --=head2 Methods in class Safe -+=head1 METHODS - - To create a new compartment, use - -@@ -417,9 +549,7 @@ object returned by the above constructor - is implicit in each case. - - --=over 8 -- --=item permit (OP, ...) -+=head2 permit (OP, ...) - - Permit the listed operators to be used when compiling code in the - compartment (in I<addition> to any operators already permitted). -@@ -427,29 +557,30 @@ compartment (in I<addition> to any opera - You can list opcodes by names, or use a tag name; see - L<Opcode/"Predefined Opcode Tags">. - --=item permit_only (OP, ...) -+=head2 permit_only (OP, ...) - - Permit I<only> the listed operators to be used when compiling code in - the compartment (I<no> other operators are permitted). - --=item deny (OP, ...) -+=head2 deny (OP, ...) - - Deny the listed operators from being used when compiling code in the - compartment (other operators may still be permitted). - --=item deny_only (OP, ...) -+=head2 deny_only (OP, ...) - - Deny I<only> the listed operators from being used when compiling code --in the compartment (I<all> other operators will be permitted). -+in the compartment (I<all> other operators will be permitted, so you probably -+don't want to use this method). - --=item trap (OP, ...) -+=head2 trap (OP, ...) - --=item untrap (OP, ...) -+=head2 untrap (OP, ...) - - The trap and untrap methods are synonyms for deny and permit - respectfully. - --=item share (NAME, ...) -+=head2 share (NAME, ...) - - This shares the variable(s) in the argument list with the compartment. - This is almost identical to exporting variables using the L<Exporter> -@@ -465,9 +596,9 @@ for a glob (i.e. all symbol table entri - including scalar, array, hash, sub and filehandle). - - Each NAME is assumed to be in the calling package. See share_from --for an alternative method (which share uses). -+for an alternative method (which C<share> uses). - --=item share_from (PACKAGE, ARRAYREF) -+=head2 share_from (PACKAGE, ARRAYREF) - - This method is similar to share() but allows you to explicitly name the - package that symbols should be shared from. The symbol names (including -@@ -475,20 +606,29 @@ type characters) are supplied as an arra - - $safe->share_from('main', [ '$foo', '%bar', 'func' ]); - -+Names can include package names, which are relative to the specified PACKAGE. -+So these two calls have the same effect: -+ -+ $safe->share_from('Scalar::Util', [ 'reftype' ]); -+ $safe->share_from('main', [ 'Scalar::Util::reftype' ]); - --=item varglob (VARNAME) -+=head2 varglob (VARNAME) - - This returns a glob reference for the symbol table entry of VARNAME in - the package of the compartment. VARNAME must be the B<name> of a --variable without any leading type marker. For example, -+variable without any leading type marker. For example: -+ -+ ${$cpt->varglob('foo')} = "Hello world"; -+ -+has the same effect as: - - $cpt = new Safe 'Root'; - $Root::foo = "Hello world"; -- # Equivalent version which doesn't need to know $cpt's package name: -- ${$cpt->varglob('foo')} = "Hello world"; - -+but avoids the need to know $cpt's package name. - --=item reval (STRING, STRICT) -+ -+=head2 reval (STRING, STRICT) - - This evaluates STRING as perl code inside the compartment. - -@@ -511,9 +651,9 @@ expression evaluated, or a return statem - subroutines and B<eval()>. The context (list or scalar) is determined - by the caller as usual. - --This behaviour differs from the beta distribution of the Safe extension --where earlier versions of perl made it hard to mimic the return --behaviour of the eval() command and the context was always scalar. -+If the return value of reval() is (or contains) any code reference, -+those code references are wrapped to be themselves executed always -+in the compartment. See L</wrap_code_refs_within>. - - The formerly undocumented STRICT argument sets strictness: if true - 'use strict;' is used, otherwise it uses 'no strict;'. B<Note>: if -@@ -553,14 +693,12 @@ the code in the compartment. - A similar effect applies to I<all> runtime symbol lookups in code - called from a compartment but not compiled within it. - -- -- --=item rdo (FILENAME) -+=head2 rdo (FILENAME) - - This evaluates the contents of file FILENAME inside the compartment. - See above documentation on the B<reval> method for further details. - --=item root (NAMESPACE) -+=head2 root (NAMESPACE) - - This method returns the name of the package that is the root of the - compartment's namespace. -@@ -569,7 +707,7 @@ Note that this behaviour differs from ve - where the root module could be used to change the namespace. That - functionality has been withdrawn pending deeper consideration. - --=item mask (MASK) -+=head2 mask (MASK) - - This is a get-or-set method for the compartment's operator mask. - -@@ -579,14 +717,34 @@ the compartment. - With the MASK argument present, it sets the operator mask for the - compartment (equivalent to calling the deny_only method). - --=back -+=head2 wrap_code_ref (CODEREF) - -+Returns a reference to an anonymous subroutine that, when executed, will call -+CODEREF with the Safe compartment 'in effect'. In other words, with the -+package namespace adjusted and the opmask enabled. - --=head2 Some Safety Issues -+Note that the opmask doesn't affect the already compiled code, it only affects -+any I<further> compilation that the already compiled code may try to perform. - --This section is currently just an outline of some of the things code in --a compartment might do (intentionally or unintentionally) which can --have an effect outside the compartment. -+This is particularly useful when applied to code references returned from reval(). -+ -+(It also provides a kind of workaround for RT#60374: "Safe.pm sort {} bug with -+-Dusethreads". See L<http://rt.perl.org/rt3//Public/Bug/Display.html?id=60374> -+for I<much> more detail.) -+ -+=head2 wrap_code_refs_within (...) -+ -+Wraps any CODE references found within the arguments by replacing each with the -+result of calling L</wrap_code_ref> on the CODE reference. Any ARRAY or HASH -+references in the arguments are inspected recursively. -+ -+Returns nothing. -+ -+=head1 RISKS -+ -+This section is just an outline of some of the things code in a compartment -+might do (intentionally or unintentionally) which can have an effect outside -+the compartment. - - =over 8 - -@@ -624,7 +782,7 @@ but more subtle effect. - - =back - --=head2 AUTHOR -+=head1 AUTHOR - - Originally designed and implemented by Malcolm Beattie. - diff --git a/lang/perl5/patches/patch-zc b/lang/perl5/patches/patch-zc index 08c75d8532e..7e7b0508445 100644 --- a/lang/perl5/patches/patch-zc +++ b/lang/perl5/patches/patch-zc @@ -1,8 +1,15 @@ -$NetBSD: patch-zc,v 1.3 2008/10/10 21:58:44 he Exp $ - ---- Policy_sh.SH.orig 2007-12-18 11:47:07.000000000 +0100 -+++ Policy_sh.SH -@@ -184,10 +184,10 @@ do +--- Policy_sh.SH.orig 2010-04-26 08:08:20.000000000 +0000 ++++ Policy_sh.SH 2010-05-27 09:34:44.000000000 +0000 +@@ -165,7 +165,7 @@ + + # We don't know what to do with these yet. + html1dir) dflt='' ;; +- htm31dir) dflt='' ;; ++ html3dir) dflt='' ;; + + # Directories for site-specific add-on files + sitebin) dflt=$siteprefix/bin ;; +@@ -184,11 +184,11 @@ ;; sitearch) dflt="$sitelib/$archname" ;; @@ -12,11 +19,13 @@ $NetBSD: patch-zc,v 1.3 2008/10/10 21:58:44 he Exp $ + siteman3dir) dflt="$siteprefix/man/man3" ;; # We don't know what to do with these yet. - sitehtml1) dflt='' ;; +- sitehtm31dir) dflt='' ;; + sitehtml1dir) dflt='' ;; - sitehtm31dir) dflt='' ;; ++ sitehtml3dir) dflt='' ;; # Directories for vendor-supplied add-on files -@@ -213,11 +213,11 @@ do + # These are all usually empty. +@@ -213,11 +213,11 @@ ;; vendorarch) dflt="$vendorlib/$archname" ;; diff --git a/lang/perl5/patches/patch-zd b/lang/perl5/patches/patch-zd index 41ec90d2624..5f018c98c3f 100644 --- a/lang/perl5/patches/patch-zd +++ b/lang/perl5/patches/patch-zd @@ -1,12 +1,11 @@ -$NetBSD: patch-zd,v 1.2 2009/12/14 06:36:57 seb Exp $ +$NetBSD: patch-zd,v 1.3 2010/08/19 20:47:10 seb Exp $ ---- lib/Module/Build/t/tilde.t.orig 2009-12-06 21:07:16.000000000 +0000 -+++ lib/Module/Build/t/tilde.t 2009-12-06 21:07:18.000000000 +0000 -@@ -44,7 +44,9 @@ - $home = VMS::Filespec::unixify($home); +--- cpan/Module-Build/t/tilde.t.orig 2010-05-21 04:15:46.000000000 +0000 ++++ cpan/Module-Build/t/tilde.t 2010-05-21 04:16:29.000000000 +0000 +@@ -44,6 +44,9 @@ $home =~ s#/$##; } -- + + if ($home =~ /work\/.home/) { + skip "Skipping test in pkgsrc env to avoid FAKE_HOME trouble", 15; + } |