pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/lang/perl5



Module Name:    pkgsrc
Committed By:   wiz
Date:           Sat May 31 19:22:30 UTC 2025

Modified Files:
        pkgsrc/lang/perl5: Makefile distinfo
        pkgsrc/lang/perl5/patches: patch-Configure
            patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm
Added Files:
        pkgsrc/lang/perl5/patches: patch-Cross_config.sh-arm-linux
            patch-Cross_config.sh-arm-linux-n770 patch-Porting_Glossary
            patch-Porting_config.sh patch-config__h.SH patch-configure.com
            patch-plan9_config__sh.sample patch-sv.c patch-t_op_threads-dirh.t
            patch-win32_config.gc patch-win32_config.vc

Log Message:
perl: fix CVE-2025-40909 using upstream patch

Bump PKGREVISION.


To generate a diff of this commit:
cvs rdiff -u -r1.287 -r1.288 pkgsrc/lang/perl5/Makefile
cvs rdiff -u -r1.191 -r1.192 pkgsrc/lang/perl5/distinfo
cvs rdiff -u -r1.15 -r1.16 pkgsrc/lang/perl5/patches/patch-Configure
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/lang/perl5/patches/patch-Cross_config.sh-arm-linux \
    pkgsrc/lang/perl5/patches/patch-Cross_config.sh-arm-linux-n770 \
    pkgsrc/lang/perl5/patches/patch-Porting_Glossary \
    pkgsrc/lang/perl5/patches/patch-Porting_config.sh \
    pkgsrc/lang/perl5/patches/patch-config__h.SH \
    pkgsrc/lang/perl5/patches/patch-configure.com \
    pkgsrc/lang/perl5/patches/patch-plan9_config__sh.sample \
    pkgsrc/lang/perl5/patches/patch-sv.c \
    pkgsrc/lang/perl5/patches/patch-t_op_threads-dirh.t \
    pkgsrc/lang/perl5/patches/patch-win32_config.gc \
    pkgsrc/lang/perl5/patches/patch-win32_config.vc
cvs rdiff -u -r1.4 -r1.5 \
    pkgsrc/lang/perl5/patches/patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/lang/perl5/Makefile
diff -u pkgsrc/lang/perl5/Makefile:1.287 pkgsrc/lang/perl5/Makefile:1.288
--- pkgsrc/lang/perl5/Makefile:1.287    Mon Apr 21 20:55:34 2025
+++ pkgsrc/lang/perl5/Makefile  Sat May 31 19:22:30 2025
@@ -1,5 +1,6 @@
-# $NetBSD: Makefile,v 1.287 2025/04/21 20:55:34 wiz Exp $
+# $NetBSD: Makefile,v 1.288 2025/05/31 19:22:30 wiz Exp $
 
+PKGREVISION=   1
 .include "license.mk"
 .include "Makefile.common"
 
@@ -60,6 +61,14 @@ CONFIGURE_ARGS.SunOS+=       -Aundef:csh
 #         porting/customized.t
 #         porting/regen.t
 # https://github.com/Perl/perl5/issues/22751
+# As of 5.40.2
+# without network
+# Failed 5 tests out of 2732, 99.82% okay.
+#         ../cpan/HTTP-Tiny/t/003_agent.t
+#         ../cpan/HTTP-Tiny/t/004_timeout.t
+#         ../cpan/HTTP-Tiny/t/070_cookie_jar.t
+#         ../cpan/HTTP-Tiny/t/141_no_proxy.t
+#         ../cpan/HTTP-Tiny/t/180_verify_SSL.t
 TEST_TARGET=           test
 
 # Policy.sh generation

Index: pkgsrc/lang/perl5/distinfo
diff -u pkgsrc/lang/perl5/distinfo:1.191 pkgsrc/lang/perl5/distinfo:1.192
--- pkgsrc/lang/perl5/distinfo:1.191    Mon Apr 21 20:55:52 2025
+++ pkgsrc/lang/perl5/distinfo  Sat May 31 19:22:30 2025
@@ -1,16 +1,27 @@
-$NetBSD: distinfo,v 1.191 2025/04/21 20:55:52 wiz Exp $
+$NetBSD: distinfo,v 1.192 2025/05/31 19:22:30 wiz Exp $
 
 BLAKE2s (perl-5.40.2.tar.xz) = 0d924b3c48afb28b02dee7e250ee79f6c1993333e34d4cee5de16476f81fd224
 SHA512 (perl-5.40.2.tar.xz) = 1324b119e4370bbeb47a343d152f46c637addb0373ff07f0e214aa9d5912c03cd2bd23987a6e86d43453166412d3a03a52e780201941f679ef4186df16590e41
 Size (perl-5.40.2.tar.xz) = 13923524 bytes
