From 98af97b255f51215beedb0b4e7573862ac2f534e Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sat, 23 Aug 2025 11:45:18 +1000 Subject: [PATCH] Add perl 5.17.2 --- .../files/Compress-Raw-Zlib_config.in | 5 + steps/perl-5.17.2/pass1.sh | 102 ++++++ .../0001-Revert-Upgrade-Socket-to-2.002.patch | 326 ++++++++++++++++++ ...invlists.pl-Fail-if-inversion-list-n.patch | 34 ++ ..._invlist-Allow-to-return-internal-pr.patch | 45 +++ steps/perl-5.17.2/patches/a2p-c-bison.patch | 11 + steps/perl-5.17.2/reenable-regcharclass.patch | 17 + steps/perl-5.17.2/sources | 2 + 8 files changed, 542 insertions(+) create mode 100644 steps/perl-5.17.2/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.17.2/pass1.sh create mode 100644 steps/perl-5.17.2/patches/0001-Revert-Upgrade-Socket-to-2.002.patch create mode 100644 steps/perl-5.17.2/patches/0001-Revert-regen-mk_invlists.pl-Fail-if-inversion-list-n.patch create mode 100644 steps/perl-5.17.2/patches/0001-Unicode-UCD-prop_invlist-Allow-to-return-internal-pr.patch create mode 100644 steps/perl-5.17.2/patches/a2p-c-bison.patch create mode 100644 steps/perl-5.17.2/reenable-regcharclass.patch create mode 100644 steps/perl-5.17.2/sources diff --git a/steps/perl-5.17.2/files/Compress-Raw-Zlib_config.in b/steps/perl-5.17.2/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..3bbcf2f4 --- /dev/null +++ b/steps/perl-5.17.2/files/Compress-Raw-Zlib_config.in @@ -0,0 +1,5 @@ +BUILD_ZLIB = False +INCLUDE = /usr/include +LIB = /usr/lib/i386-unknown-linux-musl +OLD_ZLIB = False +GZIP_OS_CODE = AUTO_DETECT diff --git a/steps/perl-5.17.2/pass1.sh b/steps/perl-5.17.2/pass1.sh new file mode 100755 index 00000000..cc8b77eb --- /dev/null +++ b/steps/perl-5.17.2/pass1.sh @@ -0,0 +1,102 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + + mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + + # Remove miscellaneous pregenerated files + rm -f Porting/Glossary \ + cpan/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \ + x2p/a2p.c cpan/Win32API-File/cFile.pc cpan/Sys-Syslog/win32/Win32.pm \ + utils/Makefile + rm win32/perlexe.ico + rm -r cpan/Compress-Raw-Zlib/zlib-src + + # Generated tests + rm cpan/Devel-PPPort/t/*.t cpan/Unicode-Collate/Collate/keys.txt + + # Partially generated file + #sed -i '/GENERATED CODE/q' utf8.h + + # Regenerate other prebuilt header files + # Taken from headers of regen scripts + rm -f lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c \ + overload.h overload.c opcode.h opnames.h pp_proto.h \ + keywords.h embed.h embedvar.h perlapi.c perlapi.h \ + proto.h lib/overload/numbers.pm regcharclass.h perly.{tab,h,act} \ + mg_{raw.h,vtable.h,names.c} keywords.c l1_char_class_tab.h \ + lib/feature.pm unicode_constants.h charclass_invlists.h + perl regen.pl + perl regen_perly.pl -b bison-2.3 + perl regen/keywords.pl + perl regen/mk_PL_charclass.pl + perl regen/mk_invlists.pl + perl regen/regcharclass.pl + + # regenerate configure + ln -s ../metaconfig*/.package . + ln -s ../metaconfig*/U . + metaconfig -m + + # Glossary + pushd Porting + ln -s /usr/lib/perl5/5.6.2/U . + makegloss + popd + + bash cpan/Devel-PPPort/devel/mkapidoc.sh . \ + cpan/Devel-PPPort/parts/apidoc.fnc \ + cpan/Devel-PPPort/parts/embed.fnc + + # Remove lines from MANIFEST that we have deleted + while read -r line; do + f="$(echo "${line}" | cut -d' ' -f1)" + if [ -e "${f}" ]; then + echo "${line}" + fi + done < MANIFEST > MANIFEST.new + mv MANIFEST.new MANIFEST +} + +src_configure() { + ./Configure -des \ + -Dprefix="${PREFIX}" \ + -Dcc=gcc \ + -Dusedl=false \ + -Ddate=':' \ + -Dusedevel \ + -Uversiononly \ + -Dccflags="-U__DATE__ -U__TIME__" \ + -Darchname="i386-linux" \ + -Dmyhostname="(none)" \ + -Dmaildomain="(none)" + + # Remains unclear why this is necessary + pushd x2p + ./Makefile.SH + make depend + popd + + pushd utils + bash Makefile.SH + popd +} + +src_compile() { + pushd x2p + make BYACC=yacc run_byacc + popd + + # there are concurrency issues + make -j1 PREFIX="${PREFIX}" +} + +src_install() { + default + + # Remove messed up manpages + rm "${DESTDIR}/"*.0 +} diff --git a/steps/perl-5.17.2/patches/0001-Revert-Upgrade-Socket-to-2.002.patch b/steps/perl-5.17.2/patches/0001-Revert-Upgrade-Socket-to-2.002.patch new file mode 100644 index 00000000..87172e29 --- /dev/null +++ b/steps/perl-5.17.2/patches/0001-Revert-Upgrade-Socket-to-2.002.patch @@ -0,0 +1,326 @@ +From 8019286a366d5f8e64e5ca94b872123cb8661bc8 Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Fri, 22 Aug 2025 22:50:37 +1000 +Subject: [PATCH] Revert "Upgrade Socket to 2.002" + +This reverts commit 3be135d8cfe01725ff3bdfcc1b4a30206a1e0ed2. +--- + MANIFEST | 1 - + Porting/Maintainers.pl | 2 +- + cpan/Socket/Makefile.PL | 26 +++---------- + cpan/Socket/Socket.pm | 38 +++---------------- + cpan/Socket/Socket.xs | 81 +++++------------------------------------ + cpan/Socket/t/ip_mreq.t | 29 --------------- + 6 files changed, 23 insertions(+), 154 deletions(-) + delete mode 100644 cpan/Socket/t/ip_mreq.t + +diff --git perl-5.17.2/MANIFEST perl-5.17.2/MANIFEST +index ff1056a4c5..1396660928 100644 +--- perl-5.17.2/MANIFEST ++++ perl-5.17.2/MANIFEST +@@ -2205,7 +2205,6 @@ cpan/Socket/Socket.pm Socket extension Perl module + cpan/Socket/Socket.xs Socket extension external subroutines + cpan/Socket/t/getaddrinfo.t See if Socket::getaddrinfo works + cpan/Socket/t/getnameinfo.t See if Socket::getnameinfo works +-cpan/Socket/t/ip_mreq.t See if (un)pack_ip_mreq work + cpan/Socket/t/ipv6_mreq.t See if (un)pack_ipv6_mreq work + cpan/Socket/t/sockaddr.t + cpan/Socket/t/socketpair.t See if socketpair works +diff --git perl-5.17.2/Porting/Maintainers.pl perl-5.17.2/Porting/Maintainers.pl +index ca2d4e314d..4848bae3ad 100755 +--- perl-5.17.2/Porting/Maintainers.pl ++++ perl-5.17.2/Porting/Maintainers.pl +@@ -1637,7 +1637,7 @@ use File::Glob qw(:case); + + 'Socket' => { + 'MAINTAINER' => 'pevans', +- 'DISTRIBUTION' => 'PEVANS/Socket-2.002.tar.gz', ++ 'DISTRIBUTION' => 'PEVANS/Socket-2.001.tar.gz', + 'FILES' => q[cpan/Socket], + 'UPSTREAM' => 'cpan', + }, +diff --git perl-5.17.2/cpan/Socket/Makefile.PL perl-5.17.2/cpan/Socket/Makefile.PL +index 3be198e024..9a8f65d274 100644 +--- perl-5.17.2/cpan/Socket/Makefile.PL ++++ perl-5.17.2/cpan/Socket/Makefile.PL +@@ -30,15 +30,10 @@ sub check_for + open( my $file_source_fh, ">", $file_source ) or die "Cannot write $file_source - $!"; + print $file_source_fh <<"EOF"; + #include +-#ifdef WIN32 +-# include +-# include +-#else +-# include +-# include +-# include +-# include +-#endif ++#include ++#include ++#include ++#include + int main(int argc, char *argv[]) + { + (void)argc; +@@ -108,13 +103,6 @@ check_for( + main => "struct sockaddr_in6 sin6; sin6.sin6_scope_id = 0;" + ); + +-# TODO: Needs adding to perl5 core before importing dual-life again +-check_for( +- confkey => "d_ip_mreq", +- define => "HAS_IP_MREQ", +- main => "struct ip_mreq mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;" +-); +- + check_for( + confkey => "d_ipv6_mreq", + define => "HAS_IPV6_MREQ", +@@ -161,9 +149,8 @@ my @names = ( + + IOV_MAX + +- IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP IP_HDRINCL IP_MULTICAST_IF +- IP_MULTICAST_LOOP IP_MULTICAST_TTL IP_OPTIONS IP_RECVOPTS +- IP_RECVRETOPTS IP_RETOPTS IP_TOS IP_TTL ++ IP_OPTIONS IP_HDRINCL IP_TOS IP_TTL IP_RECVOPTS IP_RECVRETOPTS ++ IP_RETOPTS + + IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER + IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP +@@ -185,7 +172,6 @@ my @names = ( + SCM_CONNECT SCM_CREDENTIALS SCM_CREDS SCM_TIMESTAMP + + SOCK_DGRAM SOCK_RAW SOCK_RDM SOCK_SEQPACKET SOCK_STREAM +- SOCK_NONBLOCK SOCK_CLOEXEC + + SOL_SOCKET + +diff --git perl-5.17.2/cpan/Socket/Socket.pm perl-5.17.2/cpan/Socket/Socket.pm +index 41f214d8fe..e12d8517de 100644 +--- perl-5.17.2/cpan/Socket/Socket.pm ++++ perl-5.17.2/cpan/Socket/Socket.pm +@@ -3,7 +3,7 @@ package Socket; + use strict; + { use 5.006001; } + +-our $VERSION = '2.002'; ++our $VERSION = '2.001'; + + =head1 NAME + +@@ -87,13 +87,6 @@ functions as sockaddr_family(). + Socket type constants to use as the second argument to socket(), or the value + of the C socket option. + +-=head2 SOCK_NONBLOCK. SOCK_CLOEXEC +- +-Linux-specific shortcuts to specify the C and C flags +-during a C call. +- +- socket( my $sockh, PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, 0 ) +- + =head2 SOL_SOCKET + + Socket option level constant for setsockopt() and getsockopt(). +@@ -248,25 +241,13 @@ pack_sockaddr_un() or unpack_sockaddr_un() explicitly. + + These are only supported if your system has EFE. + +-=head2 $ip_mreq = pack_ip_mreq $multiaddr, $interface +- +-Takes an IPv4 multicast address and optionally an interface address (or +-C). Returns the C structure with those arguments packed +-in. Suitable for use with the C and C +-sockopts. +- +-=head2 ($multiaddr, $interface) = unpack_ip_mreq $ip_mreq ++=head2 $ipv6_mreq = pack_ipv6_mreq $ip6_address, $ifindex + +-Takes an C structure. Returns a list of two elements; the IPv4 +-multicast address and interface address. ++Takes an IPv6 address and an interface number. Returns the C ++structure with those arguments packed in. Suitable for use with the ++C and C sockopts. + +-=head2 $ipv6_mreq = pack_ipv6_mreq $multiaddr6, $ifindex +- +-Takes an IPv6 multicast address and an interface number. Returns the +-C structure with those arguments packed in. Suitable for use with +-the C and C sockopts. +- +-=head2 ($multiaddr6, $ifindex) = unpack_ipv6_mreq $ipv6_mreq ++=head2 ($ip6_address, $ifindex) = unpack_ipv6_mreq $ipv6_mreq + + Takes an C structure. Returns a list of two elements; the IPv6 + address and an interface number. +@@ -734,11 +715,6 @@ our @EXPORT = qw( + our @EXPORT_OK = qw( + CR LF CRLF $CR $LF $CRLF + +- SOCK_NONBLOCK SOCK_CLOEXEC +- +- IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP IP_MULTICAST_IF +- IP_MULTICAST_LOOP IP_MULTICAST_TTL +- + IPPROTO_IP IPPROTO_IPV6 IPPROTO_RAW IPPROTO_ICMP IPPROTO_TCP + IPPROTO_UDP + +@@ -753,8 +729,6 @@ our @EXPORT_OK = qw( + IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP + IPV6_UNICAST_HOPS IPV6_V6ONLY + +- pack_ip_mreq unpack_ip_mreq +- + pack_ipv6_mreq unpack_ipv6_mreq + + inet_pton inet_ntop +diff --git perl-5.17.2/cpan/Socket/Socket.xs perl-5.17.2/cpan/Socket/Socket.xs +index f22c1f3001..5ddd0e9d8e 100644 +--- perl-5.17.2/cpan/Socket/Socket.xs ++++ perl-5.17.2/cpan/Socket/Socket.xs +@@ -44,10 +44,6 @@ + # include + #endif + +-#ifdef WIN32 +-# include +-#endif +- + #ifdef NETWARE + NETDB_DEFINE_CONTEXT + NETINET_DEFINE_CONTEXT +@@ -963,84 +959,27 @@ inet_pton(af, host) + #endif + + void +-pack_ip_mreq(multiaddr, interface=&PL_sv_undef) +- SV * multiaddr +- SV * interface +- CODE: +- { +-#ifdef HAS_IP_MREQ +- struct ip_mreq mreq; +- char * multiaddrbytes; +- char * interfacebytes; +- STRLEN len; +- if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) +- croak("Wide character in %s", "Socket::pack_ip_mreq"); +- multiaddrbytes = SvPVbyte(multiaddr, len); +- if (len != sizeof(mreq.imr_multiaddr)) +- croak("Bad arg length %s, length is %"UVuf", should be %"UVuf, +- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr)); +- Zero(&mreq, sizeof(mreq), char); +- Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char); +- if(SvOK(interface)) { +- if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1)) +- croak("Wide character in %s", "Socket::pack_ip_mreq"); +- interfacebytes = SvPVbyte(interface, len); +- if (len != sizeof(mreq.imr_interface)) +- croak("Bad arg length %s, length is %"UVuf", should be %"UVuf, +- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_interface)); +- Copy(interfacebytes, &mreq.imr_interface, sizeof(mreq.imr_interface), char); +- } +- else +- mreq.imr_interface.s_addr = INADDR_ANY; +- ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq))); +-#else +- not_here("pack_ip_mreq"); +-#endif +- } +- +-void +-unpack_ip_mreq(mreq_sv) +- SV * mreq_sv +- PPCODE: +- { +-#ifdef HAS_IP_MREQ +- struct ip_mreq mreq; +- STRLEN mreqlen; +- char * mreqbytes = SvPVbyte(mreq_sv, mreqlen); +- if (mreqlen != sizeof(mreq)) +- croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf, +- "Socket::unpack_ip_mreq", (UV)mreqlen, (UV)sizeof(mreq)); +- Copy(mreqbytes, &mreq, sizeof(mreq), char); +- EXTEND(SP, 2); +- mPUSHp((char *)&mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr)); +- mPUSHp((char *)&mreq.imr_interface, sizeof(mreq.imr_interface)); +-#else +- not_here("unpack_ip_mreq"); +-#endif +- } +- +-void +-pack_ipv6_mreq(multiaddr, interface) +- SV * multiaddr ++pack_ipv6_mreq(addr, interface) ++ SV * addr + unsigned int interface + CODE: + { + #ifdef HAS_IPV6_MREQ + struct ipv6_mreq mreq; +- char * multiaddrbytes; +- STRLEN len; +- if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) ++ char * addrbytes; ++ STRLEN addrlen; ++ if (DO_UTF8(addr) && !sv_utf8_downgrade(addr, 1)) + croak("Wide character in %s", "Socket::pack_ipv6_mreq"); +- multiaddrbytes = SvPVbyte(multiaddr, len); +- if (len != sizeof(mreq.ipv6mr_multiaddr)) ++ addrbytes = SvPVbyte(addr, addrlen); ++ if (addrlen != sizeof(mreq.ipv6mr_multiaddr)) + croak("Bad arg length %s, length is %"UVuf", should be %"UVuf, +- "Socket::pack_ipv6_mreq", (UV)len, (UV)sizeof(mreq.ipv6mr_multiaddr)); ++ "Socket::pack_ipv6_mreq", (UV)addrlen, (UV)sizeof(mreq.ipv6mr_multiaddr)); + Zero(&mreq, sizeof(mreq), char); +- Copy(multiaddrbytes, &mreq.ipv6mr_multiaddr, sizeof(mreq.ipv6mr_multiaddr), char); ++ Copy(addrbytes, &mreq.ipv6mr_multiaddr, sizeof(mreq.ipv6mr_multiaddr), char); + mreq.ipv6mr_interface = interface; + ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq))); + #else +- not_here("pack_ipv6_mreq"); ++ ST(0) = (SV*)not_here("pack_ipv6_mreq"); + #endif + } + +diff --git perl-5.17.2/cpan/Socket/t/ip_mreq.t perl-5.17.2/cpan/Socket/t/ip_mreq.t +deleted file mode 100644 +index f08920c437..0000000000 +--- perl-5.17.2/cpan/Socket/t/ip_mreq.t ++++ /dev/null +@@ -1,29 +0,0 @@ +-use strict; +-use warnings; +-use Test::More; +- +-use Socket qw( +- INADDR_ANY +- pack_ip_mreq unpack_ip_mreq +-); +- +-# Check that pack/unpack_ip_mreq either croak with "Not implemented", or +-# roundtrip as identity +- +-my $packed; +-eval { +- $packed = pack_ip_mreq "\xe0\0\0\1", INADDR_ANY; +-}; +-if( !defined $packed ) { +- plan skip_all => "No pack_ip_mreq" if $@ =~ m/ not implemented /; +- die $@; +-} +- +-plan tests => 3; +- +-my @unpacked = unpack_ip_mreq $packed; +- +-is( $unpacked[0], "\xe0\0\0\1", 'unpack_ip_mreq multiaddr' ); +-is( $unpacked[1], INADDR_ANY, 'unpack_ip_mreq interface' ); +- +-is( (unpack_ip_mreq pack_ip_mreq "\xe0\0\0\1")[1], INADDR_ANY, 'pack_ip_mreq interface defaults to INADDR_ANY' ); +-- +2.49.1 + diff --git a/steps/perl-5.17.2/patches/0001-Revert-regen-mk_invlists.pl-Fail-if-inversion-list-n.patch b/steps/perl-5.17.2/patches/0001-Revert-regen-mk_invlists.pl-Fail-if-inversion-list-n.patch new file mode 100644 index 00000000..3843121a --- /dev/null +++ b/steps/perl-5.17.2/patches/0001-Revert-regen-mk_invlists.pl-Fail-if-inversion-list-n.patch @@ -0,0 +1,34 @@ +From deca90bb9a589cdd796fae47d1dbe9d680f8884b Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Fri, 22 Aug 2025 22:36:34 +1000 +Subject: [PATCH] Revert "regen/mk_invlists.pl: Fail if inversion list not + found" + +This reverts commit ad89228c5b795cc268ecf73cf29290f8bc70e979. +--- + regen/mk_invlists.pl | 2 -- + 1 file changed, 2 deletions(-) + +diff --git perl-5.17.2/regen/mk_invlists.pl perl-5.17.2/regen/mk_invlists.pl +index 65d6995285..6eefbe7f15 100644 +--- perl-5.17.2/regen/mk_invlists.pl ++++ perl-5.17.2/regen/mk_invlists.pl +@@ -126,7 +126,6 @@ for my $prop (qw( + L1PosixWord + PosixXDigit + XPosixXDigit +- _Perl_Non_Final_Folds + ) + ) { + +@@ -146,7 +145,6 @@ for my $prop (qw( + my $lookup_prop = $prop; + $lookup_prop =~ s/^L1Posix/XPosix/ or $lookup_prop =~ s/^L1//; + my @invlist = prop_invlist($lookup_prop); +- die "Could not find inversion list for '$lookup_prop'" unless @invlist; + + if ($lookup_prop ne $prop) { + for my $i (0 .. @invlist - 1 - 1) { +-- +2.49.1 + diff --git a/steps/perl-5.17.2/patches/0001-Unicode-UCD-prop_invlist-Allow-to-return-internal-pr.patch b/steps/perl-5.17.2/patches/0001-Unicode-UCD-prop_invlist-Allow-to-return-internal-pr.patch new file mode 100644 index 00000000..3ebe4d98 --- /dev/null +++ b/steps/perl-5.17.2/patches/0001-Unicode-UCD-prop_invlist-Allow-to-return-internal-pr.patch @@ -0,0 +1,45 @@ +From b5bc060d03776870f3ead93e8c565069a66c2af9 Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Mon, 18 Jun 2012 12:38:41 -0600 +Subject: [PATCH] Unicode::UCD::prop_invlist() Allow to return internal + property + +This creates an optional undocumented parameter to this function to +allow it to return the inversion list of an internal-only Perl property. +This will be used by other functions in Perl, but should not be +documented, as we don't want to encourage the use of internal-only +properties, which are subject to change or removal without notice. +--- + lib/Unicode/UCD.pm | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git perl-5.17.2/lib/Unicode/UCD.pm perl-5.17.2/lib/Unicode/UCD.pm +index 17b4fead23..a809c21adc 100644 +--- perl-5.17.2/lib/Unicode/UCD.pm ++++ perl-5.17.2/lib/Unicode/UCD.pm +@@ -1944,8 +1944,12 @@ properties, and will return C if called with one of those. + our %loose_defaults; + our $MAX_UNICODE_CODEPOINT; + +-sub prop_invlist ($) { ++sub prop_invlist ($;$) { + my $prop = $_[0]; ++ ++ # Undocumented way to get at Perl internal properties ++ my $internal_ok = defined $_[1] && $_[1] eq '_perl_core_internal_ok'; ++ + return if ! defined $prop; + + require "utf8_heavy.pl"; +@@ -1962,7 +1966,7 @@ sub prop_invlist ($) { + || ref $swash eq "" + || $swash->{'BITS'} != 1 + || $swash->{'USER_DEFINED'} +- || $prop =~ /^\s*_/; ++ || (! $internal_ok && $prop =~ /^\s*_/); + + if ($swash->{'EXTRAS'}) { + carp __PACKAGE__, "::prop_invlist: swash returned for $prop unexpectedly has EXTRAS magic"; +-- +2.49.1 + diff --git a/steps/perl-5.17.2/patches/a2p-c-bison.patch b/steps/perl-5.17.2/patches/a2p-c-bison.patch new file mode 100644 index 00000000..86da7a1c --- /dev/null +++ b/steps/perl-5.17.2/patches/a2p-c-bison.patch @@ -0,0 +1,11 @@ +--- perl-5.17.2/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 ++++ perl-5.17.2/x2p/Makefile.SH 2025-07-17 18:09:02.340711269 +1000 +@@ -123,7 +123,7 @@ + sed -e 's/(yyn = yydefred\[yystate\])/((yyn = yydefred[yystate]))/' \ + -e 's/(yys = getenv("YYDEBUG"))/((yys = getenv("YYDEBUG")))/' \ + -e 's/^yyerrlab://' \ +- -e 's/^ goto yyerrlab;//' \ ++ -e 's/^ *goto yyerrlab;//' \ + -e 's/^yynewerror://' \ + -e 's/^ goto yynewerror;//' \ + -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \ diff --git a/steps/perl-5.17.2/reenable-regcharclass.patch b/steps/perl-5.17.2/reenable-regcharclass.patch new file mode 100644 index 00000000..30af8f15 --- /dev/null +++ b/steps/perl-5.17.2/reenable-regcharclass.patch @@ -0,0 +1,17 @@ +diff --git perl-5.18.4/regen/regcharclass.pl perl-5.18.4/regen/regcharclass.pl +index f5cf315a54..81dcdc578d 100755 +--- perl-5.18.4/regen/regcharclass.pl ++++ perl-5.18.4/regen/regcharclass.pl +@@ -1468,9 +1468,9 @@ GCB_V: Grapheme_Cluster_Break=V + # million code points. The results would not change unless utf8.h decides it + # wants a maximum other than 4 bytes, or this program creates better + # optimizations +-#UTF8_CHAR: Matches utf8 from 1 to 4 bytes +-#=> UTF8 :safe only_ascii_platform +-#0x0 - 0x1FFFFF ++UTF8_CHAR: Matches utf8 from 1 to 4 bytes ++=> UTF8 :safe only_ascii_platform ++0x0 - 0x1FFFFF + + # This hasn't been commented out, because we haven't an EBCDIC platform to run + # it on, and the 3 types of EBCDIC allegedly supported by Perl would have diff --git a/steps/perl-5.17.2/sources b/steps/perl-5.17.2/sources new file mode 100644 index 00000000..50ee90bb --- /dev/null +++ b/steps/perl-5.17.2/sources @@ -0,0 +1,2 @@ +https://www.cpan.org/src/5.0/perl-5.17.2.tar.bz2 a47c59fd3667011205be4d384f4da2deb0a7544bdf1cc2efa66e9fefea435576 +git://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573