-SHA1 (patch-Configure) = a62af03f737562a04726cd2c65be64700e541014
+SHA1 (patch-Configure) = 5de452d2348d2a17d5f7be64211b9d2834aaae99
+SHA1 (patch-Cross_config.sh-arm-linux) = a22381c088bcdcc6954b5859f83bb64ce252a025
+SHA1 (patch-Cross_config.sh-arm-linux-n770) = 3479782761ba6bd4b9907cfde07fcb17565836ba
 SHA1 (patch-Makefile.SH) = 56203aea57c429a94760f039a978463b8859b0a9
+SHA1 (patch-Porting_Glossary) = 736e6e6123987b07346e4117e980b093991d713e
+SHA1 (patch-Porting_config.sh) = 8a5fce893bac7d3a8d47b5686d13285f454b89fa
 SHA1 (patch-builtin.c) = 7ac5821ab3f4c9ae29d2cbe9db0407560aee2328
+SHA1 (patch-config__h.SH) = 10944c38327b94df493191c267b4f3f02c0935c8
+SHA1 (patch-configure.com) = ffbd4167e99aa860bbf6adedab3192b881c520e3
 SHA1 (patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__BeOS.pm) = 79e5aeccfa272ca5ec08bffc616d8053ae90ac51
-SHA1 (patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm) = bdd4402a9b00ea508bf003c0722091046d514188
+SHA1 (patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm) = 996556f221eb0c75c316315462bf6cea6746e030
 SHA1 (patch-cpan_ExtUtils-MakeMaker_t_MM__BeOS.t) = 9b0e7ab85fdab4887b1754599a8879bd7d9f36cc
 SHA1 (patch-hints_cygwin.sh) = 5e2e7179336c9bc085bd2e83d22755a235ea1a4a
 SHA1 (patch-hints_linux.sh) = 4baa8f80695687abb53d4f4e1830cf86db5b2bf7
 SHA1 (patch-hints_netbsd.sh) = cb498170c18f1f429eed9be245cd1df24c7ad628
 SHA1 (patch-hints_solaris__2.sh) = 83b20650435ea3b62314af6059f3d82c3dd6b0a2
 SHA1 (patch-installperl) = b129d64cc17b898b44fe6282b8b1df36e342d0ef
+SHA1 (patch-plan9_config__sh.sample) = 340f5003ed06a8e793ac04abc58d42682f7ab7cc
+SHA1 (patch-sv.c) = 4415fb2125ef184a602ecc340fe64593546181b2
+SHA1 (patch-t_op_threads-dirh.t) = 3ab19d1fc589359a985576a5150c9368aa6520d9
+SHA1 (patch-win32_config.gc) = f339383a574567744d5dfd1ccb91ab9830b5934a
+SHA1 (patch-win32_config.vc) = 3dca3228225f46e2361293f53735b9fec1e2684a

Index: pkgsrc/lang/perl5/patches/patch-Configure
diff -u pkgsrc/lang/perl5/patches/patch-Configure:1.15 pkgsrc/lang/perl5/patches/patch-Configure:1.16
--- pkgsrc/lang/perl5/patches/patch-Configure:1.15      Mon Apr 21 20:55:52 2025
+++ pkgsrc/lang/perl5/patches/patch-Configure   Sat May 31 19:22:30 2025
@@ -1,4 +1,4 @@
-$NetBSD: patch-Configure,v 1.15 2025/04/21 20:55:52 wiz Exp $
+$NetBSD: patch-Configure,v 1.16 2025/05/31 19:22:30 wiz Exp $
 
 * Use "uname -r" to get OS version for *BSD.
 * Move $loclibpth to the end of $dlist, instead of the beginning.
@@ -6,10 +6,19 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
 * Add Minix
 * Several other changes.
 * Add rpath for QNX
+* https://github.com/Perl/perl5/issues/23010
 
---- Configure.orig     2022-12-20 12:11:59.000000000 +0000
+--- Configure.orig     2025-03-30 10:35:38.000000000 +0000
 +++ Configure
-@@ -3515,7 +3515,8 @@ EOM
+@@ -478,6 +478,7 @@ d_fd_set=''
+ d_fds_bits=''
+ d_fdclose=''
+ d_fdim=''
++d_fdopendir=''
+ d_fegetround=''
+ d_ffs=''
+ d_ffsl=''
+@@ -3525,7 +3526,8 @@ EOM
                        osvers=`echo "$4"|sed 's/^v//'`
                        ;;
                freebsd) osname=freebsd
@@ -19,7 +28,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
                genix)  osname=genix ;;
                gnu)    osname=gnu
                        osvers="$3" ;;
-@@ -3537,11 +3538,11 @@ EOM
+@@ -3547,11 +3549,11 @@ EOM
                        ;;
                MiNT)   osname=mint
                        ;;
@@ -33,7 +42,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
                        ;;
                news-os) osvers="$3"
                        case "$3" in
-@@ -3551,7 +3552,7 @@ EOM
+@@ -3561,7 +3563,7 @@ EOM
                        ;;
                nonstop-ux) osname=nonstopux ;;
                openbsd) osname=openbsd
@@ -42,7 +51,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
                        ;;
                os2)    osname=os2
                        osvers="$4"
-@@ -3566,6 +3567,9 @@ EOM
+@@ -3576,6 +3578,9 @@ EOM
                qnx) osname=qnx
                        osvers="$4"
                        ;;
@@ -52,7 +61,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
                solaris) osname=solaris
                        case "$3" in
                        5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
-@@ -4943,7 +4947,7 @@ esac
+@@ -4953,7 +4958,7 @@ esac
  # If using gcc or clang, we can get better values for libpth, incpth
  # and usrinc directly from the compiler.
  # Note that ccname for clang is also gcc.
@@ -61,7 +70,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
      gcc)
        realpath=`which realpath 2>/dev/null | sed 's/no realpath in.*//'`
        $echo 'extern int foo;' > try.c
-@@ -5027,14 +5031,14 @@ case "$plibpth" in
+@@ -5037,14 +5042,14 @@ case "$plibpth" in
  esac
  case "$libpth" in
  ' ') dlist='';;
@@ -78,7 +87,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
                case " $libpth " in
                *" $xxx "*) ;;
                *) libpth="$libpth $xxx";;
-@@ -5150,7 +5154,7 @@ lib_ext=$_a
+@@ -5160,7 +5165,7 @@ lib_ext=$_a
  obj_ext=$_o
  path_sep=$p_
  
@@ -87,7 +96,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
  
  : Which makefile gets called first.  This is used by make depend.
  case "$firstmakefile" in
-@@ -5493,7 +5497,7 @@ default|recommended)
+@@ -5480,7 +5485,7 @@ default|recommended)
        *-fno-stack-protector*)
            echo "Do not add -fstack-protector nor -fstack-protector-strong" 2>&1
            ;;
@@ -96,7 +105,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
           ?*)  set stack-protector-strong -fstack-protector-strong
                eval $checkccflag
                case "$dflt" in
-@@ -6476,6 +6480,15 @@ case "$nm_so_opt" in
+@@ -6464,6 +6469,15 @@ case "$nm_so_opt" in
        ;;
  esac
  
@@ -112,7 +121,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
  : Figure out where the libc is located
  case "$runnm" in
  true)
-@@ -7656,7 +7669,9 @@ rp='Pathname for the site-specific libra
+@@ -7665,7 +7679,9 @@ rp='Pathname for the site-specific libra
  . ./getfile
  prefixvar=sitelib
  . ./setprefixvar
@@ -123,7 +132,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
  
  : Determine list of previous versions to include in @INC
  $cat > getverlist <<EOPL
-@@ -8069,7 +8084,9 @@ case "$vendorprefix" in
+@@ -8022,7 +8038,9 @@ case "$vendorprefix" in
        vendorlibexp="$ansexp"
        ;;
  esac
@@ -134,7 +143,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
  prefixvar=vendorlib
  . ./installprefix
  
-@@ -8569,6 +8586,7 @@ EOM
+@@ -8522,6 +8540,7 @@ EOM
                          esac
                          ;;
                    *linux*|irix*|gnu*)  dflt="-shared $optimize" ;;
@@ -142,7 +151,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
                    solaris) # See [perl #66604].
                            # On Solaris 11, gcc -m64 on amd64
                            # appears not to understand -G.  gcc versions at
-@@ -8608,7 +8626,7 @@ EOM
+@@ -8561,7 +8580,7 @@ EOM
        esac
        for thisflag in $ldflags; do
            case "$thisflag" in
@@ -151,7 +160,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
                    case " $dflt " in
                        *" $thisflag "*) ;;
                        *) dflt="$dflt $thisflag" ;;
-@@ -8864,7 +8882,7 @@ if "$useshrplib"; then
+@@ -8817,7 +8836,7 @@ if "$useshrplib"; then
        freebsd|minix|mirbsd|netbsd|openbsd|interix|dragonfly|bitrig)
                xxx="-Wl,-R$shrpdir"
                ;;
@@ -160,7 +169,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
                xxx="-Wl,-rpath,$shrpdir"
                ;;
        hpux*)
-@@ -8874,6 +8892,9 @@ if "$useshrplib"; then
+@@ -8827,6 +8846,9 @@ if "$useshrplib"; then
        cygwin)
                # cygwin needs only ldlibpth
                ;;
@@ -170,7 +179,7 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
        *)
                tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
                ;;
-@@ -9948,6 +9969,13 @@ esac
+@@ -9901,6 +9923,13 @@ esac
  : Check if we want perlio
  useperlio="$define"
  
@@ -184,7 +193,18 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
  : Set the vendorbin variables
  case "$vendorprefix" in
  '')   d_vendorbin="$undef"
-@@ -20573,7 +20601,15 @@ RCAT(Rei,ser)
+@@ -13344,6 +13373,10 @@ esac
+ set i_fcntl
+ eval $setvar
+ 
++: see if fdopendir exists
++set fdopendir d_fdopendir
++eval $inlibc
++
+ : see if fork exists
+ set fork d_fork
+ eval $inlibc
+@@ -20825,7 +20858,15 @@ RCAT(Rei,ser)
  ACAT(Cir,cus)
  EOCP
  $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
@@ -201,3 +221,11 @@ $NetBSD: patch-Configure,v 1.15 2025/04/
        echo "Oh!  Smells like ANSI's been here." >&4
        echo "We can catify or stringify, separately or together!"
        cpp_stuff=42
+@@ -25047,6 +25088,7 @@ d_flockproto='$d_flockproto'
+ d_fma='$d_fma'
+ d_fmax='$d_fmax'
+ d_fmin='$d_fmin'
++d_fdopendir='$d_fdopendir'
+ d_fork='$d_fork'
+ d_fp_class='$d_fp_class'
+ d_fp_classify='$d_fp_classify'

Index: pkgsrc/lang/perl5/patches/patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm
diff -u pkgsrc/lang/perl5/patches/patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm:1.4 pkgsrc/lang/perl5/patches/patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm:1.5
--- pkgsrc/lang/perl5/patches/patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm:1.4        Mon Apr 21 20:55:34 2025
+++ pkgsrc/lang/perl5/patches/patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm    Sat May 31 19:22:30 2025
@@ -1,10 +1,10 @@
-$NetBSD: patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm,v 1.4 2025/04/21 20:55:34 wiz Exp $
+$NetBSD: patch-cpan_ExtUtils-MakeMaker_lib_ExtUtils_MM__Unix.pm,v 1.5 2025/05/31 19:22:30 wiz Exp $
 
 * Ignore installed packlist when creating new packlist.
 
 --- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm.orig       2021-05-13 17:40:25.661784701 +0900
 +++ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm    2021-05-13 17:40:29.734082886 +0900
-@@ -2351,7 +2349,7 @@ pure_vendor_install :: all
+@@ -2351,7 +2351,7 @@ pure_vendor_install :: all
        $(NOECHO) $(MOD_INSTALL) \
  };
      push @m,

Added files:

Index: pkgsrc/lang/perl5/patches/patch-Cross_config.sh-arm-linux
diff -u /dev/null pkgsrc/lang/perl5/patches/patch-Cross_config.sh-arm-linux:1.1
--- /dev/null   Sat May 31 19:22:30 2025
+++ pkgsrc/lang/perl5/patches/patch-Cross_config.sh-arm-linux   Sat May 31 19:22:30 2025
@@ -0,0 +1,15 @@
+$NetBSD: patch-Cross_config.sh-arm-linux,v 1.1 2025/05/31 19:22:30 wiz Exp $
+
+https://github.com/Perl/perl5/issues/23010
+https://github.com/Perl/perl5/commit/918bfff86ca8d6d4e4ec5b30994451e0bd74aba9.patch
+
+--- Cross/config.sh-arm-linux.orig     2025-03-30 10:35:38.000000000 +0000
++++ Cross/config.sh-arm-linux
+@@ -212,6 +212,7 @@ d_fd_macros='define'
+ d_fd_set='define'
+ d_fdclose='undef'
+ d_fdim='undef'
++d_fdopendir=undef
+ d_fds_bits='undef'
+ d_fegetround='define'
+ d_ffs='undef'
Index: pkgsrc/lang/perl5/patches/patch-Cross_config.sh-arm-linux-n770
diff -u /dev/null pkgsrc/lang/perl5/patches/patch-Cross_config.sh-arm-linux-n770:1.1
--- /dev/null   Sat May 31 19:22:30 2025
+++ pkgsrc/lang/perl5/patches/patch-Cross_config.sh-arm-linux-n770      Sat May 31 19:22:30 2025
@@ -0,0 +1,15 @@
+$NetBSD: patch-Cross_config.sh-arm-linux-n770,v 1.1 2025/05/31 19:22:30 wiz Exp $
+
+https://github.com/Perl/perl5/issues/23010
+https://github.com/Perl/perl5/commit/918bfff86ca8d6d4e4ec5b30994451e0bd74aba9.patch
+
+--- Cross/config.sh-arm-linux-n770.orig        2025-03-30 10:35:38.000000000 +0000
++++ Cross/config.sh-arm-linux-n770
+@@ -211,6 +211,7 @@ d_fd_macros='define'
+ d_fd_set='define'
+ d_fdclose='undef'
+ d_fdim='undef'
++d_fdopendir=undef
+ d_fds_bits='undef'
+ d_fegetround='define'
+ d_ffs='undef'
Index: pkgsrc/lang/perl5/patches/patch-Porting_Glossary
diff -u /dev/null pkgsrc/lang/perl5/patches/patch-Porting_Glossary:1.1
--- /dev/null   Sat May 31 19:22:30 2025
+++ pkgsrc/lang/perl5/patches/patch-Porting_Glossary    Sat May 31 19:22:30 2025
@@ -0,0 +1,19 @@
+$NetBSD: patch-Porting_Glossary,v 1.1 2025/05/31 19:22:30 wiz Exp $
+
+https://github.com/Perl/perl5/issues/23010
+https://github.com/Perl/perl5/commit/918bfff86ca8d6d4e4ec5b30994451e0bd74aba9.patch
+
+--- Porting/Glossary.orig      2025-03-30 10:35:38.000000000 +0000
++++ Porting/Glossary
+@@ -947,6 +947,11 @@ d_fmin (d_fmin.U):
+       This variable conditionally defines the HAS_FMIN symbol, which
+       indicates to the C program that the fmin() routine is available.
+ 
++d_fdopendir (d_fdopendir.U):
++      This variable conditionally defines the HAS_FORK symbol, which
++      indicates that the fdopen routine is available to open a
++      directory descriptor.
++
+ d_fork (d_fork.U):
+       This variable conditionally defines the HAS_FORK symbol, which
+       indicates to the C program that the fork() routine is available.
Index: pkgsrc/lang/perl5/patches/patch-Porting_config.sh
diff -u /dev/null pkgsrc/lang/perl5/patches/patch-Porting_config.sh:1.1
--- /dev/null   Sat May 31 19:22:30 2025
+++ pkgsrc/lang/perl5/patches/patch-Porting_config.sh   Sat May 31 19:22:30 2025
@@ -0,0 +1,15 @@
+$NetBSD: patch-Porting_config.sh,v 1.1 2025/05/31 19:22:30 wiz Exp $
+
+https://github.com/Perl/perl5/issues/23010
+https://github.com/Perl/perl5/commit/918bfff86ca8d6d4e4ec5b30994451e0bd74aba9.patch
+
+--- Porting/config.sh.orig     2025-03-30 10:35:38.000000000 +0000
++++ Porting/config.sh
+@@ -223,6 +223,7 @@ d_fd_macros='define'
+ d_fd_set='define'
+ d_fdclose='undef'
+ d_fdim='define'
++d_fdopendir='define'
+ d_fds_bits='define'
+ d_fegetround='define'
+ d_ffs='define'
Index: pkgsrc/lang/perl5/patches/patch-config__h.SH
diff -u /dev/null pkgsrc/lang/perl5/patches/patch-config__h.SH:1.1
--- /dev/null   Sat May 31 19:22:30 2025
+++ pkgsrc/lang/perl5/patches/patch-config__h.SH        Sat May 31 19:22:30 2025
@@ -0,0 +1,20 @@
+$NetBSD: patch-config__h.SH,v 1.1 2025/05/31 19:22:30 wiz Exp $
+
+https://github.com/Perl/perl5/issues/23010
+https://github.com/Perl/perl5/commit/918bfff86ca8d6d4e4ec5b30994451e0bd74aba9.patch
+
+--- config_h.SH.orig   2025-03-30 10:35:38.000000000 +0000
++++ config_h.SH
+@@ -142,6 +142,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#und
+  */
+ #$d_fcntl HAS_FCNTL           /**/
+ 
++/* HAS_FDOPENDIR:
++ * This symbol, if defined, indicates that the fdopen routine is
++ * available to open a directory descriptor.
++ */
++#$d_fdopendir HAS_FDOPENDIR           /**/
++
+ /* HAS_FGETPOS:
+  *    This symbol, if defined, indicates that the fgetpos routine is
+  *    available to get the file position indicator, similar to ftell().
Index: pkgsrc/lang/perl5/patches/patch-configure.com
diff -u /dev/null pkgsrc/lang/perl5/patches/patch-configure.com:1.1
--- /dev/null   Sat May 31 19:22:30 2025
+++ pkgsrc/lang/perl5/patches/patch-configure.com       Sat May 31 19:22:30 2025
@@ -0,0 +1,15 @@
+$NetBSD: patch-configure.com,v 1.1 2025/05/31 19:22:30 wiz Exp $
+
+https://github.com/Perl/perl5/issues/23010
+https://github.com/Perl/perl5/commit/918bfff86ca8d6d4e4ec5b30994451e0bd74aba9.patch
+
+--- configure.com.orig 2025-03-30 10:35:38.000000000 +0000
++++ configure.com
+@@ -6010,6 +6010,7 @@ $ WC "d_fd_set='" + d_fd_set + "'"
+ $ WC "d_fd_macros='define'"
+ $ WC "d_fdclose='undef'"
+ $ WC "d_fdim='" + d_fdim + "'"
++$ WC "d_fdopendir='undef'"
+ $ WC "d_fds_bits='define'"
+ $ WC "d_fegetround='undef'"
+ $ WC "d_ffs='undef'"
Index: pkgsrc/lang/perl5/patches/patch-plan9_config__sh.sample
diff -u /dev/null pkgsrc/lang/perl5/patches/patch-plan9_config__sh.sample:1.1
--- /dev/null   Sat May 31 19:22:30 2025
+++ pkgsrc/lang/perl5/patches/patch-plan9_config__sh.sample     Sat May 31 19:22:30 2025
@@ -0,0 +1,15 @@
+$NetBSD: patch-plan9_config__sh.sample,v 1.1 2025/05/31 19:22:30 wiz Exp $
+
+https://github.com/Perl/perl5/issues/23010
+https://github.com/Perl/perl5/commit/918bfff86ca8d6d4e4ec5b30994451e0bd74aba9.patch
+
+--- plan9/config_sh.sample.orig        2025-03-30 10:35:51.000000000 +0000
++++ plan9/config_sh.sample
+@@ -212,6 +212,7 @@ d_fd_macros='undef'
+ d_fd_set='undef'
+ d_fdclose='undef'
+ d_fdim='undef'
++d_fdopendir=undef
+ d_fds_bits='undef'
+ d_fegetround='undef'
+ d_ffs='undef'
Index: pkgsrc/lang/perl5/patches/patch-sv.c
diff -u /dev/null pkgsrc/lang/perl5/patches/patch-sv.c:1.1
--- /dev/null   Sat May 31 19:22:30 2025
+++ pkgsrc/lang/perl5/patches/patch-sv.c        Sat May 31 19:22:30 2025
@@ -0,0 +1,116 @@
+$NetBSD: patch-sv.c,v 1.1 2025/05/31 19:22:30 wiz Exp $
+
+https://github.com/Perl/perl5/issues/23010
+https://github.com/Perl/perl5/commit/918bfff86ca8d6d4e4ec5b30994451e0bd74aba9.patch
+
+--- sv.c.orig  2025-03-30 10:35:51.000000000 +0000
++++ sv.c
+@@ -14013,15 +14013,6 @@ Perl_dirp_dup(pTHX_ DIR *const dp, CLONE
+ {
+     DIR *ret;
+ 
+-#if defined(HAS_FCHDIR) && defined(HAS_TELLDIR) && defined(HAS_SEEKDIR)
+-    DIR *pwd;
+-    const Direntry_t *dirent;
+-    char smallbuf[256]; /* XXX MAXPATHLEN, surely? */
+-    char *name = NULL;
+-    STRLEN len = 0;
+-    long pos;
+-#endif
+-
+     PERL_UNUSED_CONTEXT;
+     PERL_ARGS_ASSERT_DIRP_DUP;
+ 
+@@ -14033,89 +14024,13 @@ Perl_dirp_dup(pTHX_ DIR *const dp, CLONE
+     if (ret)
+         return ret;
+ 
+-#if defined(HAS_FCHDIR) && defined(HAS_TELLDIR) && defined(HAS_SEEKDIR)
++#ifdef HAS_FDOPENDIR
+ 
+     PERL_UNUSED_ARG(param);
+ 
+-    /* create anew */
+-
+-    /* open the current directory (so we can switch back) */
+-    if (!(pwd = PerlDir_open("."))) return (DIR *)NULL;
+-
+-    /* chdir to our dir handle and open the present working directory */
+-    if (fchdir(my_dirfd(dp)) < 0 || !(ret = PerlDir_open("."))) {
+-        PerlDir_close(pwd);
+-        return (DIR *)NULL;
+-    }
+-    /* Now we should have two dir handles pointing to the same dir. */
+-
+-    /* Be nice to the calling code and chdir back to where we were. */
+-    /* XXX If this fails, then what? */
+-    PERL_UNUSED_RESULT(fchdir(my_dirfd(pwd)));
+-
+-    /* We have no need of the pwd handle any more. */
+-    PerlDir_close(pwd);
+-
+-#ifdef DIRNAMLEN
+-# define d_namlen(d) (d)->d_namlen
+-#else
+-# define d_namlen(d) strlen((d)->d_name)
+-#endif
+-    /* Iterate once through dp, to get the file name at the current posi-
+-       tion. Then step back. */
+-    pos = PerlDir_tell(dp);
+-    if ((dirent = PerlDir_read(dp))) {
+-        len = d_namlen(dirent);
+-        if (len > sizeof(dirent->d_name) && sizeof(dirent->d_name) > PTRSIZE) {
+-            /* If the len is somehow magically longer than the
+-             * maximum length of the directory entry, even though
+-             * we could fit it in a buffer, we could not copy it
+-             * from the dirent.  Bail out. */
+-            PerlDir_close(ret);
+-            return (DIR*)NULL;
+-        }
+-        if (len <= sizeof smallbuf) name = smallbuf;
+-        else Newx(name, len, char);
+-        Move(dirent->d_name, name, len, char);
+-    }
+-    PerlDir_seek(dp, pos);
+-
+-    /* Iterate through the new dir handle, till we find a file with the
+-       right name. */
+-    if (!dirent) /* just before the end */
+-        for(;;) {
+-            pos = PerlDir_tell(ret);
+-            if (PerlDir_read(ret)) continue; /* not there yet */
+-            PerlDir_seek(ret, pos); /* step back */
+-            break;
+-        }
+-    else {
+-        const long pos0 = PerlDir_tell(ret);
+-        for(;;) {
+-            pos = PerlDir_tell(ret);
+-            if ((dirent = PerlDir_read(ret))) {
+-                if (len == (STRLEN)d_namlen(dirent)
+-                    && memEQ(name, dirent->d_name, len)) {
+-                    /* found it */
+-                    PerlDir_seek(ret, pos); /* step back */
+-                    break;
+-                }
+-                /* else we are not there yet; keep iterating */
+-            }
+-            else { /* This is not meant to happen. The best we can do is
+-                      reset the iterator to the beginning. */
+-                PerlDir_seek(ret, pos0);
+-                break;
+-            }
+-        }
+-    }
+-#undef d_namlen
+-
+-    if (name && name != smallbuf)
+-        Safefree(name);
+-#endif
++    ret = fdopendir(dup(my_dirfd(dp)));
+ 
+-#ifdef WIN32
++#elif defined(WIN32)
+     ret = win32_dirp_dup(dp, param);
+ #endif
+ 
Index: pkgsrc/lang/perl5/patches/patch-t_op_threads-dirh.t
diff -u /dev/null pkgsrc/lang/perl5/patches/patch-t_op_threads-dirh.t:1.1
--- /dev/null   Sat May 31 19:22:30 2025
+++ pkgsrc/lang/perl5/patches/patch-t_op_threads-dirh.t Sat May 31 19:22:30 2025
@@ -0,0 +1,127 @@
+$NetBSD: patch-t_op_threads-dirh.t,v 1.1 2025/05/31 19:22:30 wiz Exp $
+
+https://github.com/Perl/perl5/issues/23010
+https://github.com/Perl/perl5/commit/918bfff86ca8d6d4e4ec5b30994451e0bd74aba9.patch
+
+--- t/op/threads-dirh.t.orig   2025-03-30 10:35:52.000000000 +0000
++++ t/op/threads-dirh.t
+@@ -13,16 +13,12 @@ BEGIN {
+      skip_all_if_miniperl("no dynamic loading on miniperl, no threads");
+      skip_all("runs out of memory on some EBCDIC") if $ENV{PERL_SKIP_BIG_MEM_TESTS};
+ 
+-     plan(6);
++     plan(1);
+ }
+ 
+ use strict;
+ use warnings;
+ use threads;
+-use threads::shared;
+-use File::Path;
+-use File::Spec::Functions qw 'updir catdir';
+-use Cwd 'getcwd';
+ 
+ # Basic sanity check: make sure this does not crash
+ fresh_perl_is <<'# this is no comment', 'ok', {}, 'crash when duping dirh';
+@@ -31,101 +27,3 @@ fresh_perl_is <<'# this is no comment', 
+    async{}->join for 1..2;
+    print "ok";
+ # this is no comment
+-
+-my $dir;
+-SKIP: {
+- skip "telldir or seekdir not defined on this platform", 5
+-    if !$Config::Config{d_telldir} || !$Config::Config{d_seekdir};
+- my $skip = sub {
+-   chdir($dir);
+-   chdir updir;
+-   skip $_[0], 5
+- };
+-
+- if(!$Config::Config{d_fchdir} && $^O ne "MSWin32") {
+-  $::TODO = 'dir handle cloning currently requires fchdir on non-Windows platforms';
+- }
+-
+- my @w :shared; # warnings accumulator
+- local $SIG{__WARN__} = sub { push @w, $_[0] };
+-
+- $dir = catdir getcwd(), "thrext$$" . int rand() * 100000;
+-
+- rmtree($dir) if -d $dir;
+- mkdir($dir);
+-
+- # Create a dir structure like this:
+- #   $dir
+- #     |
+- #     `- toberead
+- #            |
+- #            +---- thrit
+- #            |
+- #            +---- rile
+- #            |
+- #            `---- zor
+-
+- chdir($dir);
+- mkdir 'toberead';
+- chdir 'toberead';
+- {open my $fh, ">thrit" or &$skip("Cannot create file thrit")}
+- {open my $fh, ">rile" or &$skip("Cannot create file rile")}
+- {open my $fh, ">zor" or &$skip("Cannot create file zor")}
+- chdir updir;
+-
+- # Then test that dir iterators are cloned correctly.
+-
+- opendir my $toberead, 'toberead';
+- my $start_pos = telldir $toberead;
+- my @first_2 = (scalar readdir $toberead, scalar readdir $toberead);
+- my @from_thread = @{; async { [readdir $toberead ] } ->join };
+- my @from_main = readdir $toberead;
+- is join('-', sort @from_thread), join('-', sort @from_main),
+-     'dir iterator is copied from one thread to another';
+- like
+-   join('-', "", sort(@first_2, @from_thread), ""),
+-   qr/(?<!-rile)-rile-thrit-zor-(?!zor-)/i,
+-  'cloned iterator iterates exactly once over everything not already seen';
+-
+- seekdir $toberead, $start_pos;
+- readdir $toberead for 1 .. @first_2+@from_thread;
+- {
+-  local $::TODO; # This always passes when dir handles are not cloned.
+-  is
+-    async { readdir $toberead // 'undef' } ->join, 'undef',
+-   'cloned dir iterator that points to the end of the directory'
+-  ;
+- }
+-
+- # Make sure the cloning code can handle file names longer than 255 chars
+- SKIP: {
+-  chdir 'toberead';
+-  open my $fh,
+-    ">floccipaucinihilopilification-"
+-   . "pneumonoultramicroscopicsilicovolcanoconiosis-"
+-   . "lopadotemachoselachogaleokranioleipsanodrimypotrimmatosilphiokarabo"
+-   . "melitokatakechymenokichlepikossyphophattoperisteralektryonoptokephal"
+-   . "liokinklopeleiolagoiosiraiobaphetraganopterygon"
+-    or
+-     chdir updir,
+-     skip("OS does not support long file names (and I mean *long*)", 1);
+-  chdir updir;
+-  opendir my $dirh, "toberead";
+-  my $test_name
+-    = "dir iterators can be cloned when the next fn > 255 chars";
+-  while() {
+-   my $pos = telldir $dirh;
+-   my $fn = readdir($dirh);
+-   if(!defined $fn) { fail($test_name); last SKIP; }
+-   if($fn =~ 'lagoio') { 
+-    seekdir $dirh, $pos;
+-    last;
+-   }
+-  }
+-  is length async { scalar readdir $dirh } ->join, 258, $test_name;
+- }
+-
+- is scalar @w, 0, 'no warnings during all that' or diag @w;
+- chdir updir;
+-}
+-rmtree($dir);
Index: pkgsrc/lang/perl5/patches/patch-win32_config.gc
diff -u /dev/null pkgsrc/lang/perl5/patches/patch-win32_config.gc:1.1
--- /dev/null   Sat May 31 19:22:30 2025
+++ pkgsrc/lang/perl5/patches/patch-win32_config.gc     Sat May 31 19:22:30 2025
@@ -0,0 +1,15 @@
+$NetBSD: patch-win32_config.gc,v 1.1 2025/05/31 19:22:30 wiz Exp $
+
+https://github.com/Perl/perl5/issues/23010
+https://github.com/Perl/perl5/commit/918bfff86ca8d6d4e4ec5b30994451e0bd74aba9.patch
+
+--- win32/config.gc.orig       2025-03-30 10:35:54.000000000 +0000
++++ win32/config.gc
+@@ -199,6 +199,7 @@ d_fd_macros='define'
+ d_fd_set='define'
+ d_fdclose='undef'
+ d_fdim='undef'
++d_fdopendir='undef'
+ d_fds_bits='define'
+ d_fegetround='undef'
+ d_ffs='undef'
Index: pkgsrc/lang/perl5/patches/patch-win32_config.vc
diff -u /dev/null pkgsrc/lang/perl5/patches/patch-win32_config.vc:1.1
--- /dev/null   Sat May 31 19:22:30 2025
+++ pkgsrc/lang/perl5/patches/patch-win32_config.vc     Sat May 31 19:22:30 2025
@@ -0,0 +1,15 @@
+$NetBSD: patch-win32_config.vc,v 1.1 2025/05/31 19:22:30 wiz Exp $
+
+https://github.com/Perl/perl5/issues/23010
+https://github.com/Perl/perl5/commit/918bfff86ca8d6d4e4ec5b30994451e0bd74aba9.patch
+
+--- win32/config.vc.orig       2025-03-30 10:35:54.000000000 +0000
++++ win32/config.vc
+@@ -199,6 +199,7 @@ d_fd_macros='define'
+ d_fd_set='define'
+ d_fdclose='undef'
+ d_fdim='undef'
++d_fdopendir='undef'
+ d_fds_bits='define'
+ d_fegetround='undef'
+ d_ffs='undef'



Home | Main Index | Thread Index | Old Index