From a3e48fa3026e3d5360a2ccb9ae4fe60ae36821d2 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Sun, 13 Jul 2025 09:48:24 +1000 Subject: [PATCH 01/64] add perl-Devel-Tokenizer-C --- steps/perl-Devel-Tokenizer-C-0.11/pass1.sh | 11 +++++++++++ steps/perl-Devel-Tokenizer-C-0.11/sources | 1 + 2 files changed, 12 insertions(+) create mode 100644 steps/perl-Devel-Tokenizer-C-0.11/pass1.sh create mode 100644 steps/perl-Devel-Tokenizer-C-0.11/sources diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass1.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass1.sh new file mode 100644 index 00000000..03c10775 --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass1.sh @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_compile() { + : +} + +src_install() { + install -D lib/Devel/Tokenizer/C.pm /usr/lib/perl5/5.6.2/Devel/Tokenizer/C.pm +} diff --git a/steps/perl-Devel-Tokenizer-C-0.11/sources b/steps/perl-Devel-Tokenizer-C-0.11/sources new file mode 100644 index 00000000..3aa9e533 --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/sources @@ -0,0 +1 @@ +https://cpan.metacpan.org/authors/id/M/MH/MHX/Devel-Tokenizer-C-0.11.tar.gz 5222da582ba59be26a9443a11c525c52aa070daf3bff08516805142b362ba48c From a5e363c2db81ba68859dcd232bcb129c5874d9f1 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Sun, 13 Jul 2025 10:33:11 +1000 Subject: [PATCH 02/64] Update dist, move earlier --- steps/dist-3.5-236/sources | 1 - steps/{dist-3.5-236 => dist-3.5}/files/config.sh.in | 0 steps/{dist-3.5-236 => dist-3.5}/files/revision.h | 0 steps/{dist-3.5-236 => dist-3.5}/pass1.sh | 8 +++++--- steps/{dist-3.5-236 => dist-3.5}/patches/env.patch | 4 ++-- steps/dist-3.5/sources | 1 + steps/manifest | 2 +- 7 files changed, 9 insertions(+), 7 deletions(-) delete mode 100644 steps/dist-3.5-236/sources rename steps/{dist-3.5-236 => dist-3.5}/files/config.sh.in (100%) rename steps/{dist-3.5-236 => dist-3.5}/files/revision.h (100%) rename steps/{dist-3.5-236 => dist-3.5}/pass1.sh (75%) rename steps/{dist-3.5-236 => dist-3.5}/patches/env.patch (75%) create mode 100644 steps/dist-3.5/sources diff --git a/steps/dist-3.5-236/sources b/steps/dist-3.5-236/sources deleted file mode 100644 index 0771704f..00000000 --- a/steps/dist-3.5-236/sources +++ /dev/null @@ -1 +0,0 @@ -g https://github.com/rmanfredi/dist~2cec35331a912b165e2dd135d22de81f34bbc83f https://github.com/rmanfredi/dist/archive/2cec35331a912b165e2dd135d22de81f34bbc83f.tar.gz 6d2c9e953de2c136c77c9b6485fbc61e8291a2a70689f2a07c79d9381bf9dbcb diff --git a/steps/dist-3.5-236/files/config.sh.in b/steps/dist-3.5/files/config.sh.in similarity index 100% rename from steps/dist-3.5-236/files/config.sh.in rename to steps/dist-3.5/files/config.sh.in diff --git a/steps/dist-3.5-236/files/revision.h b/steps/dist-3.5/files/revision.h similarity index 100% rename from steps/dist-3.5-236/files/revision.h rename to steps/dist-3.5/files/revision.h diff --git a/steps/dist-3.5-236/pass1.sh b/steps/dist-3.5/pass1.sh similarity index 75% rename from steps/dist-3.5-236/pass1.sh rename to steps/dist-3.5/pass1.sh index c9ca6bef..b16a894f 100755 --- a/steps/dist-3.5-236/pass1.sh +++ b/steps/dist-3.5/pass1.sh @@ -8,7 +8,9 @@ src_prepare() { default - sed 's/@PERLVER@/5.10.1/' config.sh.in > config.sh + sed 's/@PERLVER@/5.6.2/' config.sh.in > config.sh + find . -name Makefile.SH -delete + rm -f Configure } src_compile() { @@ -23,8 +25,8 @@ src_compile() { } src_install() { - mkdir -p "${DESTDIR}${PREFIX}/bin/" "${DESTDIR}${PREFIX}/lib/perl5/5.10.1" + mkdir -p "${DESTDIR}${PREFIX}/bin/" "${DESTDIR}${PREFIX}/lib/perl5/5.6.2" install mcon/metaconfig "${DESTDIR}${PREFIX}/bin/" install kit/manifake "${DESTDIR}${PREFIX}/bin/" - cp -r mcon/U/ "${DESTDIR}${PREFIX}/lib/perl5/5.10.1/" + cp -r mcon/U/ "${DESTDIR}${PREFIX}/lib/perl5/5.6.2/" } diff --git a/steps/dist-3.5-236/patches/env.patch b/steps/dist-3.5/patches/env.patch similarity index 75% rename from steps/dist-3.5-236/patches/env.patch rename to steps/dist-3.5/patches/env.patch index 47129b93..c060b86b 100644 --- a/steps/dist-3.5-236/patches/env.patch +++ b/steps/dist-3.5/patches/env.patch @@ -4,8 +4,8 @@ SPDX-FileCopyrightText: 2021 fosslinux SPDX-License-Identifier: Artistic-1.0 ---- dist-2cec35331a912b165e2dd135d22de81f34bbc83f/bin/perload 2021-04-21 19:01:35.803767498 +1000 -+++ dist-2cec35331a912b165e2dd135d22de81f34bbc83f/bin/perload 2021-04-21 19:01:47.959850217 +1000 +--- dist-99eb95e214b87a84b0a7752adba30e9b0fec977f/bin/perload 2021-04-21 19:01:35.803767498 +1000 ++++ dist-99eb95e214b87a84b0a7752adba30e9b0fec977f/bin/perload 2021-04-21 19:01:47.959850217 +1000 @@ -450,8 +450,6 @@ :# This perl program uses dynamic loading [generated by perload] :# diff --git a/steps/dist-3.5/sources b/steps/dist-3.5/sources new file mode 100644 index 00000000..05654d6d --- /dev/null +++ b/steps/dist-3.5/sources @@ -0,0 +1 @@ +git://github.com/rmanfredi/dist~99eb95e214b87a84b0a7752adba30e9b0fec977f https://github.com/rmanfredi/dist/archive/99eb95e214b87a84b0a7752adba30e9b0fec977f.tar.gz 20cfcd13d588abdcb502c1c4682fb1f33ffefd307625b3b877d21ad938a7b705 diff --git a/steps/manifest b/steps/manifest index d79f04b0..54b07ab6 100644 --- a/steps/manifest +++ b/steps/manifest @@ -155,8 +155,8 @@ build: mpc-1.2.1 build: flex-2.5.33 build: bison-2.3 build: bison-3.4.2 +build: dist-3.5 build: perl-5.10.1 -build: dist-3.5-236 build: perl-5.32.1 uninstall: perl-5.6.2 perl-5.10.1 build: libarchive-3.5.2 From 0c763cdfc3d89492db2d0f1e0680d17fbeee66e1 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Mon, 14 Jul 2025 11:45:29 +1000 Subject: [PATCH 03/64] Add makegloss to dist --- steps/dist-3.5/pass1.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/steps/dist-3.5/pass1.sh b/steps/dist-3.5/pass1.sh index b16a894f..fe2dc86b 100755 --- a/steps/dist-3.5/pass1.sh +++ b/steps/dist-3.5/pass1.sh @@ -17,6 +17,7 @@ src_compile() { cd mcon ./mconfig.SH perl ../bin/perload -o mconfig > metaconfig + ./makegloss.SH cd .. cd kit @@ -27,6 +28,7 @@ src_compile() { src_install() { mkdir -p "${DESTDIR}${PREFIX}/bin/" "${DESTDIR}${PREFIX}/lib/perl5/5.6.2" install mcon/metaconfig "${DESTDIR}${PREFIX}/bin/" + install mcon/makegloss "${DESTDIR}${PREFIX}/bin/" install kit/manifake "${DESTDIR}${PREFIX}/bin/" cp -r mcon/U/ "${DESTDIR}${PREFIX}/lib/perl5/5.6.2/" } From 1fbc21935fffa593086360653641c90164080202 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Mon, 14 Jul 2025 11:45:39 +1000 Subject: [PATCH 04/64] Add perl 5.8.9 --- steps/manifest | 2 + steps/perl-5.8.9/pass1.sh | 86 +++++++++++++++++++ ...figure-doesn-t-pick-up-Hash-Util-Fie.patch | 39 +++++++++ steps/perl-5.8.9/sources | 2 + 4 files changed, 129 insertions(+) create mode 100755 steps/perl-5.8.9/pass1.sh create mode 100644 steps/perl-5.8.9/patches/0001-Revert-Patch-Configure-doesn-t-pick-up-Hash-Util-Fie.patch create mode 100644 steps/perl-5.8.9/sources diff --git a/steps/manifest b/steps/manifest index 54b07ab6..578b4ac4 100644 --- a/steps/manifest +++ b/steps/manifest @@ -156,6 +156,8 @@ build: flex-2.5.33 build: bison-2.3 build: bison-3.4.2 build: dist-3.5 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.8.9 build: perl-5.10.1 build: perl-5.32.1 uninstall: perl-5.6.2 perl-5.10.1 diff --git a/steps/perl-5.8.9/pass1.sh b/steps/perl-5.8.9/pass1.sh new file mode 100755 index 00000000..feed0656 --- /dev/null +++ b/steps/perl-5.8.9/pass1.sh @@ -0,0 +1,86 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + + # no idea why this is needed + sed -i "s/Sigjmp_buf/sigjmp_buf/" cop.h + + # Remove miscellaneous pregenerated files + rm Porting/Glossary lib/unicore/mktables.lst \ + ext/Sys/Syslog/win32/Win32.pm ext/Win32API/File/cFile.pc \ + ext/Devel/PPPort/parts/apidoc.fnc Configure config_h.SH \ + x2p/a2p.c + # Generated tests + rm ext/Devel/PPPort/t/*.t + + # Remove jpl + rm -r jpl + + # Regenerate bison files + sed -i '/yydestruct/d' perly.y + rm -f perly.c perly.h + bison -d perly.y + ln -s perly.tab.h perly.h + ln -s perly.tab.c perly.c + + # toke.c Perl_keyword + # bit before the generated bit + sed '/The following code was generated/,$d' toke.c | head -n -1 > toke.c.new + perl perl_keyword.pl >> toke.c.new + # bit after the generated bit + # sed with two -e does not appear to be working with our sed + sed '1,/The following code was generated/d' toke.c | sed '1,/^}$/d' >> toke.c.new + mv toke.c.new toke.c + + # Regenerate other prebuilt header files + # Taken from headers of regen scripts + rm -f lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c reentr.inc \ + overload.h overload.c opcode.h opnames.h pp_proto.h \ + pp.sym keywords.h embed.h embedvar.h global.sym perlapi.c perlapi.h \ + proto.h lib/overload/numbers.pm pod/perlintern.pod pod/perlapi.pod \ + pod/perlmodlib.pod perl/perltoc.pod ext/ByteLoader/byterun.{h,c} \ + ext/B/B/Asmdata.pm + perl regen.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 ext/Devel/PPPort/devel/mkapidoc.sh . \ + ext/Devel/PPPort/parts/apidoc.fnc \ + ext/Devel/PPPort/parts/embed.fnc +} + +src_configure() { + rm MANIFEST # make Configure script happy + ./Configure -des \ + -Dprefix="${PREFIX}" \ + -Dcc=gcc \ + -Dyacc='bison -y' \ + -Dusedl=false \ + -Ddate=':' \ + -Dccflags="-U__DATE__ -U__TIME__" \ + -Darchname="i386-linux" \ + -Dmyhostname="(none)" \ + -Dmaildomain="(none)" +} + +src_install() { + default + + # Remove messed up manpages + rm "${DESTDIR}/"*.0 + + # There are strange permissions on installed files. + find "${DESTDIR}${PREFIX}/lib" -type f -exec chmod 644 {} \; +} diff --git a/steps/perl-5.8.9/patches/0001-Revert-Patch-Configure-doesn-t-pick-up-Hash-Util-Fie.patch b/steps/perl-5.8.9/patches/0001-Revert-Patch-Configure-doesn-t-pick-up-Hash-Util-Fie.patch new file mode 100644 index 00000000..1c75e8a6 --- /dev/null +++ b/steps/perl-5.8.9/patches/0001-Revert-Patch-Configure-doesn-t-pick-up-Hash-Util-Fie.patch @@ -0,0 +1,39 @@ +From 0db0a3cd0dd78965cea62c7cfc3724e31fba4e8d Mon Sep 17 00:00:00 2001 +From: fosslinux +Date: Sun, 13 Jul 2025 13:39:45 +1000 +Subject: [PATCH] Revert "[Patch] Configure doesn't pick up + Hash/Util/FieldHash" + +It is most unclear what version of metaconfig was used for this perl. +The commit directly preceding this is broken for this perl, and this +commit introduces problems. + +This reverts commit cb6ac97976e03a65df4df6f86396e8241167307c. +--- + U/perl/Extensions.U | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +diff --git a/U/perl/Extensions.U b/U/perl/Extensions.U +index b8617ff..0ba7c74 100644 +--- metaconfig-40501436c87602cc17baae64ee6b3ca26d74e354/U/perl/Extensions.U ++++ metaconfig-40501436c87602cc17baae64ee6b3ca26d74e354/U/perl/Extensions.U +@@ -99,12 +99,10 @@ cd "$rsrc/ext" + set X + shift + eval $find_extensions +-# Special case: Add in modules that nest beyond the first level. +-# Currently threads/shared and Hash/Util/FieldHash, since they are +-# not picked up by the recursive find above (and adding in general +-# recursive finding breaks SDBM_File/sdbm). +-# A.D. 20011025 (SDBM), ajgough 20071008 (FieldHash) +-known_extensions="$known_extensions threads/shared Hash/Util/FieldHash" ++# Special case: Add in threads/shared since it is not picked up by the ++# recursive find above (and adding in general recursive finding breaks ++# SDBM_File/sdbm). A.D. 10/25/2001. ++known_extensions="$known_extensions threads/shared" + set X $known_extensions + shift + known_extensions="$*" +-- +2.49.1 + diff --git a/steps/perl-5.8.9/sources b/steps/perl-5.8.9/sources new file mode 100644 index 00000000..1c6f0a10 --- /dev/null +++ b/steps/perl-5.8.9/sources @@ -0,0 +1,2 @@ +https://www.cpan.org/src/5.0/perl-5.8.9.tar.bz2 1097fbcd48ceccb2bc735d119c9db399a02a8ab9f7dc53e29e47e6a8d0d72e79 +git://github.com/Perl/metaconfig~40501436c87602cc17baae64ee6b3ca26d74e354 https://github.com/Perl/metaconfig/archive/40501436c87602cc17baae64ee6b3ca26d74e354.tar.gz 6b0c937e1aaef684a7b2f0c089bea293c7a9d255d6513e5108567f4c10e3f4dd From 614482220c4b2a4518924aa67f9ceb9b9af2b3c4 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Wed, 23 Jul 2025 10:41:50 +1000 Subject: [PATCH 05/64] Restore permissions on stripped files --- steps/helpers.sh | 20 +++++++++++++++++--- steps/perl-5.32.1/pass1.sh | 3 --- steps/perl-5.8.9/pass1.sh | 3 --- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/steps/helpers.sh b/steps/helpers.sh index c4836d6d..8ef96049 100755 --- a/steps/helpers.sh +++ b/steps/helpers.sh @@ -447,6 +447,20 @@ default_src_install() { make -f Makefile install PREFIX="${PREFIX}" DESTDIR="${DESTDIR}" } +# Helper function for permissions +_do_strip() { + # shellcheck disable=SC2124 + local f="${@: -1}" + if ! [ -w "${f}" ]; then + local perms="$(stat -c %a "${f}")" + chmod u+w "${f}" + fi + strip "$@" + if [ -n "${perms}" ]; then + chmod "${perms}" "${f}" + fi +} + # Default function for postprocessing binaries. default_src_postprocess() { if (command -v find && command -v file && command -v strip) >/dev/null 2>&1; then @@ -454,15 +468,15 @@ default_src_postprocess() { # shellcheck disable=SC2162 find "${DESTDIR}" -type f | while read f; do case "$(file -bi "${f}")" in - application/x-executable*) strip "${f}" ;; + application/x-executable*) _do_strip "${f}" ;; application/x-sharedlib*|application/x-pie-executable*) machine_set="$(file -b "${f}")" case "${machine_set}" in *no\ machine*) ;; # don't strip ELF container-only - *) strip --strip-unneeded "${f}" ;; + *) _do_strip --strip-unneeded "${f}" ;; esac ;; - application/x-archive*) strip --strip-debug "${f}" ;; + application/x-archive*) _do_strip --strip-debug "${f}" ;; esac done fi diff --git a/steps/perl-5.32.1/pass1.sh b/steps/perl-5.32.1/pass1.sh index ef78d084..c834f45a 100755 --- a/steps/perl-5.32.1/pass1.sh +++ b/steps/perl-5.32.1/pass1.sh @@ -51,7 +51,4 @@ src_install() { # Improve reproducibility. hostcat might be empty or set to "cat /etc/hosts" # depending on whether /etc/hosts was available during the build. sed -i "s_^hostcat='.*'\$_hostcat=''_g" "${DESTDIR}${PREFIX}/lib/perl5/5.32.1/i386-linux/Config_heavy.pl" - - # There are strange permissions on installed files. - find "${DESTDIR}${PREFIX}/lib" -type f -exec chmod 644 {} \; } diff --git a/steps/perl-5.8.9/pass1.sh b/steps/perl-5.8.9/pass1.sh index feed0656..29564c39 100755 --- a/steps/perl-5.8.9/pass1.sh +++ b/steps/perl-5.8.9/pass1.sh @@ -80,7 +80,4 @@ src_install() { # Remove messed up manpages rm "${DESTDIR}/"*.0 - - # There are strange permissions on installed files. - find "${DESTDIR}${PREFIX}/lib" -type f -exec chmod 644 {} \; } From dd2026dc19ec0de41421d3441ea20f42bd2087c0 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Wed, 23 Jul 2025 10:42:08 +1000 Subject: [PATCH 06/64] Build perl-Devel-Tokenizer against latest version of perl --- steps/helpers.sh | 5 +++++ steps/perl-Devel-Tokenizer-C-0.11/pass1.sh | 2 +- steps/perl-Devel-Tokenizer-C-0.11/pass2.sh | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass2.sh diff --git a/steps/helpers.sh b/steps/helpers.sh index 8ef96049..82ba031c 100755 --- a/steps/helpers.sh +++ b/steps/helpers.sh @@ -78,6 +78,11 @@ _grep() { fi } +# Useful for perl extensions +get_perl_version() { + perl -v | sed -n -re 's/.*[ (]v([0-9\.]*)[ )].*/\1/p' +} + get_revision() { local pkg=$1 local oldpwd="${PWD}" diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass1.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass1.sh index 03c10775..cfdab154 100644 --- a/steps/perl-Devel-Tokenizer-C-0.11/pass1.sh +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass1.sh @@ -7,5 +7,5 @@ src_compile() { } src_install() { - install -D lib/Devel/Tokenizer/C.pm /usr/lib/perl5/5.6.2/Devel/Tokenizer/C.pm + install -D lib/Devel/Tokenizer/C.pm "${DESTDIR}/usr/lib/perl5/$(get_perl_version)/Devel/Tokenizer/C.pm" } diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass2.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass2.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass2.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file From f6428c9481e5759df188e1fa720747c2c9e3e7f4 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Wed, 23 Jul 2025 10:42:38 +1000 Subject: [PATCH 07/64] Various regenerations for perl 5.8.9 Including -j1 because of concurrency issues --- steps/perl-5.8.9/pass1.sh | 18 ++++++++++++------ steps/perl-5.8.9/patches/a2p-c-bison.patch | 11 +++++++++++ steps/perl-5.8.9/sources | 1 + 3 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 steps/perl-5.8.9/patches/a2p-c-bison.patch diff --git a/steps/perl-5.8.9/pass1.sh b/steps/perl-5.8.9/pass1.sh index 29564c39..964b885f 100755 --- a/steps/perl-5.8.9/pass1.sh +++ b/steps/perl-5.8.9/pass1.sh @@ -5,8 +5,7 @@ src_prepare() { default - # no idea why this is needed - sed -i "s/Sigjmp_buf/sigjmp_buf/" cop.h + mv ../Digest-SHA-6.04 ext/Digest/SHA/ # Remove miscellaneous pregenerated files rm Porting/Glossary lib/unicore/mktables.lst \ @@ -37,11 +36,11 @@ src_prepare() { # Regenerate other prebuilt header files # Taken from headers of regen scripts - rm -f lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c reentr.inc \ + rm lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c reentr.inc \ overload.h overload.c opcode.h opnames.h pp_proto.h \ pp.sym keywords.h embed.h embedvar.h global.sym perlapi.c perlapi.h \ - proto.h lib/overload/numbers.pm pod/perlintern.pod pod/perlapi.pod \ - pod/perlmodlib.pod perl/perltoc.pod ext/ByteLoader/byterun.{h,c} \ + proto.h pod/perlintern.pod pod/perlapi.pod \ + pod/perlmodlib.pod ext/ByteLoader/byterun.{h,c} \ ext/B/B/Asmdata.pm perl regen.pl @@ -66,7 +65,6 @@ src_configure() { ./Configure -des \ -Dprefix="${PREFIX}" \ -Dcc=gcc \ - -Dyacc='bison -y' \ -Dusedl=false \ -Ddate=':' \ -Dccflags="-U__DATE__ -U__TIME__" \ @@ -75,6 +73,14 @@ src_configure() { -Dmaildomain="(none)" } +src_compile() { + pushd x2p + make BYACC=yacc run_byacc + popd + + make -j1 PREFIX="${PREFIX}" +} + src_install() { default diff --git a/steps/perl-5.8.9/patches/a2p-c-bison.patch b/steps/perl-5.8.9/patches/a2p-c-bison.patch new file mode 100644 index 00000000..009f1c23 --- /dev/null +++ b/steps/perl-5.8.9/patches/a2p-c-bison.patch @@ -0,0 +1,11 @@ +--- perl-5.8.9/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 ++++ perl-5.8.9/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.8.9/sources b/steps/perl-5.8.9/sources index 1c6f0a10..2f51484e 100644 --- a/steps/perl-5.8.9/sources +++ b/steps/perl-5.8.9/sources @@ -1,2 +1,3 @@ https://www.cpan.org/src/5.0/perl-5.8.9.tar.bz2 1097fbcd48ceccb2bc735d119c9db399a02a8ab9f7dc53e29e47e6a8d0d72e79 git://github.com/Perl/metaconfig~40501436c87602cc17baae64ee6b3ca26d74e354 https://github.com/Perl/metaconfig/archive/40501436c87602cc17baae64ee6b3ca26d74e354.tar.gz 6b0c937e1aaef684a7b2f0c089bea293c7a9d255d6513e5108567f4c10e3f4dd +https://cpan.metacpan.org/authors/id/M/MS/MSHELOR/Digest-SHA-6.04.tar.gz ee91f8f7db894ee7c6ee003daac10a99056c4948a674ef46acdbb63c81a4abeb From 83180568794b114034a1ad116780b94f736efdde Mon Sep 17 00:00:00 2001 From: fosslinux Date: Thu, 17 Jul 2025 16:47:32 +1000 Subject: [PATCH 08/64] Perl 5.12.5 --- steps/manifest | 5 +- .../files/Compress-Raw-Zlib_config.in | 5 + steps/perl-5.12.5/pass1.sh | 98 +++++++++++++++++++ steps/perl-5.12.5/patches/a2p-c-bison.patch | 11 +++ steps/perl-5.12.5/sources | 2 + 5 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.12.5/pass1.sh create mode 100644 steps/perl-5.12.5/patches/a2p-c-bison.patch create mode 100644 steps/perl-5.12.5/sources diff --git a/steps/manifest b/steps/manifest index 578b4ac4..c3e3742f 100644 --- a/steps/manifest +++ b/steps/manifest @@ -155,17 +155,18 @@ build: mpc-1.2.1 build: flex-2.5.33 build: bison-2.3 build: bison-3.4.2 +build: zlib-1.2.13 build: dist-3.5 build: perl-Devel-Tokenizer-C-0.11 build: perl-5.8.9 -build: perl-5.10.1 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.12.5 build: perl-5.32.1 uninstall: perl-5.6.2 perl-5.10.1 build: libarchive-3.5.2 build: openssl-3.0.13 build: ca-certificates-3.99 build: curl-8.12.1 -build: zlib-1.2.13 build: automake-1.16.3 build: autoconf-2.71 build: patch-2.7.6 diff --git a/steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in b/steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..3bbcf2f4 --- /dev/null +++ b/steps/perl-5.12.5/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.12.5/pass1.sh b/steps/perl-5.12.5/pass1.sh new file mode 100755 index 00000000..d774fec0 --- /dev/null +++ b/steps/perl-5.12.5/pass1.sh @@ -0,0 +1,98 @@ +# 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 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 + 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 + + # toke.c Perl_keyword + # bit before the generated bit + sed '/The following code was generated/,$d' toke.c | head -n -1 > toke.c.new + perl perl_keyword.pl >> toke.c.new + # bit after the generated bit + # sed with two -e does not appear to be working with our sed + sed '1,/The following code was generated/d' toke.c | sed '1,/^}$/d' >> toke.c.new + mv toke.c.new toke.c + + # Regenerate other prebuilt header files + # Taken from headers of regen scripts + rm lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c pp.sym \ + overload.h overload.c opcode.h opnames.h pp_proto.h \ + keywords.h embed.h embedvar.h global.sym perlapi.c perlapi.h \ + proto.h lib/overload/numbers.pm regcharclass.h perly.{tab,h,act} + perl regen.pl + perl regen_perly.pl -b bison-2.3 + touch regcharclass.h + perl Porting/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=':' \ + -Dccflags="-U__DATE__ -U__TIME__" \ + -Darchname="i386-linux" \ + -Dmyhostname="(none)" \ + -Dmaildomain="(none)" + + # For some reason Configure fails to generate x2p/Makefile + # wrong metaconfig version? not bothered to figure out + pushd x2p + ./Makefile.SH + make depend + 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.12.5/patches/a2p-c-bison.patch b/steps/perl-5.12.5/patches/a2p-c-bison.patch new file mode 100644 index 00000000..2b5a5aa3 --- /dev/null +++ b/steps/perl-5.12.5/patches/a2p-c-bison.patch @@ -0,0 +1,11 @@ +--- perl-5.12.5/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 ++++ perl-5.12.5/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.12.5/sources b/steps/perl-5.12.5/sources new file mode 100644 index 00000000..403b181e --- /dev/null +++ b/steps/perl-5.12.5/sources @@ -0,0 +1,2 @@ +https://www.cpan.org/src/5.0/perl-5.12.5.tar.bz2 10749417fd3010aae320a34181ad4cd6a4855c1fc63403b87fa4d630b18e966c +git://github.com/Perl/metaconfig~7ae9aa2926eed6b1f0b68b0e61c80a0f39b14a25 https://github.com/Perl/metaconfig/archive/7ae9aa2926eed6b1f0b68b0e61c80a0f39b14a25.tar.gz 08a10e266927ebce7fe8cd24122b9d1274a173c57170414545633ebebd77d65c From 1b6d89f9b498d8f0b9d0dfd476a507461ed52d29 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 21 Aug 2025 22:06:52 +1000 Subject: [PATCH 09/64] Add perl 5.15.7 --- steps/manifest | 2 + .../files/Compress-Raw-Zlib_config.in | 5 + steps/perl-5.15.7/pass1.sh | 100 ++++++++++++++++++ ..._invlist-Allow-to-return-internal-pr.patch | 45 ++++++++ .../patches/5.14_mk_PL_charclass.patch | 13 +++ steps/perl-5.15.7/patches/a2p-c-bison.patch | 11 ++ steps/perl-5.15.7/sources | 2 + steps/perl-Devel-Tokenizer-C-0.11/pass3.sh | 1 + 8 files changed, 179 insertions(+) create mode 100644 steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.15.7/pass1.sh create mode 100644 steps/perl-5.15.7/patches/0001-Unicode-UCD-prop_invlist-Allow-to-return-internal-pr.patch create mode 100644 steps/perl-5.15.7/patches/5.14_mk_PL_charclass.patch create mode 100644 steps/perl-5.15.7/patches/a2p-c-bison.patch create mode 100644 steps/perl-5.15.7/sources create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass3.sh diff --git a/steps/manifest b/steps/manifest index c3e3742f..057c3ca0 100644 --- a/steps/manifest +++ b/steps/manifest @@ -161,6 +161,8 @@ build: perl-Devel-Tokenizer-C-0.11 build: perl-5.8.9 build: perl-Devel-Tokenizer-C-0.11 build: perl-5.12.5 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.15.7 build: perl-5.32.1 uninstall: perl-5.6.2 perl-5.10.1 build: libarchive-3.5.2 diff --git a/steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in b/steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..3bbcf2f4 --- /dev/null +++ b/steps/perl-5.15.7/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.15.7/pass1.sh b/steps/perl-5.15.7/pass1.sh new file mode 100755 index 00000000..72f6a066 --- /dev/null +++ b/steps/perl-5.15.7/pass1.sh @@ -0,0 +1,100 @@ +# 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 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 + + # Regenerate other prebuilt header files + # Taken from headers of regen scripts + rm 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 + perl regen.pl + perl regen_perly.pl -b bison-2.3 + perl regen/keywords.pl + perl regen/mk_PL_charclass.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 \ + -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 + + # As this is a development version it does not install a perl symlink + ln -s perl5.15.7 "${DESTDIR}/${PREFIX}/bin/perl" + + # Remove messed up manpages + rm "${DESTDIR}/"*.0 +} diff --git a/steps/perl-5.15.7/patches/0001-Unicode-UCD-prop_invlist-Allow-to-return-internal-pr.patch b/steps/perl-5.15.7/patches/0001-Unicode-UCD-prop_invlist-Allow-to-return-internal-pr.patch new file mode 100644 index 00000000..f10b0ac5 --- /dev/null +++ b/steps/perl-5.15.7/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.15.7/lib/Unicode/UCD.pm perl-5.15.7/lib/Unicode/UCD.pm +index 17b4fead23..a809c21adc 100644 +--- perl-5.15.7/lib/Unicode/UCD.pm ++++ perl-5.15.7/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.15.7/patches/5.14_mk_PL_charclass.patch b/steps/perl-5.15.7/patches/5.14_mk_PL_charclass.patch new file mode 100644 index 00000000..400bcc17 --- /dev/null +++ b/steps/perl-5.15.7/patches/5.14_mk_PL_charclass.patch @@ -0,0 +1,13 @@ +diff --git perl-5.15.7/regen/mk_PL_charclass.pl perl-5.15.7/regen/mk_PL_charclass.pl +index a2f837fefc..f777ffe74d 100644 +--- perl-5.15.7/regen/mk_PL_charclass.pl ++++ perl-5.15.7/regen/mk_PL_charclass.pl +@@ -64,7 +64,7 @@ while (<$fh>) { + # Lines look like (without the initial '#' + #0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE + # Get rid of comments, ignore blank or comment-only lines +- my $line = $_ =~ s/ (?: \s* \# .* )? $ //rx; ++ my $line = $_ =~ s/ (?: \s* \# .* )? $ //x; + next unless length $line; + my ($hex_from, $fold_type, @folded) = split /[\s;]+/, $line; + diff --git a/steps/perl-5.15.7/patches/a2p-c-bison.patch b/steps/perl-5.15.7/patches/a2p-c-bison.patch new file mode 100644 index 00000000..4e18bab1 --- /dev/null +++ b/steps/perl-5.15.7/patches/a2p-c-bison.patch @@ -0,0 +1,11 @@ +--- perl-5.15.7/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 ++++ perl-5.15.7/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.15.7/sources b/steps/perl-5.15.7/sources new file mode 100644 index 00000000..8ea09bd7 --- /dev/null +++ b/steps/perl-5.15.7/sources @@ -0,0 +1,2 @@ +https://www.cpan.org/src/5.0/perl-5.15.7.tar.bz2 331fcc356fccfc47e86ed09c20c081858f9466e419324007a7578441f861177c +git://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass3.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass3.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass3.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file From 22ba86b6c319a2b6c82914e77e6f3fd757c30db8 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sat, 23 Aug 2025 11:45:11 +1000 Subject: [PATCH 10/64] Add perl 5.16.3 --- .../files/Compress-Raw-Zlib_config.in | 5 + steps/perl-5.16.3/pass1.sh | 102 ++++++++++++++++++ ..._class_tab.h-Add-field-for-quotemeta.patch | 35 ++++++ steps/perl-5.16.3/patches/a2p-c-bison.patch | 11 ++ steps/perl-5.16.3/sources | 2 + 5 files changed, 155 insertions(+) create mode 100644 steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.16.3/pass1.sh create mode 100644 steps/perl-5.16.3/patches/0001-Revert-l1_char_class_tab.h-Add-field-for-quotemeta.patch create mode 100644 steps/perl-5.16.3/patches/a2p-c-bison.patch create mode 100644 steps/perl-5.16.3/sources diff --git a/steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in b/steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..3bbcf2f4 --- /dev/null +++ b/steps/perl-5.16.3/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.16.3/pass1.sh b/steps/perl-5.16.3/pass1.sh new file mode 100755 index 00000000..952ba603 --- /dev/null +++ b/steps/perl-5.16.3/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 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 + + # Regenerate other prebuilt header files + # Taken from headers of regen scripts + rm 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 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/regcharclass.pl + perl regen/mk_invlists.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=':' \ + -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 + + # install regcharclass.h to the filesystem + # This is for the following version of perl, because the bootstrapping story + # is incredibly bad there! + #cp regcharclass.h "${DESTDIR}/${PREFIX}/lib/perl5/5.16.3/regcharclass.h" + + # Remove messed up manpages + rm "${DESTDIR}/"*.0 +} diff --git a/steps/perl-5.16.3/patches/0001-Revert-l1_char_class_tab.h-Add-field-for-quotemeta.patch b/steps/perl-5.16.3/patches/0001-Revert-l1_char_class_tab.h-Add-field-for-quotemeta.patch new file mode 100644 index 00000000..1fa9d6ef --- /dev/null +++ b/steps/perl-5.16.3/patches/0001-Revert-l1_char_class_tab.h-Add-field-for-quotemeta.patch @@ -0,0 +1,35 @@ +From c7c816ac94667bf4ed1e6185ed79a70aeabaee97 Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Thu, 21 Aug 2025 21:53:47 +1000 +Subject: [PATCH] Revert "l1_char_class_tab.h: Add field for quotemeta" + +This reverts commit 9a022f3a9e4bafe265086ebafcf8f6990108aa57. +--- + l1_char_class_tab.h | 234 +++++++++++++++++++-------------------- + regen/mk_PL_charclass.pl | 3 - + 2 files changed, 117 insertions(+), 120 deletions(-) + +diff --git perl-5.16.3/regen/mk_PL_charclass.pl perl-5.16.3/regen/mk_PL_charclass.pl +index b903fbe1f0..a2f837fefc 100644 +--- perl-5.16.3/regen/mk_PL_charclass.pl ++++ perl-5.16.3/regen/mk_PL_charclass.pl +@@ -52,7 +52,6 @@ my @properties = qw( + WORDCHAR_A + WORDCHAR_L1 + XDIGIT_A +- QUOTEMETA + ); + + # Read in the case fold mappings. +@@ -140,8 +139,6 @@ for my $ord (0..255) { + $re = qr/\p{Alnum}/; + } elsif ($name eq 'OCTAL') { + $re = qr/[0-7]/; +- } elsif ($name eq 'QUOTEMETA') { +- $re = qr/\p{_Perl_Quotemeta}/; + } else { # The remainder have the same name and values as Unicode + $re = eval "qr/\\p{$name}/"; + use Carp; +-- +2.49.1 + diff --git a/steps/perl-5.16.3/patches/a2p-c-bison.patch b/steps/perl-5.16.3/patches/a2p-c-bison.patch new file mode 100644 index 00000000..451c2cdb --- /dev/null +++ b/steps/perl-5.16.3/patches/a2p-c-bison.patch @@ -0,0 +1,11 @@ +--- perl-5.16.3/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 ++++ perl-5.16.3/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.16.3/sources b/steps/perl-5.16.3/sources new file mode 100644 index 00000000..fab708dd --- /dev/null +++ b/steps/perl-5.16.3/sources @@ -0,0 +1,2 @@ +https://www.cpan.org/src/5.0/perl-5.16.3.tar.bz2 bb7bc735e6813b177dcfccd480defcde7eddefa173b5967eac11babd1bfa98e8 +git://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 From 98af97b255f51215beedb0b4e7573862ac2f534e Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sat, 23 Aug 2025 11:45:18 +1000 Subject: [PATCH 11/64] 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 From 77392fa5abae762bd348eeaecb2041bcbf80869c Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sat, 23 Aug 2025 11:45:25 +1000 Subject: [PATCH 12/64] Add perl 5.17.4 --- .../files/Compress-Raw-Zlib_config.in | 5 + steps/perl-5.17.4/pass1.sh | 103 ++++ ...charclass.pl-Generate-macros-for-X-p.patch | 53 ++ ....c-Use-new-macros-instead-of-swashes.patch | 464 ++++++++++++++++++ ...e-macro-not-swash-for-utf8-quotemeta.patch | 102 ++++ ...t-Upgrade-Socket-from-2.004-to-2.006.patch | 270 ++++++++++ .../0012-Revert-Upgrade-Socket-to-2.004.patch | 69 +++ ...t-Upgrade-Socket-from-2.002-to-2.003.patch | 270 ++++++++++ .../0014-Revert-Upgrade-Socket-to-2.002.patch | 344 +++++++++++++ steps/perl-5.17.4/patches/a2p-c-bison.patch | 11 + .../patches/duplicate-invlists-defn.patch | 10 + steps/perl-5.17.4/reenable-regcharclass.patch | 17 + steps/perl-5.17.4/sources | 2 + 13 files changed, 1720 insertions(+) create mode 100644 steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.17.4/pass1.sh create mode 100644 steps/perl-5.17.4/patches/0001-Revert-regen-regcharclass.pl-Generate-macros-for-X-p.patch create mode 100644 steps/perl-5.17.4/patches/0002-Revert-regexec.c-Use-new-macros-instead-of-swashes.patch create mode 100644 steps/perl-5.17.4/patches/0003-Revert-Use-macro-not-swash-for-utf8-quotemeta.patch create mode 100644 steps/perl-5.17.4/patches/0011-Revert-Upgrade-Socket-from-2.004-to-2.006.patch create mode 100644 steps/perl-5.17.4/patches/0012-Revert-Upgrade-Socket-to-2.004.patch create mode 100644 steps/perl-5.17.4/patches/0013-Revert-Upgrade-Socket-from-2.002-to-2.003.patch create mode 100644 steps/perl-5.17.4/patches/0014-Revert-Upgrade-Socket-to-2.002.patch create mode 100644 steps/perl-5.17.4/patches/a2p-c-bison.patch create mode 100644 steps/perl-5.17.4/patches/duplicate-invlists-defn.patch create mode 100644 steps/perl-5.17.4/reenable-regcharclass.patch create mode 100644 steps/perl-5.17.4/sources diff --git a/steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in b/steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..3bbcf2f4 --- /dev/null +++ b/steps/perl-5.17.4/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.4/pass1.sh b/steps/perl-5.17.4/pass1.sh new file mode 100755 index 00000000..464b14f5 --- /dev/null +++ b/steps/perl-5.17.4/pass1.sh @@ -0,0 +1,103 @@ +# 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/unicode_constants.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.4/patches/0001-Revert-regen-regcharclass.pl-Generate-macros-for-X-p.patch b/steps/perl-5.17.4/patches/0001-Revert-regen-regcharclass.pl-Generate-macros-for-X-p.patch new file mode 100644 index 00000000..c2b001c5 --- /dev/null +++ b/steps/perl-5.17.4/patches/0001-Revert-regen-regcharclass.pl-Generate-macros-for-X-p.patch @@ -0,0 +1,53 @@ +From 914c32b1b85e310c832192ef133d2eb8b7108bfa Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Fri, 22 Aug 2025 23:38:59 +1000 +Subject: [PATCH] Revert "regen/regcharclass.pl: Generate macros for \X + processing" + +This reverts commit 612ead590b8b5f05e4060738540192ece946c340. +--- + regen/regcharclass.pl | 28 ---------------------------- + 1 file changed, 28 deletions(-) + +diff --git perl-5.17.4/regen/regcharclass.pl perl-5.17.4/regen/regcharclass.pl +index 7d126428ef..e11b97003e 100755 +--- perl-5.17.4/regen/regcharclass.pl ++++ perl-5.17.4/regen/regcharclass.pl +@@ -1133,34 +1133,6 @@ SURROGATE: Surrogate characters + => UTF8 :fast + \p{Gc=Cs} + +-GCB_L: Grapheme_Cluster_Break=L +-=> UTF8 :fast +-\p{_X_GCB_L} +- +-GCB_LV_LVT_V: Grapheme_Cluster_Break=(LV or LVT or V) +-=> UTF8 :fast +-\p{_X_LV_LVT_V} +- +-GCB_Prepend: Grapheme_Cluster_Break=Prepend +-=> UTF8 :fast +-\p{_X_GCB_Prepend} +- +-GCB_RI: Grapheme_Cluster_Break=RI +-=> UTF8 :fast +-\p{_X_RI} +- +-GCB_SPECIAL_BEGIN: Grapheme_Cluster_Break=special_begins +-=> UTF8 :fast +-\p{_X_Special_Begin} +- +-GCB_T: Grapheme_Cluster_Break=T +-=> UTF8 :fast +-\p{_X_GCB_T} +- +-GCB_V: Grapheme_Cluster_Break=V +-=> UTF8 :fast +-\p{_X_GCB_V} +- + # This program was run with this enabled, and the results copied to utf8.h; + # then this was commented out because it takes so long to figure out these 2 + # million code points. The results would not change unless utf8.h decides it +-- +2.49.1 + diff --git a/steps/perl-5.17.4/patches/0002-Revert-regexec.c-Use-new-macros-instead-of-swashes.patch b/steps/perl-5.17.4/patches/0002-Revert-regexec.c-Use-new-macros-instead-of-swashes.patch new file mode 100644 index 00000000..064ddcde --- /dev/null +++ b/steps/perl-5.17.4/patches/0002-Revert-regexec.c-Use-new-macros-instead-of-swashes.patch @@ -0,0 +1,464 @@ +From 1bfcdd572f51f5db59c6c3b91f28c5b3141215bb Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Fri, 22 Aug 2025 17:24:24 +1000 +Subject: [PATCH] Revert "regexec.c: Use new macros instead of swashes" + +This reverts commit 45fdf108c5f4d5c719b8d2f7389c81e54795bad7. +--- + embed.fnc | 9 ++ + embedvar.h | 7 ++ + intrpvar.h | 7 ++ + regen/unicode_constants.pl | 3 + + regexec.c | 78 ++++++++++------ + sv.c | 8 ++ + utf8.c | 180 +++++++++++++++++++++++++++++++++++++ + 7 files changed, 265 insertions(+), 27 deletions(-) + +diff --git perl-5.17.4/embed.fnc perl-5.17.4/embed.fnc +index 0db9300b3b..e45e6889c9 100644 +--- perl-5.17.4/embed.fnc ++++ perl-5.17.4/embed.fnc +@@ -660,7 +660,16 @@ ApR |bool |is_utf8_punct |NN const U8 *p + ApR |bool |is_utf8_xdigit |NN const U8 *p + ApR |bool |is_utf8_mark |NN const U8 *p + EXpR |bool |is_utf8_X_extend |NN const U8 *p ++EXpR |bool |is_utf8_X_prepend |NN const U8 *p + EXpR |bool |is_utf8_X_regular_begin|NN const U8 *p ++EXpR |bool |is_utf8_X_special_begin|NN const U8 *p ++EXpR |bool |is_utf8_X_L |NN const U8 *p ++EXpR |bool |is_utf8_X_RI |NN const U8 *p ++:not currently used EXpR |bool |is_utf8_X_LV |NN const U8 *p ++EXpR |bool |is_utf8_X_LVT |NN const U8 *p ++EXpR |bool |is_utf8_X_LV_LVT_V |NN const U8 *p ++EXpR |bool |is_utf8_X_T |NN const U8 *p ++EXpR |bool |is_utf8_X_V |NN const U8 *p + : Used in perly.y + p |OP* |jmaybe |NN OP *o + : Used in pp.c +diff --git perl-5.17.4/embedvar.h perl-5.17.4/embedvar.h +index b9fabab437..f306f2f2f7 100644 +--- perl-5.17.4/embedvar.h ++++ perl-5.17.4/embedvar.h +@@ -353,9 +353,16 @@ + #define PL_unitcheckav_save (vTHX->Iunitcheckav_save) + #define PL_unlockhook (vTHX->Iunlockhook) + #define PL_unsafe (vTHX->Iunsafe) ++#define PL_utf8_X_L (vTHX->Iutf8_X_L) + #define PL_utf8_X_LVT (vTHX->Iutf8_X_LVT) ++#define PL_utf8_X_LV_LVT_V (vTHX->Iutf8_X_LV_LVT_V) ++#define PL_utf8_X_RI (vTHX->Iutf8_X_RI) ++#define PL_utf8_X_T (vTHX->Iutf8_X_T) ++#define PL_utf8_X_V (vTHX->Iutf8_X_V) + #define PL_utf8_X_extend (vTHX->Iutf8_X_extend) ++#define PL_utf8_X_prepend (vTHX->Iutf8_X_prepend) + #define PL_utf8_X_regular_begin (vTHX->Iutf8_X_regular_begin) ++#define PL_utf8_X_special_begin (vTHX->Iutf8_X_special_begin) + #define PL_utf8_alnum (vTHX->Iutf8_alnum) + #define PL_utf8_alpha (vTHX->Iutf8_alpha) + #define PL_utf8_blank (vTHX->Iutf8_blank) +diff --git perl-5.17.4/intrpvar.h perl-5.17.4/intrpvar.h +index 40a6aa1e9d..e306ebbb31 100644 +--- perl-5.17.4/intrpvar.h ++++ perl-5.17.4/intrpvar.h +@@ -628,7 +628,14 @@ PERLVAR(I, utf8_xdigit, SV *) + PERLVAR(I, utf8_mark, SV *) + PERLVAR(I, utf8_X_regular_begin, SV *) + PERLVAR(I, utf8_X_extend, SV *) ++PERLVAR(I, utf8_X_prepend, SV *) ++PERLVAR(I, utf8_X_special_begin, SV *) ++PERLVAR(I, utf8_X_L, SV *) + PERLVAR(I, utf8_X_LVT, SV *) ++PERLVAR(I, utf8_X_RI, SV *) ++PERLVAR(I, utf8_X_T, SV *) ++PERLVAR(I, utf8_X_V, SV *) ++PERLVAR(I, utf8_X_LV_LVT_V, SV *) + PERLVAR(I, utf8_toupper, SV *) + PERLVAR(I, utf8_totitle, SV *) + PERLVAR(I, utf8_tolower, SV *) +diff --git perl-5.17.4/regen/unicode_constants.pl perl-5.17.4/regen/unicode_constants.pl +index e3d588a599..ab1ab8f326 100644 +--- perl-5.17.4/regen/unicode_constants.pl ++++ perl-5.17.4/regen/unicode_constants.pl +@@ -134,6 +134,9 @@ __DATA__ + 03C5 first + 03C5 tail + ++1100 ++1160 ++11A8 + 2010 string + D800 first FIRST_SURROGATE + +diff --git perl-5.17.4/regexec.c perl-5.17.4/regexec.c +index f207cdaf88..2676ebb92e 100644 +--- perl-5.17.4/regexec.c ++++ perl-5.17.4/regexec.c +@@ -145,7 +145,14 @@ + /* No asserts are done for some of these, in case called on a */ \ + /* Unicode version in which they map to nothing */ \ + LOAD_UTF8_CHARCLASS(X_regular_begin, HYPHEN_UTF8); \ ++ LOAD_UTF8_CHARCLASS_NO_CHECK(X_special_begin); \ + LOAD_UTF8_CHARCLASS(X_extend, COMBINING_GRAVE_ACCENT_UTF8); \ ++ LOAD_UTF8_CHARCLASS_NO_CHECK(X_prepend);/* empty in most releases*/ \ ++ LOAD_UTF8_CHARCLASS(X_L, HANGUL_CHOSEONG_KIYEOK_UTF8); \ ++ LOAD_UTF8_CHARCLASS(X_LV_LVT_V, HANGUL_JUNGSEONG_FILLER_UTF8); \ ++ LOAD_UTF8_CHARCLASS_NO_CHECK(X_RI); /* empty in many releases */ \ ++ LOAD_UTF8_CHARCLASS(X_T, HANGUL_JONGSEONG_KIYEOK_UTF8); \ ++ LOAD_UTF8_CHARCLASS(X_V, HANGUL_JUNGSEONG_FILLER_UTF8) + + #define PLACEHOLDER /* Something for the preprocessor to grab onto */ + +@@ -4084,8 +4091,6 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog) + locinput += 2; + } + else { +- STRLEN len; +- + /* In case have to backtrack to beginning, then match '.' */ + char *starting = locinput; + +@@ -4094,12 +4099,16 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog) + + LOAD_UTF8_CHARCLASS_GCB(); + +- /* Match (prepend)* */ +- while (locinput < PL_regeol +- && (len = is_GCB_Prepend_utf8(locinput))) +- { +- previous_prepend = locinput; +- locinput += len; ++ /* Match (prepend)*, but don't bother trying if empty (as ++ * being set to _undef indicates) */ ++ if (PL_utf8_X_prepend != &PL_sv_undef) { ++ while (locinput < PL_regeol ++ && swash_fetch(PL_utf8_X_prepend, ++ (U8*)locinput, utf8_target)) ++ { ++ previous_prepend = locinput; ++ locinput += UTF8SKIP(locinput); ++ } + } + + /* As noted above, if we matched a prepend character, but +@@ -4109,7 +4118,8 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog) + && (locinput >= PL_regeol + || (! swash_fetch(PL_utf8_X_regular_begin, + (U8*)locinput, utf8_target) +- && ! is_GCB_SPECIAL_BEGIN_utf8(locinput))) ++ && ! swash_fetch(PL_utf8_X_special_begin, ++ (U8*)locinput, utf8_target))) + ) + { + locinput = previous_prepend; +@@ -4124,7 +4134,9 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog) + (U8*)locinput, utf8_target)) { + locinput += UTF8SKIP(locinput); + } +- else if (! is_GCB_SPECIAL_BEGIN_utf8(locinput)) { ++ else if (! swash_fetch(PL_utf8_X_special_begin, ++ (U8*)locinput, utf8_target)) ++ { + + /* Here did not match the required 'Begin' in the + * second term. So just match the very first +@@ -4136,20 +4148,26 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog) + /* Here is a special begin. It can be composed of + * several individual characters. One possibility is + * RI+ */ +- if ((len = is_GCB_RI_utf8(locinput))) { +- locinput += len; ++ if (swash_fetch(PL_utf8_X_RI, ++ (U8*)locinput, utf8_target)) ++ { ++ locinput += UTF8SKIP(locinput); + while (locinput < PL_regeol +- && (len = is_GCB_RI_utf8(locinput))) ++ && swash_fetch(PL_utf8_X_RI, ++ (U8*)locinput, utf8_target)) + { +- locinput += len; ++ locinput += UTF8SKIP(locinput); + } +- } else if ((len = is_GCB_T_utf8(locinput))) { +- /* Another possibility is T+ */ +- locinput += len; ++ } else /* Another possibility is T+ */ ++ if (swash_fetch(PL_utf8_X_T, ++ (U8*)locinput, utf8_target)) ++ { ++ locinput += UTF8SKIP(locinput); + while (locinput < PL_regeol +- && (len = is_GCB_T_utf8(locinput))) ++ && swash_fetch(PL_utf8_X_T, ++ (U8*)locinput, utf8_target)) + { +- locinput += len; ++ locinput += UTF8SKIP(locinput); + } + } else { + +@@ -4160,9 +4178,10 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog) + + /* Match L* */ + while (locinput < PL_regeol +- && (len = is_GCB_L_utf8(locinput))) ++ && swash_fetch(PL_utf8_X_L, ++ (U8*)locinput, utf8_target)) + { +- locinput += len; ++ locinput += UTF8SKIP(locinput); + } + + /* Here, have exhausted L*. If the next character +@@ -4172,7 +4191,8 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog) + * Are done. */ + + if (locinput < PL_regeol +- && is_GCB_LV_LVT_V_utf8(locinput)) ++ && swash_fetch(PL_utf8_X_LV_LVT_V, ++ (U8*)locinput, utf8_target)) + { + + /* Otherwise keep going. Must be LV, LVT or V. +@@ -4185,18 +4205,22 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog) + * V* */ + locinput += UTF8SKIP(locinput); + while (locinput < PL_regeol +- && (len = is_GCB_V_utf8(locinput))) ++ && swash_fetch(PL_utf8_X_V, ++ (U8*)locinput, ++ utf8_target)) + { +- locinput += len; ++ locinput += UTF8SKIP(locinput); + } + } + + /* And any of LV, LVT, or V can be followed +- * by T* */ ++ * by T* */ + while (locinput < PL_regeol +- && (len = is_GCB_T_utf8(locinput))) ++ && swash_fetch(PL_utf8_X_T, ++ (U8*)locinput, ++ utf8_target)) + { +- locinput += len; ++ locinput += UTF8SKIP(locinput); + } + } + } +diff --git perl-5.17.4/sv.c perl-5.17.4/sv.c +index 89699be4b2..b22e728275 100644 +--- perl-5.17.4/sv.c ++++ perl-5.17.4/sv.c +@@ -13379,7 +13379,15 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags, + PL_utf8_mark = sv_dup_inc(proto_perl->Iutf8_mark, param); + PL_utf8_X_regular_begin = sv_dup_inc(proto_perl->Iutf8_X_regular_begin, param); + PL_utf8_X_extend = sv_dup_inc(proto_perl->Iutf8_X_extend, param); ++ PL_utf8_X_prepend = sv_dup_inc(proto_perl->Iutf8_X_prepend, param); ++ PL_utf8_X_special_begin = sv_dup_inc(proto_perl->Iutf8_X_special_begin, param); ++ PL_utf8_X_L = sv_dup_inc(proto_perl->Iutf8_X_L, param); ++ /*not currently used: PL_utf8_X_LV = sv_dup_inc(proto_perl->Iutf8_X_LV, param);*/ + PL_utf8_X_LVT = sv_dup_inc(proto_perl->Iutf8_X_LVT, param); ++ PL_utf8_X_RI = sv_dup_inc(proto_perl->Iutf8_X_RI, param); ++ PL_utf8_X_T = sv_dup_inc(proto_perl->Iutf8_X_T, param); ++ PL_utf8_X_V = sv_dup_inc(proto_perl->Iutf8_X_V, param); ++ PL_utf8_X_LV_LVT_V = sv_dup_inc(proto_perl->Iutf8_X_LV_LVT_V, param); + PL_utf8_toupper = sv_dup_inc(proto_perl->Iutf8_toupper, param); + PL_utf8_totitle = sv_dup_inc(proto_perl->Iutf8_totitle, param); + PL_utf8_tolower = sv_dup_inc(proto_perl->Iutf8_tolower, param); +diff --git perl-5.17.4/utf8.c perl-5.17.4/utf8.c +index 660002388f..2172d311b4 100644 +--- perl-5.17.4/utf8.c ++++ perl-5.17.4/utf8.c +@@ -2229,6 +2229,186 @@ Perl_is_utf8_X_extend(pTHX_ const U8 *p) + return is_utf8_common(p, &PL_utf8_X_extend, "_X_Extend"); + } + ++bool ++Perl_is_utf8_X_prepend(pTHX_ const U8 *p) ++{ ++ /* If no code points in the Unicode version being worked on match ++ * GCB=Prepend, this will set PL_utf8_X_prepend to &PL_sv_undef during its ++ * first call. Otherwise, it will set it to a swash created for it. ++ * swash_fetch() hence can't be used without checking first if it is valid ++ * to do so. */ ++ ++ dVAR; ++ bool initialized = cBOOL(PL_utf8_X_prepend); ++ bool ret; ++ ++ PERL_ARGS_ASSERT_IS_UTF8_X_PREPEND; ++ ++ if (PL_utf8_X_prepend == &PL_sv_undef) { ++ return FALSE; ++ } ++ ++ if ((ret = is_utf8_common(p, &PL_utf8_X_prepend, "_X_GCB_Prepend")) ++ || initialized) ++ { ++ return ret; ++ } ++ ++ /* Here the code point being checked was not a prepend, and we hadn't ++ * initialized PL_utf8_X_prepend, so we don't know if it is just this ++ * particular input code point that didn't match, or if the table is ++ * completely empty. The is_utf8_common() call did the initialization, so ++ * we can inspect the swash's inversion list to find out. If there are no ++ * elements in its inversion list, it's empty, and nothing will ever match, ++ * so set things up so we can skip the check in future calls. */ ++ if (_invlist_len(_get_swash_invlist(PL_utf8_X_prepend)) == 0) { ++ SvREFCNT_dec(PL_utf8_X_prepend); ++ PL_utf8_X_prepend = &PL_sv_undef; ++ } ++ ++ return FALSE; ++} ++ ++bool ++Perl_is_utf8_X_special_begin(pTHX_ const U8 *p) ++{ ++ dVAR; ++ ++ PERL_ARGS_ASSERT_IS_UTF8_X_SPECIAL_BEGIN; ++ ++ return is_utf8_common(p, &PL_utf8_X_special_begin, "_X_Special_Begin"); ++} ++ ++bool ++Perl_is_utf8_X_L(pTHX_ const U8 *p) ++{ ++ dVAR; ++ ++ PERL_ARGS_ASSERT_IS_UTF8_X_L; ++ ++ return is_utf8_common(p, &PL_utf8_X_L, "_X_GCB_L"); ++} ++ ++bool ++Perl_is_utf8_X_RI(pTHX_ const U8 *p) ++{ ++ dVAR; ++ ++ PERL_ARGS_ASSERT_IS_UTF8_X_RI; ++ ++ return is_utf8_common(p, &PL_utf8_X_RI, "_X_RI"); ++} ++ ++/* These constants are for finding GCB=LV and GCB=LVT. These are for the ++ * pre-composed Hangul syllables, which are all in a contiguous block and ++ * arranged there in such a way so as to facilitate alorithmic determination of ++ * their characteristics. As such, they don't need a swash, but can be ++ * determined by simple arithmetic. Almost all are GCB=LVT, but every 28th one ++ * is a GCB=LV */ ++#define SBASE 0xAC00 /* Start of block */ ++#define SCount 11172 /* Length of block */ ++#define TCount 28 ++ ++#if 0 /* This routine is not currently used */ ++bool ++Perl_is_utf8_X_LV(pTHX_ const U8 *p) ++{ ++ /* Unlike most other similarly named routines here, this does not create a ++ * swash, so swash_fetch() cannot be used on PL_utf8_X_LV. */ ++ ++ dVAR; ++ ++ UV cp = valid_utf8_to_uvchr(p, NULL); ++ ++ PERL_ARGS_ASSERT_IS_UTF8_X_LV; ++ ++ /* The earliest Unicode releases did not have these precomposed Hangul ++ * syllables. Set to point to undef in that case, so will return false on ++ * every call */ ++ if (! PL_utf8_X_LV) { /* Set up if this is the first time called */ ++ PL_utf8_X_LV = swash_init("utf8", "_X_GCB_LV", &PL_sv_undef, 1, 0); ++ if (_invlist_len(_get_swash_invlist(PL_utf8_X_LV)) == 0) { ++ SvREFCNT_dec(PL_utf8_X_LV); ++ PL_utf8_X_LV = &PL_sv_undef; ++ } ++ } ++ ++ return (PL_utf8_X_LV != &PL_sv_undef ++ && cp >= SBASE && cp < SBASE + SCount ++ && (cp - SBASE) % TCount == 0); /* Only every TCount one is LV */ ++} ++#endif ++ ++bool ++Perl_is_utf8_X_LVT(pTHX_ const U8 *p) ++{ ++ /* Unlike most other similarly named routines here, this does not create a ++ * swash, so swash_fetch() cannot be used on PL_utf8_X_LVT. */ ++ ++ dVAR; ++ ++ UV cp = valid_utf8_to_uvchr(p, NULL); ++ ++ PERL_ARGS_ASSERT_IS_UTF8_X_LVT; ++ ++ /* The earliest Unicode releases did not have these precomposed Hangul ++ * syllables. Set to point to undef in that case, so will return false on ++ * every call */ ++ if (! PL_utf8_X_LVT) { /* Set up if this is the first time called */ ++ PL_utf8_X_LVT = swash_init("utf8", "_X_GCB_LVT", &PL_sv_undef, 1, 0); ++ if (_invlist_len(_get_swash_invlist(PL_utf8_X_LVT)) == 0) { ++ SvREFCNT_dec(PL_utf8_X_LVT); ++ PL_utf8_X_LVT = &PL_sv_undef; ++ } ++ } ++ ++ return (PL_utf8_X_LVT != &PL_sv_undef ++ && cp >= SBASE && cp < SBASE + SCount ++ && (cp - SBASE) % TCount != 0); /* All but every TCount one is LV */ ++} ++ ++bool ++Perl_is_utf8_X_T(pTHX_ const U8 *p) ++{ ++ dVAR; ++ ++ PERL_ARGS_ASSERT_IS_UTF8_X_T; ++ ++ return is_utf8_common(p, &PL_utf8_X_T, "_X_GCB_T"); ++} ++ ++bool ++Perl_is_utf8_X_V(pTHX_ const U8 *p) ++{ ++ dVAR; ++ ++ PERL_ARGS_ASSERT_IS_UTF8_X_V; ++ ++ return is_utf8_common(p, &PL_utf8_X_V, "_X_GCB_V"); ++} ++ ++bool ++Perl_is_utf8_X_LV_LVT_V(pTHX_ const U8 *p) ++{ ++ dVAR; ++ ++ PERL_ARGS_ASSERT_IS_UTF8_X_LV_LVT_V; ++ ++ return is_utf8_common(p, &PL_utf8_X_LV_LVT_V, "_X_LV_LVT_V"); ++} ++ ++bool ++Perl__is_utf8_quotemeta(pTHX_ const U8 *p) ++{ ++ /* For exclusive use of pp_quotemeta() */ ++ ++ dVAR; ++ ++ PERL_ARGS_ASSERT__IS_UTF8_QUOTEMETA; ++ ++ return is_utf8_common(p, &PL_utf8_quotemeta, "_Perl_Quotemeta"); ++} ++ + /* + =for apidoc to_utf8_case + +-- +2.49.1 + diff --git a/steps/perl-5.17.4/patches/0003-Revert-Use-macro-not-swash-for-utf8-quotemeta.patch b/steps/perl-5.17.4/patches/0003-Revert-Use-macro-not-swash-for-utf8-quotemeta.patch new file mode 100644 index 00000000..54dde26f --- /dev/null +++ b/steps/perl-5.17.4/patches/0003-Revert-Use-macro-not-swash-for-utf8-quotemeta.patch @@ -0,0 +1,102 @@ +From 070b9010ff7a44dbdce15dfea579089bfbdff821 Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Fri, 22 Aug 2025 23:48:33 +1000 +Subject: [PATCH] Revert "Use macro not swash for utf8 quotemeta" + +This reverts commit 685289b5657b776e8a3871de68a57785e6ccd797. +--- + embed.fnc | 1 + + embed.h | 3 +++ + intrpvar.h | 1 + + pp.c | 3 +-- + regen/regcharclass.pl | 4 ---- + sv.c | 1 + + utf8.c | 11 +++++++++++ + 7 files changed, 18 insertions(+), 6 deletions(-) + +diff --git perl-5.17.4/embed.fnc perl-5.17.4/embed.fnc +index 0db9300b3b..466025950e 100644 +--- perl-5.17.4/embed.fnc ++++ perl-5.17.4/embed.fnc +@@ -614,6 +614,7 @@ EXp |UV |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const + #endif + #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C) + p |UV |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_or_s ++ApRM |bool |_is_utf8_quotemeta|NN const U8 *p + #endif + Ap |UV |to_uni_lower |UV c|NN U8 *p|NN STRLEN *lenp + Amp |UV |to_uni_fold |UV c|NN U8 *p|NN STRLEN *lenp +diff --git perl-5.17.4/embed.h perl-5.17.4/embed.h +index e0afb124b0..3ffe84f220 100644 +--- perl-5.17.4/embed.h ++++ perl-5.17.4/embed.h +@@ -789,6 +789,9 @@ + #define warn_nocontext Perl_warn_nocontext + #define warner_nocontext Perl_warner_nocontext + #endif ++#if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C) ++#define _is_utf8_quotemeta(a) Perl__is_utf8_quotemeta(aTHX_ a) ++#endif + #if defined(PERL_MAD) + #define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c) + #endif +diff --git perl-5.17.4/intrpvar.h perl-5.17.4/intrpvar.h +index 40a6aa1e9d..641cac6268 100644 +--- perl-5.17.4/intrpvar.h ++++ perl-5.17.4/intrpvar.h +@@ -633,6 +633,7 @@ PERLVAR(I, utf8_toupper, SV *) + PERLVAR(I, utf8_totitle, SV *) + PERLVAR(I, utf8_tolower, SV *) + PERLVAR(I, utf8_tofold, SV *) ++PERLVAR(I, utf8_quotemeta, SV *) + PERLVAR(I, last_swash_hv, HV *) + PERLVAR(I, last_swash_tmps, U8 *) + PERLVAR(I, last_swash_slen, STRLEN) +diff --git perl-5.17.4/pp.c perl-5.17.4/pp.c +index f99c460a8d..fa741b8b29 100644 +--- perl-5.17.4/pp.c ++++ perl-5.17.4/pp.c +@@ -29,7 +29,6 @@ + #include "keywords.h" + + #include "reentr.h" +-#include "regcharclass.h" + + /* XXX I can't imagine anyone who doesn't have this actually _needs_ + it, since pid_t is an integral type. +@@ -4090,7 +4089,7 @@ PP(pp_quotemeta) + to_quote = TRUE; + } + } +- else if (is_QUOTEMETA_high(s)) { ++ else if (_is_utf8_quotemeta((U8 *) s)) { + to_quote = TRUE; + } + +diff --git perl-5.17.4/regen/regcharclass.pl perl-5.17.4/regen/regcharclass.pl +index 7d126428ef..d1df1f5086 100755 +--- perl-5.17.4/regen/regcharclass.pl ++++ perl-5.17.4/regen/regcharclass.pl +@@ -1176,7 +1176,3 @@ GCB_V: Grapheme_Cluster_Break=V + UTF8_CHAR: Matches utf8 from 1 to 5 bytes + => UTF8 :safe only_ebcdic_platform + 0x0 - 0x3FFFFF: +- +-QUOTEMETA: Meta-characters that \Q should quote +-=> high :fast +-\p{_Perl_Quotemeta} +diff --git perl-5.17.4/sv.c perl-5.17.4/sv.c +index 89699be4b2..8b46b4d9f7 100644 +--- perl-5.17.4/sv.c ++++ perl-5.17.4/sv.c +@@ -13390,6 +13390,7 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags, + PL_utf8_idcont = sv_dup_inc(proto_perl->Iutf8_idcont, param); + PL_utf8_xidcont = sv_dup_inc(proto_perl->Iutf8_xidcont, param); + PL_utf8_foldable = sv_dup_inc(proto_perl->Iutf8_foldable, param); ++ PL_utf8_quotemeta = sv_dup_inc(proto_perl->Iutf8_quotemeta, param); + PL_ASCII = sv_dup_inc(proto_perl->IASCII, param); + PL_AboveLatin1 = sv_dup_inc(proto_perl->IAboveLatin1, param); + PL_Latin1 = sv_dup_inc(proto_perl->ILatin1, param); +-- +2.49.1 + diff --git a/steps/perl-5.17.4/patches/0011-Revert-Upgrade-Socket-from-2.004-to-2.006.patch b/steps/perl-5.17.4/patches/0011-Revert-Upgrade-Socket-from-2.004-to-2.006.patch new file mode 100644 index 00000000..5ad7b947 --- /dev/null +++ b/steps/perl-5.17.4/patches/0011-Revert-Upgrade-Socket-from-2.004-to-2.006.patch @@ -0,0 +1,270 @@ +From f1fabc56fb9cd2417f5423fdc73ab73574ea8c8e Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Fri, 22 Aug 2025 23:58:47 +1000 +Subject: [PATCH 1/4] Revert "Upgrade Socket from 2.004 to 2.006" + +This reverts commit aff163d96ea1505927d05ead3078b1d7bb3bfa93. +--- + Porting/Maintainers.pl | 2 +- + cpan/Socket/Makefile.PL | 8 +----- + cpan/Socket/Socket.pm | 6 +--- + cpan/Socket/Socket.xs | 59 ++++++++++++---------------------------- + cpan/Socket/t/sockaddr.t | 10 ++----- + pod/perldelta.pod | 5 +--- + 6 files changed, 25 insertions(+), 65 deletions(-) + +diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl +index e107f710e0..54ab2c1352 100755 +--- perl-5.17.4/Porting/Maintainers.pl ++++ perl-5.17.4/Porting/Maintainers.pl +@@ -1636,7 +1636,7 @@ use File::Glob qw(:case); + + 'Socket' => { + 'MAINTAINER' => 'pevans', +- 'DISTRIBUTION' => 'PEVANS/Socket-2.006.tar.gz', ++ 'DISTRIBUTION' => 'PEVANS/Socket-2.004.tar.gz', + 'FILES' => q[cpan/Socket], + 'UPSTREAM' => 'cpan', + }, +diff --git perl-5.17.4/cpan/Socket/Makefile.PL perl-5.17.4/cpan/Socket/Makefile.PL +index 639a57c4d6..9e76dcea96 100644 +--- perl-5.17.4/cpan/Socket/Makefile.PL ++++ perl-5.17.4/cpan/Socket/Makefile.PL +@@ -108,19 +108,13 @@ 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;" + ); + +-# TODO: Needs adding to perl5 core before importing dual-life again +-check_for( +- confkey => "d_ip_mreq_source", +- define => "HAS_IP_MREQ_SOURCE", +- main => "struct ip_mreq_source mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;" +-); +- + check_for( + confkey => "d_ipv6_mreq", + define => "HAS_IPV6_MREQ", +diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm +index c0dc4aa7dd..83729b290d 100644 +--- perl-5.17.4/cpan/Socket/Socket.pm ++++ perl-5.17.4/cpan/Socket/Socket.pm +@@ -3,7 +3,7 @@ package Socket; + use strict; + { use 5.006001; } + +-our $VERSION = '2.006'; ++our $VERSION = '2.004'; + + =head1 NAME + +@@ -184,8 +184,6 @@ opaque string representing the IP address (you can use inet_ntoa() to convert + the address to the four-dotted numeric format). Will croak if the structure + does not represent an C address. + +-In scalar context will return just the IP address. +- + =head2 $sockaddr = sockaddr_in $port, $ip_address + + =head2 ($port, $ip_address) = sockaddr_in $sockaddr +@@ -213,8 +211,6 @@ flow label. (You can use inet_ntop() to convert the address to the usual + string format). Will croak if the structure does not represent an C + address. + +-In scalar context will return just the IP address. +- + =head2 $sockaddr = sockaddr_in6 $port, $ip6_address, [$scope_id, [$flowinfo]] + + =head2 ($port, $ip6_address, $scope_id, $flowinfo) = sockaddr_in6 $sockaddr +diff --git perl-5.17.4/cpan/Socket/Socket.xs perl-5.17.4/cpan/Socket/Socket.xs +index e99eac12ef..0bdebf5ca4 100644 +--- perl-5.17.4/cpan/Socket/Socket.xs ++++ perl-5.17.4/cpan/Socket/Socket.xs +@@ -179,9 +179,6 @@ static void *my_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 kl, + #ifndef mPUSHp + # define mPUSHp(p,l) sv_setpvn_mg(PUSHs(sv_newmortal()), (p), (l)) + #endif /* !mPUSHp */ +-#ifndef mPUSHs +-# define mPUSHs(s) PUSHs(sv_2mortal(s)) +-#endif /* !mPUSHs */ + + #ifndef CvCONST_on + # undef newCONSTSUB +@@ -789,7 +786,8 @@ unpack_sockaddr_in(sin_sv) + { + STRLEN sockaddrlen; + struct sockaddr_in addr; +- SV *ip_address_sv; ++ unsigned short port; ++ struct in_addr ip_address; + char * sin = SvPVbyte(sin_sv,sockaddrlen); + if (sockaddrlen != sizeof(addr)) { + croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf, +@@ -800,16 +798,12 @@ unpack_sockaddr_in(sin_sv) + croak("Bad address family for %s, got %d, should be %d", + "Socket::unpack_sockaddr_in", addr.sin_family, AF_INET); + } +- ip_address_sv = newSVpvn((char *)&addr.sin_addr, sizeof(addr.sin_addr)); ++ port = ntohs(addr.sin_port); ++ ip_address = addr.sin_addr; + +- if(GIMME_V == G_ARRAY) { +- EXTEND(SP, 2); +- mPUSHi(ntohs(addr.sin_port)); +- mPUSHs(ip_address_sv); +- } +- else { +- mPUSHs(ip_address_sv); +- } ++ EXTEND(SP, 2); ++ PUSHs(sv_2mortal(newSViv((IV) port))); ++ PUSHs(sv_2mortal(newSVpvn((char *)&ip_address, sizeof(ip_address)))); + } + + void +@@ -860,7 +854,6 @@ unpack_sockaddr_in6(sin6_sv) + STRLEN addrlen; + struct sockaddr_in6 sin6; + char * addrbytes = SvPVbyte(sin6_sv, addrlen); +- SV *ip_address_sv; + if (addrlen != sizeof(sin6)) + croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf, + "Socket::unpack_sockaddr_in6", (UV)addrlen, (UV)sizeof(sin6)); +@@ -868,22 +861,15 @@ unpack_sockaddr_in6(sin6_sv) + if (sin6.sin6_family != AF_INET6) + croak("Bad address family for %s, got %d, should be %d", + "Socket::unpack_sockaddr_in6", sin6.sin6_family, AF_INET6); +- ip_address_sv = newSVpvn((char *)&sin6.sin6_addr, sizeof(sin6.sin6_addr)); +- +- if(GIMME_V == G_ARRAY) { +- EXTEND(SP, 4); +- mPUSHi(ntohs(sin6.sin6_port)); +- mPUSHs(ip_address_sv); ++ EXTEND(SP, 4); ++ mPUSHi(ntohs(sin6.sin6_port)); ++ mPUSHp((char *)&sin6.sin6_addr, sizeof(sin6.sin6_addr)); + # ifdef HAS_SIN6_SCOPE_ID +- mPUSHi(sin6.sin6_scope_id); ++ mPUSHi(sin6.sin6_scope_id); + # else +- mPUSHi(0); ++ mPUSHi(0); + # endif +- mPUSHi(ntohl(sin6.sin6_flowinfo)); +- } +- else { +- mPUSHs(ip_address_sv); +- } ++ mPUSHi(ntohl(sin6.sin6_flowinfo)); + #else + ST(0) = (SV*)not_here("pack_sockaddr_in6"); + #endif +@@ -912,20 +898,11 @@ inet_ntop(af, ip_address_sv) + + struct_size = sizeof(addr); + +- switch(af) { +- case AF_INET: +- if(addrlen != 4) +- croak("Bad address length for Socket::inet_ntop on AF_INET;" +- " got %d, should be 4"); +- break; ++ if (af != AF_INET + #ifdef AF_INET6 +- case AF_INET6: +- if(addrlen != 16) +- croak("Bad address length for Socket::inet_ntop on AF_INET6;" +- " got %d, should be 16"); +- break; ++ && af != AF_INET6 + #endif +- default: ++ ) { + croak("Bad address family for %s, got %d, should be" + #ifdef AF_INET6 + " either AF_INET or AF_INET6", +@@ -1049,7 +1026,7 @@ pack_ip_mreq_source(multiaddr, source, interface=&PL_sv_undef) + SV * interface + CODE: + { +-#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP) ++#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP) + struct ip_mreq_source mreq; + char * multiaddrbytes; + char * sourcebytes; +@@ -1092,7 +1069,7 @@ unpack_ip_mreq_source(mreq_sv) + SV * mreq_sv + PPCODE: + { +-#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP) ++#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP) + struct ip_mreq_source mreq; + STRLEN mreqlen; + char * mreqbytes = SvPVbyte(mreq_sv, mreqlen); +diff --git perl-5.17.4/cpan/Socket/t/sockaddr.t perl-5.17.4/cpan/Socket/t/sockaddr.t +index 1ae24a0bba..63cce24309 100644 +--- perl-5.17.4/cpan/Socket/t/sockaddr.t ++++ perl-5.17.4/cpan/Socket/t/sockaddr.t +@@ -10,7 +10,7 @@ use Socket qw( + sockaddr_family + sockaddr_un + ); +-use Test::More tests => 33; ++use Test::More tests => 31; + + # inet_aton, inet_ntoa + { +@@ -73,8 +73,6 @@ SKIP: { + is( (unpack_sockaddr_in($sin))[0] , 100, 'pack_sockaddr_in->unpack_sockaddr_in port'); + is(inet_ntoa((unpack_sockaddr_in($sin))[1]), "10.20.30.40", 'pack_sockaddr_in->unpack_sockaddr_in addr'); + +- is(inet_ntoa(scalar unpack_sockaddr_in($sin)), "10.20.30.40", 'unpack_sockaddr_in in scalar context yields addr'); +- + is_deeply( [ sockaddr_in($sin) ], [ unpack_sockaddr_in($sin) ], + 'sockaddr_in in list context unpacks' ); + +@@ -85,8 +83,8 @@ SKIP: { + # pack_sockaddr_in6, unpack_sockaddr_in6 + # sockaddr_in6 + SKIP: { +- skip "No AF_INET6", 9 unless my $AF_INET6 = eval { Socket::AF_INET6() }; +- skip "Cannot pack_sockaddr_in6()", 9 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) }; ++ skip "No AF_INET6", 8 unless my $AF_INET6 = eval { Socket::AF_INET6() }; ++ skip "Cannot pack_sockaddr_in6()", 8 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) }; + + ok(defined $sin6, 'pack_sockaddr_in6 defined'); + +@@ -97,8 +95,6 @@ SKIP: { + is((Socket::unpack_sockaddr_in6($sin6))[2], 0, 'pack_sockaddr_in6->unpack_sockaddr_in6 scope_id'); + is((Socket::unpack_sockaddr_in6($sin6))[3], 89, 'pack_sockaddr_in6->unpack_sockaddr_in6 flowinfo'); + +- is(scalar Socket::unpack_sockaddr_in6($sin6), "0123456789abcdef", 'unpack_sockaddr_in6 in scalar context yields addr'); +- + is_deeply( [ Socket::sockaddr_in6($sin6) ], [ Socket::unpack_sockaddr_in6($sin6) ], + 'sockaddr_in6 in list context unpacks' ); + +diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod +index 52eaf8f1f5..78f169f953 100644 +--- perl-5.17.4/pod/perldelta.pod ++++ perl-5.17.4/pod/perldelta.pod +@@ -308,10 +308,7 @@ opcodes. + + =item * + +-L has been upgraded from version 2.004 to 2.006. +-C and C now return just the IP +-address in scalar context, and C now guards against incorrect +-length scalars being passed in. ++L has been upgraded from version A.xx to B.yy. + + =item * + +-- +2.49.1 + diff --git a/steps/perl-5.17.4/patches/0012-Revert-Upgrade-Socket-to-2.004.patch b/steps/perl-5.17.4/patches/0012-Revert-Upgrade-Socket-to-2.004.patch new file mode 100644 index 00000000..91b672a4 --- /dev/null +++ b/steps/perl-5.17.4/patches/0012-Revert-Upgrade-Socket-to-2.004.patch @@ -0,0 +1,69 @@ +From de7b91dbf552295709c29dec46ab735b141b3881 Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Fri, 22 Aug 2025 23:59:12 +1000 +Subject: [PATCH 2/4] Revert "Upgrade Socket to 2.004" + +This reverts commit b43fc6a1c1224963b2a2430029a638a4294147d0. +--- + Porting/Maintainers.pl | 2 +- + cpan/Socket/Socket.pm | 2 +- + cpan/Socket/t/ip_mreq.t | 2 +- + pod/perldelta.pod | 3 +++ + 4 files changed, 6 insertions(+), 3 deletions(-) + +diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl +index 54ab2c1352..3b3004f6c3 100755 +--- perl-5.17.4/Porting/Maintainers.pl ++++ perl-5.17.4/Porting/Maintainers.pl +@@ -1636,7 +1636,7 @@ use File::Glob qw(:case); + + 'Socket' => { + 'MAINTAINER' => 'pevans', +- 'DISTRIBUTION' => 'PEVANS/Socket-2.004.tar.gz', ++ 'DISTRIBUTION' => 'PEVANS/Socket-2.003.tar.gz', + 'FILES' => q[cpan/Socket], + 'UPSTREAM' => 'cpan', + }, +diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm +index 83729b290d..d9bbfae258 100644 +--- perl-5.17.4/cpan/Socket/Socket.pm ++++ perl-5.17.4/cpan/Socket/Socket.pm +@@ -3,7 +3,7 @@ package Socket; + use strict; + { use 5.006001; } + +-our $VERSION = '2.004'; ++our $VERSION = '2.003'; + + =head1 NAME + +diff --git perl-5.17.4/cpan/Socket/t/ip_mreq.t perl-5.17.4/cpan/Socket/t/ip_mreq.t +index 2ed76062c1..2a99509904 100644 +--- perl-5.17.4/cpan/Socket/t/ip_mreq.t ++++ perl-5.17.4/cpan/Socket/t/ip_mreq.t +@@ -31,7 +31,7 @@ is( (unpack_ip_mreq pack_ip_mreq "\xe0\0\0\1")[1], INADDR_ANY, 'pack_ip_mreq int + + SKIP: { + my $mreq; +- skip "No pack_ip_mreq_source", 3 unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY }; ++ skip 3, "No pack_ip_mreq_source" unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY }; + + @unpacked = unpack_ip_mreq_source $mreq; + +diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod +index 78f169f953..a64c1a9143 100644 +--- perl-5.17.4/pod/perldelta.pod ++++ perl-5.17.4/pod/perldelta.pod +@@ -316,6 +316,9 @@ L has been upgraded from version 2.38 to 2.39. This contains various + bugfixes, including compatibility fixes for older versions of Perl and vstring + handling. + ++L has been upgraded from version 2.002 to 2.003. Constants and ++functions required for IP multicast source group membership have been added. ++ + =item * + + L has been upgraded from version 0.31 to 0.32. This includes +-- +2.49.1 + diff --git a/steps/perl-5.17.4/patches/0013-Revert-Upgrade-Socket-from-2.002-to-2.003.patch b/steps/perl-5.17.4/patches/0013-Revert-Upgrade-Socket-from-2.002-to-2.003.patch new file mode 100644 index 00000000..8b71f028 --- /dev/null +++ b/steps/perl-5.17.4/patches/0013-Revert-Upgrade-Socket-from-2.002-to-2.003.patch @@ -0,0 +1,270 @@ +From a70ed0b00a2650fa5a9cc238460e9602a3df9df1 Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Fri, 22 Aug 2025 23:59:39 +1000 +Subject: [PATCH 3/4] Revert "Upgrade Socket from 2.002 to 2.003" + +This reverts commit d4ada64ad845b1ffe124cf230a345b847e43d755. +--- + Porting/Maintainers.pl | 2 +- + cpan/Socket/Makefile.PL | 22 ++++++-------- + cpan/Socket/Socket.pm | 36 +++++++--------------- + cpan/Socket/Socket.xs | 67 ----------------------------------------- + cpan/Socket/t/ip_mreq.t | 14 +-------- + pod/perldelta.pod | 4 +++ + 6 files changed, 27 insertions(+), 118 deletions(-) + +diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl +index 3b3004f6c3..e38daab394 100755 +--- perl-5.17.4/Porting/Maintainers.pl ++++ perl-5.17.4/Porting/Maintainers.pl +@@ -1636,7 +1636,7 @@ use File::Glob qw(:case); + + 'Socket' => { + 'MAINTAINER' => 'pevans', +- 'DISTRIBUTION' => 'PEVANS/Socket-2.003.tar.gz', ++ 'DISTRIBUTION' => 'PEVANS/Socket-2.002.tar.gz', + 'FILES' => q[cpan/Socket], + 'UPSTREAM' => 'cpan', + }, +diff --git perl-5.17.4/cpan/Socket/Makefile.PL perl-5.17.4/cpan/Socket/Makefile.PL +index 9e76dcea96..3be198e024 100644 +--- perl-5.17.4/cpan/Socket/Makefile.PL ++++ perl-5.17.4/cpan/Socket/Makefile.PL +@@ -161,14 +161,13 @@ my @names = ( + + IOV_MAX + +- IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP +- IP_DROP_SOURCE_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_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 + +- IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP +- IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS +- IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY ++ IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER ++ IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP ++ IPV6_UNICAST_HOPS IPV6_V6ONLY + + MSG_BCAST MSG_BTAG MSG_CTLFLAGS MSG_CTLIGNORE MSG_DONTWAIT MSG_EOF + MSG_EOR MSG_ERRQUEUE MSG_ETAG MSG_FIN MSG_MAXIOVLEN MSG_MCAST +@@ -201,11 +200,10 @@ my @names = ( + SO_SECURITY_ENCRYPTION_TRANSPORT SO_SNDBUF SO_SNDLOWAT SO_SNDTIMEO + SO_STATE SO_TYPE SO_USELOOPBACK SO_XOPEN SO_XSE + +- TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO +- TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL +- TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT +- TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT +- TCP_WINDOW_CLAMP ++ TCP_KEEPALIVE TCP_MAXRT TCP_MAXSEG TCP_NODELAY TCP_STDURG TCP_CORK ++ TCP_KEEPIDLE TCP_KEEPINTVL TCP_KEEPCNT TCP_SYNCNT TCP_LINGER2 ++ TCP_DEFER_ACCEPT TCP_WINDOW_CLAMP TCP_INFO TCP_QUICKACK TCP_CONGESTION ++ TCP_MD5SIG + + UIO_MAXIOV + ), +diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm +index d9bbfae258..41f214d8fe 100644 +--- perl-5.17.4/cpan/Socket/Socket.pm ++++ perl-5.17.4/cpan/Socket/Socket.pm +@@ -3,7 +3,7 @@ package Socket; + use strict; + { use 5.006001; } + +-our $VERSION = '2.003'; ++our $VERSION = '2.002'; + + =head1 NAME + +@@ -260,18 +260,6 @@ sockopts. + Takes an C structure. Returns a list of two elements; the IPv4 + multicast address and interface address. + +-=head2 $ip_mreq_source = pack_ip_mreq_source $multiaddr, $source, $interface +- +-Takes an IPv4 multicast address, source 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, $source, $interface) = unpack_ip_mreq_source $ip_mreq +- +-Takes an C structure. Returns a list of three elements; the +-IPv4 multicast address, source address and interface address. +- + =head2 $ipv6_mreq = pack_ipv6_mreq $multiaddr6, $ifindex + + Takes an IPv6 multicast address and an interface number. Returns the +@@ -748,26 +736,24 @@ our @EXPORT_OK = qw( + + SOCK_NONBLOCK SOCK_CLOEXEC + +- IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP +- IP_DROP_SOURCE_MEMBERSHIP IP_MULTICAST_IF IP_MULTICAST_LOOP +- IP_MULTICAST_TTL ++ 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 + +- TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO +- TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL +- TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT +- TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT +- TCP_WINDOW_CLAMP ++ TCP_CONGESTION TCP_CORK TCP_DEFER_ACCEPT TCP_INFO TCP_KEEPALIVE ++ TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL TCP_LINGER2 TCP_MAXRT TCP_MAXSEG ++ TCP_MD5SIG TCP_NODELAY TCP_QUICKACK TCP_STDURG TCP_SYNCNT ++ TCP_WINDOW_CLAMP + + IN6ADDR_ANY IN6ADDR_LOOPBACK + +- IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP +- IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS +- IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY ++ IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER ++ IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP ++ IPV6_UNICAST_HOPS IPV6_V6ONLY + +- pack_ip_mreq unpack_ip_mreq pack_ip_mreq_source unpack_ip_mreq_source ++ pack_ip_mreq unpack_ip_mreq + + pack_ipv6_mreq unpack_ipv6_mreq + +diff --git perl-5.17.4/cpan/Socket/Socket.xs perl-5.17.4/cpan/Socket/Socket.xs +index 0bdebf5ca4..f22c1f3001 100644 +--- perl-5.17.4/cpan/Socket/Socket.xs ++++ perl-5.17.4/cpan/Socket/Socket.xs +@@ -1019,73 +1019,6 @@ unpack_ip_mreq(mreq_sv) + #endif + } + +-void +-pack_ip_mreq_source(multiaddr, source, interface=&PL_sv_undef) +- SV * multiaddr +- SV * source +- SV * interface +- CODE: +- { +-#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP) +- struct ip_mreq_source mreq; +- char * multiaddrbytes; +- char * sourcebytes; +- char * interfacebytes; +- STRLEN len; +- if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) +- croak("Wide character in %s", "Socket::pack_ip_mreq_source"); +- 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)); +- if (DO_UTF8(source) && !sv_utf8_downgrade(source, 1)) +- croak("Wide character in %s", "Socket::pack_ip_mreq_source"); +- if (len != sizeof(mreq.imr_sourceaddr)) +- croak("Bad arg length %s, length is %"UVuf", should be %"UVuf, +- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_sourceaddr)); +- sourcebytes = SvPVbyte(source, len); +- Zero(&mreq, sizeof(mreq), char); +- Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char); +- Copy(sourcebytes, &mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr), 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_source"); +-#endif +- } +- +-void +-unpack_ip_mreq_source(mreq_sv) +- SV * mreq_sv +- PPCODE: +- { +-#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP) +- struct ip_mreq_source 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_source", (UV)mreqlen, (UV)sizeof(mreq)); +- Copy(mreqbytes, &mreq, sizeof(mreq), char); +- EXTEND(SP, 3); +- mPUSHp((char *)&mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr)); +- mPUSHp((char *)&mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr)); +- mPUSHp((char *)&mreq.imr_interface, sizeof(mreq.imr_interface)); +-#else +- not_here("unpack_ip_mreq_source"); +-#endif +- } +- + void + pack_ipv6_mreq(multiaddr, interface) + SV * multiaddr +diff --git perl-5.17.4/cpan/Socket/t/ip_mreq.t perl-5.17.4/cpan/Socket/t/ip_mreq.t +index 2a99509904..f08920c437 100644 +--- perl-5.17.4/cpan/Socket/t/ip_mreq.t ++++ perl-5.17.4/cpan/Socket/t/ip_mreq.t +@@ -5,7 +5,6 @@ use Test::More; + use Socket qw( + INADDR_ANY + pack_ip_mreq unpack_ip_mreq +- pack_ip_mreq_source unpack_ip_mreq_source + ); + + # Check that pack/unpack_ip_mreq either croak with "Not implemented", or +@@ -20,7 +19,7 @@ if( !defined $packed ) { + die $@; + } + +-plan tests => 6; ++plan tests => 3; + + my @unpacked = unpack_ip_mreq $packed; + +@@ -28,14 +27,3 @@ 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' ); +- +-SKIP: { +- my $mreq; +- skip 3, "No pack_ip_mreq_source" unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY }; +- +- @unpacked = unpack_ip_mreq_source $mreq; +- +- is( $unpacked[0], "\xe0\0\0\2", 'unpack_ip_mreq_source multiaddr' ); +- is( $unpacked[1], "\x0a\0\0\1", 'unpack_ip_mreq_source source' ); +- is( $unpacked[2], INADDR_ANY, 'unpack_ip_mreq_source interface' ); +-} +diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod +index a64c1a9143..65a9378242 100644 +--- perl-5.17.4/pod/perldelta.pod ++++ perl-5.17.4/pod/perldelta.pod +@@ -324,6 +324,10 @@ functions required for IP multicast source group membership have been added. + L has been upgraded from version 0.31 to 0.32. This includes + several documentation and bug fixes. + ++L has been upgraded from version 2.37 to 2.38. It can now freeze ++and thaw vstrings correctly. This causes a slight incompatible change in ++the storage format, so the format version has increased to 2.9. ++ + =item * + + L has been upgraded from version 1.40 to 1.41. This adds the +-- +2.49.1 + diff --git a/steps/perl-5.17.4/patches/0014-Revert-Upgrade-Socket-to-2.002.patch b/steps/perl-5.17.4/patches/0014-Revert-Upgrade-Socket-to-2.002.patch new file mode 100644 index 00000000..efd27d55 --- /dev/null +++ b/steps/perl-5.17.4/patches/0014-Revert-Upgrade-Socket-to-2.002.patch @@ -0,0 +1,344 @@ +From abdda3c270bcbe62f91b979b0b15b34fa3d164fe Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Sat, 23 Aug 2025 00:00:00 +1000 +Subject: [PATCH 4/4] 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 --------------- + pod/perldelta.pod | 6 +++ + 7 files changed, 29 insertions(+), 154 deletions(-) + delete mode 100644 cpan/Socket/t/ip_mreq.t + +diff --git perl-5.17.4/MANIFEST perl-5.17.4/MANIFEST +index 6883a5f76f..3397344adf 100644 +--- perl-5.17.4/MANIFEST ++++ perl-5.17.4/MANIFEST +@@ -2229,7 +2229,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.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl +index e38daab394..131493c9c9 100755 +--- perl-5.17.4/Porting/Maintainers.pl ++++ perl-5.17.4/Porting/Maintainers.pl +@@ -1636,7 +1636,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.4/cpan/Socket/Makefile.PL perl-5.17.4/cpan/Socket/Makefile.PL +index 3be198e024..9a8f65d274 100644 +--- perl-5.17.4/cpan/Socket/Makefile.PL ++++ perl-5.17.4/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.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm +index 41f214d8fe..e12d8517de 100644 +--- perl-5.17.4/cpan/Socket/Socket.pm ++++ perl-5.17.4/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.4/cpan/Socket/Socket.xs perl-5.17.4/cpan/Socket/Socket.xs +index f22c1f3001..5ddd0e9d8e 100644 +--- perl-5.17.4/cpan/Socket/Socket.xs ++++ perl-5.17.4/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.4/cpan/Socket/t/ip_mreq.t perl-5.17.4/cpan/Socket/t/ip_mreq.t +deleted file mode 100644 +index f08920c437..0000000000 +--- perl-5.17.4/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' ); +diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod +index 65a9378242..957169ec2f 100644 +--- perl-5.17.4/pod/perldelta.pod ++++ perl-5.17.4/pod/perldelta.pod +@@ -250,6 +250,12 @@ trailing semicolons in formats. + L has been upgraded from version 0.9130 to 0.9131. This resolves + issues with the SQLite source engine. + ++=back ++ ++=head2 Removed Modules and Pragmata ++ ++=over 4 ++ + =item * + + L has been upgraded from version 1.826 to 1.827. The main Perl module +-- +2.49.1 + diff --git a/steps/perl-5.17.4/patches/a2p-c-bison.patch b/steps/perl-5.17.4/patches/a2p-c-bison.patch new file mode 100644 index 00000000..66bbbfdc --- /dev/null +++ b/steps/perl-5.17.4/patches/a2p-c-bison.patch @@ -0,0 +1,11 @@ +--- perl-5.17.4/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 ++++ perl-5.17.4/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.4/patches/duplicate-invlists-defn.patch b/steps/perl-5.17.4/patches/duplicate-invlists-defn.patch new file mode 100644 index 00000000..28a71eef --- /dev/null +++ b/steps/perl-5.17.4/patches/duplicate-invlists-defn.patch @@ -0,0 +1,10 @@ +--- perl-5.17.4/ext/re/Makefile.PL 2025-08-22 23:08:38.443022450 +1000 ++++ perl-5.17.4/ext/re/Makefile.PL 2025-08-23 11:26:37.737298348 +1000 +@@ -31,6 +31,7 @@ + re_comp.c : $regcomp_c + - \$(RM_F) re_comp.c + \$(CP) $regcomp_c re_comp.c ++ sed -i '/charclass_invlists.h/ s/.*/UV NonL1_Perl_Non_Final_Folds_invlist[];/' re_comp.c + + re_comp\$(OBJ_EXT) : re_comp.c dquote_static.c inline_invlist.c + diff --git a/steps/perl-5.17.4/reenable-regcharclass.patch b/steps/perl-5.17.4/reenable-regcharclass.patch new file mode 100644 index 00000000..30af8f15 --- /dev/null +++ b/steps/perl-5.17.4/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.4/sources b/steps/perl-5.17.4/sources new file mode 100644 index 00000000..b0bff9cd --- /dev/null +++ b/steps/perl-5.17.4/sources @@ -0,0 +1,2 @@ +https://www.cpan.org/src/5.0/perl-5.17.4.tar.bz2 42e7eb0d726a6344bc54140be8a0e3636330e1be7be8793e0fb74f415666b95b +git://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 From 1a0714984772c76014626f41c1052ff8fe1ad795 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sat, 23 Aug 2025 22:35:38 +1000 Subject: [PATCH 13/64] Building perl 5.18.4 --- .../files/Compress-Raw-Zlib_config.in | 5 + steps/perl-5.18.4/pass1.sh | 111 ++++++++++++++++++ .../Revert-regen-mk_PL_charclass-pl.patch | 61 ++++++++++ steps/perl-5.18.4/patches/a2p-c-bison.patch | 11 ++ steps/perl-5.18.4/reenable-regcharclass.patch | 17 +++ steps/perl-5.18.4/sources | 2 + 6 files changed, 207 insertions(+) create mode 100644 steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.18.4/pass1.sh create mode 100644 steps/perl-5.18.4/patches/Revert-regen-mk_PL_charclass-pl.patch create mode 100644 steps/perl-5.18.4/patches/a2p-c-bison.patch create mode 100644 steps/perl-5.18.4/reenable-regcharclass.patch create mode 100644 steps/perl-5.18.4/sources diff --git a/steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in b/steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..3bbcf2f4 --- /dev/null +++ b/steps/perl-5.18.4/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.18.4/pass1.sh b/steps/perl-5.18.4/pass1.sh new file mode 100755 index 00000000..38e29c8a --- /dev/null +++ b/steps/perl-5.18.4/pass1.sh @@ -0,0 +1,111 @@ +# 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/unicode_constants.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=':' \ + -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 + + # The Revert-regen-mk_PL_charclass-pl.patch breaks building some + # modules for reasons that are not exactly clear. + # We will build miniperl, revert the patch, regenerate l1_char_class_tab.h, + # (using miniperl), and then go again + + make "${MAKEJOBS}" miniperl lib/unicore/Name.pm + patch -Np1 -R -i ../../patches/Revert-regen-mk_PL_charclass-pl.patch + rm l1_char_class_tab.h + ./miniperl -Ilib regen/mk_PL_charclass.pl + + # there are concurrency issues + make -j1 PREFIX="${PREFIX}" +} + +src_install() { + default + + # Remove messed up manpages + rm "${DESTDIR}/"*.0 +} diff --git a/steps/perl-5.18.4/patches/Revert-regen-mk_PL_charclass-pl.patch b/steps/perl-5.18.4/patches/Revert-regen-mk_PL_charclass-pl.patch new file mode 100644 index 00000000..8e28d30b --- /dev/null +++ b/steps/perl-5.18.4/patches/Revert-regen-mk_PL_charclass-pl.patch @@ -0,0 +1,61 @@ +From 6f1d133ec238228c656fcd05d6b42f562aaa92b3 Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Thu, 21 Aug 2025 19:28:54 +1000 +Subject: [PATCH 1/4] Revert "regen/mk_PL_charclass.pl: Use mktables table for + charname" + +This reverts commit 699ffc5e6f6d1426d23e60b98f7935ec76291935. +--- + regen/mk_PL_charclass.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git perl-5.18.4/regen/mk_PL_charclass.pl perl-5.18.4/regen/mk_PL_charclass.pl +index 63c06bc9f6..bfa4f7e3e6 100644 +--- perl-5.18.4/regen/mk_PL_charclass.pl ++++ perl-5.18.4/regen/mk_PL_charclass.pl +@@ -185,7 +185,7 @@ for my $ord (0..255) { + # just \pP outside it. + $re = qr/\p{Punct}|[^\P{Symbol}\P{ASCII}]/; + } elsif ($name eq 'CHARNAME_CONT') {; +- $re = qr/\p{_Perl_Charname_Continue}/, ++ $re = qr/[-\p{XPosixWord} ():\xa0]/; + } elsif ($name eq 'SPACE') {; + $re = qr/\p{XPerlSpace}/; + } elsif ($name eq 'IDFIRST') { +-- +2.49.1 + +From 66aada8c22c0005e8d76a71589a3218b8cb16d19 Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Thu, 21 Aug 2025 19:37:33 +1000 +Subject: [PATCH 3/4] Revert "regen/mk_PL_charclass.pl: Add bit for if + character folds" + +This reverts commit f79937459278f854cb4aa2d3b88400156a7a51ca. +--- + regen/mk_PL_charclass.pl | 3 --- + 1 file changed, 3 deletions(-) + +diff --git perl-5.18.4/regen/mk_PL_charclass.pl perl-5.18.4/regen/mk_PL_charclass.pl +index c944f10a87..51c13766e3 100644 +--- perl-5.18.4/regen/mk_PL_charclass.pl ++++ perl-5.18.4/regen/mk_PL_charclass.pl +@@ -43,7 +43,6 @@ my @properties = qw( + WORDCHAR + XDIGIT + VERTSPACE +- IS_IN_SOME_FOLD + BACKSLASH_FOO_LBRACE_IS_META + ); + +@@ -200,8 +199,6 @@ for my $ord (0..255) { + $re = qr/\p{Is_Non_Latin1_Fold}/; + } elsif ($name eq 'NON_FINAL_FOLD') { + $re = qr/\p{Is_Non_Final_Fold}/; +- } elsif ($name eq 'IS_IN_SOME_FOLD') { +- $re = qr/\p{_Perl_Any_Folds}/; + } elsif ($name eq 'BACKSLASH_FOO_LBRACE_IS_META') { + + # This is true for FOO where FOO is the varying character in: +-- +2.49.1 diff --git a/steps/perl-5.18.4/patches/a2p-c-bison.patch b/steps/perl-5.18.4/patches/a2p-c-bison.patch new file mode 100644 index 00000000..ae1d1fb9 --- /dev/null +++ b/steps/perl-5.18.4/patches/a2p-c-bison.patch @@ -0,0 +1,11 @@ +--- perl-5.18.4/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 ++++ perl-5.18.4/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.18.4/reenable-regcharclass.patch b/steps/perl-5.18.4/reenable-regcharclass.patch new file mode 100644 index 00000000..30af8f15 --- /dev/null +++ b/steps/perl-5.18.4/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.18.4/sources b/steps/perl-5.18.4/sources new file mode 100644 index 00000000..a41aa854 --- /dev/null +++ b/steps/perl-5.18.4/sources @@ -0,0 +1,2 @@ +https://www.cpan.org/src/5.0/perl-5.18.4.tar.bz2 1fb4d27b75cd244e849f253320260efe1750641aaff4a18ce0d67556ff1b96a5 +git://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 From 1145ddd981bdd9596f2932e5d74849fd4be715d5 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 28 Aug 2025 11:07:46 +1000 Subject: [PATCH 14/64] Remove unused perl 5.10.1 --- steps/perl-5.10.1/files/config.h | 165 ------------------ steps/perl-5.10.1/files/config.sh | 20 --- steps/perl-5.10.1/mk/main.mk | 137 --------------- steps/perl-5.10.1/pass1.sh | 30 ---- .../perl-5.10.1/patches/undefined_hack.patch | 124 ------------- steps/perl-5.10.1/sources | 2 +- 6 files changed, 1 insertion(+), 477 deletions(-) delete mode 100644 steps/perl-5.10.1/files/config.h delete mode 100644 steps/perl-5.10.1/files/config.sh delete mode 100644 steps/perl-5.10.1/mk/main.mk delete mode 100755 steps/perl-5.10.1/pass1.sh delete mode 100644 steps/perl-5.10.1/patches/undefined_hack.patch diff --git a/steps/perl-5.10.1/files/config.h b/steps/perl-5.10.1/files/config.h deleted file mode 100644 index 04767340..00000000 --- a/steps/perl-5.10.1/files/config.h +++ /dev/null @@ -1,165 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Andrius Å tikonas -// SPDX-FileCopyrightText: 2021 fosslinux - -// SPDX-License-Identifier: GPL-3.0-or-later - -#define MEM_ALIGNBYTES 8 -#define BIN "/usr/bin" -#define BYTEORDER 0x4321 -#define CPPSTDIN "gcc -E" -#define CPPMINUS "-" -#define HAS_ALARM -#define HAS_DIRENT -#define HAS_FORK -#define HAS_FCNTL -#define HAS_MEMCHR -#define HAS_MEMSET -#define HAS_MKDIR -#define HAS_PAUSE -#define HAS_READDIR -#define HAS_RMDIR -#define HAS_SETLOCALE -#define HAS_STRERROR -#define HAS_STRTOUL -#define HAS_STRTOULL -#define HAS_STRXFRM -#define HAS_SYS_ERRLIST -#define Strerror(e) strerror(e) - -#define HAS_SYSCALL -#define HAS_SYSCALL_PROTO -#define HAS_TIMES -#define HAS_FLOCK -#define HAS_TRUNCATE - -#define HAS_VPRINTF -#define Gid_t gid_t - -#define I_DIRENT -#define Direntry_t struct dirent - -#define I_DLFCN -#define I_FCNTL -#define I_GRP -#define I_LIMITS -#define I_LOCALE -#define I_MATH -#define I_NETINET_IN -#define I_PWD -#define I_STDDEF -#define I_STDLIB -#define I_STRING -#define I_SYS_DIR -#define I_SYS_IOCTL -#define I_SYS_PARAM -#define I_SYS_SELECT -#define I_SYS_STAT -#define I_SYS_TIMES -#define I_TERMIOS -#define I_TIME -#define I_UNISTD -#define I_UTIME -#define I_STDARG - -#define INTSIZE 4 -#define Off_t off_t - -#define PRIVLIB "/usr/lib/perl5" - -#define _(args) args - -#define SCRIPTDIR "/usr/bin" - -#define SIG_NAME "ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "NUM34", "RTMIN", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "POLL", "UNUSED", 0 /**/ -#define SIG_NUM 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 29, 31, 0 /**/ -#define SIG_SIZE 68 /**/ - -#define Size_t size_t - -#define STDCHAR char -#define Uid_t uid_t - -#define LOC_SED "/usr/bin/sed" -#define ARCHLIB "/usr/lib/perl5/" - -#define CAT2(a,b) a##b -#define STRINGIFY(a) "a" -#define Gconvert(x,n,t,b) gcvt((x),(n),(b)) - -#define Time_t time_t - -#define SSize_t ssize_t - -#define Sigjmp_buf sigjmp_buf - -#define Sigsetjmp(buf,save_mask) setjmp(buf) -#define Siglongjmp(buf,retval) longjmp(buf,retval) - -#define Signal_t void - -#define OSNAME "linux" - -#undef __DATE__ /* want reproducible build */ - -#define Malloc_t void * -#define Free_t void - -#define SH_PATH "/bin/sh" -#define ARCHNAME "i386-linux" -#define BIN_EXP "/usr/bin" - -#define NVSIZE 8 /* sizeof(double) */ -#define UVSIZE 4 /* sizeof(long) on i386 */ -#define IVSIZE 4 -#define PTRSIZE 4 - -#define IVTYPE long -#define UVTYPE unsigned long -#define NVTYPE double -#define I8TYPE char -#define U8TYPE unsigned char -#define I16TYPE short -#define U16TYPE unsigned short -#define I32TYPE int -#define U32TYPE unsigned int -#define STDCHAR char - -#define IVdf "ld" -#define UVuf "lu" -#define UVof "lo" -#define UVxf "lx" -#define UVXf "lX" -#define NVef "e" -#define NVff "f" -#define NVgf "g" - -#define Mode_t mode_t -#define Off_t off_t -#define Pid_t pid_t -#define Rand_seed_t long -#define Size_t_size 4 -#define Sock_size_t unsigned - -#define RANDBITS 48 -#define seedDrand01(x) srand48((long)x) -#define Drand01() drand48() - -#define NVSIZE 8 -#define NV_PRESERVES_UV -#define NV_PRESERVES_UV_BITS 32 -#define NV_OVERFLOWS_INTEGERS_AT 256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0 -#define NV_ZERO_IS_ALLBITS_ZERO - -#define L_R_TZSET -#define GMTIME_MAX 2147483647 -#define GMTIME_MIN -2147483648 -#define LOCALTIME_MAX 2147483647 -#define LOCALTIME_MIN -2147483648 -#define LOCALTIME_R_PROTO 0 - -#define PERL_PATCHLEVEL_H_IMPLICIT - -#define MULTIPLICITY - -#define OSNAME "linux" -#define OSVERS "3.18.0" diff --git a/steps/perl-5.10.1/files/config.sh b/steps/perl-5.10.1/files/config.sh deleted file mode 100644 index 7d63c326..00000000 --- a/steps/perl-5.10.1/files/config.sh +++ /dev/null @@ -1,20 +0,0 @@ -# SPDX-FileCopyrightText: 2021 Andrius Å tikonas -# SPDX-FileCopyrightText: 2021 fosslinux - -# SPDX-License-Identifier: GPL-3.0-or-later - -ar='ar' -cc='gcc' -ldlibpthname='LD_LIBRARY_PATH' -libpth='/usr/lib' -path_sep=':' -archname='i386' -osvers='' -byteorder='12345678' -x='' -ivsize='4' -ivtype='long' -lib_ext='.a' -_a='.a' - -PERL_CONFIG_SH=true diff --git a/steps/perl-5.10.1/mk/main.mk b/steps/perl-5.10.1/mk/main.mk deleted file mode 100644 index 882eb1bf..00000000 --- a/steps/perl-5.10.1/mk/main.mk +++ /dev/null @@ -1,137 +0,0 @@ -# SPDX-FileCopyrightText: 2021 fosslinux -# SPDX-FileCopyrightText: 2021 Andrius Å tikonas - -# SPDX-License-Identifier: GPL-3.0-or-later - -# Note: This makefile is not currently parallel-safe. - -VERSION=5.10.1 -PRIVLIB_EXP=$(PREFIX)/lib/perl5/$(VERSION) - -CC = gcc -AR = ar -CFLAGS = -DPRIVLIB_EXP=\"$(PRIVLIB_EXP)\" \ - -DPERL_CORE=1 \ - -I. \ - -DVERSION=\"$(VERSION)\" \ - -DNO_PPPORT_H - -MINICFLAGS = -DPERL_EXTERNAL_GLOB - -.PHONY: all - -LIBPERL_SRC = av scope op doop doio dump gv hv mg reentr mro perl perly pp \ - pp_hot pp_ctl pp_sys regcomp regexec utf8 sv taint toke util \ - deb run universal xsutils pad globals perlio perlapi numeric \ - mathoms locale pp_pack pp_sort -LIBPERL_OBJ = $(addsuffix .o, $(LIBPERL_SRC)) - -EXTENSIONS = File/Glob Digest/SHA Data/Dumper Cwd -EXTENSIONS_A := $(foreach f,$(EXTENSIONS), lib/auto/$f/$(notdir $f).a) -EXTENSIONS_PM = ext/File/Glob/Glob.pm ext/Digest/SHA/lib/Digest/SHA.pm \ - ext/Data/Dumper/Dumper.pm - -all: perl - -# miniperl - -opmini.c: op.c - cp op.c opmini.c - -perlmini.c: perl.c - cp perl.c perlmini.c - -generate_uudmap: generate_uudmap.o - $(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@ - -uudmap.h: generate_uudmap - ./generate_uudmap > $@ - -git_version.h: lib/Config_git.pl - -lib/Config_git.pl: - perl make_patchnum.pl - -globals.o: uudmap.h - -perl.o: git_version.h - -perlmini.o: git_version.h - -libperl.a: $(LIBPERL_OBJ) - $(AR) cr $@ $^ - -miniperl: miniperlmain.o opmini.o perlmini.o libperl.a - $(CC) $(CFLAGS) $(MINICFLAGS) $^ $(LDFLAGS) -o $@ - # An extremely dodgy hack - sed -i 's/va\.a\.a/v5.8.1/' miniperl - chmod +x miniperl - -# full perl - -lib/re.pm: - cp ext/re/re.pm lib/re.pm - -lib/Config.pm: config.sh miniperl configpm lib/re.pm - ./miniperl -Ilib configpm - -writemain: writemain.SH - spitshell=cat eunicefix=true ./$< - -perlmain.c: writemain $(EXTENSIONS_A) - ./writemain $(EXTENSIONS_A) > $@ - -perl: perlmain.o libperl.a $(EXTENSIONS_A) lib/File/Glob.pm lib/Digest/SHA.pm \ - lib/DynaLoader.pm lib/XSLoader.pm lib/Data/Dumper.pm - $(CC) $(CFLAGS) perlmain.o libperl.a $(EXTENSIONS_A) -o $@ - # An extremely dodgy hack (v2) - sed -i 's/va\.a\.a/v5.8.1/' perl - chmod +x perl - -# extensions - -autosplit.pl: lib/re.pm lib/Config.pm miniperl - echo 'use AutoSplit; autosplit_lib_modules(@ARGV)' > $@ - -ext/DynaLoader/DynaLoader.pm: miniperl lib/Config.pm - ./miniperl -Ilib ext/DynaLoader/DynaLoader_pm.PL DynaLoader.pm - mv DynaLoader.pm $@ - -ext/DynaLoader/XSLoader.pm: miniperl lib/Config.pm - ./miniperl -Ilib ext/DynaLoader/XSLoader_pm.PL XSLoader.pm - mv XSLoader.pm $@ - -lib/DynaLoader.pm: ext/DynaLoader/DynaLoader.pm - install $< $@ - -lib/XSLoader.pm: ext/DynaLoader/XSLoader.pm - install $< $@ - -lib/File/Glob.pm: ext/File/Glob/Glob.pm - install $< $@ - -lib/Digest/SHA.pm: ext/Digest/SHA/lib/Digest/SHA.pm - install $< $@ - -lib/Data: - mkdir $@ - -lib/Data/Dumper.pm: ext/Data/Dumper/Dumper.pm lib/Data - install $< $@ - -define build_rule -lib/auto/$1/$(notdir $1).a: ext/$1/$(notdir $1).o $(patsubst %.c,%.o,$(wildcard ext/$1/*.c)) $(EXTENSIONS_PM) - mkdir -p lib/auto/$1 - $(AR) cr lib/auto/$1/$(notdir $1).a ext/$1/$(notdir $1).o $(patsubst %.c,%.o,$(wildcard ext/$1/*.c)) - -ext/$1/$(notdir $1).c: miniperl lib/Config.pm - cd ext/$1; \ - $(CURDIR)/miniperl -I$(CURDIR)/lib Makefile.PL; \ - $(CURDIR)/miniperl -I$(CURDIR)/lib $(CURDIR)/lib/ExtUtils/xsubpp -noprototypes -typemap $(CURDIR)/lib/ExtUtils/typemap `echo $(notdir $1) | sed 's/.*-//'`.xs > $(notdir $1).c -endef -$(foreach f,$(EXTENSIONS),$(eval $(call build_rule,$f))) - -install: all - install -D perl "$(DESTDIR)$(PREFIX)/bin/perl" - mkdir -p "$(DESTDIR)$(PRIVLIB_EXP)" - cp -r lib/* "$(DESTDIR)$(PRIVLIB_EXP)" diff --git a/steps/perl-5.10.1/pass1.sh b/steps/perl-5.10.1/pass1.sh deleted file mode 100755 index e5bad5ed..00000000 --- a/steps/perl-5.10.1/pass1.sh +++ /dev/null @@ -1,30 +0,0 @@ -# SPDX-FileCopyrightText: 2021-22 fosslinux -# SPDX-FileCopyrightText: 2022 Andrius Å tikonas -# -# SPDX-License-Identifier: GPL-3.0-or-later - -src_prepare() { - default_src_prepare - - # Regenerate bison files - # perly.c looks suspiciously like it is from bison, but is not; from the - # below script: - # Note that perly.c is *not* regenerated - this is now a static file which - # is not dependent on perly.y any more. - perl regen_perly.pl -b bison-2.3 - # Remove the source file so make works. - rm -f perly.y - - # 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 lib/overload/numbers.pm opcode.h opnames.h pp_proto.h \ - pp.sym keywords.h embed.h embedvar.h global.sym perlapi.c perlapi.h \ - proto.h - perl regen.pl - - mkdir -p ext/File ext/Digest ext/Data - mv ext/File-Glob ext/File/Glob - mv ext/Digest-SHA ext/Digest/SHA - mv ext/Data-Dumper ext/Data/Dumper -} diff --git a/steps/perl-5.10.1/patches/undefined_hack.patch b/steps/perl-5.10.1/patches/undefined_hack.patch deleted file mode 100644 index c24aba8d..00000000 --- a/steps/perl-5.10.1/patches/undefined_hack.patch +++ /dev/null @@ -1,124 +0,0 @@ -SPDX-FileCopyrightText: 2021 fosslinux - -SPDX-License-Identifier: Artistic-1.0-Perl - -There are a bunch of aliases that perl's build system somehow makes but -I'm not sure how to appropriately do them, so just patch them. - ---- perl-5.10.1/lib/ExtUtils/Constant.pm 2021-04-20 21:06:43.272663878 +1000 -+++ perl-5.10.1/lib/ExtUtils/Constant.pm 2021-04-20 21:07:11.116805426 +1000 -@@ -253,11 +253,11 @@ - switch (type) { - case PERL_constant_NOTFOUND: - sv = -- sv_2mortal(newSVpvf("%s is not a valid $package_sprintf_safe macro", s)); -+ sv_2mortal(Perl_newSVpvf("%s is not a valid $package_sprintf_safe macro", s)); - PUSHs(sv); - break; - case PERL_constant_NOTDEF: -- sv = sv_2mortal(newSVpvf( -+ sv = sv_2mortal(Perl_newSVpvf( - "Your vendor has not defined $package_sprintf_safe macro %s, used", - s)); - PUSHs(sv); -@@ -288,7 +288,7 @@ - } - $xs .= << "EOT"; - default: -- sv = sv_2mortal(newSVpvf( -+ sv = sv_2mortal(Perl_newSVpvf( - "Unexpected return type %d while processing $package_sprintf_safe macro %s, used", - type, s)); - PUSHs(sv); ---- perl-5.10.1/ext/Data-Dumper/Dumper.xs 2009-06-11 02:42:23.000000000 +1000 -+++ perl-5.10.1/ext/Data-Dumper/Dumper.xs 2021-04-21 18:19:32.548468344 +1000 -@@ -312,7 +312,7 @@ - { - dSP; ENTER; SAVETMPS; PUSHMARK(sp); - XPUSHs(val); PUTBACK; -- i = perl_call_method(SvPVX_const(freezer), G_EVAL|G_VOID); -+ i = call_method(SvPVX_const(freezer), G_EVAL|G_VOID); - SPAGAIN; - if (SvTRUE(ERRSV)) - warn("WARNING(Freezer method call failed): %"SVf"", ERRSV); -@@ -515,7 +515,7 @@ - - SV * const ixsv = newSViv(0); - /* allowing for a 24 char wide array index */ -- New(0, iname, namelen+28, char); -+ Newx(iname, namelen+28, char); - (void)strcpy(iname, name); - inamelen = namelen; - if (name[0] == '@') { -@@ -660,7 +660,7 @@ - if (sortkeys != &PL_sv_yes) { - dSP; ENTER; SAVETMPS; PUSHMARK(sp); - XPUSHs(sv_2mortal(newRV_inc(ival))); PUTBACK; -- i = perl_call_sv(sortkeys, G_SCALAR | G_EVAL); -+ i = call_sv(sortkeys, G_SCALAR | G_EVAL); - SPAGAIN; - if (i) { - sv = POPs; -@@ -745,7 +745,7 @@ - } - else { - nticks = num_q(key, klen); -- New(0, nkey_buffer, klen+nticks+3, char); -+ Newx(nkey_buffer, klen+nticks+3, char); - nkey = nkey_buffer; - nkey[0] = '\''; - if (nticks) -@@ -772,7 +772,7 @@ - char *extra; - I32 elen = 0; - newapad = newSVsv(apad); -- New(0, extra, klen+4+1, char); -+ Newx(extra, klen+4+1, char); - while (elen < (klen+4)) - extra[elen++] = ' '; - extra[elen] = '\0'; -@@ -829,7 +829,7 @@ - char *npack; - char *npack_buffer = NULL; - -- New(0, npack_buffer, plen+pticks+1, char); -+ Newx(npack_buffer, plen+pticks+1, char); - npack = npack_buffer; - plen += esc_q(npack, realpack, plen); - npack[plen] = '\0'; -@@ -903,7 +903,7 @@ - if (len > 10) { - /* Looks like we're on a 64 bit system. Make it a string so that - if a 32 bit system reads the number it will cope better. */ -- sv_catpvf(retval, "'%s'", tmpbuf); -+ Perl_sv_catpvf(retval, "'%s'", tmpbuf); - } else - sv_catpvn(retval, tmpbuf, len); - } -@@ -1036,7 +1036,7 @@ - - if (!SvROK(href)) { /* call new to get an object first */ - if (items < 2) -- croak("Usage: Data::Dumper::Dumpxs(PACKAGE, VAL_ARY_REF, [NAME_ARY_REF])"); -+ Perl_croak_nocontext("Usage: Data::Dumper::Dumpxs(PACKAGE, VAL_ARY_REF, [NAME_ARY_REF])"); - - ENTER; - SAVETMPS; -@@ -1047,7 +1047,7 @@ - if (items >= 3) - XPUSHs(sv_2mortal(newSVsv(ST(2)))); - PUTBACK; -- i = perl_call_method("new", G_SCALAR); -+ i = call_method("new", G_SCALAR); - SPAGAIN; - if (i) - href = newSVsv(POPs); -@@ -1234,7 +1234,7 @@ - SvREFCNT_dec(valstr); - } - else -- croak("Call to new() method failed to return HASH ref"); -+ Perl_croak_nocontext("Call to new() method failed to return HASH ref"); - if (gimme == G_SCALAR) - XPUSHs(sv_2mortal(retval)); - } diff --git a/steps/perl-5.10.1/sources b/steps/perl-5.10.1/sources index 1bde0a17..4cbd163c 100644 --- a/steps/perl-5.10.1/sources +++ b/steps/perl-5.10.1/sources @@ -1 +1 @@ -f http://www.cpan.org/src/5.0/perl-5.10.1.tar.bz2 9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826 +http://www.cpan.org/src/5.0/perl-5.10.1.tar.bz2 9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826 From a4616a959340e1aac17dd7e0162e42f49aa89007 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 28 Aug 2025 11:20:35 +1000 Subject: [PATCH 15/64] Add SPDX information to perl 5.8.9 and 5.12.5 --- steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in | 4 ++++ steps/perl-5.12.5/patches/a2p-c-bison.patch | 7 +++++++ ...ert-Patch-Configure-doesn-t-pick-up-Hash-Util-Fie.patch | 4 ++++ steps/perl-5.8.9/patches/a2p-c-bison.patch | 7 +++++++ 4 files changed, 22 insertions(+) diff --git a/steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in b/steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in index 3bbcf2f4..cbad2f99 100644 --- a/steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + BUILD_ZLIB = False INCLUDE = /usr/include LIB = /usr/lib/i386-unknown-linux-musl diff --git a/steps/perl-5.12.5/patches/a2p-c-bison.patch b/steps/perl-5.12.5/patches/a2p-c-bison.patch index 2b5a5aa3..611633e1 100644 --- a/steps/perl-5.12.5/patches/a2p-c-bison.patch +++ b/steps/perl-5.12.5/patches/a2p-c-bison.patch @@ -1,3 +1,10 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Older versions of Bison produced 4 spaces before `goto yyerrlab`, +but ours produces more. + --- perl-5.12.5/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 +++ perl-5.12.5/x2p/Makefile.SH 2025-07-17 18:09:02.340711269 +1000 @@ -123,7 +123,7 @@ diff --git a/steps/perl-5.8.9/patches/0001-Revert-Patch-Configure-doesn-t-pick-up-Hash-Util-Fie.patch b/steps/perl-5.8.9/patches/0001-Revert-Patch-Configure-doesn-t-pick-up-Hash-Util-Fie.patch index 1c75e8a6..2f0b4cb9 100644 --- a/steps/perl-5.8.9/patches/0001-Revert-Patch-Configure-doesn-t-pick-up-Hash-Util-Fie.patch +++ b/steps/perl-5.8.9/patches/0001-Revert-Patch-Configure-doesn-t-pick-up-Hash-Util-Fie.patch @@ -1,3 +1,7 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: GPL-2.0-or-later + From 0db0a3cd0dd78965cea62c7cfc3724e31fba4e8d Mon Sep 17 00:00:00 2001 From: fosslinux Date: Sun, 13 Jul 2025 13:39:45 +1000 diff --git a/steps/perl-5.8.9/patches/a2p-c-bison.patch b/steps/perl-5.8.9/patches/a2p-c-bison.patch index 009f1c23..5ea9ede8 100644 --- a/steps/perl-5.8.9/patches/a2p-c-bison.patch +++ b/steps/perl-5.8.9/patches/a2p-c-bison.patch @@ -1,3 +1,10 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Older versions of Bison produced 4 spaces before `goto yyerrlab`, +but ours produces more. + --- perl-5.8.9/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 +++ perl-5.8.9/x2p/Makefile.SH 2025-07-17 18:09:02.340711269 +1000 @@ -123,7 +123,7 @@ From b574ae96f86f9ae6561e42d0d57d4692baa3b914 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 28 Aug 2025 13:55:49 +1000 Subject: [PATCH 16/64] Clean up perl 5.15.7 --- .../files/Compress-Raw-Zlib_config.in | 4 ++ steps/perl-5.15.7/pass1.sh | 4 +- ..._invlist-Allow-to-return-internal-pr.patch | 45 ------------------- .../patches/5.14_mk_PL_charclass.patch | 7 +++ steps/perl-5.15.7/patches/a2p-c-bison.patch | 7 +++ 5 files changed, 19 insertions(+), 48 deletions(-) delete mode 100644 steps/perl-5.15.7/patches/0001-Unicode-UCD-prop_invlist-Allow-to-return-internal-pr.patch diff --git a/steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in b/steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in index 3bbcf2f4..cbad2f99 100644 --- a/steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + BUILD_ZLIB = False INCLUDE = /usr/include LIB = /usr/lib/i386-unknown-linux-musl diff --git a/steps/perl-5.15.7/pass1.sh b/steps/perl-5.15.7/pass1.sh index 72f6a066..12ca2af6 100755 --- a/steps/perl-5.15.7/pass1.sh +++ b/steps/perl-5.15.7/pass1.sh @@ -64,6 +64,7 @@ src_configure() { -Dusedl=false \ -Ddate=':' \ -Dusedevel \ + -Uversiononly \ -Dccflags="-U__DATE__ -U__TIME__" \ -Darchname="i386-linux" \ -Dmyhostname="(none)" \ @@ -92,9 +93,6 @@ src_compile() { src_install() { default - # As this is a development version it does not install a perl symlink - ln -s perl5.15.7 "${DESTDIR}/${PREFIX}/bin/perl" - # Remove messed up manpages rm "${DESTDIR}/"*.0 } diff --git a/steps/perl-5.15.7/patches/0001-Unicode-UCD-prop_invlist-Allow-to-return-internal-pr.patch b/steps/perl-5.15.7/patches/0001-Unicode-UCD-prop_invlist-Allow-to-return-internal-pr.patch deleted file mode 100644 index f10b0ac5..00000000 --- a/steps/perl-5.15.7/patches/0001-Unicode-UCD-prop_invlist-Allow-to-return-internal-pr.patch +++ /dev/null @@ -1,45 +0,0 @@ -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.15.7/lib/Unicode/UCD.pm perl-5.15.7/lib/Unicode/UCD.pm -index 17b4fead23..a809c21adc 100644 ---- perl-5.15.7/lib/Unicode/UCD.pm -+++ perl-5.15.7/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.15.7/patches/5.14_mk_PL_charclass.patch b/steps/perl-5.15.7/patches/5.14_mk_PL_charclass.patch index 400bcc17..aaf16f46 100644 --- a/steps/perl-5.15.7/patches/5.14_mk_PL_charclass.patch +++ b/steps/perl-5.15.7/patches/5.14_mk_PL_charclass.patch @@ -1,3 +1,10 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +The /r specifier is not supported in perl 5.14. Thankfully, it is +not necessary here. + diff --git perl-5.15.7/regen/mk_PL_charclass.pl perl-5.15.7/regen/mk_PL_charclass.pl index a2f837fefc..f777ffe74d 100644 --- perl-5.15.7/regen/mk_PL_charclass.pl diff --git a/steps/perl-5.15.7/patches/a2p-c-bison.patch b/steps/perl-5.15.7/patches/a2p-c-bison.patch index 4e18bab1..ab9f90a5 100644 --- a/steps/perl-5.15.7/patches/a2p-c-bison.patch +++ b/steps/perl-5.15.7/patches/a2p-c-bison.patch @@ -1,3 +1,10 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Older versions of Bison produced 4 spaces before `goto yyerrlab`, +but ours produces more. + --- perl-5.15.7/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 +++ perl-5.15.7/x2p/Makefile.SH 2025-07-17 18:09:02.340711269 +1000 @@ -123,7 +123,7 @@ From 5f20fddc2919cac7949fbe3fa68058954170e1c3 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 28 Aug 2025 13:56:04 +1000 Subject: [PATCH 17/64] Clean up perl 5.16.3 --- steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in | 4 ++++ steps/perl-5.16.3/pass1.sh | 5 ----- ...ert-l1_char_class_tab.h-Add-field-for-quotemeta.patch | 9 ++++++++- steps/perl-5.16.3/patches/a2p-c-bison.patch | 7 +++++++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in b/steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in index 3bbcf2f4..cbad2f99 100644 --- a/steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + BUILD_ZLIB = False INCLUDE = /usr/include LIB = /usr/lib/i386-unknown-linux-musl diff --git a/steps/perl-5.16.3/pass1.sh b/steps/perl-5.16.3/pass1.sh index 952ba603..0456a1c9 100755 --- a/steps/perl-5.16.3/pass1.sh +++ b/steps/perl-5.16.3/pass1.sh @@ -92,11 +92,6 @@ src_compile() { src_install() { default - # install regcharclass.h to the filesystem - # This is for the following version of perl, because the bootstrapping story - # is incredibly bad there! - #cp regcharclass.h "${DESTDIR}/${PREFIX}/lib/perl5/5.16.3/regcharclass.h" - # Remove messed up manpages rm "${DESTDIR}/"*.0 } diff --git a/steps/perl-5.16.3/patches/0001-Revert-l1_char_class_tab.h-Add-field-for-quotemeta.patch b/steps/perl-5.16.3/patches/0001-Revert-l1_char_class_tab.h-Add-field-for-quotemeta.patch index 1fa9d6ef..1a816be0 100644 --- a/steps/perl-5.16.3/patches/0001-Revert-l1_char_class_tab.h-Add-field-for-quotemeta.patch +++ b/steps/perl-5.16.3/patches/0001-Revert-l1_char_class_tab.h-Add-field-for-quotemeta.patch @@ -1,11 +1,18 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + From c7c816ac94667bf4ed1e6185ed79a70aeabaee97 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 21 Aug 2025 21:53:47 +1000 Subject: [PATCH] Revert "l1_char_class_tab.h: Add field for quotemeta" +The symbol _Perl_Quotemeta was added in the commit before this. We cannot +use that support in this build. But support is not needed in this build, +so we can remove it and just add the QUOTEMETA macros in the next build. + This reverts commit 9a022f3a9e4bafe265086ebafcf8f6990108aa57. --- - l1_char_class_tab.h | 234 +++++++++++++++++++-------------------- regen/mk_PL_charclass.pl | 3 - 2 files changed, 117 insertions(+), 120 deletions(-) diff --git a/steps/perl-5.16.3/patches/a2p-c-bison.patch b/steps/perl-5.16.3/patches/a2p-c-bison.patch index 451c2cdb..a9eb2873 100644 --- a/steps/perl-5.16.3/patches/a2p-c-bison.patch +++ b/steps/perl-5.16.3/patches/a2p-c-bison.patch @@ -1,3 +1,10 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Older versions of Bison produced 4 spaces before `goto yyerrlab`, +but ours produces more. + --- perl-5.16.3/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 +++ perl-5.16.3/x2p/Makefile.SH 2025-07-17 18:09:02.340711269 +1000 @@ -123,7 +123,7 @@ From 15537188e6cc0d056e47546a0177ef0afece202c Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 28 Aug 2025 13:56:15 +1000 Subject: [PATCH 18/64] Cleanup perl 5.17.2 --- .../files/Compress-Raw-Zlib_config.in | 4 + steps/perl-5.17.2/pass1.sh | 14 +- .../0001-Revert-Upgrade-Socket-to-2.002.patch | 326 ------------------ ...invlists.pl-Fail-if-inversion-list-n.patch | 11 + ..._invlist-Allow-to-return-internal-pr.patch | 8 + steps/perl-5.17.2/patches/a2p-c-bison.patch | 7 + steps/perl-5.17.2/reenable-regcharclass.patch | 17 - steps/perl-5.17.2/sources | 1 + 8 files changed, 39 insertions(+), 349 deletions(-) delete mode 100644 steps/perl-5.17.2/patches/0001-Revert-Upgrade-Socket-to-2.002.patch delete mode 100644 steps/perl-5.17.2/reenable-regcharclass.patch 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 index 3bbcf2f4..cbad2f99 100644 --- a/steps/perl-5.17.2/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.17.2/files/Compress-Raw-Zlib_config.in @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + BUILD_ZLIB = False INCLUDE = /usr/include LIB = /usr/lib/i386-unknown-linux-musl diff --git a/steps/perl-5.17.2/pass1.sh b/steps/perl-5.17.2/pass1.sh index cc8b77eb..a7c17df1 100755 --- a/steps/perl-5.17.2/pass1.sh +++ b/steps/perl-5.17.2/pass1.sh @@ -7,8 +7,13 @@ src_prepare() { mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + # Socket versions greater than 2.000 have many difficult problems building + # in 5.17.x versions; replace them with 2.000 + rm -r cpan/Socket + mv ../Socket-2.000 cpan/Socket + # Remove miscellaneous pregenerated files - rm -f Porting/Glossary \ + rm 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 @@ -18,17 +23,14 @@ src_prepare() { # 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 \ + rm 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 + lib/feature.pm charclass_invlists.h perl regen.pl perl regen_perly.pl -b bison-2.3 perl regen/keywords.pl 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 deleted file mode 100644 index 87172e29..00000000 --- a/steps/perl-5.17.2/patches/0001-Revert-Upgrade-Socket-to-2.002.patch +++ /dev/null @@ -1,326 +0,0 @@ -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 index 3843121a..44d7859a 100644 --- 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 @@ -1,9 +1,20 @@ +SPDX-FileCopyrightText: 2025 fosslinux +SPDX-FileCopyrightText: 2012 Karl Williamson + +SPDX-License-Identifier: Artistic-1.0 + 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" +The symbol _Perl_Non_Final_Folds has not yet been added. Remove it for now, +it is not necessary for this build. + +(It is unclear whether the inversion list changes affect the build, low +priority TODO check if removing it is necessary. Doesn't hurt to leave it in.) + This reverts commit ad89228c5b795cc268ecf73cf29290f8bc70e979. --- regen/mk_invlists.pl | 2 -- 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 index 3ebe4d98..9901b930 100644 --- 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 @@ -1,3 +1,11 @@ +SPDX-FileCopyrightText: 2025 fosslinux +SPDX-FileCopyrightText: 2012 Karl Williamson + +SPDX-License-Identifier: Artistic-1.0 + +Backport this patch, because the following version expects this patch to +exist, and patching it out is much more annoying than patching it in. + From b5bc060d03776870f3ead93e8c565069a66c2af9 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Mon, 18 Jun 2012 12:38:41 -0600 diff --git a/steps/perl-5.17.2/patches/a2p-c-bison.patch b/steps/perl-5.17.2/patches/a2p-c-bison.patch index 86da7a1c..eb8a007a 100644 --- a/steps/perl-5.17.2/patches/a2p-c-bison.patch +++ b/steps/perl-5.17.2/patches/a2p-c-bison.patch @@ -1,3 +1,10 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Older versions of Bison produced 4 spaces before `goto yyerrlab`, +but ours produces more. + --- 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 @@ diff --git a/steps/perl-5.17.2/reenable-regcharclass.patch b/steps/perl-5.17.2/reenable-regcharclass.patch deleted file mode 100644 index 30af8f15..00000000 --- a/steps/perl-5.17.2/reenable-regcharclass.patch +++ /dev/null @@ -1,17 +0,0 @@ -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 index 50ee90bb..e94b71bc 100644 --- a/steps/perl-5.17.2/sources +++ b/steps/perl-5.17.2/sources @@ -1,2 +1,3 @@ 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 +https://cpan.metacpan.org/authors/id/P/PE/PEVANS/Socket-2.000.tar.gz 91eb0dfaafdf08e450aa03cd8a3285d47facfd432f75f812a5bdafd9e445297b From 629f4a764cd42ea91a2dfb7d4c7d22c7d1e0d93e Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 28 Aug 2025 13:57:26 +1000 Subject: [PATCH 19/64] Clean up perl 5.17.4 --- .../files/Compress-Raw-Zlib_config.in | 4 + steps/perl-5.17.4/pass1.sh | 9 +- ...charclass.pl-Generate-macros-for-X-p.patch | 9 + ....c-Use-new-macros-instead-of-swashes.patch | 33 +- ...e-macro-not-swash-for-utf8-quotemeta.patch | 26 +- ...y-involved-in-X-matching-for-clarity.patch | 53 +++ ...t-Upgrade-Socket-from-2.004-to-2.006.patch | 270 -------------- .../0012-Revert-Upgrade-Socket-to-2.004.patch | 69 ---- ...t-Upgrade-Socket-from-2.002-to-2.003.patch | 270 -------------- .../0014-Revert-Upgrade-Socket-to-2.002.patch | 344 ------------------ steps/perl-5.17.4/patches/a2p-c-bison.patch | 7 + .../patches/duplicate-invlists-defn.patch | 13 + steps/perl-5.17.4/sources | 1 + 13 files changed, 116 insertions(+), 992 deletions(-) create mode 100644 steps/perl-5.17.4/patches/0004-Rename-property-involved-in-X-matching-for-clarity.patch delete mode 100644 steps/perl-5.17.4/patches/0011-Revert-Upgrade-Socket-from-2.004-to-2.006.patch delete mode 100644 steps/perl-5.17.4/patches/0012-Revert-Upgrade-Socket-to-2.004.patch delete mode 100644 steps/perl-5.17.4/patches/0013-Revert-Upgrade-Socket-from-2.002-to-2.003.patch delete mode 100644 steps/perl-5.17.4/patches/0014-Revert-Upgrade-Socket-to-2.002.patch diff --git a/steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in b/steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in index 3bbcf2f4..cbad2f99 100644 --- a/steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + BUILD_ZLIB = False INCLUDE = /usr/include LIB = /usr/lib/i386-unknown-linux-musl diff --git a/steps/perl-5.17.4/pass1.sh b/steps/perl-5.17.4/pass1.sh index 464b14f5..603dc703 100755 --- a/steps/perl-5.17.4/pass1.sh +++ b/steps/perl-5.17.4/pass1.sh @@ -7,8 +7,13 @@ src_prepare() { mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + # Socket versions greater than 2.000 have many difficult problems building + # in 5.17.x versions; replace them with 2.000 + rm -r cpan/Socket + mv ../Socket-2.000 cpan/Socket + # Remove miscellaneous pregenerated files - rm -f Porting/Glossary \ + rm 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 @@ -23,7 +28,7 @@ src_prepare() { # Regenerate other prebuilt header files # Taken from headers of regen scripts - rm -f lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c \ + rm 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} \ diff --git a/steps/perl-5.17.4/patches/0001-Revert-regen-regcharclass.pl-Generate-macros-for-X-p.patch b/steps/perl-5.17.4/patches/0001-Revert-regen-regcharclass.pl-Generate-macros-for-X-p.patch index c2b001c5..364e9b4f 100644 --- a/steps/perl-5.17.4/patches/0001-Revert-regen-regcharclass.pl-Generate-macros-for-X-p.patch +++ b/steps/perl-5.17.4/patches/0001-Revert-regen-regcharclass.pl-Generate-macros-for-X-p.patch @@ -1,9 +1,18 @@ +SPDX-FileCopyrightText: 2025 fosslinux +SPDX-FileCopyrightText: 2012 Karl Williamson + +SPDX-License-Identifier: Artistic-1.0 + From 914c32b1b85e310c832192ef133d2eb8b7108bfa Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Fri, 22 Aug 2025 23:38:59 +1000 Subject: [PATCH] Revert "regen/regcharclass.pl: Generate macros for \X processing" +The _X_* family of symbols were added in the previous commit, so we cannot +use them this build. The next two patches in the series removes the use of the +macros generated by regcharclass.pl. + This reverts commit 612ead590b8b5f05e4060738540192ece946c340. --- regen/regcharclass.pl | 28 ---------------------------- diff --git a/steps/perl-5.17.4/patches/0002-Revert-regexec.c-Use-new-macros-instead-of-swashes.patch b/steps/perl-5.17.4/patches/0002-Revert-regexec.c-Use-new-macros-instead-of-swashes.patch index 064ddcde..2bd2a439 100644 --- a/steps/perl-5.17.4/patches/0002-Revert-regexec.c-Use-new-macros-instead-of-swashes.patch +++ b/steps/perl-5.17.4/patches/0002-Revert-regexec.c-Use-new-macros-instead-of-swashes.patch @@ -1,12 +1,22 @@ +SPDX-FileCopyrightText: 2025 fosslinux +SPDX-FileCopyrightText: 2012 Karl Williamson + +SPDX-License-Identifier: Artistic-1.0 + From 1bfcdd572f51f5db59c6c3b91f28c5b3141215bb Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Fri, 22 Aug 2025 17:24:24 +1000 Subject: [PATCH] Revert "regexec.c: Use new macros instead of swashes" +The original commit introduced the use of the \X macros that were generated +in the commit before it by regcharclass.h. We can't use those macros in this +build, so remove the use of them. + +Only non-generated parts are reverted. + This reverts commit 45fdf108c5f4d5c719b8d2f7389c81e54795bad7. --- embed.fnc | 9 ++ - embedvar.h | 7 ++ intrpvar.h | 7 ++ regen/unicode_constants.pl | 3 + regexec.c | 78 ++++++++++------ @@ -35,27 +45,6 @@ index 0db9300b3b..e45e6889c9 100644 : Used in perly.y p |OP* |jmaybe |NN OP *o : Used in pp.c -diff --git perl-5.17.4/embedvar.h perl-5.17.4/embedvar.h -index b9fabab437..f306f2f2f7 100644 ---- perl-5.17.4/embedvar.h -+++ perl-5.17.4/embedvar.h -@@ -353,9 +353,16 @@ - #define PL_unitcheckav_save (vTHX->Iunitcheckav_save) - #define PL_unlockhook (vTHX->Iunlockhook) - #define PL_unsafe (vTHX->Iunsafe) -+#define PL_utf8_X_L (vTHX->Iutf8_X_L) - #define PL_utf8_X_LVT (vTHX->Iutf8_X_LVT) -+#define PL_utf8_X_LV_LVT_V (vTHX->Iutf8_X_LV_LVT_V) -+#define PL_utf8_X_RI (vTHX->Iutf8_X_RI) -+#define PL_utf8_X_T (vTHX->Iutf8_X_T) -+#define PL_utf8_X_V (vTHX->Iutf8_X_V) - #define PL_utf8_X_extend (vTHX->Iutf8_X_extend) -+#define PL_utf8_X_prepend (vTHX->Iutf8_X_prepend) - #define PL_utf8_X_regular_begin (vTHX->Iutf8_X_regular_begin) -+#define PL_utf8_X_special_begin (vTHX->Iutf8_X_special_begin) - #define PL_utf8_alnum (vTHX->Iutf8_alnum) - #define PL_utf8_alpha (vTHX->Iutf8_alpha) - #define PL_utf8_blank (vTHX->Iutf8_blank) diff --git perl-5.17.4/intrpvar.h perl-5.17.4/intrpvar.h index 40a6aa1e9d..e306ebbb31 100644 --- perl-5.17.4/intrpvar.h diff --git a/steps/perl-5.17.4/patches/0003-Revert-Use-macro-not-swash-for-utf8-quotemeta.patch b/steps/perl-5.17.4/patches/0003-Revert-Use-macro-not-swash-for-utf8-quotemeta.patch index 54dde26f..1ef1ee84 100644 --- a/steps/perl-5.17.4/patches/0003-Revert-Use-macro-not-swash-for-utf8-quotemeta.patch +++ b/steps/perl-5.17.4/patches/0003-Revert-Use-macro-not-swash-for-utf8-quotemeta.patch @@ -1,12 +1,22 @@ +SPDX-FileCopyrightText: 2025 fosslinux +SPDX-FileCopyrightText: 2012 Karl Williamson + +SPDX-License-Identifier: Artistic-1.0 + From 070b9010ff7a44dbdce15dfea579089bfbdff821 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Fri, 22 Aug 2025 23:48:33 +1000 Subject: [PATCH] Revert "Use macro not swash for utf8 quotemeta" +The original commit introduced the use of the \X macros that were generated +in the commit before it by regcharclass.h. We can't use those macros in this +build, so remove the use of them. + +Only non-generated parts are reverted. + This reverts commit 685289b5657b776e8a3871de68a57785e6ccd797. --- embed.fnc | 1 + - embed.h | 3 +++ intrpvar.h | 1 + pp.c | 3 +-- regen/regcharclass.pl | 4 ---- @@ -26,20 +36,6 @@ index 0db9300b3b..466025950e 100644 #endif Ap |UV |to_uni_lower |UV c|NN U8 *p|NN STRLEN *lenp Amp |UV |to_uni_fold |UV c|NN U8 *p|NN STRLEN *lenp -diff --git perl-5.17.4/embed.h perl-5.17.4/embed.h -index e0afb124b0..3ffe84f220 100644 ---- perl-5.17.4/embed.h -+++ perl-5.17.4/embed.h -@@ -789,6 +789,9 @@ - #define warn_nocontext Perl_warn_nocontext - #define warner_nocontext Perl_warner_nocontext - #endif -+#if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C) -+#define _is_utf8_quotemeta(a) Perl__is_utf8_quotemeta(aTHX_ a) -+#endif - #if defined(PERL_MAD) - #define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c) - #endif diff --git perl-5.17.4/intrpvar.h perl-5.17.4/intrpvar.h index 40a6aa1e9d..641cac6268 100644 --- perl-5.17.4/intrpvar.h diff --git a/steps/perl-5.17.4/patches/0004-Rename-property-involved-in-X-matching-for-clarity.patch b/steps/perl-5.17.4/patches/0004-Rename-property-involved-in-X-matching-for-clarity.patch new file mode 100644 index 00000000..52f92205 --- /dev/null +++ b/steps/perl-5.17.4/patches/0004-Rename-property-involved-in-X-matching-for-clarity.patch @@ -0,0 +1,53 @@ +SPDX-FileCopyrightText: 2025 fosslinux +SPDX-FileCopyrightText: 2012 Karl Williamson + +SPDX-License-Identifier: Artistic-1.0 + +This symbol goes unused in this commit, but the next version of perl +that we build changed the name of the symbol, so rename it here by +backporting this patch. + +Only the part of the patch changing the name is used. The other two +modifications in the original patch change the use of the symbol +which obviously does not apply to this build. + +From b79624bd711790796036524d5fc46521233cf85f Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Sun, 16 Dec 2012 11:50:34 -0700 +Subject: [PATCH] Rename property involved in \X matching, for clarity + +I was re-reading some code and got confused. This table matches just +the first character of a sequence that may or may not contain others. +--- + lib/unicore/mktables | 8 ++++---- + 3 files changed, 9 insertions(+), 9 deletions(-) + +diff --git perl-5.17.4/lib/unicore/mktables perl-5.17.4/lib/unicore/mktables +index e779b08e8e..b9dc1df.17 100644 +--- perl-5.17.4/lib/unicore/mktables ++++ perl-5.17.4/lib/unicore/mktables +@@ -13551,7 +13551,7 @@ sub compile_perl() { + push @tables_that_may_be_empty, $ri->full_name; + } + +- my $specials_begin = $perl->add_match_table('_X_Special_Begin', ++ my $specials_begin = $perl->add_match_table('_X_Special_Begin_Start', + Perl_Extension => 1, + Fate => $INTERNAL_ONLY, + Initialize => $lv_lvt_v +@@ -13560,9 +13560,9 @@ sub compile_perl() { + + $ri + ); + $specials_begin->add_comment(join_lines( <add_match_table('_X_Regular_Begin', +-- +2.49.1 + diff --git a/steps/perl-5.17.4/patches/0011-Revert-Upgrade-Socket-from-2.004-to-2.006.patch b/steps/perl-5.17.4/patches/0011-Revert-Upgrade-Socket-from-2.004-to-2.006.patch deleted file mode 100644 index 5ad7b947..00000000 --- a/steps/perl-5.17.4/patches/0011-Revert-Upgrade-Socket-from-2.004-to-2.006.patch +++ /dev/null @@ -1,270 +0,0 @@ -From f1fabc56fb9cd2417f5423fdc73ab73574ea8c8e Mon Sep 17 00:00:00 2001 -From: Samuel Tyler -Date: Fri, 22 Aug 2025 23:58:47 +1000 -Subject: [PATCH 1/4] Revert "Upgrade Socket from 2.004 to 2.006" - -This reverts commit aff163d96ea1505927d05ead3078b1d7bb3bfa93. ---- - Porting/Maintainers.pl | 2 +- - cpan/Socket/Makefile.PL | 8 +----- - cpan/Socket/Socket.pm | 6 +--- - cpan/Socket/Socket.xs | 59 ++++++++++++---------------------------- - cpan/Socket/t/sockaddr.t | 10 ++----- - pod/perldelta.pod | 5 +--- - 6 files changed, 25 insertions(+), 65 deletions(-) - -diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl -index e107f710e0..54ab2c1352 100755 ---- perl-5.17.4/Porting/Maintainers.pl -+++ perl-5.17.4/Porting/Maintainers.pl -@@ -1636,7 +1636,7 @@ use File::Glob qw(:case); - - 'Socket' => { - 'MAINTAINER' => 'pevans', -- 'DISTRIBUTION' => 'PEVANS/Socket-2.006.tar.gz', -+ 'DISTRIBUTION' => 'PEVANS/Socket-2.004.tar.gz', - 'FILES' => q[cpan/Socket], - 'UPSTREAM' => 'cpan', - }, -diff --git perl-5.17.4/cpan/Socket/Makefile.PL perl-5.17.4/cpan/Socket/Makefile.PL -index 639a57c4d6..9e76dcea96 100644 ---- perl-5.17.4/cpan/Socket/Makefile.PL -+++ perl-5.17.4/cpan/Socket/Makefile.PL -@@ -108,19 +108,13 @@ 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;" - ); - --# TODO: Needs adding to perl5 core before importing dual-life again --check_for( -- confkey => "d_ip_mreq_source", -- define => "HAS_IP_MREQ_SOURCE", -- main => "struct ip_mreq_source mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;" --); -- - check_for( - confkey => "d_ipv6_mreq", - define => "HAS_IPV6_MREQ", -diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm -index c0dc4aa7dd..83729b290d 100644 ---- perl-5.17.4/cpan/Socket/Socket.pm -+++ perl-5.17.4/cpan/Socket/Socket.pm -@@ -3,7 +3,7 @@ package Socket; - use strict; - { use 5.006001; } - --our $VERSION = '2.006'; -+our $VERSION = '2.004'; - - =head1 NAME - -@@ -184,8 +184,6 @@ opaque string representing the IP address (you can use inet_ntoa() to convert - the address to the four-dotted numeric format). Will croak if the structure - does not represent an C address. - --In scalar context will return just the IP address. -- - =head2 $sockaddr = sockaddr_in $port, $ip_address - - =head2 ($port, $ip_address) = sockaddr_in $sockaddr -@@ -213,8 +211,6 @@ flow label. (You can use inet_ntop() to convert the address to the usual - string format). Will croak if the structure does not represent an C - address. - --In scalar context will return just the IP address. -- - =head2 $sockaddr = sockaddr_in6 $port, $ip6_address, [$scope_id, [$flowinfo]] - - =head2 ($port, $ip6_address, $scope_id, $flowinfo) = sockaddr_in6 $sockaddr -diff --git perl-5.17.4/cpan/Socket/Socket.xs perl-5.17.4/cpan/Socket/Socket.xs -index e99eac12ef..0bdebf5ca4 100644 ---- perl-5.17.4/cpan/Socket/Socket.xs -+++ perl-5.17.4/cpan/Socket/Socket.xs -@@ -179,9 +179,6 @@ static void *my_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 kl, - #ifndef mPUSHp - # define mPUSHp(p,l) sv_setpvn_mg(PUSHs(sv_newmortal()), (p), (l)) - #endif /* !mPUSHp */ --#ifndef mPUSHs --# define mPUSHs(s) PUSHs(sv_2mortal(s)) --#endif /* !mPUSHs */ - - #ifndef CvCONST_on - # undef newCONSTSUB -@@ -789,7 +786,8 @@ unpack_sockaddr_in(sin_sv) - { - STRLEN sockaddrlen; - struct sockaddr_in addr; -- SV *ip_address_sv; -+ unsigned short port; -+ struct in_addr ip_address; - char * sin = SvPVbyte(sin_sv,sockaddrlen); - if (sockaddrlen != sizeof(addr)) { - croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf, -@@ -800,16 +798,12 @@ unpack_sockaddr_in(sin_sv) - croak("Bad address family for %s, got %d, should be %d", - "Socket::unpack_sockaddr_in", addr.sin_family, AF_INET); - } -- ip_address_sv = newSVpvn((char *)&addr.sin_addr, sizeof(addr.sin_addr)); -+ port = ntohs(addr.sin_port); -+ ip_address = addr.sin_addr; - -- if(GIMME_V == G_ARRAY) { -- EXTEND(SP, 2); -- mPUSHi(ntohs(addr.sin_port)); -- mPUSHs(ip_address_sv); -- } -- else { -- mPUSHs(ip_address_sv); -- } -+ EXTEND(SP, 2); -+ PUSHs(sv_2mortal(newSViv((IV) port))); -+ PUSHs(sv_2mortal(newSVpvn((char *)&ip_address, sizeof(ip_address)))); - } - - void -@@ -860,7 +854,6 @@ unpack_sockaddr_in6(sin6_sv) - STRLEN addrlen; - struct sockaddr_in6 sin6; - char * addrbytes = SvPVbyte(sin6_sv, addrlen); -- SV *ip_address_sv; - if (addrlen != sizeof(sin6)) - croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf, - "Socket::unpack_sockaddr_in6", (UV)addrlen, (UV)sizeof(sin6)); -@@ -868,22 +861,15 @@ unpack_sockaddr_in6(sin6_sv) - if (sin6.sin6_family != AF_INET6) - croak("Bad address family for %s, got %d, should be %d", - "Socket::unpack_sockaddr_in6", sin6.sin6_family, AF_INET6); -- ip_address_sv = newSVpvn((char *)&sin6.sin6_addr, sizeof(sin6.sin6_addr)); -- -- if(GIMME_V == G_ARRAY) { -- EXTEND(SP, 4); -- mPUSHi(ntohs(sin6.sin6_port)); -- mPUSHs(ip_address_sv); -+ EXTEND(SP, 4); -+ mPUSHi(ntohs(sin6.sin6_port)); -+ mPUSHp((char *)&sin6.sin6_addr, sizeof(sin6.sin6_addr)); - # ifdef HAS_SIN6_SCOPE_ID -- mPUSHi(sin6.sin6_scope_id); -+ mPUSHi(sin6.sin6_scope_id); - # else -- mPUSHi(0); -+ mPUSHi(0); - # endif -- mPUSHi(ntohl(sin6.sin6_flowinfo)); -- } -- else { -- mPUSHs(ip_address_sv); -- } -+ mPUSHi(ntohl(sin6.sin6_flowinfo)); - #else - ST(0) = (SV*)not_here("pack_sockaddr_in6"); - #endif -@@ -912,20 +898,11 @@ inet_ntop(af, ip_address_sv) - - struct_size = sizeof(addr); - -- switch(af) { -- case AF_INET: -- if(addrlen != 4) -- croak("Bad address length for Socket::inet_ntop on AF_INET;" -- " got %d, should be 4"); -- break; -+ if (af != AF_INET - #ifdef AF_INET6 -- case AF_INET6: -- if(addrlen != 16) -- croak("Bad address length for Socket::inet_ntop on AF_INET6;" -- " got %d, should be 16"); -- break; -+ && af != AF_INET6 - #endif -- default: -+ ) { - croak("Bad address family for %s, got %d, should be" - #ifdef AF_INET6 - " either AF_INET or AF_INET6", -@@ -1049,7 +1026,7 @@ pack_ip_mreq_source(multiaddr, source, interface=&PL_sv_undef) - SV * interface - CODE: - { --#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP) -+#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP) - struct ip_mreq_source mreq; - char * multiaddrbytes; - char * sourcebytes; -@@ -1092,7 +1069,7 @@ unpack_ip_mreq_source(mreq_sv) - SV * mreq_sv - PPCODE: - { --#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP) -+#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP) - struct ip_mreq_source mreq; - STRLEN mreqlen; - char * mreqbytes = SvPVbyte(mreq_sv, mreqlen); -diff --git perl-5.17.4/cpan/Socket/t/sockaddr.t perl-5.17.4/cpan/Socket/t/sockaddr.t -index 1ae24a0bba..63cce24309 100644 ---- perl-5.17.4/cpan/Socket/t/sockaddr.t -+++ perl-5.17.4/cpan/Socket/t/sockaddr.t -@@ -10,7 +10,7 @@ use Socket qw( - sockaddr_family - sockaddr_un - ); --use Test::More tests => 33; -+use Test::More tests => 31; - - # inet_aton, inet_ntoa - { -@@ -73,8 +73,6 @@ SKIP: { - is( (unpack_sockaddr_in($sin))[0] , 100, 'pack_sockaddr_in->unpack_sockaddr_in port'); - is(inet_ntoa((unpack_sockaddr_in($sin))[1]), "10.20.30.40", 'pack_sockaddr_in->unpack_sockaddr_in addr'); - -- is(inet_ntoa(scalar unpack_sockaddr_in($sin)), "10.20.30.40", 'unpack_sockaddr_in in scalar context yields addr'); -- - is_deeply( [ sockaddr_in($sin) ], [ unpack_sockaddr_in($sin) ], - 'sockaddr_in in list context unpacks' ); - -@@ -85,8 +83,8 @@ SKIP: { - # pack_sockaddr_in6, unpack_sockaddr_in6 - # sockaddr_in6 - SKIP: { -- skip "No AF_INET6", 9 unless my $AF_INET6 = eval { Socket::AF_INET6() }; -- skip "Cannot pack_sockaddr_in6()", 9 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) }; -+ skip "No AF_INET6", 8 unless my $AF_INET6 = eval { Socket::AF_INET6() }; -+ skip "Cannot pack_sockaddr_in6()", 8 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) }; - - ok(defined $sin6, 'pack_sockaddr_in6 defined'); - -@@ -97,8 +95,6 @@ SKIP: { - is((Socket::unpack_sockaddr_in6($sin6))[2], 0, 'pack_sockaddr_in6->unpack_sockaddr_in6 scope_id'); - is((Socket::unpack_sockaddr_in6($sin6))[3], 89, 'pack_sockaddr_in6->unpack_sockaddr_in6 flowinfo'); - -- is(scalar Socket::unpack_sockaddr_in6($sin6), "0123456789abcdef", 'unpack_sockaddr_in6 in scalar context yields addr'); -- - is_deeply( [ Socket::sockaddr_in6($sin6) ], [ Socket::unpack_sockaddr_in6($sin6) ], - 'sockaddr_in6 in list context unpacks' ); - -diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod -index 52eaf8f1f5..78f169f953 100644 ---- perl-5.17.4/pod/perldelta.pod -+++ perl-5.17.4/pod/perldelta.pod -@@ -308,10 +308,7 @@ opcodes. - - =item * - --L has been upgraded from version 2.004 to 2.006. --C and C now return just the IP --address in scalar context, and C now guards against incorrect --length scalars being passed in. -+L has been upgraded from version A.xx to B.yy. - - =item * - --- -2.49.1 - diff --git a/steps/perl-5.17.4/patches/0012-Revert-Upgrade-Socket-to-2.004.patch b/steps/perl-5.17.4/patches/0012-Revert-Upgrade-Socket-to-2.004.patch deleted file mode 100644 index 91b672a4..00000000 --- a/steps/perl-5.17.4/patches/0012-Revert-Upgrade-Socket-to-2.004.patch +++ /dev/null @@ -1,69 +0,0 @@ -From de7b91dbf552295709c29dec46ab735b141b3881 Mon Sep 17 00:00:00 2001 -From: Samuel Tyler -Date: Fri, 22 Aug 2025 23:59:12 +1000 -Subject: [PATCH 2/4] Revert "Upgrade Socket to 2.004" - -This reverts commit b43fc6a1c1224963b2a2430029a638a4294147d0. ---- - Porting/Maintainers.pl | 2 +- - cpan/Socket/Socket.pm | 2 +- - cpan/Socket/t/ip_mreq.t | 2 +- - pod/perldelta.pod | 3 +++ - 4 files changed, 6 insertions(+), 3 deletions(-) - -diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl -index 54ab2c1352..3b3004f6c3 100755 ---- perl-5.17.4/Porting/Maintainers.pl -+++ perl-5.17.4/Porting/Maintainers.pl -@@ -1636,7 +1636,7 @@ use File::Glob qw(:case); - - 'Socket' => { - 'MAINTAINER' => 'pevans', -- 'DISTRIBUTION' => 'PEVANS/Socket-2.004.tar.gz', -+ 'DISTRIBUTION' => 'PEVANS/Socket-2.003.tar.gz', - 'FILES' => q[cpan/Socket], - 'UPSTREAM' => 'cpan', - }, -diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm -index 83729b290d..d9bbfae258 100644 ---- perl-5.17.4/cpan/Socket/Socket.pm -+++ perl-5.17.4/cpan/Socket/Socket.pm -@@ -3,7 +3,7 @@ package Socket; - use strict; - { use 5.006001; } - --our $VERSION = '2.004'; -+our $VERSION = '2.003'; - - =head1 NAME - -diff --git perl-5.17.4/cpan/Socket/t/ip_mreq.t perl-5.17.4/cpan/Socket/t/ip_mreq.t -index 2ed76062c1..2a99509904 100644 ---- perl-5.17.4/cpan/Socket/t/ip_mreq.t -+++ perl-5.17.4/cpan/Socket/t/ip_mreq.t -@@ -31,7 +31,7 @@ is( (unpack_ip_mreq pack_ip_mreq "\xe0\0\0\1")[1], INADDR_ANY, 'pack_ip_mreq int - - SKIP: { - my $mreq; -- skip "No pack_ip_mreq_source", 3 unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY }; -+ skip 3, "No pack_ip_mreq_source" unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY }; - - @unpacked = unpack_ip_mreq_source $mreq; - -diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod -index 78f169f953..a64c1a9143 100644 ---- perl-5.17.4/pod/perldelta.pod -+++ perl-5.17.4/pod/perldelta.pod -@@ -316,6 +316,9 @@ L has been upgraded from version 2.38 to 2.39. This contains various - bugfixes, including compatibility fixes for older versions of Perl and vstring - handling. - -+L has been upgraded from version 2.002 to 2.003. Constants and -+functions required for IP multicast source group membership have been added. -+ - =item * - - L has been upgraded from version 0.31 to 0.32. This includes --- -2.49.1 - diff --git a/steps/perl-5.17.4/patches/0013-Revert-Upgrade-Socket-from-2.002-to-2.003.patch b/steps/perl-5.17.4/patches/0013-Revert-Upgrade-Socket-from-2.002-to-2.003.patch deleted file mode 100644 index 8b71f028..00000000 --- a/steps/perl-5.17.4/patches/0013-Revert-Upgrade-Socket-from-2.002-to-2.003.patch +++ /dev/null @@ -1,270 +0,0 @@ -From a70ed0b00a2650fa5a9cc238460e9602a3df9df1 Mon Sep 17 00:00:00 2001 -From: Samuel Tyler -Date: Fri, 22 Aug 2025 23:59:39 +1000 -Subject: [PATCH 3/4] Revert "Upgrade Socket from 2.002 to 2.003" - -This reverts commit d4ada64ad845b1ffe124cf230a345b847e43d755. ---- - Porting/Maintainers.pl | 2 +- - cpan/Socket/Makefile.PL | 22 ++++++-------- - cpan/Socket/Socket.pm | 36 +++++++--------------- - cpan/Socket/Socket.xs | 67 ----------------------------------------- - cpan/Socket/t/ip_mreq.t | 14 +-------- - pod/perldelta.pod | 4 +++ - 6 files changed, 27 insertions(+), 118 deletions(-) - -diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl -index 3b3004f6c3..e38daab394 100755 ---- perl-5.17.4/Porting/Maintainers.pl -+++ perl-5.17.4/Porting/Maintainers.pl -@@ -1636,7 +1636,7 @@ use File::Glob qw(:case); - - 'Socket' => { - 'MAINTAINER' => 'pevans', -- 'DISTRIBUTION' => 'PEVANS/Socket-2.003.tar.gz', -+ 'DISTRIBUTION' => 'PEVANS/Socket-2.002.tar.gz', - 'FILES' => q[cpan/Socket], - 'UPSTREAM' => 'cpan', - }, -diff --git perl-5.17.4/cpan/Socket/Makefile.PL perl-5.17.4/cpan/Socket/Makefile.PL -index 9e76dcea96..3be198e024 100644 ---- perl-5.17.4/cpan/Socket/Makefile.PL -+++ perl-5.17.4/cpan/Socket/Makefile.PL -@@ -161,14 +161,13 @@ my @names = ( - - IOV_MAX - -- IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP -- IP_DROP_SOURCE_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_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 - -- IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP -- IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS -- IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY -+ IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER -+ IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP -+ IPV6_UNICAST_HOPS IPV6_V6ONLY - - MSG_BCAST MSG_BTAG MSG_CTLFLAGS MSG_CTLIGNORE MSG_DONTWAIT MSG_EOF - MSG_EOR MSG_ERRQUEUE MSG_ETAG MSG_FIN MSG_MAXIOVLEN MSG_MCAST -@@ -201,11 +200,10 @@ my @names = ( - SO_SECURITY_ENCRYPTION_TRANSPORT SO_SNDBUF SO_SNDLOWAT SO_SNDTIMEO - SO_STATE SO_TYPE SO_USELOOPBACK SO_XOPEN SO_XSE - -- TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO -- TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL -- TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT -- TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT -- TCP_WINDOW_CLAMP -+ TCP_KEEPALIVE TCP_MAXRT TCP_MAXSEG TCP_NODELAY TCP_STDURG TCP_CORK -+ TCP_KEEPIDLE TCP_KEEPINTVL TCP_KEEPCNT TCP_SYNCNT TCP_LINGER2 -+ TCP_DEFER_ACCEPT TCP_WINDOW_CLAMP TCP_INFO TCP_QUICKACK TCP_CONGESTION -+ TCP_MD5SIG - - UIO_MAXIOV - ), -diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm -index d9bbfae258..41f214d8fe 100644 ---- perl-5.17.4/cpan/Socket/Socket.pm -+++ perl-5.17.4/cpan/Socket/Socket.pm -@@ -3,7 +3,7 @@ package Socket; - use strict; - { use 5.006001; } - --our $VERSION = '2.003'; -+our $VERSION = '2.002'; - - =head1 NAME - -@@ -260,18 +260,6 @@ sockopts. - Takes an C structure. Returns a list of two elements; the IPv4 - multicast address and interface address. - --=head2 $ip_mreq_source = pack_ip_mreq_source $multiaddr, $source, $interface -- --Takes an IPv4 multicast address, source 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, $source, $interface) = unpack_ip_mreq_source $ip_mreq -- --Takes an C structure. Returns a list of three elements; the --IPv4 multicast address, source address and interface address. -- - =head2 $ipv6_mreq = pack_ipv6_mreq $multiaddr6, $ifindex - - Takes an IPv6 multicast address and an interface number. Returns the -@@ -748,26 +736,24 @@ our @EXPORT_OK = qw( - - SOCK_NONBLOCK SOCK_CLOEXEC - -- IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP -- IP_DROP_SOURCE_MEMBERSHIP IP_MULTICAST_IF IP_MULTICAST_LOOP -- IP_MULTICAST_TTL -+ 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 - -- TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO -- TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL -- TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT -- TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT -- TCP_WINDOW_CLAMP -+ TCP_CONGESTION TCP_CORK TCP_DEFER_ACCEPT TCP_INFO TCP_KEEPALIVE -+ TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL TCP_LINGER2 TCP_MAXRT TCP_MAXSEG -+ TCP_MD5SIG TCP_NODELAY TCP_QUICKACK TCP_STDURG TCP_SYNCNT -+ TCP_WINDOW_CLAMP - - IN6ADDR_ANY IN6ADDR_LOOPBACK - -- IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP -- IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS -- IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY -+ IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER -+ IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP -+ IPV6_UNICAST_HOPS IPV6_V6ONLY - -- pack_ip_mreq unpack_ip_mreq pack_ip_mreq_source unpack_ip_mreq_source -+ pack_ip_mreq unpack_ip_mreq - - pack_ipv6_mreq unpack_ipv6_mreq - -diff --git perl-5.17.4/cpan/Socket/Socket.xs perl-5.17.4/cpan/Socket/Socket.xs -index 0bdebf5ca4..f22c1f3001 100644 ---- perl-5.17.4/cpan/Socket/Socket.xs -+++ perl-5.17.4/cpan/Socket/Socket.xs -@@ -1019,73 +1019,6 @@ unpack_ip_mreq(mreq_sv) - #endif - } - --void --pack_ip_mreq_source(multiaddr, source, interface=&PL_sv_undef) -- SV * multiaddr -- SV * source -- SV * interface -- CODE: -- { --#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP) -- struct ip_mreq_source mreq; -- char * multiaddrbytes; -- char * sourcebytes; -- char * interfacebytes; -- STRLEN len; -- if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) -- croak("Wide character in %s", "Socket::pack_ip_mreq_source"); -- 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)); -- if (DO_UTF8(source) && !sv_utf8_downgrade(source, 1)) -- croak("Wide character in %s", "Socket::pack_ip_mreq_source"); -- if (len != sizeof(mreq.imr_sourceaddr)) -- croak("Bad arg length %s, length is %"UVuf", should be %"UVuf, -- "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_sourceaddr)); -- sourcebytes = SvPVbyte(source, len); -- Zero(&mreq, sizeof(mreq), char); -- Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char); -- Copy(sourcebytes, &mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr), 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_source"); --#endif -- } -- --void --unpack_ip_mreq_source(mreq_sv) -- SV * mreq_sv -- PPCODE: -- { --#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP) -- struct ip_mreq_source 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_source", (UV)mreqlen, (UV)sizeof(mreq)); -- Copy(mreqbytes, &mreq, sizeof(mreq), char); -- EXTEND(SP, 3); -- mPUSHp((char *)&mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr)); -- mPUSHp((char *)&mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr)); -- mPUSHp((char *)&mreq.imr_interface, sizeof(mreq.imr_interface)); --#else -- not_here("unpack_ip_mreq_source"); --#endif -- } -- - void - pack_ipv6_mreq(multiaddr, interface) - SV * multiaddr -diff --git perl-5.17.4/cpan/Socket/t/ip_mreq.t perl-5.17.4/cpan/Socket/t/ip_mreq.t -index 2a99509904..f08920c437 100644 ---- perl-5.17.4/cpan/Socket/t/ip_mreq.t -+++ perl-5.17.4/cpan/Socket/t/ip_mreq.t -@@ -5,7 +5,6 @@ use Test::More; - use Socket qw( - INADDR_ANY - pack_ip_mreq unpack_ip_mreq -- pack_ip_mreq_source unpack_ip_mreq_source - ); - - # Check that pack/unpack_ip_mreq either croak with "Not implemented", or -@@ -20,7 +19,7 @@ if( !defined $packed ) { - die $@; - } - --plan tests => 6; -+plan tests => 3; - - my @unpacked = unpack_ip_mreq $packed; - -@@ -28,14 +27,3 @@ 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' ); -- --SKIP: { -- my $mreq; -- skip 3, "No pack_ip_mreq_source" unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY }; -- -- @unpacked = unpack_ip_mreq_source $mreq; -- -- is( $unpacked[0], "\xe0\0\0\2", 'unpack_ip_mreq_source multiaddr' ); -- is( $unpacked[1], "\x0a\0\0\1", 'unpack_ip_mreq_source source' ); -- is( $unpacked[2], INADDR_ANY, 'unpack_ip_mreq_source interface' ); --} -diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod -index a64c1a9143..65a9378242 100644 ---- perl-5.17.4/pod/perldelta.pod -+++ perl-5.17.4/pod/perldelta.pod -@@ -324,6 +324,10 @@ functions required for IP multicast source group membership have been added. - L has been upgraded from version 0.31 to 0.32. This includes - several documentation and bug fixes. - -+L has been upgraded from version 2.37 to 2.38. It can now freeze -+and thaw vstrings correctly. This causes a slight incompatible change in -+the storage format, so the format version has increased to 2.9. -+ - =item * - - L has been upgraded from version 1.40 to 1.41. This adds the --- -2.49.1 - diff --git a/steps/perl-5.17.4/patches/0014-Revert-Upgrade-Socket-to-2.002.patch b/steps/perl-5.17.4/patches/0014-Revert-Upgrade-Socket-to-2.002.patch deleted file mode 100644 index efd27d55..00000000 --- a/steps/perl-5.17.4/patches/0014-Revert-Upgrade-Socket-to-2.002.patch +++ /dev/null @@ -1,344 +0,0 @@ -From abdda3c270bcbe62f91b979b0b15b34fa3d164fe Mon Sep 17 00:00:00 2001 -From: Samuel Tyler -Date: Sat, 23 Aug 2025 00:00:00 +1000 -Subject: [PATCH 4/4] 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 --------------- - pod/perldelta.pod | 6 +++ - 7 files changed, 29 insertions(+), 154 deletions(-) - delete mode 100644 cpan/Socket/t/ip_mreq.t - -diff --git perl-5.17.4/MANIFEST perl-5.17.4/MANIFEST -index 6883a5f76f..3397344adf 100644 ---- perl-5.17.4/MANIFEST -+++ perl-5.17.4/MANIFEST -@@ -2229,7 +2229,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.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl -index e38daab394..131493c9c9 100755 ---- perl-5.17.4/Porting/Maintainers.pl -+++ perl-5.17.4/Porting/Maintainers.pl -@@ -1636,7 +1636,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.4/cpan/Socket/Makefile.PL perl-5.17.4/cpan/Socket/Makefile.PL -index 3be198e024..9a8f65d274 100644 ---- perl-5.17.4/cpan/Socket/Makefile.PL -+++ perl-5.17.4/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.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm -index 41f214d8fe..e12d8517de 100644 ---- perl-5.17.4/cpan/Socket/Socket.pm -+++ perl-5.17.4/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.4/cpan/Socket/Socket.xs perl-5.17.4/cpan/Socket/Socket.xs -index f22c1f3001..5ddd0e9d8e 100644 ---- perl-5.17.4/cpan/Socket/Socket.xs -+++ perl-5.17.4/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.4/cpan/Socket/t/ip_mreq.t perl-5.17.4/cpan/Socket/t/ip_mreq.t -deleted file mode 100644 -index f08920c437..0000000000 ---- perl-5.17.4/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' ); -diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod -index 65a9378242..957169ec2f 100644 ---- perl-5.17.4/pod/perldelta.pod -+++ perl-5.17.4/pod/perldelta.pod -@@ -250,6 +250,12 @@ trailing semicolons in formats. - L has been upgraded from version 0.9130 to 0.9131. This resolves - issues with the SQLite source engine. - -+=back -+ -+=head2 Removed Modules and Pragmata -+ -+=over 4 -+ - =item * - - L has been upgraded from version 1.826 to 1.827. The main Perl module --- -2.49.1 - diff --git a/steps/perl-5.17.4/patches/a2p-c-bison.patch b/steps/perl-5.17.4/patches/a2p-c-bison.patch index 66bbbfdc..826a9dea 100644 --- a/steps/perl-5.17.4/patches/a2p-c-bison.patch +++ b/steps/perl-5.17.4/patches/a2p-c-bison.patch @@ -1,3 +1,10 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Older versions of Bison produced 4 spaces before `goto yyerrlab`, +but ours produces more. + --- perl-5.17.4/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 +++ perl-5.17.4/x2p/Makefile.SH 2025-07-17 18:09:02.340711269 +1000 @@ -123,7 +123,7 @@ diff --git a/steps/perl-5.17.4/patches/duplicate-invlists-defn.patch b/steps/perl-5.17.4/patches/duplicate-invlists-defn.patch index 28a71eef..4a31bc3f 100644 --- a/steps/perl-5.17.4/patches/duplicate-invlists-defn.patch +++ b/steps/perl-5.17.4/patches/duplicate-invlists-defn.patch @@ -1,3 +1,16 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +The problem this patch solves is a duplicate definition of +NonL1_Perl_Non_Final_Folds_invlist in the final binary. + +Why this problem does not occur when this code was written is not clear. +Most likely cause is changed GCC behaviour. + +To solve this, rather than including charclass_invlists.h, have a opaque +definition of the array. + --- perl-5.17.4/ext/re/Makefile.PL 2025-08-22 23:08:38.443022450 +1000 +++ perl-5.17.4/ext/re/Makefile.PL 2025-08-23 11:26:37.737298348 +1000 @@ -31,6 +31,7 @@ diff --git a/steps/perl-5.17.4/sources b/steps/perl-5.17.4/sources index b0bff9cd..7fe34ee4 100644 --- a/steps/perl-5.17.4/sources +++ b/steps/perl-5.17.4/sources @@ -1,2 +1,3 @@ https://www.cpan.org/src/5.0/perl-5.17.4.tar.bz2 42e7eb0d726a6344bc54140be8a0e3636330e1be7be8793e0fb74f415666b95b git://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 +https://cpan.metacpan.org/authors/id/P/PE/PEVANS/Socket-2.000.tar.gz 91eb0dfaafdf08e450aa03cd8a3285d47facfd432f75f812a5bdafd9e445297b From 0807cb0834ddf9236818bf7b227ad90c64383cb4 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 28 Aug 2025 13:58:12 +1000 Subject: [PATCH 20/64] Clean up perl 5.18.4 --- .../files/Compress-Raw-Zlib_config.in | 4 ++ steps/perl-5.18.4/pass1.sh | 12 ++--- ...-Allow-internal-properties-in-invmap.patch | 52 +++++++++++++++++++ .../Revert-regen-mk_PL_charclass-pl.patch | 8 +++ steps/perl-5.18.4/patches/a2p-c-bison.patch | 7 +++ steps/perl-5.18.4/reenable-regcharclass.patch | 17 ------ 6 files changed, 77 insertions(+), 23 deletions(-) create mode 100644 steps/perl-5.18.4/patches/0001-Unicode-UCD-Allow-internal-properties-in-invmap.patch delete mode 100644 steps/perl-5.18.4/reenable-regcharclass.patch diff --git a/steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in b/steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in index 3bbcf2f4..cbad2f99 100644 --- a/steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + BUILD_ZLIB = False INCLUDE = /usr/include LIB = /usr/lib/i386-unknown-linux-musl diff --git a/steps/perl-5.18.4/pass1.sh b/steps/perl-5.18.4/pass1.sh index 38e29c8a..d4c4d7af 100755 --- a/steps/perl-5.18.4/pass1.sh +++ b/steps/perl-5.18.4/pass1.sh @@ -8,7 +8,7 @@ src_prepare() { mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in # Remove miscellaneous pregenerated files - rm -f Porting/Glossary \ + rm 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 @@ -18,12 +18,9 @@ src_prepare() { # 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 \ + rm 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} \ @@ -90,7 +87,10 @@ src_compile() { popd # The Revert-regen-mk_PL_charclass-pl.patch breaks building some - # modules for reasons that are not exactly clear. + # modules. The error messages are fairly cryptic. It seems probable that + # the symbols have been used elsewhere in the codebase or there is a + # reliance on different behaviour. + # # We will build miniperl, revert the patch, regenerate l1_char_class_tab.h, # (using miniperl), and then go again diff --git a/steps/perl-5.18.4/patches/0001-Unicode-UCD-Allow-internal-properties-in-invmap.patch b/steps/perl-5.18.4/patches/0001-Unicode-UCD-Allow-internal-properties-in-invmap.patch new file mode 100644 index 00000000..61f0b0b9 --- /dev/null +++ b/steps/perl-5.18.4/patches/0001-Unicode-UCD-Allow-internal-properties-in-invmap.patch @@ -0,0 +1,52 @@ +SPDX-FileCopyrightText: 2012 Karl Williamson +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +In a similar way to the patch in 5.17.2, future versions rely on the +existance of the invmap internal properties, so backport it to this +version. + +From 443e0d0dd92c8ed574a7845b0927346bb8f521e4 Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Sat, 19 Jul 2014 11:35:34 -0600 +Subject: [PATCH] Unicode::UCD: Allow internal properties in invmap() + +This adds an undocumented way to get invmap() to return internal +properties, like invlist(). This is intended only for Perl-core +use. +--- + lib/Unicode/UCD.pm | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git perl-5.18.4/lib/Unicode/UCD.pm perl-5.18.4/lib/Unicode/UCD.pm +index 9c3dd7c710..93ae110a5d 100644 +--- perl-5.18.4/lib/Unicode/UCD.pm ++++ perl-5.18.4/lib/Unicode/UCD.pm +@@ -2802,15 +2802,21 @@ our @algorithmic_named_code_points; + our $HANGUL_BEGIN; + our $HANGUL_COUNT; + +-sub prop_invmap ($) { ++sub prop_invmap ($;$) { + + croak __PACKAGE__, "::prop_invmap: must be called in list context" unless wantarray; + + my $prop = $_[0]; + return unless defined $prop; + ++ # Undocumented way to get at Perl internal properties; it may be changed ++ # or removed without notice at any time. It currently also changes the ++ # output to use the format specified in the file rather than the one we ++ # normally compute and return ++ my $internal_ok = defined $_[1] && $_[1] eq '_perl_core_internal_ok'; ++ + # Fail internal properties +- return if $prop =~ /^_/; ++ return if $prop =~ /^_/ && ! $internal_ok; + + # The values returned by this function. + my (@invlist, @invmap, $format, $missing); +-- +2.49.1 + diff --git a/steps/perl-5.18.4/patches/Revert-regen-mk_PL_charclass-pl.patch b/steps/perl-5.18.4/patches/Revert-regen-mk_PL_charclass-pl.patch index 8e28d30b..456171dd 100644 --- a/steps/perl-5.18.4/patches/Revert-regen-mk_PL_charclass-pl.patch +++ b/steps/perl-5.18.4/patches/Revert-regen-mk_PL_charclass-pl.patch @@ -1,3 +1,11 @@ +SPDX-FileCopyrightText: 2025 fosslinux +SPDX-FileCopyrightText: 2012 Karl Williamson + +SPDX-License-Identifier: Artistic-1.0 + +Both of these commits remove use of symbols that were added and then +immediately used in the regeneration script. + From 6f1d133ec238228c656fcd05d6b42f562aaa92b3 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 21 Aug 2025 19:28:54 +1000 diff --git a/steps/perl-5.18.4/patches/a2p-c-bison.patch b/steps/perl-5.18.4/patches/a2p-c-bison.patch index ae1d1fb9..7edd2292 100644 --- a/steps/perl-5.18.4/patches/a2p-c-bison.patch +++ b/steps/perl-5.18.4/patches/a2p-c-bison.patch @@ -1,3 +1,10 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Older versions of Bison produced 4 spaces before `goto yyerrlab`, +but ours produces more. + --- perl-5.18.4/x2p/Makefile.SH 2025-07-17 18:07:55.350717970 +1000 +++ perl-5.18.4/x2p/Makefile.SH 2025-07-17 18:09:02.340711269 +1000 @@ -123,7 +123,7 @@ diff --git a/steps/perl-5.18.4/reenable-regcharclass.patch b/steps/perl-5.18.4/reenable-regcharclass.patch deleted file mode 100644 index 30af8f15..00000000 --- a/steps/perl-5.18.4/reenable-regcharclass.patch +++ /dev/null @@ -1,17 +0,0 @@ -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 From 44fb179402b63062113a78ebca6b036228600ea8 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 28 Aug 2025 14:02:16 +1000 Subject: [PATCH 21/64] Add more perl-Devel-Tokenizer-C rebuilds --- steps/perl-Devel-Tokenizer-C-0.11/pass4.sh | 1 + steps/perl-Devel-Tokenizer-C-0.11/pass5.sh | 1 + steps/perl-Devel-Tokenizer-C-0.11/pass6.sh | 1 + steps/perl-Devel-Tokenizer-C-0.11/pass7.sh | 1 + steps/perl-Devel-Tokenizer-C-0.11/pass8.sh | 1 + 5 files changed, 5 insertions(+) create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass4.sh create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass5.sh create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass6.sh create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass7.sh create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass8.sh diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass4.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass4.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass4.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass5.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass5.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass5.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass6.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass6.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass6.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass7.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass7.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass7.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass8.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass8.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass8.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file From a817d8fcc4cb263eb3c21361b89bf716c94d87e6 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 28 Aug 2025 14:02:48 +1000 Subject: [PATCH 22/64] Build new versions --- steps/manifest | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/steps/manifest b/steps/manifest index 057c3ca0..b04f3727 100644 --- a/steps/manifest +++ b/steps/manifest @@ -163,6 +163,15 @@ build: perl-Devel-Tokenizer-C-0.11 build: perl-5.12.5 build: perl-Devel-Tokenizer-C-0.11 build: perl-5.15.7 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.16.3 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.17.2 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.17.4 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.18.4 +build: perl-Devel-Tokenizer-C-0.11 build: perl-5.32.1 uninstall: perl-5.6.2 perl-5.10.1 build: libarchive-3.5.2 From 863406ba04e0c101ed9ceb67b654e84ebab55992 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 28 Aug 2025 14:24:22 +1000 Subject: [PATCH 23/64] Update parts.rst up to perl 5.18 --- parts.rst | 72 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 11 deletions(-) diff --git a/parts.rst b/parts.rst index e197a4bf..832efaba 100644 --- a/parts.rst +++ b/parts.rst @@ -1011,7 +1011,7 @@ building bison 2.3. bison 2.3 ========= -This is an older version of bison required for the bison files in perl 5.10.1. +This is an older version of bison required for the bison files in older perls. We backwards-bootstrap this from 3.4.1, using 3.4.1 to compile the bison files in 2.3. This parser works sufficiently well for perl 5.10.1. @@ -1022,20 +1022,70 @@ Bison 3.4.1 is buggy and segfaults when perl 5.32.1 is built. This is probably because it was built with a hand-written makefile. We do not build the latest bison because perl 5.32.1 requires bison <= 3.4.2. -perl 5.10.1 +dist 3.5 +======== + +dist is perl's package used for generating Perl's Configure (which is written in +Perl itself). We 'compile' (aka generate) metaconfig, manifake and makegloss +from dist. We do not use dist's build system because it itself uses dist. + +perl-Devel-Tokenizer-C 0.11 +=========================== + +Devel::Tokenizer::C is a Perl module used by the ``regen/keywords.pl`` script in +all newer perls. After each perl build, this module is rebuilt against the new +perl version. This will not be repeated in this document. + +perl 5.8.9 +========== + +This is the final version that can be built by perl 5.6. At this point we move +to using metaconfig rather than hand-written makefiles, as it is more +sustainable and produces more functional builds. This version brings a number +of new files to be regenerated. The metaconfig version was chosen by trial and +error, as there is no obvious history indicating which version to use. + +perl 5.12.5 =========== -Perl 5.10.1 is an intermediate version used before Perl 5.32. We require this -version as it adds a couple of modules into lib/ required to regenerate files in -Perl 5.32. We still use the Makefile instead of the metaconfig strategy, as -metaconfig history becomes poor more than a few years back. +This is the final version that can be built by perl 5.8. Again, there are new +files to be regenerated. -dist 3.5-236 -============ +perl 5.15.7 +=========== -dist is perl's package used for generating Perl's Configure (which is written in -Perl itself). We 'compile' (aka generate) metaconfig and manifake only from dist. -We do not use dist's build system because it itself uses dist. +This development version of perl is the latest version that can be built by perl +5.12. Usually, we would avoid using development releases of perl. However, in +the 5.15 development cycle, the Unicode system at the core of perl was changed +somewhat to use a new script ``regen/mk_invlists.pl``, which can only be built +by a 5.15 version. So, we need to build a 5.15 version to progress. 5.15.7 is +the last version with the old Unicode system. + +perl 5.16.3 +=========== + +This is the stable version of perl corresponding to 5.15 series. The +development version is insufficient to build the following perl releases, and +is quite buggy, but is enough to at least build 5.16.3. + +perl 5.17.2, 5.17.4 +=================== + +Throughout the 5.17/18 development cycle, the new Unicode system went through a +lot of significant internal changes and restructuring. In particular, the +system was transformed to use a lot more pregenerated code, particularly +macros. There are multiple instances where a new internal symbol or macro +was introduced, and then immediately used somewhere else. These instances each +depend on one another in one way or another. All these changes mean we end +up building *two* development versions of perl to break these cycles in the +development cycle. + +perl 5.18.4 +=========== + +This is another stable version of perl. We need this version because one final +aforementioned cycle has to be broken with this version. Also, the development +versions seem to be reasonably buggy again. perl 5.32.1 =========== From dcce75dd7996d46cedca57be75cbd5394945d83a Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 31 Aug 2025 11:52:18 +1000 Subject: [PATCH 24/64] Prepare perl 5.18.4 for 5.22 --- steps/perl-5.18.4/pass1.sh | 4 + ...-Allow-internal-properties-in-invmap.patch | 2 +- ...Unicode-UCD-Add-prop_values-function.patch | 219 ++++++++++++++++++ ...ExtUtils-Embed-to-work-with-miniperl.patch | 68 ++++++ ...mbed-s-generated-C-code-to-be-closer.patch | 79 +++++++ ...nversion-list-generation-to-mktables.patch | 72 ++++++ ...-Work-properly-under-UTF-8-LC_CTYPE-.patch | 199 ++++++++++++++++ .../patches/Unicode-UCD-search_invlist.patch | 39 ++++ 8 files changed, 681 insertions(+), 1 deletion(-) create mode 100644 steps/perl-5.18.4/patches/0002-Unicode-UCD-Add-prop_values-function.patch create mode 100644 steps/perl-5.18.4/patches/0003-Refactor-ExtUtils-Embed-to-work-with-miniperl.patch create mode 100644 steps/perl-5.18.4/patches/0004-Tweak-ExtUtils-Embed-s-generated-C-code-to-be-closer.patch create mode 100644 steps/perl-5.18.4/patches/0005-Move-an-inversion-list-generation-to-mktables.patch create mode 100644 steps/perl-5.18.4/patches/0006-Partial-backport-Work-properly-under-UTF-8-LC_CTYPE-.patch create mode 100644 steps/perl-5.18.4/patches/Unicode-UCD-search_invlist.patch diff --git a/steps/perl-5.18.4/pass1.sh b/steps/perl-5.18.4/pass1.sh index d4c4d7af..dae2a5c0 100755 --- a/steps/perl-5.18.4/pass1.sh +++ b/steps/perl-5.18.4/pass1.sh @@ -34,6 +34,10 @@ src_prepare() { perl regen/unicode_constants.pl perl regen/regcharclass.pl + # Change the name, patching the generator script is not easy + # Because of 0005-Move-an-inversion-list-generation-to-mktables.patch + sed -i "s/_Perl_Multi_Char_Folds_invlist/_Perl_Folds_To_Multi_Char_invlist/" charclass_invlists.h + # regenerate configure ln -s ../metaconfig*/.package . ln -s ../metaconfig*/U . diff --git a/steps/perl-5.18.4/patches/0001-Unicode-UCD-Allow-internal-properties-in-invmap.patch b/steps/perl-5.18.4/patches/0001-Unicode-UCD-Allow-internal-properties-in-invmap.patch index 61f0b0b9..db46658f 100644 --- a/steps/perl-5.18.4/patches/0001-Unicode-UCD-Allow-internal-properties-in-invmap.patch +++ b/steps/perl-5.18.4/patches/0001-Unicode-UCD-Allow-internal-properties-in-invmap.patch @@ -1,4 +1,4 @@ -SPDX-FileCopyrightText: 2012 Karl Williamson +SPDX-FileCopyrightText: 2014 Karl Williamson SPDX-FileCopyrightText: 2025 fosslinux SPDX-License-Identifier: Artistic-1.0 diff --git a/steps/perl-5.18.4/patches/0002-Unicode-UCD-Add-prop_values-function.patch b/steps/perl-5.18.4/patches/0002-Unicode-UCD-Add-prop_values-function.patch new file mode 100644 index 00000000..bc144b3a --- /dev/null +++ b/steps/perl-5.18.4/patches/0002-Unicode-UCD-Add-prop_values-function.patch @@ -0,0 +1,219 @@ +SPDX-FileCopyrightText: 2015 Karl Williamson +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +This function is required for 5.22. + +From 6bf3612f9c9b0788de8adf06539b41c64695c014 Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Tue, 27 Jan 2015 15:08:08 -0700 +Subject: [PATCH] Unicode::UCD: Add prop_values() function + +This new function returns the input property's possible values. +--- + lib/Unicode/UCD.pm | 125 +++++++++++++++++++++++++++++++++++++-------- + 2 files changed, 132 insertions(+), 23 deletions(-) + +diff --git perl-5.18.4/lib/Unicode/UCD.pm perl-5.18.4/lib/Unicode/UCD.pm +index 9c3dd7c710..7033128ae5 100644 +--- perl-5.18.4/lib/Unicode/UCD.pm ++++ perl-5.18.4/lib/Unicode/UCD.pm +@@ -22,6 +20,7 @@ our @EXPORT_OK = qw(charinfo + num + prop_aliases + prop_value_aliases ++ prop_values + prop_invlist + prop_invmap + MAX_CP +@@ -73,6 +72,9 @@ Unicode::UCD - Unicode character database + use Unicode::UCD 'prop_value_aliases'; + my @gc_punct_names = prop_value_aliases("Gc", "Punct"); + ++ use Unicode::UCD 'prop_values'; ++ my @all_EA_short_names = prop_values("East_Asian_Width"); ++ + use Unicode::UCD 'prop_invlist'; + my @puncts = prop_invlist("gc=punctuation"); + +@@ -730,6 +732,9 @@ names>). + L can be used to get this same data in a + different type of data structure. + ++L can be used to get all ++the known new-style block names as a list, without the code point ranges. ++ + See also L. + + =cut +@@ -752,6 +757,9 @@ the values. + L can be used to get this same data in a + different type of data structure. + ++L|/prop_values()> can be used to get all ++the known script names as a list, without the code point ranges. ++ + See also L. + + =cut +@@ -835,8 +843,9 @@ from the long names to the short names. The general category is the + one returned from + L under the C key. + +-The L function can be used to get all the synonyms of +-the category name. ++The L and L functions can be used as an ++alternative to this function; the first returning a simple list of the short ++category names; and the second gets all the synonyms of a given category name. + + =cut + +@@ -880,8 +889,10 @@ the Unicode TR9 is recommended reading: + L + (as of Unicode 5.0.0) + +-The L function can be used to get all the synonyms of +-the bidi type name. ++The L and L functions can be used as an ++alternative to this function; the first returning a simple list of the short ++bidi type names; and the second gets all the synonyms of a given bidi type ++name. + + =cut + +@@ -1864,6 +1875,79 @@ sub prop_aliases ($) { + + =pod + ++=head2 B ++ ++ use Unicode::UCD 'prop_values'; ++ ++ print "AHex values are: ", join(", ", prop_values("AHex")), ++ "\n"; ++ prints: ++ AHex values are: N, Y ++ ++Some Unicode properties have a restricted set of legal values. For example, ++all binary properties are restricted to just C or C; and there ++are only a few dozen possible General Categories. Use C ++to find out if a given property is one such, and if so, to get a list of the ++values: ++ ++ print join ", ", prop_values("NFC_Quick_Check"); ++ prints: ++ M, N, Y ++ ++If the property doesn't have such a restricted set, C is returned. ++ ++There are usually several synonyms for each possible value. Use ++L to access those. ++ ++Case, white space, hyphens, and underscores are ignored in the input property ++name (except for the trailing underscore in the old-form grandfathered-in ++general category property value C<"L_">, which is better written as C<"LC">). ++ ++If the property name is unknown, C is returned. Note that Perl typically ++recognizes property names in regular expressions with an optional C<"Is_>" ++(with or without the underscore) prefixed to them, such as C<\p{isgc=punct}>. ++This function does not recognize those in the property parameter, returning ++C. ++ ++For the block property, new-style block names are returned (see ++L). ++ ++C does not know about any user-defined properties, and ++will return C if called with one of those. ++ ++=cut ++ ++# These are created by mktables for this module and stored in unicore/UCD.pl ++# where their structures are described. ++our %loose_to_standard_value; ++our %prop_value_aliases; ++ ++sub prop_values ($) { ++ my $prop = shift; ++ return undef unless defined $prop; ++ ++ require "unicore/UCD.pl"; ++ require "utf8_heavy.pl"; ++ ++ # Find the property name synonym that's used as the key in other hashes, ++ # which is element 0 in the returned list. ++ ($prop) = prop_aliases($prop); ++ return undef if ! $prop; ++ $prop = utf8::_loose_name(lc $prop); ++ ++ # Here is a legal property. ++ return undef unless exists $prop_value_aliases{$prop}; ++ my @return; ++ foreach my $value_key (sort { lc $a cmp lc $b } ++ keys %{$prop_value_aliases{$prop}}) ++ { ++ push @return, $prop_value_aliases{$prop}{$value_key}[0]; ++ } ++ return @return; ++} ++ ++=pod ++ + =head2 B + + use Unicode::UCD 'prop_value_aliases'; +@@ -1877,7 +1961,7 @@ sub prop_aliases ($) { + print "The short name is $short_name\n"; + print "The other aliases are: ", join(", ", @other_names), "\n"; + +- prints: ++ prints: + The full name is Punctuation + The short name is P + The other aliases are: Punct +@@ -1886,18 +1970,20 @@ Some Unicode properties have a restricted set of legal values. For example, + all binary properties are restricted to just C or C; and there + are only a few dozen possible General Categories. + +-For such properties, there are usually several synonyms for each possible +-value. For example, in binary properties, I can be represented by any of +-the strings "Y", "Yes", "T", or "True"; and the General Category +-"Punctuation" by that string, or "Punct", or simply "P". ++You can use L to find out if a given property is one which has ++a restricted set of values, and if so, what those values are. But usually ++each value actually has several synonyms. For example, in binary properties, ++I can be represented by any of the strings "Y", "Yes", "T", or "True"; ++and the General Category "Punctuation" by that string, or "Punct", or simply ++"P". + + Like property names, there is typically at least a short name for each such +-property-value, and a long name. If you know any name of the property-value, +-you can use C() to get the long name (when called in +-scalar context), or a list of all the names, with the short name in the 0th +-element, the long name in the next element, and any other synonyms in the +-remaining elements, in no particular order, except that any all-numeric +-synonyms will be last. ++property-value, and a long name. If you know any name of the property-value ++(which you can get by L, you can use C() ++to get the long name (when called in scalar context), or a list of all the ++names, with the short name in the 0th element, the long name in the next ++element, and any other synonyms in the remaining elements, in no particular ++order, except that any all-numeric synonyms will be last. + + The long name is returned in a form nicely capitalized, suitable for printing. + +@@ -1926,11 +2012,6 @@ will return C if called with one of those. + + =cut + +-# These are created by mktables for this routine and stored in unicore/UCD.pl +-# where their structures are described. +-our %loose_to_standard_value; +-our %prop_value_aliases; +- + sub prop_value_aliases ($$) { + my ($prop, $value) = @_; + return unless defined $prop && defined $value; +-- +2.49.1 + diff --git a/steps/perl-5.18.4/patches/0003-Refactor-ExtUtils-Embed-to-work-with-miniperl.patch b/steps/perl-5.18.4/patches/0003-Refactor-ExtUtils-Embed-to-work-with-miniperl.patch new file mode 100644 index 00000000..f947537e --- /dev/null +++ b/steps/perl-5.18.4/patches/0003-Refactor-ExtUtils-Embed-to-work-with-miniperl.patch @@ -0,0 +1,68 @@ +SPDX-FileCopyrightText: 2013 Nicholas Clark + +SPDX-License-Identifier: Artistic-1.0 + +Again, we need this for 5.22. + +From b86e5545be9b2e891e3ee8e2fba38b799b1836fc Mon Sep 17 00:00:00 2001 +From: Nicholas Clark +Date: Sun, 7 Jul 2013 15:12:42 +0200 +Subject: [PATCH] Refactor ExtUtils::Embed to work with miniperl. + +Remove the use of FileHandle, which relies on IO, and XS module. +Only load Getopt::Std if it is needed (in xsinit()), to avoid needing to add +Getopt::Std to lib/buildcustomize.pl +Require File::Spec instead of using it, as it exports nothing, so there is no +benefit to using it (but it costs a BEGIN block). +--- + lib/ExtUtils/Embed.pm | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git perl-5.18.4/lib/ExtUtils/Embed.pm perl-5.18.4/lib/ExtUtils/Embed.pm +index 9710630e51..758e24139c 100644 +--- perl-5.18.4/lib/ExtUtils/Embed.pm ++++ perl-5.18.4/lib/ExtUtils/Embed.pm +@@ -2,10 +2,8 @@ require 5.002; + + package ExtUtils::Embed; + require Exporter; +-require FileHandle; + use Config; +-use Getopt::Std; +-use File::Spec; ++require File::Spec; + + #Only when we need them + #require ExtUtils::MakeMaker; +@@ -18,7 +16,7 @@ use vars qw(@ISA @EXPORT $VERSION + use strict; + + # This is not a dual-life module, so no need for development version numbers +-$VERSION = '1.30'; ++$VERSION = '1.31'; + + @ISA = qw(Exporter); + @EXPORT = qw(&xsinit &ldopts +@@ -54,7 +52,8 @@ sub xsinit { + @mods = @$mods if $mods; + } + else { +- getopts('o:s:'); ++ require Getopt::Std; ++ Getopt::Std::getopts('o:s:'); + $file = $opt_o if defined $opt_o; + $std = $opt_s if defined $opt_s; + @mods = @ARGV; +@@ -65,7 +64,8 @@ sub xsinit { + $fh = \*STDOUT; + } + else { +- $fh = new FileHandle "> $file"; ++ open $fh, '>', $file ++ or die "Can't open '$file': $!"; + } + + push(@mods, static_ext()) if defined $std; +-- +2.49.1 + diff --git a/steps/perl-5.18.4/patches/0004-Tweak-ExtUtils-Embed-s-generated-C-code-to-be-closer.patch b/steps/perl-5.18.4/patches/0004-Tweak-ExtUtils-Embed-s-generated-C-code-to-be-closer.patch new file mode 100644 index 00000000..0cf4c4ed --- /dev/null +++ b/steps/perl-5.18.4/patches/0004-Tweak-ExtUtils-Embed-s-generated-C-code-to-be-closer.patch @@ -0,0 +1,79 @@ +SPDX-FileCopyrightText: 2013 Nicholas Clark + +SPDX-License-Identifier: Artistic-1.0 + +Again, we need this for 5.22. + +From 87c2fdd468989b9450aa393c4c715594cbba5711 Mon Sep 17 00:00:00 2001 +From: Nicholas Clark +Date: Mon, 8 Jul 2013 11:08:12 +0200 +Subject: [PATCH] Tweak ExtUtils::Embed's generated C code to be closer to + ExtUtils::Miniperl. + +Use #include "..." instead of #include <...> in xsi_header(), and don't add +a trailing newline (and add a newline in xsinit() to compensate). +Use four spaces instead of a tab for indenting. +If there are no extensions and hence no calls to newXS() don't declare file[] +and don't add a trailing newline. +--- + lib/ExtUtils/Embed.pm | 21 ++++++++++++--------- + 1 file changed, 12 insertions(+), 9 deletions(-) + +diff --git perl-5.18.4/lib/ExtUtils/Embed.pm perl-5.18.4/lib/ExtUtils/Embed.pm +index 9710630e51..52221cba53 100644 +--- perl-5.18.4/lib/ExtUtils/Embed.pm ++++ perl-5.18.4/lib/ExtUtils/Embed.pm +@@ -72,7 +72,7 @@ sub xsinit { + @mods = grep(!$seen{$_}++, @mods); + + print $fh &xsi_header(); +- print $fh "EXTERN_C void xs_init ($xsinit_proto);\n\n"; ++ print $fh "\nEXTERN_C void xs_init ($xsinit_proto);\n\n"; + print $fh &xsi_protos(@mods); + + print $fh "\nEXTERN_C void\nxs_init($xsinit_proto)\n{\n"; +@@ -83,9 +83,9 @@ sub xsinit { + + sub xsi_header { + return < +-#include +- ++#include "EXTERN.h" ++#include "perl.h" ++#include "XSUB.h" + EOF + } + +@@ -109,9 +109,12 @@ sub xsi_body { + my(@exts) = @_; + my($pname,@retval,%seen); + my($dl) = canon('/','DynaLoader'); +- push(@retval, "\tchar *file = __FILE__;\n"); +- push(@retval, "\tdXSUB_SYS;\n") if $] > 5.002; +- push(@retval, "\n"); ++ push(@retval, " static const char file[] = __FILE__;\n") ++ if @exts; ++ push(@retval, " dXSUB_SYS;\n"); ++ push(@retval, " PERL_UNUSED_CONTEXT;\n"); ++ push(@retval, "\n") ++ if @exts; + + foreach $_ (@exts){ + my($pname) = canon('/', $_); +@@ -121,10 +124,10 @@ sub xsi_body { + if ($pname eq $dl){ + # Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'! + # boot_DynaLoader is called directly in DynaLoader.pm +- $ccode = "\t/* DynaLoader is a special case */\n\tnewXS(\"${mname}::boot_${cname}\", boot_${cname}, file);\n"; ++ $ccode = " /* DynaLoader is a special case */\n newXS(\"${mname}::boot_${cname}\", boot_${cname}, file);\n"; + push(@retval, $ccode) unless $seen{$ccode}++; + } else { +- $ccode = "\tnewXS(\"${mname}::bootstrap\", boot_${cname}, file);\n"; ++ $ccode = " newXS(\"${mname}::bootstrap\", boot_${cname}, file);\n"; + push(@retval, $ccode) unless $seen{$ccode}++; + } + } +-- +2.49.1 + diff --git a/steps/perl-5.18.4/patches/0005-Move-an-inversion-list-generation-to-mktables.patch b/steps/perl-5.18.4/patches/0005-Move-an-inversion-list-generation-to-mktables.patch new file mode 100644 index 00000000..0a459539 --- /dev/null +++ b/steps/perl-5.18.4/patches/0005-Move-an-inversion-list-generation-to-mktables.patch @@ -0,0 +1,72 @@ +SPDX-FileCopyrightText: 2015 Karl Williamson +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +This renaming is expected by 5.22. The resulting modifications to +charclass_invlists.h are done in the script. + +From c75f24e6fc1fa9676693e4e42f199e542b2b2549 Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Thu, 23 Jan 2014 20:34:15 -0700 +Subject: [PATCH 1/2] Move an inversion list generation to mktables + +Prior to this patch, this was in regen/mk_invlists.pl, but future +commits will want it to also be used by the header generated by +regen/regcharclass.pl, so use a common source so the logic doesn't have +to be duplicated. +--- + lib/unicore/mktables | 22 ++++++++++++++++++++++ + regcomp.c | 3 ++- + 2 files changed, 24 insertions(+), 1 deletion(-) + +diff --git perl-5.18.4/lib/unicore/mktables perl-5.18.4/lib/unicore/mktables +index 808760d002..a5c0d8930e 100644 +--- perl-5.18.4/lib/unicore/mktables ++++ perl-5.18.4/lib/unicore/mktables +@@ -13321,6 +13321,28 @@ sub compile_perl() { + } + $PosixXDigit->add_description('[0-9A-Fa-f]'); + ++ my $folds_to_multi_char = $perl->add_match_table( ++ "_Perl_Folds_To_Multi_Char", ++ Description => ++ "Code points whose fold is a string of more than one character", ++ ); ++ ++ foreach my $range (property_ref('Case_Folding')->ranges) { ++ my $start = $range->start; ++ my $end = $range->end; ++ $any_folds->add_range($start, $end); ++ ++ my @hex_code_points = split " ", $range->value; ++ if (@hex_code_points > 1) { ++ $folds_to_multi_char->add_range($start, $end); ++ } ++ ++ foreach my $i (0 .. @hex_code_points - 1) { ++ my $code_point = hex $hex_code_points[$i]; ++ $any_folds->add_range($code_point, $code_point); ++ } ++ } ++ + my $dt = property_ref('Decomposition_Type'); + $dt->add_match_table('Non_Canon', Full_Name => 'Non_Canonical', + Initialize => ~ ($dt->table('None') + $dt->table('Canonical')), +diff --git perl-5.18.4/regcomp.c perl-5.18.4/regcomp.c +index 0841f172e5..e839e3e765 100644 +--- perl-5.18.4/regcomp.c ++++ perl-5.18.4/regcomp.c +@@ -5566,7 +5566,8 @@ Perl_re_op_compile(pTHX_ SV ** const patternp, int pat_count, + PL_Posix_ptrs[_CC_XDIGIT] = _new_invlist_C_array(PosixXDigit_invlist); + PL_XPosix_ptrs[_CC_XDIGIT] = _new_invlist_C_array(XPosixXDigit_invlist); + +- PL_HasMultiCharFold = _new_invlist_C_array(_Perl_Multi_Char_Folds_invlist); ++ PL_HasMultiCharFold = ++ _new_invlist_C_array(_Perl_Folds_To_Multi_Char_invlist); + } + #endif + +-- +2.49.1 + diff --git a/steps/perl-5.18.4/patches/0006-Partial-backport-Work-properly-under-UTF-8-LC_CTYPE-.patch b/steps/perl-5.18.4/patches/0006-Partial-backport-Work-properly-under-UTF-8-LC_CTYPE-.patch new file mode 100644 index 00000000..6fbf6aaa --- /dev/null +++ b/steps/perl-5.18.4/patches/0006-Partial-backport-Work-properly-under-UTF-8-LC_CTYPE-.patch @@ -0,0 +1,199 @@ +SPDX-FileCopyrightText: 2014 Karl Williamson +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +The _Perl_Any_Folds and _Perl_Problematic_Locale_Folds tables are expected +by 5.22. + +Their addition is part of a giga commit (~1500 lines changed), we take +just that small part of the commit. + +From 10d28d6a24e2a3c41270c43203be5502a586b2f9 Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Thu, 28 Aug 2025 21:54:12 +1000 +Subject: [PATCH 2/2] Partial backport: Work properly under UTF-8 LC_CTYPE + locales + +[... original commit message follows, mostly irrelevant] + +This large (sorry, I couldn't figure out how to meaningfully split it +up) commit causes Perl to fully support LC_CTYPE operations (case +changing, character classification) in UTF-8 locales. + +As a side effect it resolves [perl #56820]. + +The basics are easy, but there were a lot of details, and one +troublesome edge case discussed below. + +What essentially happens is that when the locale is changed to a UTF-8 +one, a global variable is set TRUE (FALSE when changed to a non-UTF-8 +locale). Within the scope of 'use locale', this variable is checked, +and if TRUE, the code that Perl uses for non-locale behavior is used +instead of the code for locale behavior. Since Perl's internal +representation is UTF-8, we get UTF-8 behavior for a UTF-8 locale. + +More work had to be done for regular expressions. There are three +cases. + +1) The character classes \w, [[:punct:]] needed no extra work, as +the changes fall out from the base work. + +2) Strings that are to be matched case-insensitively. These form +EXACTFL regops (nodes). Notice that if such a string contains only +characters above-Latin1 that match only themselves, that the node can be +downgraded to an EXACT-only node, which presents better optimization +possibilities, as we now have a fixed string known at compile time to be +required to be in the target string to match. Similarly if all +characters in the string match only other above-Latin1 characters +case-insensitively, the node can be downgraded to a regular EXACTFU node +(match, folding, using Unicode, not locale, rules). The code changes +for this could be done without accepting UTF-8 locales fully, but there +were edge cases which needed to be handled differently if I stopped +there, so I continued on. + +In an EXACTFL node, all such characters are now folded at compile time +(just as before this commit), while the other characters whose folds are +locale-dependent are left unfolded. This means that they have to be +folded at execution time based on the locale in effect at the moment. +Again, this isn't a change from before. The difference is that now some +of the folds that need to be done at execution time (in regexec) are +potentially multi-char. Some of the code in regexec was trivial to +extend to account for this because of existing infrastructure, but the +part dealing with regex quantifiers, had to have more work. + +Also the code that joins EXACTish nodes together had to be expanded to +account for the possibility of multi-character folds within locale +handling. This was fairly easy, because it already has infrastructure +to handle these under somewhat different circumstances. + +3) In bracketed character classes, represented by ANYOF nodes, a new +inversion list was created giving the characters that should be matched +by this node when the runtime locale is UTF-8. The list is ignored +except under that circumstance. To do this, I created a new ANYOF type +which has an extra SV for the inversion list. + +The edge case that caused the most difficulty is folding involving the +MICRO SIGN, U+00B5. It folds to the GREEK SMALL LETTER MU, as does the +GREEK CAPITAL LETTER MU. The MICRO SIGN is the only 0-255 range +character that folds to outside that range. The issue is that it +doesn't naturally fall out that it will match the CAP MU. If we let the +CAP MU fold to the samll mu at compile time (which it can because both +are above-Latin1 and so the fold is the same no matter what locale is in +effect), it could appear that the regnode can be downgraded away from +EXACTFL to EXACTFU, but doing so would cause the MICRO SIGN to not case +insensitvely match the CAP MU. This could be special cased in regcomp +and regexec, but I wanted to avoid that. Instead the mktables tables +are set up to include the CAP MU as a character whose presence forbids +the downgrading, so the special casing is in mktables, and not in the C +code. +--- + lib/unicore/mktables | 79 ++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 73 insertions(+), 6 deletions(-) + +diff --git perl-5.18.4/lib/unicore/mktables perl-5.18.4/lib/unicore/mktables +index a5c0d8930e..4b34b3c338 100644 +--- perl-5.18.4/lib/unicore/mktables ++++ perl-5.18.4/lib/unicore/mktables +@@ -13321,25 +13321,92 @@ sub compile_perl() { + } + $PosixXDigit->add_description('[0-9A-Fa-f]'); + ++ my $any_folds = $perl->add_match_table("_Perl_Any_Folds", ++ Description => "Code points that particpate in some fold", ++ ); ++ my $loc_problem_folds = $perl->add_match_table( ++ "_Perl_Problematic_Locale_Folds", ++ Description => ++ "Code points that are in some way problematic under locale", ++ ); ++ ++ # This allows regexec.c to skip some work when appropriate. Some of the ++ # entries in _Perl_Problematic_Locale_Folds are multi-character folds, ++ my $loc_problem_folds_start = $perl->add_match_table( ++ "_Perl_Problematic_Locale_Foldeds_Start", ++ Description => ++ "The first character of every sequence in _Perl_Problematic_Locale_Folds", ++ ); ++ ++ my $cf = property_ref('Case_Folding'); ++ ++ # Every character 0-255 is problematic because what each folds to depends ++ # on the current locale ++ $loc_problem_folds->add_range(0, 255); ++ $loc_problem_folds_start += $loc_problem_folds; ++ ++ # Also problematic are anything these fold to outside the range. Likely ++ # forever the only thing folded to by these outside the 0-255 range is the ++ # GREEK SMALL MU (from the MICRO SIGN), but it's easy to make the code ++ # completely general, which should catch any unexpected changes or errors. ++ # We look at each code point 0-255, and add its fold (including each part ++ # of a multi-char fold) to the list. See the commit message for these ++ # changes for a more complete description of the MU issue. ++ foreach my $range ($loc_problem_folds->ranges) { ++ foreach my $code_point($range->start .. $range->end) { ++ my $fold_range = $cf->containing_range($code_point); ++ next unless defined $fold_range; ++ ++ my @hex_folds = split " ", $fold_range->value; ++ my $start_cp = hex $hex_folds[0]; ++ foreach my $i (0 .. @hex_folds - 1) { ++ my $cp = hex $hex_folds[$i]; ++ next unless $cp > 255; # Already have the < 256 ones ++ ++ $loc_problem_folds->add_range($cp, $cp); ++ $loc_problem_folds_start->add_range($start_cp, $start_cp); ++ } ++ } ++ } ++ + my $folds_to_multi_char = $perl->add_match_table( + "_Perl_Folds_To_Multi_Char", + Description => + "Code points whose fold is a string of more than one character", + ); + +- foreach my $range (property_ref('Case_Folding')->ranges) { ++ # Look through all the known folds to populate these tables. ++ foreach my $range ($cf->ranges) { + my $start = $range->start; + my $end = $range->end; + $any_folds->add_range($start, $end); + +- my @hex_code_points = split " ", $range->value; +- if (@hex_code_points > 1) { ++ my @hex_folds = split " ", $range->value; ++ if (@hex_folds > 1) { # Is multi-char fold + $folds_to_multi_char->add_range($start, $end); + } + +- foreach my $i (0 .. @hex_code_points - 1) { +- my $code_point = hex $hex_code_points[$i]; +- $any_folds->add_range($code_point, $code_point); ++ my $found_locale_problematic = 0; ++ ++ # Look at each of the folded-to characters... ++ foreach my $i (0 .. @hex_folds - 1) { ++ my $cp = hex $hex_folds[$i]; ++ $any_folds->add_range($cp, $cp); ++ ++ # The fold is problematic if any of the folded-to characters is ++ # already considered problematic. ++ if ($loc_problem_folds->contains($cp)) { ++ $loc_problem_folds->add_range($start, $end); ++ $found_locale_problematic = 1; ++ } ++ } ++ ++ # If this is a problematic fold, add to the start chars the ++ # folding-from characters and first folded-to character. ++ if ($found_locale_problematic) { ++ $loc_problem_folds_start->add_range($start, $end); ++ my $cp = hex $hex_folds[0]; ++ $loc_problem_folds_start->add_range($cp, $cp); + } + } + +-- +2.49.1 + diff --git a/steps/perl-5.18.4/patches/Unicode-UCD-search_invlist.patch b/steps/perl-5.18.4/patches/Unicode-UCD-search_invlist.patch new file mode 100644 index 00000000..8d69ace8 --- /dev/null +++ b/steps/perl-5.18.4/patches/Unicode-UCD-search_invlist.patch @@ -0,0 +1,39 @@ +SPDX-FileCopyrightText: 2013 Karl Williamson +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +This renaming is required for 5.22. + +It is a manual port of 1fdd5e539a9. + +diff --git perl-5.18.4/lib/Unicode/UCD.pm perl-5.18.4/lib/Unicode/UCD.pm +index 9c3dd7c710..2349300626 100644 +--- perl-5.18.4/lib/Unicode/UCD.pm ++++ perl-5.18.4/lib/Unicode/UCD.pm +@@ -25,6 +25,7 @@ our @EXPORT_OK = qw(charinfo + prop_invlist + prop_invmap + MAX_CP ++ search_invlist + ); + + use Carp; +@@ -2261,7 +2261,7 @@ sub prop_invlist ($;$) { + return @invlist; + } + +-sub _search_invlist { ++sub search_invlist { + # Find the range in the inversion list which contains a code point; that + # is, find i such that l[i] <= code_point < l[i+1]. Returns undef if no + # such i. +@@ -3411,7 +3411,7 @@ RETRY: + } + + # Find the range that the override applies to. +- my $i = _search_invlist(\@invlist, $cp); ++ my $i = search_invlist(\@invlist, $cp); + if ($cp < $invlist[$i] || $cp >= $invlist[$i + 1]) { + croak __PACKAGE__, "::prop_invmap: wrong_range, cp=$cp; i=$i, current=$invlist[$i]; next=$invlist[$i + 1]" + } From 073b7d0b54d1eaa732328cba724a27648b035514 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 31 Aug 2025 11:54:14 +1000 Subject: [PATCH 25/64] Add perl 5.22.4 Note that most perl builds have been moved later, this gains some benefits of GCC 4.7, particularly makes debug messages easier to interpret :) --- steps/manifest | 27 +++--- .../files/Compress-Raw-Zlib_config.in | 9 ++ steps/perl-5.22.4/pass1.sh | 87 +++++++++++++++++++ .../regcharclass-remove-experimental.patch | 18 ++++ steps/perl-5.22.4/sources | 2 + 5 files changed, 130 insertions(+), 13 deletions(-) create mode 100644 steps/perl-5.22.4/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.22.4/pass1.sh create mode 100644 steps/perl-5.22.4/patches/regcharclass-remove-experimental.patch create mode 100644 steps/perl-5.22.4/sources diff --git a/steps/manifest b/steps/manifest index b04f3727..1d174b41 100644 --- a/steps/manifest +++ b/steps/manifest @@ -161,19 +161,8 @@ build: perl-Devel-Tokenizer-C-0.11 build: perl-5.8.9 build: perl-Devel-Tokenizer-C-0.11 build: perl-5.12.5 -build: perl-Devel-Tokenizer-C-0.11 -build: perl-5.15.7 -build: perl-Devel-Tokenizer-C-0.11 -build: perl-5.16.3 -build: perl-Devel-Tokenizer-C-0.11 -build: perl-5.17.2 -build: perl-Devel-Tokenizer-C-0.11 -build: perl-5.17.4 -build: perl-Devel-Tokenizer-C-0.11 -build: perl-5.18.4 -build: perl-Devel-Tokenizer-C-0.11 -build: perl-5.32.1 -uninstall: perl-5.6.2 perl-5.10.1 +#build: perl-5.32.1 +uninstall: perl-5.6.2 perl-5.8.9 build: libarchive-3.5.2 build: openssl-3.0.13 build: ca-certificates-3.99 @@ -185,6 +174,18 @@ build: gettext-0.21 build: texinfo-6.7 build: gcc-4.7.4 build: binutils-2.41 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.15.7 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.16.3 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.17.2 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.17.4 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.18.4 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.22.4 build: gperf-3.1 build: libunistring-0.9.10 build: libffi-3.3 diff --git a/steps/perl-5.22.4/files/Compress-Raw-Zlib_config.in b/steps/perl-5.22.4/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..cbad2f99 --- /dev/null +++ b/steps/perl-5.22.4/files/Compress-Raw-Zlib_config.in @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + +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.22.4/pass1.sh b/steps/perl-5.22.4/pass1.sh new file mode 100755 index 00000000..84ee1548 --- /dev/null +++ b/steps/perl-5.22.4/pass1.sh @@ -0,0 +1,87 @@ +# 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 \ + dist/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \ + cpan/Win32API-File/cFile.pc cpan/Sys-Syslog/win32/Win32.pm \ + dist/ExtUtils-CBuilder/Makefile.PL cpan/Devel-PPPort/parts/apidoc.fnc + rm win32/perlexe.ico + rm -r cpan/Compress-Raw-Zlib/zlib-src + + # Generated tests + rm cpan/Unicode-Collate/Collate/keys.txt \ + cpan/Devel-PPPort/t/*.t + + # 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 opcode.h opnames.h pp_proto.h \ + keywords.h embed.h embedvar.h perlapi.{c,h} \ + proto.h lib/overload/numbers.pm regcharclass.h perly.{tab,h,act} \ + mg_{raw.h,vtable.h} keywords.c l1_char_class_tab.h \ + lib/feature.pm lib/B/Op_private.pm lib/unicore/uni_keywords.pl \ + miniperlmain.c unicode_constants.h uni_keywords.h \ + charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ + packsizetables.c overload.c mg_names.c + perl regen.pl + perl regen_perly.pl -b bison-2.3 + perl regen/keywords.pl + perl regen/mk_PL_charclass.pl + perl regen/regcharclass.pl + perl regen/genpacksizetables.pl + perl regen/ebcdic.pl + perl regen/mk_invlists.pl + perl regen/miniperlmain.pl + perl regen/unicode_constants.pl + + # regenerate configure + ln -s ../metaconfig*/.package . + ln -s ../metaconfig*/U . + metaconfig -m + + # Glossary + sed -i -e "s:/pro/3gl/CPAN/lib/dist:${PREFIX}/lib/perl5/5.6.2:" \ + -e "s:/pro/3gl/CPAN/perl:$PWD:" \ + ../metaconfig*/U/mkglossary + chmod +x ../metaconfig*/U/mkglossary + ../metaconfig*/U/mkglossary > Porting/Glossary + + 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=':' \ + -Dccflags="-U__DATE__ -U__TIME__" \ + -Darchname="i386-linux" \ + -Dmyhostname="(none)" \ + -Dmaildomain="(none)" +} + +src_install() { + default + + # Remove messed up manpages + rm "${DESTDIR}/"*.0 +} diff --git a/steps/perl-5.22.4/patches/regcharclass-remove-experimental.patch b/steps/perl-5.22.4/patches/regcharclass-remove-experimental.patch new file mode 100644 index 00000000..92173537 --- /dev/null +++ b/steps/perl-5.22.4/patches/regcharclass-remove-experimental.patch @@ -0,0 +1,18 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +experimental::autoderef does not exist in perl 5.18. + +diff --git perl-5.22.4/regen/regcharclass.pl perl-5.22.4/regen/regcharclass.pl +index 0e12d8e2ee..24cec0d83a 100755 +--- perl-5.22.4/regen/regcharclass.pl ++++ perl-5.22.4/regen/regcharclass.pl +@@ -4,7 +4,6 @@ use strict; + use 5.008; + use warnings; + use warnings FATAL => 'all'; +-no warnings 'experimental::autoderef'; + use Data::Dumper; + $Data::Dumper::Useqq= 1; + our $hex_fmt= "0x%02X"; diff --git a/steps/perl-5.22.4/sources b/steps/perl-5.22.4/sources new file mode 100644 index 00000000..9205a681 --- /dev/null +++ b/steps/perl-5.22.4/sources @@ -0,0 +1,2 @@ +http://www.cpan.org/src/5.0/perl-5.22.4.tar.xz 713243dce27d7aa0bdbf52b2070de5ce449f9ffbcc14a93efbc6f2beff0f5ce8 +git://github.com/Perl/metaconfig~5.26.1 https://github.com/Perl/metaconfig/archive/5.26.1.tar.gz 4641f5127a55cf2e1e8f9253ec27fba10b5b77076b4163e7f4bdc7f670d1aaf0 From 654e317725f370d2559e51a756e659a560e54b9d Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 1 Sep 2025 11:00:48 +1000 Subject: [PATCH 26/64] Make 5.22.4 able to build 5.24 --- steps/perl-5.22.4/pass1.sh | 6 ++ .../Allow-strictly-named-map-tables.patch | 77 +++++++++++++++++++ .../patches/Make-mktables-work-on-5.22.patch | 31 ++++++++ steps/perl-5.22.4/sources | 1 + 4 files changed, 115 insertions(+) create mode 100644 steps/perl-5.22.4/patches/Allow-strictly-named-map-tables.patch create mode 100644 steps/perl-5.22.4/patches/Make-mktables-work-on-5.22.patch diff --git a/steps/perl-5.22.4/pass1.sh b/steps/perl-5.22.4/pass1.sh index 84ee1548..76f9f5a5 100755 --- a/steps/perl-5.22.4/pass1.sh +++ b/steps/perl-5.22.4/pass1.sh @@ -3,6 +3,12 @@ # SPDX-License-Identifier: GPL-3.0-or-later src_prepare() { + # change unicode files to 5.24 version, in particular mktables + # This is required to have the necessary tables for the 5.24 build + mv ../perl-5.24.4/lib/unicore/{version,mktables,*.txt} lib/unicore/ + mv ../perl-5.24.4/lib/unicore/auxiliary/*.txt lib/unicore/auxiliary/ + mv ../perl-5.24.4/lib/unicore/extracted/*.txt lib/unicore/extracted/ + default mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in diff --git a/steps/perl-5.22.4/patches/Allow-strictly-named-map-tables.patch b/steps/perl-5.22.4/patches/Allow-strictly-named-map-tables.patch new file mode 100644 index 00000000..20283359 --- /dev/null +++ b/steps/perl-5.22.4/patches/Allow-strictly-named-map-tables.patch @@ -0,0 +1,77 @@ +SPDX-FileCopyrightText: 2015 Karl Williamson +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Partial backport of this commit. This support is required to use the +tables from 5.24. + +From a6a212f8e678308557ffd57c2aa98ac504468b0e Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Fri, 26 Jun 2015 11:50:18 -0600 +Subject: [PATCH 1/1] mktables: Allow strictly named map tables + +There are several types of tables generated by mktables. Most are +binary (match) tables, but another class is mapping tables. The names +for these may be loosely matched, but until this commit only the match +tables could have strict matching applied. + +Strict matching is used for certain table names where loose could be +ambiguous, and for all names that aren't to be used by anything except +the perl core. +--- + lib/utf8_heavy.pl | 22 ++++++++++++++++++---- + 2 files changed, 51 insertions(+), 9 deletions(-) + +diff --git perl-5.22.4/lib/utf8_heavy.pl perl-5.22.4/lib/utf8_heavy.pl +index e0c3d5ed63..b595028460 100644 +--- perl-5.22.4/lib/utf8_heavy.pl ++++ perl-5.22.4/lib/utf8_heavy.pl +@@ -404,7 +404,11 @@ sub _loose_name ($) { + # If didn't find it, try again with looser matching by editing + # out the applicable characters on the rhs and looking up + # again. ++ my $strict_property_and_table; + if (! defined $file) { ++ ++ # This isn't used unless the name begins with 'to' ++ $strict_property_and_table = $property_and_table =~ s/^to//r; + $table = _loose_name($table); + $property_and_table = "$prefix$table"; + print STDERR __LINE__, ": $property_and_table\n" if DEBUG; +@@ -444,10 +448,19 @@ sub _loose_name ($) { + ## + # Only check if caller wants non-binary + my $retried = 0; +- if ($minbits != 1 && $property_and_table =~ s/^to//) {{ ++ if ($minbits != 1) { ++ if ($property_and_table =~ s/^to//) { + # Look input up in list of properties for which we have +- # mapping files. +- if (defined ($file = ++ # mapping files. First do it with the strict approach ++ if (defined ($file = ++ $utf8::strict_property_to_file_of{$strict_property_and_table})) ++ { ++ $type = $utf8::file_to_swash_name{$file}; ++ print STDERR __LINE__, ": type set to $type\n" if DEBUG; ++ $file = "$unicore_dir/$file.pl"; ++ last GETFILE; ++ } ++ elsif (defined ($file = + $utf8::loose_property_to_file_of{$property_and_table})) + { + $type = $utf8::file_to_swash_name{$file}; +@@ -497,7 +510,8 @@ sub _loose_name ($) { + $file = "$unicore_dir/lib/$file.pl" unless $file =~ m!^#/!; + last GETFILE; + } +- } } ++ } ++ } + + ## + ## If we reach this line, it's because we couldn't figure +-- +2.49.1 + diff --git a/steps/perl-5.22.4/patches/Make-mktables-work-on-5.22.patch b/steps/perl-5.22.4/patches/Make-mktables-work-on-5.22.patch new file mode 100644 index 00000000..35c7d1b3 --- /dev/null +++ b/steps/perl-5.22.4/patches/Make-mktables-work-on-5.22.patch @@ -0,0 +1,31 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +This diff is really on the 5.24 version of mktables, which we use in this +version to get the required tables to build 5.24. These changes are required +for the 5.24 mktables to run under 5.22. + +diff --git perl-5.22.4/lib/unicore/mktables perl-5.22.4/lib/unicore/mktables +index 0566d8713d..00def69d7f 100644 +--- perl-5.22.4/lib/unicore/mktables ++++ perl-5.22.4/lib/unicore/mktables +@@ -33,6 +33,7 @@ use File::Spec; + use Text::Tabs; + use re "/aa"; + use feature 'state'; ++use feature 'postderef'; + + sub DEBUG () { 0 } # Set to 0 for production; 1 for development + my $debugging_build = $Config{"ccflags"} =~ /-DDEBUGGING/; +@@ -549,6 +550,7 @@ my $MAX_LINE_WIDTH = 78; + # before normal completion. + my $debug_skip = 0; + ++my $Assigned; + + # Normally these are suppressed. + my $write_Unicode_deprecated_tables = 0; +-- +2.49.1 + diff --git a/steps/perl-5.22.4/sources b/steps/perl-5.22.4/sources index 9205a681..a40959a5 100644 --- a/steps/perl-5.22.4/sources +++ b/steps/perl-5.22.4/sources @@ -1,2 +1,3 @@ http://www.cpan.org/src/5.0/perl-5.22.4.tar.xz 713243dce27d7aa0bdbf52b2070de5ce449f9ffbcc14a93efbc6f2beff0f5ce8 +http://www.cpan.org/src/5.0/perl-5.24.4.tar.xz 7f080287ff64750270689843ae945f02159a33cb8f2fc910248c15befba5db84 git://github.com/Perl/metaconfig~5.26.1 https://github.com/Perl/metaconfig/archive/5.26.1.tar.gz 4641f5127a55cf2e1e8f9253ec27fba10b5b77076b4163e7f4bdc7f670d1aaf0 From 97f6ac66ec4a8b19dd4c21e6f722d1ddd943110e Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 1 Sep 2025 11:34:43 +1000 Subject: [PATCH 27/64] Cleanup 5.22 and 5.24 --- steps/perl-5.22.4/pass1.sh | 22 +++-- .../files/Compress-Raw-Zlib_config.in | 5 ++ steps/perl-5.24.4/pass1.sh | 85 +++++++++++++++++++ ...PL_charclass.pl-Suppress-extra-null-.patch | 35 ++++++++ ...charclass.pl-avoid-autoderef-feature.patch | 51 +++++++++++ steps/perl-5.24.4/sources | 2 + 6 files changed, 188 insertions(+), 12 deletions(-) create mode 100644 steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.24.4/pass1.sh create mode 100644 steps/perl-5.24.4/patches/0001-Revert-regen-mk_PL_charclass.pl-Suppress-extra-null-.patch create mode 100644 steps/perl-5.24.4/patches/0002-Revert-regen-regcharclass.pl-avoid-autoderef-feature.patch create mode 100644 steps/perl-5.24.4/sources diff --git a/steps/perl-5.22.4/pass1.sh b/steps/perl-5.22.4/pass1.sh index 76f9f5a5..69318e77 100755 --- a/steps/perl-5.22.4/pass1.sh +++ b/steps/perl-5.22.4/pass1.sh @@ -14,10 +14,10 @@ src_prepare() { mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in # Remove miscellaneous pregenerated files - rm -f Porting/Glossary \ - dist/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \ + rm Porting/Glossary \ + cpan/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \ cpan/Win32API-File/cFile.pc cpan/Sys-Syslog/win32/Win32.pm \ - dist/ExtUtils-CBuilder/Makefile.PL cpan/Devel-PPPort/parts/apidoc.fnc + dist/ExtUtils-CBuilder/Makefile.PL rm win32/perlexe.ico rm -r cpan/Compress-Raw-Zlib/zlib-src @@ -27,15 +27,13 @@ src_prepare() { # 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 opcode.h opnames.h pp_proto.h \ - keywords.h embed.h embedvar.h perlapi.{c,h} \ - proto.h lib/overload/numbers.pm regcharclass.h perly.{tab,h,act} \ - mg_{raw.h,vtable.h} keywords.c l1_char_class_tab.h \ - lib/feature.pm lib/B/Op_private.pm lib/unicore/uni_keywords.pl \ - miniperlmain.c unicode_constants.h uni_keywords.h \ - charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ - packsizetables.c overload.c mg_names.c + rm lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c overload.h \ + opcode.h opnames.h pp_proto.h keywords.h embed.h embedvar.h \ + perlapi.{c,h} proto.h lib/overload/numbers.pm regcharclass.h \ + perly.{tab,h,act} mg_{raw.h,vtable.h} keywords.c l1_char_class_tab.h \ + lib/feature.pm lib/B/Op_private.pm miniperlmain.c unicode_constants.h \ + charclass_invlists.h ebcdic_tables.h packsizetables.c overload.c \ + mg_names.c perl regen.pl perl regen_perly.pl -b bison-2.3 perl regen/keywords.pl diff --git a/steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in b/steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..3bbcf2f4 --- /dev/null +++ b/steps/perl-5.24.4/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.24.4/pass1.sh b/steps/perl-5.24.4/pass1.sh new file mode 100755 index 00000000..28490f57 --- /dev/null +++ b/steps/perl-5.24.4/pass1.sh @@ -0,0 +1,85 @@ +# 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 Porting/Glossary \ + cpan/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \ + cpan/Win32API-File/cFile.pc cpan/Sys-Syslog/win32/Win32.pm \ + dist/ExtUtils-CBuilder/Makefile.PL + rm win32/perlexe.ico + rm -r cpan/Compress-Raw-Zlib/zlib-src + + # Generated tests + rm cpan/Unicode-Collate/Collate/keys.txt \ + cpan/Devel-PPPort/t/*.t + + # Regenerate other prebuilt header files + # Taken from headers of regen scripts + rm lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c overload.h \ + opcode.h opnames.h pp_proto.h keywords.h embed.h embedvar.h \ + perlapi.{c,h} proto.h lib/overload/numbers.pm regcharclass.h \ + perly.{tab,h,act} mg_{raw.h,vtable.h} keywords.c l1_char_class_tab.h \ + lib/feature.pm lib/B/Op_private.pm miniperlmain.c unicode_constants.h \ + charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ + packsizetables.inc + perl regen.pl + perl regen_perly.pl -b bison-2.3 + perl regen/keywords.pl + perl regen/mk_PL_charclass.pl + perl regen/regcharclass.pl + perl regen/genpacksizetables.pl + perl regen/ebcdic.pl + perl regen/mk_invlists.pl + perl regen/miniperlmain.pl + perl regen/unicode_constants.pl + + # regenerate configure + ln -s ../metaconfig*/.package . + ln -s ../metaconfig*/U . + metaconfig -m + + # Glossary + sed -i -e "s:/pro/3gl/CPAN/lib/dist:${PREFIX}/lib/perl5/5.6.2:" \ + -e "s:/pro/3gl/CPAN/perl:$PWD:" \ + ../metaconfig*/U/mkglossary + chmod +x ../metaconfig*/U/mkglossary + ../metaconfig*/U/mkglossary > Porting/Glossary + + 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=':' \ + -Dccflags="-U__DATE__ -U__TIME__" \ + -Darchname="i386-linux" \ + -Dmyhostname="(none)" \ + -Dmaildomain="(none)" +} + +src_install() { + default + + # Remove messed up manpages + rm "${DESTDIR}/"*.0 +} diff --git a/steps/perl-5.24.4/patches/0001-Revert-regen-mk_PL_charclass.pl-Suppress-extra-null-.patch b/steps/perl-5.24.4/patches/0001-Revert-regen-mk_PL_charclass.pl-Suppress-extra-null-.patch new file mode 100644 index 00000000..e848a307 --- /dev/null +++ b/steps/perl-5.24.4/patches/0001-Revert-regen-mk_PL_charclass.pl-Suppress-extra-null-.patch @@ -0,0 +1,35 @@ +SPDX-FileCopyrightText: 2015 Karl Williamson +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +This commit does not affect correctness of the script, and negative indexes are +not supported in Perl 5.22. + +From c5ea74f1efd612cda79d6ba3cb1430afdc2ab970 Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Sun, 31 Aug 2025 12:21:46 +1000 +Subject: [PATCH] Revert "regen/mk_PL_charclass.pl: Suppress extra null array + element" + +This reverts commit e8368231412c57222c53c0dc1fac7f711fa051e2. +--- + regen/mk_PL_charclass.pl | 2 -- + 1 file changed, 2 deletions(-) + +diff --git perl-5.24.4/regen/mk_PL_charclass.pl perl-5.24.4/regen/mk_PL_charclass.pl +index 5b609e530b..0bee1ac2a0 100644 +--- perl-5.24.4/regen/mk_PL_charclass.pl ++++ perl-5.24.4/regen/mk_PL_charclass.pl +@@ -384,8 +384,6 @@ foreach my $charset (get_supported_code_pages()) { + + $out[$index] .= ",\n"; + } +- $out[-1] =~ s/,$//; # No trailing comma in the final entry +- + print $out_fh join "", @out; + print $out_fh "\n" . get_conditional_compile_line_end(); + } +-- +2.49.1 + diff --git a/steps/perl-5.24.4/patches/0002-Revert-regen-regcharclass.pl-avoid-autoderef-feature.patch b/steps/perl-5.24.4/patches/0002-Revert-regen-regcharclass.pl-avoid-autoderef-feature.patch new file mode 100644 index 00000000..2601f3e4 --- /dev/null +++ b/steps/perl-5.24.4/patches/0002-Revert-regen-regcharclass.pl-avoid-autoderef-feature.patch @@ -0,0 +1,51 @@ +SPDX-FileCopyrightText: 2015 Aaron Crane +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +The patch avoided autoderef experimental feature by using a new, +non-experimental feature not supported in Perl 5.22. + +From dbec508168fd65dae2aff413fe5184f5f457779d Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Sun, 31 Aug 2025 14:45:48 +1000 +Subject: [PATCH] Revert "regen/regcharclass.pl: avoid autoderef feature" + +This reverts commit de6cb0abd243e5772b9783a2cbeef5755a8267d6. +--- + regen/regcharclass.pl | 5 +++-- + 2 files changed, 9 insertions(+), 2 deletions(-) + +diff --git perl-5.24.4/regen/regcharclass.pl perl-5.24.4/regen/regcharclass.pl +index 9115eafeb6..279ca013d0 100755 +--- perl-5.24.4/regen/regcharclass.pl ++++ perl-5.24.4/regen/regcharclass.pl +@@ -4,6 +4,7 @@ use strict; + use 5.008; + use warnings; + use warnings FATAL => 'all'; ++no warnings 'experimental::autoderef'; + use Data::Dumper; + $Data::Dumper::Useqq= 1; + our $hex_fmt= "0x%02X"; +@@ -874,7 +875,7 @@ sub calculate_mask(@) { + my @final_results; + foreach my $count (reverse sort { $a <=> $b } keys %hash) { + my $need = 2 ** $count; # Need 8 values for 3 differing bits, etc +- foreach my $bits (sort keys $hash{$count}->%*) { ++ foreach my $bits (sort keys $hash{$count}) { + + print STDERR __LINE__, ": For $count bit(s) difference ($bits), need $need; have ", scalar @{$hash{$count}{$bits}}, "\n" if DEBUG; + +@@ -962,7 +963,7 @@ sub calculate_mask(@) { + # individually. + my @individuals; + foreach my $count (reverse sort { $a <=> $b } keys %hash) { +- foreach my $bits (sort keys $hash{$count}->%*) { ++ foreach my $bits (sort keys $hash{$count}) { + foreach my $remaining (@{$hash{$count}{$bits}}) { + + # If we already know about this value, just ignore it. +-- +2.49.1 + diff --git a/steps/perl-5.24.4/sources b/steps/perl-5.24.4/sources new file mode 100644 index 00000000..7c0c8c39 --- /dev/null +++ b/steps/perl-5.24.4/sources @@ -0,0 +1,2 @@ +http://www.cpan.org/src/5.0/perl-5.24.4.tar.xz 7f080287ff64750270689843ae945f02159a33cb8f2fc910248c15befba5db84 +git://github.com/Perl/metaconfig~5.26.1 https://github.com/Perl/metaconfig/archive/5.26.1.tar.gz 4641f5127a55cf2e1e8f9253ec27fba10b5b77076b4163e7f4bdc7f670d1aaf0 From 81c9bf1a6eeb2172d122a36d4d08caf2359e0a6a Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 7 Sep 2025 12:08:27 +1000 Subject: [PATCH 28/64] Set up 5.24 to build 5.30 --- steps/perl-5.24.4/pass1.sh | 6 ++++ ...PL_charclass.pl-Suppress-extra-null-.patch | 35 ------------------- ...harclass.pl-avoid-autoderef-feature.patch} | 0 ...pm-Add-undocumented-internal-feature.patch | 35 +++++++++++++++++++ steps/perl-5.24.4/sources | 1 + 5 files changed, 42 insertions(+), 35 deletions(-) delete mode 100644 steps/perl-5.24.4/patches/0001-Revert-regen-mk_PL_charclass.pl-Suppress-extra-null-.patch rename steps/perl-5.24.4/patches/{0002-Revert-regen-regcharclass.pl-avoid-autoderef-feature.patch => Revert-regen-regcharclass.pl-avoid-autoderef-feature.patch} (100%) create mode 100644 steps/perl-5.24.4/patches/Unicode-UCD.pm-Add-undocumented-internal-feature.patch diff --git a/steps/perl-5.24.4/pass1.sh b/steps/perl-5.24.4/pass1.sh index 28490f57..b1d82ffd 100755 --- a/steps/perl-5.24.4/pass1.sh +++ b/steps/perl-5.24.4/pass1.sh @@ -3,6 +3,12 @@ # SPDX-License-Identifier: GPL-3.0-or-later src_prepare() { + # change unicode files to 5.30 version, in particular mktables + # This is required to have the necessary tables for 5.30 build + mv ../perl-5.30.3/lib/unicore/{version,mktables,*.txt} lib/unicore/ + mv ../perl-5.30.3/lib/unicore/auxiliary/*.txt lib/unicore/auxiliary/ + mv ../perl-5.30.3/lib/unicore/extracted/*.txt lib/unicore/extracted/ + default mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in diff --git a/steps/perl-5.24.4/patches/0001-Revert-regen-mk_PL_charclass.pl-Suppress-extra-null-.patch b/steps/perl-5.24.4/patches/0001-Revert-regen-mk_PL_charclass.pl-Suppress-extra-null-.patch deleted file mode 100644 index e848a307..00000000 --- a/steps/perl-5.24.4/patches/0001-Revert-regen-mk_PL_charclass.pl-Suppress-extra-null-.patch +++ /dev/null @@ -1,35 +0,0 @@ -SPDX-FileCopyrightText: 2015 Karl Williamson -SPDX-FileCopyrightText: 2025 fosslinux - -SPDX-License-Identifier: Artistic-1.0 - -This commit does not affect correctness of the script, and negative indexes are -not supported in Perl 5.22. - -From c5ea74f1efd612cda79d6ba3cb1430afdc2ab970 Mon Sep 17 00:00:00 2001 -From: Samuel Tyler -Date: Sun, 31 Aug 2025 12:21:46 +1000 -Subject: [PATCH] Revert "regen/mk_PL_charclass.pl: Suppress extra null array - element" - -This reverts commit e8368231412c57222c53c0dc1fac7f711fa051e2. ---- - regen/mk_PL_charclass.pl | 2 -- - 1 file changed, 2 deletions(-) - -diff --git perl-5.24.4/regen/mk_PL_charclass.pl perl-5.24.4/regen/mk_PL_charclass.pl -index 5b609e530b..0bee1ac2a0 100644 ---- perl-5.24.4/regen/mk_PL_charclass.pl -+++ perl-5.24.4/regen/mk_PL_charclass.pl -@@ -384,8 +384,6 @@ foreach my $charset (get_supported_code_pages()) { - - $out[$index] .= ",\n"; - } -- $out[-1] =~ s/,$//; # No trailing comma in the final entry -- - print $out_fh join "", @out; - print $out_fh "\n" . get_conditional_compile_line_end(); - } --- -2.49.1 - diff --git a/steps/perl-5.24.4/patches/0002-Revert-regen-regcharclass.pl-avoid-autoderef-feature.patch b/steps/perl-5.24.4/patches/Revert-regen-regcharclass.pl-avoid-autoderef-feature.patch similarity index 100% rename from steps/perl-5.24.4/patches/0002-Revert-regen-regcharclass.pl-avoid-autoderef-feature.patch rename to steps/perl-5.24.4/patches/Revert-regen-regcharclass.pl-avoid-autoderef-feature.patch diff --git a/steps/perl-5.24.4/patches/Unicode-UCD.pm-Add-undocumented-internal-feature.patch b/steps/perl-5.24.4/patches/Unicode-UCD.pm-Add-undocumented-internal-feature.patch new file mode 100644 index 00000000..854e8340 --- /dev/null +++ b/steps/perl-5.24.4/patches/Unicode-UCD.pm-Add-undocumented-internal-feature.patch @@ -0,0 +1,35 @@ +From 00616fe6cbb2f183bdc8fa035d4730261733e732 Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Sat, 23 Dec 2017 14:45:02 -0700 +Subject: [PATCH] Unicode::UCD.pm Add undocumented internal feature + +This allows charprop() to be called on a Perl-internal-only property +--- + lib/Unicode/UCD.pm | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git perl-5.24.4/lib/Unicode/UCD.pm perl-5.24.4/lib/Unicode/UCD.pm +index 13c2c78598..b5125bd506 100644 +--- perl-5.24.4/lib/Unicode/UCD.pm ++++ perl-5.24.4/lib/Unicode/UCD.pm +@@ -694,14 +694,14 @@ that are internal-only. + + =cut + +-sub charprop ($$) { +- my ($input_cp, $prop) = @_; ++sub charprop ($$;$) { ++ my ($input_cp, $prop, $internal_ok) = @_; + + my $cp = _getcode($input_cp); + croak __PACKAGE__, "::charprop: unknown code point '$input_cp'" unless defined $cp; + + my ($list_ref, $map_ref, $format, $default) +- = prop_invmap($prop); ++ = prop_invmap($prop, $internal_ok); + return undef unless defined $list_ref; + + my $i = search_invlist($list_ref, $cp); +-- +2.49.1 + diff --git a/steps/perl-5.24.4/sources b/steps/perl-5.24.4/sources index 7c0c8c39..b637c921 100644 --- a/steps/perl-5.24.4/sources +++ b/steps/perl-5.24.4/sources @@ -1,2 +1,3 @@ http://www.cpan.org/src/5.0/perl-5.24.4.tar.xz 7f080287ff64750270689843ae945f02159a33cb8f2fc910248c15befba5db84 +http://www.cpan.org/src/5.0/perl-5.30.3.tar.xz 6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 git://github.com/Perl/metaconfig~5.26.1 https://github.com/Perl/metaconfig/archive/5.26.1.tar.gz 4641f5127a55cf2e1e8f9253ec27fba10b5b77076b4163e7f4bdc7f670d1aaf0 From d4f507d7f047ecda1aaf0d60c6c23f05c8124533 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 7 Sep 2025 12:23:55 +1000 Subject: [PATCH 29/64] Add licensing information to 5.24 compress-raw-zlib file --- steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in b/steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in index 3bbcf2f4..cbad2f99 100644 --- a/steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + BUILD_ZLIB = False INCLUDE = /usr/include LIB = /usr/lib/i386-unknown-linux-musl From 248af5edc010d009ffc178dd7a23e680e316ad87 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 7 Sep 2025 12:24:43 +1000 Subject: [PATCH 30/64] Add perl 5.30.3 --- .../files/Compress-Raw-Zlib_config.in | 9 ++ steps/perl-5.30.3/pass1.sh | 87 +++++++++++++++++++ steps/perl-5.30.3/sources | 2 + 3 files changed, 98 insertions(+) create mode 100644 steps/perl-5.30.3/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.30.3/pass1.sh create mode 100644 steps/perl-5.30.3/sources diff --git a/steps/perl-5.30.3/files/Compress-Raw-Zlib_config.in b/steps/perl-5.30.3/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..cbad2f99 --- /dev/null +++ b/steps/perl-5.30.3/files/Compress-Raw-Zlib_config.in @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + +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.30.3/pass1.sh b/steps/perl-5.30.3/pass1.sh new file mode 100755 index 00000000..ad5007c4 --- /dev/null +++ b/steps/perl-5.30.3/pass1.sh @@ -0,0 +1,87 @@ +# 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 Porting/Glossary \ + dist/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \ + cpan/Win32API-File/cFile.pc cpan/Sys-Syslog/win32/Win32.pm \ + dist/ExtUtils-CBuilder/Makefile.PL \ + cpan/Test-Simple/lib/Test2/Util/HashBase.pm + rm win32/perlexe.ico + rm -r cpan/Compress-Raw-Zlib/zlib-src + + # Generated tests + rm cpan/Unicode-Collate/Collate/keys.txt \ + dist/Devel-PPPort/t/*.t + + # Regenerate other prebuilt header files + # Taken from headers of regen scripts + rm lib/warnings.pm warnings.h regnodes.h reentr.h reentr.c overload.h \ + opcode.h opnames.h pp_proto.h keywords.h embed.h embedvar.h \ + perlapi.{c,h} proto.h lib/overload/numbers.pm regcharclass.h \ + perly.{tab,h,act} mg_{raw.h,vtable.h} keywords.c l1_char_class_tab.h \ + lib/feature.pm lib/B/Op_private.pm miniperlmain.c unicode_constants.h \ + charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ + packsizetables.inc uni_keywords.h + perl regen.pl + perl regen_perly.pl -b bison-2.3 + perl regen/keywords.pl + perl regen/mk_PL_charclass.pl + perl regen/regcharclass.pl + perl regen/genpacksizetables.pl + perl regen/ebcdic.pl + perl regen/miniperlmain.pl + perl regen/unicode_constants.pl + perl lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p + perl regen/mk_invlists.pl + + # regenerate configure + ln -s ../metaconfig*/.package . + ln -s ../metaconfig*/U . + metaconfig -m + + # Glossary + sed -i -e "s:/pro/3gl/CPAN/lib/dist:${PREFIX}/lib/perl5/5.6.2:" \ + -e "s:/pro/3gl/CPAN/perl:$PWD:" \ + ../metaconfig*/U/mkglossary + chmod +x ../metaconfig*/U/mkglossary + ../metaconfig*/U/mkglossary > Porting/Glossary + + bash dist/Devel-PPPort/devel/mkapidoc.sh . \ + dist/Devel-PPPort/parts/apidoc.fnc \ + dist/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=':' \ + -Dccflags="-U__DATE__ -U__TIME__" \ + -Darchname="i386-linux" \ + -Dmyhostname="(none)" \ + -Dmaildomain="(none)" +} + +src_install() { + default + + # Remove messed up manpages + rm "${DESTDIR}/"*.0 +} diff --git a/steps/perl-5.30.3/sources b/steps/perl-5.30.3/sources new file mode 100644 index 00000000..4e36cb8d --- /dev/null +++ b/steps/perl-5.30.3/sources @@ -0,0 +1,2 @@ +http://www.cpan.org/src/5.0/perl-5.30.3.tar.xz 6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 +git://github.com/Perl/metaconfig~5.26.1 https://github.com/Perl/metaconfig/archive/5.26.1.tar.gz 4641f5127a55cf2e1e8f9253ec27fba10b5b77076b4163e7f4bdc7f670d1aaf0 From a50835713a83339a6fd705eb4f1af3487787376d Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 7 Sep 2025 12:24:59 +1000 Subject: [PATCH 31/64] More Devel::Tokenizer::C builds --- steps/perl-Devel-Tokenizer-C-0.11/pass10.sh | 1 + steps/perl-Devel-Tokenizer-C-0.11/pass11.sh | 1 + steps/perl-Devel-Tokenizer-C-0.11/pass12.sh | 1 + steps/perl-Devel-Tokenizer-C-0.11/pass13.sh | 1 + steps/perl-Devel-Tokenizer-C-0.11/pass9.sh | 1 + 5 files changed, 5 insertions(+) create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass10.sh create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass11.sh create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass12.sh create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass13.sh create mode 120000 steps/perl-Devel-Tokenizer-C-0.11/pass9.sh diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass10.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass10.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass10.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass11.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass11.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass11.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass12.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass12.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass12.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass13.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass13.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass13.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file diff --git a/steps/perl-Devel-Tokenizer-C-0.11/pass9.sh b/steps/perl-Devel-Tokenizer-C-0.11/pass9.sh new file mode 120000 index 00000000..c069796d --- /dev/null +++ b/steps/perl-Devel-Tokenizer-C-0.11/pass9.sh @@ -0,0 +1 @@ +pass1.sh \ No newline at end of file From 9f98642a47fe81ec49574e6029e78979ef117960 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 7 Sep 2025 12:25:20 +1000 Subject: [PATCH 32/64] Enable new perls --- steps/manifest | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/steps/manifest b/steps/manifest index 1d174b41..c8c72a65 100644 --- a/steps/manifest +++ b/steps/manifest @@ -161,7 +161,6 @@ build: perl-Devel-Tokenizer-C-0.11 build: perl-5.8.9 build: perl-Devel-Tokenizer-C-0.11 build: perl-5.12.5 -#build: perl-5.32.1 uninstall: perl-5.6.2 perl-5.8.9 build: libarchive-3.5.2 build: openssl-3.0.13 @@ -186,6 +185,10 @@ build: perl-Devel-Tokenizer-C-0.11 build: perl-5.18.4 build: perl-Devel-Tokenizer-C-0.11 build: perl-5.22.4 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.24.4 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.30.3 build: gperf-3.1 build: libunistring-0.9.10 build: libffi-3.3 From 8e408f77cc18dcf6997281bcce89981d9e2f526e Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 7 Sep 2025 12:47:34 +1000 Subject: [PATCH 33/64] Fix bug with repo with more than 10 builds --- steps/helpers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/steps/helpers.sh b/steps/helpers.sh index 82ba031c..e2c0cb9f 100755 --- a/steps/helpers.sh +++ b/steps/helpers.sh @@ -101,7 +101,7 @@ bin_preseed() { test -e "${pkg}_${revision}.tar.bz2" || return 1 if [ "${UPDATE_CHECKSUMS}" = "True" ] || src_checksum "${pkg}" $((revision)); then echo "${pkg}: installing prebuilt package." - mv "${pkg}_${revision}"* /external/repo || return 1 + mv "${pkg}_${revision}.tar.bz2" /external/repo || return 1 cd "/external/repo" rm -f /tmp/filelist.txt src_apply "${pkg}" $((revision)) From b70900a6521140ecbf66ad47c37ddddb6458dcd3 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 7 Sep 2025 21:36:52 +1000 Subject: [PATCH 34/64] Remove unnecessary sed from perl 5.30 --- steps/perl-5.30.3/pass1.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/steps/perl-5.30.3/pass1.sh b/steps/perl-5.30.3/pass1.sh index ad5007c4..abaab5c2 100755 --- a/steps/perl-5.30.3/pass1.sh +++ b/steps/perl-5.30.3/pass1.sh @@ -47,10 +47,6 @@ src_prepare() { metaconfig -m # Glossary - sed -i -e "s:/pro/3gl/CPAN/lib/dist:${PREFIX}/lib/perl5/5.6.2:" \ - -e "s:/pro/3gl/CPAN/perl:$PWD:" \ - ../metaconfig*/U/mkglossary - chmod +x ../metaconfig*/U/mkglossary ../metaconfig*/U/mkglossary > Porting/Glossary bash dist/Devel-PPPort/devel/mkapidoc.sh . \ From a529a647bd42d7f008b46c948584fb32ce2b5fc9 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 7 Sep 2025 21:37:04 +1000 Subject: [PATCH 35/64] Perl 5.36.3 added --- .../files/Compress-Raw-Zlib_config.in | 5 + steps/perl-5.36.3/pass1.sh | 93 ++ .../patches/Devel-PPPort-remove-sprintf.patch | 13 + .../Revert-mktables-Use-builtin-refaddr.patch | 904 ++++++++++++++++++ .../patches/remove-machine-generated.patch | 19 + steps/perl-5.36.3/sources | 2 + 6 files changed, 1036 insertions(+) create mode 100644 steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.36.3/pass1.sh create mode 100644 steps/perl-5.36.3/patches/Devel-PPPort-remove-sprintf.patch create mode 100644 steps/perl-5.36.3/patches/Revert-mktables-Use-builtin-refaddr.patch create mode 100644 steps/perl-5.36.3/patches/remove-machine-generated.patch create mode 100644 steps/perl-5.36.3/sources diff --git a/steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in b/steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..3bbcf2f4 --- /dev/null +++ b/steps/perl-5.36.3/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.36.3/pass1.sh b/steps/perl-5.36.3/pass1.sh new file mode 100755 index 00000000..3eee34f6 --- /dev/null +++ b/steps/perl-5.36.3/pass1.sh @@ -0,0 +1,93 @@ +# 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 \ + dist/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \ + cpan/Win32API-File/cFile.pc cpan/Sys-Syslog/win32/Win32.pm \ + dist/ExtUtils-CBuilder/Makefile.PL \ + cpan/Test-Simple/lib/Test2/Util/HashBase.pm + rm win32/perlexe.ico + rm -r cpan/Compress-Raw-Zlib/zlib-src + + # Generated tests + rm cpan/Unicode-Collate/Collate/keys.txt + + # 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 opcode.h opnames.h pp_proto.h \ + keywords.h embed.h embedvar.h perlapi.{c,h} \ + proto.h lib/overload/numbers.pm regcharclass.h perly.{tab,h,act} \ + mg_{raw.h,vtable.h} keywords.c l1_char_class_tab.h \ + lib/feature.pm lib/B/Op_private.pm lib/unicore/uni_keywords.pl \ + miniperlmain.c unicode_constants.h uni_keywords.h \ + charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ + packsizetables.inc + perl regen.pl + perl regen_perly.pl + perl regen/keywords.pl + perl regen/mk_PL_charclass.pl + perl regen/regcharclass.pl + perl regen/genpacksizetables.pl + perl regen/ebcdic.pl + perl regen/miniperlmain.pl + perl regen/unicode_constants.pl + perl lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p + perl -Ilib regen/mk_invlists.pl + + # regenerate configure + mconf_dir=$(echo ../metaconfig*) + ln -s "$mconf_dir"/.package . + ln -s "$mconf_dir"/U . + touch U/modified/{d_openat.U,d_vsnprintf.U,d_sched_yield.U} # null it + metaconfig -m + + # Glossary + ln -s ../perl-* "$mconf_dir"/perl + "$mconf_dir"/U/mkglossary > Porting/Glossary + + # 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=':' \ + -Dccflags="-U__DATE__ -U__TIME__" \ + -Darchname="i386-linux" \ + -Dmyhostname="(none)" \ + -Dmaildomain="(none)" +} + +src_compile() { + make "${MAKEJOBS}" pod/perlapi.pod + + pushd dist/Devel-PPPort + perl devel/mkapidoc.pl + popd + + default +} + +src_install() { + default + + # Remove messed up manpages + rm "${DESTDIR}/"*.0 +} diff --git a/steps/perl-5.36.3/patches/Devel-PPPort-remove-sprintf.patch b/steps/perl-5.36.3/patches/Devel-PPPort-remove-sprintf.patch new file mode 100644 index 00000000..8f836365 --- /dev/null +++ b/steps/perl-5.36.3/patches/Devel-PPPort-remove-sprintf.patch @@ -0,0 +1,13 @@ +diff --git perl-5.36.3/dist/Devel-PPPort/PPPort_pm.PL perl-5.36.3/dist/Devel-PPPort/PPPort_pm.PL +index cfbfaeb8fa..f93e56df15 100644 +--- perl-5.36.3/dist/Devel-PPPort/PPPort_pm.PL ++++ perl-5.36.3/dist/Devel-PPPort/PPPort_pm.PL +@@ -891,8 +891,6 @@ __DATA__ + + %include snprintf + +-%include sprintf +- + %include exception + + %include strlfuncs diff --git a/steps/perl-5.36.3/patches/Revert-mktables-Use-builtin-refaddr.patch b/steps/perl-5.36.3/patches/Revert-mktables-Use-builtin-refaddr.patch new file mode 100644 index 00000000..d5b816b4 --- /dev/null +++ b/steps/perl-5.36.3/patches/Revert-mktables-Use-builtin-refaddr.patch @@ -0,0 +1,904 @@ +From 2cbb69f4dff9a096b47771b8d7c64008458df57a Mon Sep 17 00:00:00 2001 +From: Samuel Tyler +Date: Sun, 7 Sep 2025 14:32:20 +1000 +Subject: [PATCH] Revert "mktables: Use builtin::refaddr" + +This reverts commit 812ea1980cc75f8ec5d7942ca228dce43bca2d26. +--- + lib/unicore/mktables | 222 ++++++++++++++++++++++++------------------- + 1 file changed, 125 insertions(+), 97 deletions(-) + +diff --git perl-5.36.3/lib/unicore/mktables perl-5.36.3/lib/unicore/mktables +index de2db8467b..ce6995f0f4 100644 +--- perl-5.36.3/lib/unicore/mktables ++++ perl-5.36.3/lib/unicore/mktables +@@ -22,7 +22,6 @@ BEGIN { # Get the time the script started running; do it at compilation to + require 5.010_001; + use strict; + use warnings; +-use builtin qw(refaddr); + use Carp; + use Config; + use File::Find; +@@ -33,7 +32,6 @@ use re "/aa"; + + use feature 'state'; + use feature 'signatures'; +-no warnings qw( experimental::builtin ); + + sub DEBUG () { 0 } # Set to 0 for production; 1 for development + my $debugging_build = $Config{"ccflags"} =~ /-DDEBUGGING/; +@@ -1495,7 +1493,10 @@ sub objaddr($addr) { + # every call, and the program is structured so that this is never called + # for a non-blessed object. + +- return pack 'J', refaddr $addr; ++ no overloading; # If overloaded, numifying below won't work. ++ ++ # Numifying a ref gives its address. ++ return pack 'J', $addr; + } + + # These are used only if $annotate is true. +@@ -1856,7 +1857,7 @@ package main; + # Use typeglob to give the anonymous subroutine the name we want + *$destroy_name = sub { + my $self = shift; +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + $self->$destroy_callback if $destroy_callback; + foreach my $field (keys %{$package_fields{$package}}) { +@@ -1952,7 +1953,7 @@ package main; + # determine using 'eq' for scalars and '==' otherwise. + *$subname = sub ($self, $value) { + use strict "refs"; +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + if (ref $value) { + return if grep { $value == $_ } @{$field->{$addr}}; + } +@@ -1984,7 +1985,7 @@ package main; + no strict "refs"; + *$subname = sub ($_addr) { + use strict "refs"; +- my $addr = pack 'J', refaddr $_addr; ++ my $addr = do { no overloading; pack 'J', $_addr; }; + if (ref $field->{$addr} ne 'ARRAY') { + my $type = ref $field->{$addr}; + $type = 'scalar' unless $type; +@@ -2005,7 +2006,8 @@ package main; + no strict "refs"; + *$subname = sub ($addr) { + use strict "refs"; +- return $field->{pack 'J', refaddr $addr}; ++ no overloading; ++ return $field->{pack 'J', $addr}; + } + } + } +@@ -2015,7 +2017,8 @@ package main; + *$subname = sub ($self, $value) { + use strict "refs"; + # $self is $_[0]; $value is $_[1] +- $field->{pack 'J', refaddr $self} = $value; ++ no overloading; ++ $field->{pack 'J', $self} = $value; + return; + } + } +@@ -2320,7 +2323,7 @@ sub trace { return main::trace(@_); } + my $class = shift; + + my $self = bless \do{ my $anonymous_scalar }, $class; +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Set defaults + $handler{$addr} = \&main::process_generic_property_file; +@@ -2648,7 +2651,7 @@ END + # flag to make sure extracted files are processed early + state $seen_non_extracted = 0; + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + my $file = $file{$addr}; + +@@ -2895,7 +2898,7 @@ END + # been added via insert_lines() will be returned in $_ before the file + # is read again. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Here the file is open (or if the handle is not a ref, is an open + # 'virtual' file). Get the next line; any inserted lines get priority +@@ -3076,7 +3079,7 @@ END + # insertion code will sort and coalesce the individual code points + # into appropriate ranges.) + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + while (1) { + +@@ -3151,7 +3154,7 @@ END + # # an each_line_handler() on the line. + # + # my $self = shift; +-# my $addr = pack 'J', refaddr $self; ++# my $addr = do { no overloading; pack 'J', $self; }; + # + # foreach my $inserted_ref (@{$added_lines{$addr}}) { + # my ($adjusted, $line) = @{$inserted_ref}; +@@ -3190,7 +3193,8 @@ END + # Each inserted line is an array, with the first element being 0 to + # indicate that this line hasn't been adjusted, and needs to be + # processed. +- push @{$added_lines{pack 'J', refaddr $self}}, map { [ 0, $_ ] } @lines; ++ no overloading; ++ push @{$added_lines{pack 'J', $self}}, map { [ 0, $_ ] } @lines; + return; + } + +@@ -3212,7 +3216,8 @@ END + + # Each inserted line is an array, with the first element being 1 to + # indicate that this line has been adjusted +- push @{$added_lines{pack 'J', refaddr $self}}, map { [ 1, $_ ] } @lines; ++ no overloading; ++ push @{$added_lines{pack 'J', $self}}, map { [ 1, $_ ] } @lines; + return; + } + +@@ -3222,7 +3227,7 @@ END + # element, and the property in the 2nd. However, since these lines + # can be stacked up, the return is an array of all these arrays. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # If not accepting a list return, just return the first one. + return shift @{$missings{$addr}} unless wantarray; +@@ -3294,7 +3299,7 @@ END + # Hangul syllables in this release only are something else, so if + # using such data, we have to override it + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + my $object = main::property_ref($property{$addr}); + $object->add_map($FIRST_REMOVED_HANGUL_SYLLABLE, +@@ -3306,7 +3311,9 @@ END + sub _insert_property_into_line($self) { + # Add a property field to $_, if this file requires it. + +- my $property = $property{pack 'J', refaddr $self}; ++ my $addr = do { no overloading; pack 'J', $self; }; ++ my $property = $property{$addr}; ++ + $_ =~ s/(;|$)/; $property$1/; + return; + } +@@ -3318,7 +3325,7 @@ END + # only outputs the first instance of each message, incrementing a + # count so the totals can be output at the end of the file. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + $message = 'Unexpected line' unless $message; + +@@ -3384,7 +3391,7 @@ package Multi_Default; + my $class = shift; + + my $self = bless \do{my $anonymous_scalar}, $class; +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + while (@_ > 1) { + my $default = shift; +@@ -3400,7 +3407,9 @@ package Multi_Default; + sub get_next_defaults($self) { + # Iterates and returns the next class of defaults. + +- return each %{$class_defaults{pack 'J', refaddr $self}}; ++ my $addr = do { no overloading; pack 'J', $self; }; ++ ++ return each %{$class_defaults{$addr}}; + } + } + +@@ -3447,7 +3456,7 @@ package Alias; + my $class = shift; + + my $self = bless \do { my $anonymous_scalar }, $class; +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + $name{$addr} = shift; + $loose_match{$addr} = shift; +@@ -3507,7 +3516,7 @@ sub trace { return main::trace(@_); } + + sub new($class, $_addr, $_end, @_args) { + my $self = bless \do { my $anonymous_scalar }, $class; +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + $start{$addr} = $_addr; + $end{$addr} = $_end; +@@ -3533,7 +3542,7 @@ sub trace { return main::trace(@_); } + ; + + sub _operator_stringify($self, $other="", $reversed=0) { +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Output it like '0041..0065 (value)' + my $return = sprintf("%04X", $start{$addr}) +@@ -3556,7 +3565,7 @@ sub trace { return main::trace(@_); } + # of writing there are 368676 non-special objects, but the standard + # form is only requested for 22047 of them - ie about 6%. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + return $standard_form{$addr} if defined $standard_form{$addr}; + +@@ -3568,7 +3577,7 @@ sub trace { return main::trace(@_); } + sub dump($self, $indent) { + # Human, not machine readable. For machine readable, comment out this + # entire routine and let the standard one take effect. +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + my $return = $indent + . sprintf("%04X", $start{$addr}) +@@ -3654,7 +3663,7 @@ sub trace { return main::trace(@_); } + return _union($class, $initialize, %args) if defined $initialize; + + $self = bless \do { my $anonymous_scalar }, $class; +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Optional parent object, only for debug info. + $owner_name_of{$addr} = delete $args{'Owner'}; +@@ -3684,7 +3693,7 @@ sub trace { return main::trace(@_); } + ; + + sub _operator_stringify($self, $other="", $reversed=0) { +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + return "Range_List attached to '$owner_name_of{$addr}'" + if $owner_name_of{$addr}; +@@ -3749,7 +3758,8 @@ sub trace { return main::trace(@_); } + if (! defined $arg) { + my $message = ""; + if (defined $self) { +- $message .= $owner_name_of{pack 'J', refaddr $self}; ++ no overloading; ++ $message .= $owner_name_of{pack 'J', $self}; + } + Carp::my_carp_bug($message . "Undefined argument to _union. No union done."); + return; +@@ -3774,7 +3784,8 @@ sub trace { return main::trace(@_); } + else { + my $message = ""; + if (defined $self) { +- $message .= $owner_name_of{pack 'J', refaddr $self}; ++ no overloading; ++ $message .= $owner_name_of{pack 'J', $self}; + } + Carp::my_carp_bug($message . "Cannot take the union of a $type. No union done."); + return; +@@ -3821,7 +3832,8 @@ sub trace { return main::trace(@_); } + } + + sub range_count($self) { # Return the number of ranges in the range list +- return scalar @{$ranges{pack 'J', refaddr $self}}; ++ no overloading; ++ return scalar @{$ranges{pack 'J', $self}}; + } + + sub min($self) { +@@ -3831,7 +3843,7 @@ sub trace { return main::trace(@_); } + # and having to worry about changing it as ranges are added and + # deleted. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # If the range list is empty, return a large value that isn't adjacent + # to any that could be in the range list, for simpler tests +@@ -3852,7 +3864,8 @@ sub trace { return main::trace(@_); } + # range[$i-1]->end < $codepoint <= range[$i]->end + # So is in the table if and only iff it is at least the start position + # of range $i. +- return 0 if $ranges{pack 'J', refaddr $self}->[$i]->start > $codepoint; ++ no overloading; ++ return 0 if $ranges{pack 'J', $self}->[$i]->start > $codepoint; + return $i + 1; + } + +@@ -3862,7 +3875,8 @@ sub trace { return main::trace(@_); } + return unless $i; + + # contains() returns 1 beyond where we should look +- return $ranges{pack 'J', refaddr $self}->[$i-1]; ++ no overloading; ++ return $ranges{pack 'J', $self}->[$i-1]; + } + + sub value_of($self, $codepoint) { +@@ -3888,7 +3902,7 @@ sub trace { return main::trace(@_); } + # range[$i-1]->end < $codepoint <= range[$i]->end + # Returns undef if no such $i is possible (e.g. at end of table), or + # if there is an error. +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + return if $code_point > $max{$addr}; + my $r = $ranges{$addr}; # The current list of ranges +@@ -4076,7 +4090,7 @@ sub trace { return main::trace(@_); } + + Carp::carp_extra_args(\%args) if main::DEBUG && %args; + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + if ($operation ne '+' && $operation ne '-') { + Carp::my_carp_bug("$owner_name_of{$addr}First parameter to _add_delete must be '+' or '-'. No action taken."); +@@ -4721,14 +4735,15 @@ sub trace { return main::trace(@_); } + } + + sub reset_each_range($self) { # reset the iterator for each_range(); +- undef $each_range_iterator{pack 'J', refaddr $self}; ++ no overloading; ++ undef $each_range_iterator{pack 'J', $self}; + return; + } + + sub each_range($self) { + # Iterate over each range in a range list. Results are undefined if + # the range list is changed during the iteration. +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + return if $self->is_empty; + +@@ -4742,7 +4757,7 @@ sub trace { return main::trace(@_); } + } + + sub count($self) { # Returns count of code points in range list +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + my $count = 0; + foreach my $range (@{$ranges{$addr}}) { +@@ -4756,14 +4771,15 @@ sub trace { return main::trace(@_); } + } + + sub is_empty($self) { # Returns boolean as to if a range list is empty +- return scalar @{$ranges{pack 'J', refaddr $self}} == 0; ++ no overloading; ++ return scalar @{$ranges{pack 'J', $self}} == 0; + } + + sub hash($self) { + # Quickly returns a scalar suitable for separating tables into + # buckets, i.e. it is a hash function of the contents of a table, so + # there are relatively few conflicts. +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # These are quickly computable. Return looks like 'min..max;count' + return $self->min . "..$max{$addr};" . scalar @{$ranges{$addr}}; +@@ -5312,7 +5328,7 @@ sub trace { return main::trace(@_); } + my $class = shift; + + my $self = bless \do { my $anonymous_scalar }, $class; +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + my %args = @_; + +@@ -5497,7 +5513,8 @@ END + sub ranges { + # Returns the array of ranges associated with this table. + +- return $range_list{pack 'J', refaddr shift}->ranges; ++ no overloading; ++ return $range_list{pack 'J', shift}->ranges; + } + + sub add_alias { +@@ -5538,7 +5555,7 @@ END + # release + $name = ucfirst($name) unless $name =~ /^k[A-Z]/; + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Figure out if should be loosely matched if not already specified. + if (! defined $loose_match) { +@@ -5599,7 +5616,8 @@ END + + # This name may be shorter than any existing ones, so clear the cache + # of the shortest, so will have to be recalculated. +- undef $short_name{pack 'J', refaddr $self}; ++ no overloading; ++ undef $short_name{pack 'J', $self}; + return; + } + +@@ -5618,7 +5636,7 @@ END + # Any name with alphabetics is preferred over an all numeric one, even + # if longer. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # For efficiency, don't recalculate, but this means that adding new + # aliases could change what the shortest is, so the code that does +@@ -5721,13 +5739,15 @@ END + } + + sub add_description($self, $description) { # Adds the parameter as a short description. +- push @{$description{pack 'J', refaddr $self}}, $description; ++ no overloading; ++ push @{$description{pack 'J', $self}}, $description; + + return; + } + + sub add_note($self, $note) { # Adds the parameter as a short note. +- push @{$note{pack 'J', refaddr $self}}, $note; ++ no overloading; ++ push @{$note{pack 'J', $self}}, $note; + + return; + } +@@ -5738,7 +5758,8 @@ END + + chomp $comment; + +- push @{$comment{pack 'J', refaddr $self}}, $comment; ++ no overloading; ++ push @{$comment{pack 'J', $self}}, $comment; + + return; + } +@@ -5748,7 +5769,7 @@ END + # context, returns the array of comments. In scalar, returns a string + # of each element joined together with a period ending each. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + my @list = @{$comment{$addr}}; + return @list if wantarray; + my $return = ""; +@@ -5765,7 +5786,7 @@ END + # Initialize the table with the argument which is any valid + # initialization for range lists. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Replace the current range list with a new one of the same exact + # type. +@@ -5819,7 +5840,7 @@ END + # a range equals this one, don't write + # the range + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + my $write_as_invlist = $write_as_invlist{$addr}; + + # Start with the header +@@ -6475,7 +6496,7 @@ END + sub set_status($self, $status, $info) { # Set the table's status + # status The status enum value + # info Any message associated with it. +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + $status{$addr} = $status; + $status_info{$addr} = $info; +@@ -6483,7 +6504,7 @@ END + } + + sub set_fate($self, $fate, $reason=undef) { # Set the fate of a table +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + return if $fate{$addr} == $fate; # If no-op + +@@ -6517,7 +6538,7 @@ END + # Don't allow changes to the table from now on. This stores a stack + # trace of where it was called, so that later attempts to modify it + # can immediately show where it got locked. +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + $locked{$addr} = ""; + +@@ -6541,7 +6562,7 @@ END + sub carp_if_locked($self) { + # Return whether a table is locked or not, and, by the way, complain + # if is locked +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + return 0 if ! $locked{$addr}; + Carp::my_carp_bug("Can't modify a locked table. Stack trace of locking:\n$locked{$addr}\n\n"); +@@ -6549,7 +6570,8 @@ END + } + + sub set_file_path($self, @path) { # Set the final directory path for this table +- @{$file_path{pack 'J', refaddr $self}} = @path; ++ no overloading; ++ @{$file_path{pack 'J', $self}} = @path; + return + } + +@@ -6691,7 +6713,7 @@ sub trace { return main::trace(@_); } + Write_As_Invlist => 0, + %args); + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + $anomalous_entries{$addr} = []; + $default_map{$addr} = $default_map; +@@ -6751,7 +6773,7 @@ sub trace { return main::trace(@_); } + sub append_to_body($self) { + # Adds to the written HERE document of the table's body any anomalous + # entries in the table.. +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + return "" unless @{$anomalous_entries{$addr}}; + return join("\n", @{$anomalous_entries{$addr}}) . "\n"; +@@ -6800,7 +6822,7 @@ sub trace { return main::trace(@_); } + . " present, must be 'full_name'"); + } + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Convert the input to the standard equivalent, if any (won't have any + # for $STRING properties) +@@ -6845,7 +6867,7 @@ sub trace { return main::trace(@_); } + + sub to_output_map($self) { + # Returns boolean: should we write this map table? +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # If overridden, use that + return $to_output_map{$addr} if defined $to_output_map{$addr}; +@@ -6923,7 +6945,7 @@ END + # No sense generating a comment if aren't going to write it out. + return if ! $self->to_output_map; + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + my $property = $self->property; + +@@ -7102,7 +7124,7 @@ END + # Called in the middle of write when it finds a range it doesn't know + # how to handle. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + my $type = $range->type; + +@@ -7244,7 +7266,7 @@ END + # be for all ranges missing from it. It also includes any code points + # which have map_types that don't go in the main table. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + my $name = $self->property->swash_name; + +@@ -7343,7 +7365,7 @@ END + sub write($self) { + # Write the table to the file. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Clear the temporaries + undef @multi_code_point_maps; +@@ -7610,7 +7632,7 @@ sub trace { return main::trace(@_); } + Format => $EMPTY_FORMAT, + Write_As_Invlist => 1, + ); +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + $conflicting{$addr} = [ ]; + $equivalents{$addr} = [ ]; +@@ -7774,7 +7796,7 @@ sub trace { return main::trace(@_); } + # be an optional parameter. + Carp::carp_extra_args(\@_) if main::DEBUG && @_; + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Check if the conflicting name is exactly the same as any existing + # alias in this table (as long as there is a real object there to +@@ -7817,7 +7839,8 @@ sub trace { return main::trace(@_); } + } + + # Two tables are equivalent if they have the same leader. +- return $leader{pack 'J', refaddr $self} == $leader{pack 'J', refaddr $other}; ++ no overloading; ++ return $leader{pack 'J', $self} == $leader{pack 'J', $other}; + return; + } + +@@ -7854,7 +7877,7 @@ sub trace { return main::trace(@_); } + my $are_equivalent = $self->is_set_equivalent_to($other); + return if ! defined $are_equivalent || $are_equivalent; + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + my $current_leader = ($related) ? $parent{$addr} : $leader{$addr}; + + if ($related) { +@@ -7893,8 +7916,8 @@ sub trace { return main::trace(@_); } + return; + } + +- my $leader = pack 'J', refaddr $current_leader; +- my $other_addr = pack 'J', refaddr $other; ++ my $leader = do { no overloading; pack 'J', $current_leader; }; ++ my $other_addr = do { no overloading; pack 'J', $other; }; + + # Any tables that are equivalent to or children of this table must now + # instead be equivalent to or (children) to the new leader (parent), +@@ -7911,7 +7934,7 @@ sub trace { return main::trace(@_); } + next if $table == $other; + trace "setting $other to be the leader of $table, status=$status" if main::DEBUG && $to_trace; + +- my $table_addr = pack 'J', refaddr $table; ++ my $table_addr = do { no overloading; pack 'J', $table; }; + $leader{$table_addr} = $other; + $matches_all{$table_addr} = $matches_all; + $self->_set_range_list($other->_range_list); +@@ -7944,7 +7967,8 @@ sub trace { return main::trace(@_); } + Carp::my_carp_bug("Can't set $self to be the complement of $other, which itself is the complement of " . $other->complement); + return; + } +- $complement{pack 'J', refaddr $self} = $other; ++ my $addr = do { no overloading; pack 'J', $self; }; ++ $complement{$addr} = $other; + + # Be sure the other property knows we are depending on them; or the + # other table if it is one in the current property. +@@ -8232,7 +8256,7 @@ sub trace { return main::trace(@_); } + + return unless $debugging_build; + +- my $addr = pack 'J', refaddr $leader; ++ my $addr = do { no overloading; pack 'J', $leader; }; + + if ($leader{$addr} != $leader) { + Carp::my_carp_bug(<table('N') + && defined (my $yes = $property->table('Y'))) + { +- my $yes_addr = pack 'J', refaddr $yes; ++ my $yes_addr = do { no overloading; pack 'J', $yes; }; + @yes_perl_synonyms + = grep { $_->property == $perl } + main::uniques($yes, +@@ -8316,12 +8340,12 @@ END + my @conflicting; # Will hold the table conflicts. + + # Look at the parent, any yes synonyms, and all the children +- my $parent_addr = pack 'J', refaddr $parent; ++ my $parent_addr = do { no overloading; pack 'J', $parent; }; + for my $table ($parent, + @yes_perl_synonyms, + @{$children{$parent_addr}}) + { +- my $table_addr = pack 'J', refaddr $table; ++ my $table_addr = do { no overloading; pack 'J', $table; }; + my $table_property = $table->property; + + # Tables are separated by a blank line to create a grouping. +@@ -8786,7 +8810,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + my %args = @_; + + $self = bless \do { my $anonymous_scalar }, $class; +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + $directory{$addr} = delete $args{'Directory'}; + $file{$addr} = delete $args{'File'}; +@@ -8849,7 +8873,8 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + return; + } + else { +- $map{pack 'J', refaddr $self}->delete_range($other, $other); ++ no overloading; ++ $map{pack 'J', $self}->delete_range($other, $other); + } + return $self; + } +@@ -8862,7 +8887,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + my $name = shift; + my %args = @_; + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + my $table = $table_ref{$addr}{$name}; + my $standard_name = main::standardize($name); +@@ -8936,7 +8961,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + + sub delete_match_table($self, $table_to_remove) { + # Delete the table referred to by $2 from the property $1. +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Remove all names that refer to it. + foreach my $key (keys %{$table_ref{$addr}}) { +@@ -8951,7 +8976,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + sub table($self, $name) { + # Return a pointer to the match table (with name given by the + # parameter) associated with this property; undef if none. +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + return $table_ref{$addr}{$name} if defined $table_ref{$addr}{$name}; + +@@ -8969,7 +8994,8 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + # Return a list of pointers to all the match tables attached to this + # property + +- return main::uniques(values %{$table_ref{pack 'J', refaddr shift}}); ++ no overloading; ++ return main::uniques(values %{$table_ref{pack 'J', shift}}); + } + + sub directory { +@@ -8978,7 +9004,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + # priority; 'undef' is returned if the type isn't defined; + # or $map_directory for everything else. + +- my $addr = pack 'J', refaddr shift; ++ my $addr = do { no overloading; pack 'J', shift; }; + + return $directory{$addr} if defined $directory{$addr}; + return undef if $type{$addr} == $UNKNOWN; +@@ -8995,7 +9021,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + # but otherwise the standard name is used. This is different from the + # external_name, so that the rest of the files, like in lib can use + # the standard name always, without regard to historical precedent. +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Swash names are used only on either + # 1) regular or internal-only map tables +@@ -9016,7 +9042,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + # The whole point of this pseudo property is match tables. + return 1 if $self == $perl; + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # Don't generate tables of code points that match the property values + # of a string property. Such a list would most likely have many +@@ -9043,7 +9069,8 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + return; + } + +- return $map{pack 'J', refaddr $self}->map_add_or_replace_non_nulls($map{pack 'J', refaddr $other}); ++ no overloading; ++ return $map{pack 'J', $self}->map_add_or_replace_non_nulls($map{pack 'J', $other}); + } + + sub set_proxy_for { +@@ -9079,7 +9106,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + return; + } + +- $type{pack 'J', refaddr $self} = $type; ++ { no overloading; $type{pack 'J', $self} = $type; } + return if $type != $BINARY && $type != $FORCED_BINARY; + + my $yes = $self->table('Y'); +@@ -9118,7 +9145,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + my $map = shift; # What the range maps to. + # Rest of parameters passed on. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + # If haven't the type of the property, gather information to figure it + # out. +@@ -9167,7 +9194,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + # We have been keeping track of what the property values have been, + # and now have the necessary information to figure out the type. + +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + + my $type = $type{$addr}; + +@@ -9223,7 +9250,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + + # $reaons - Ignored unless suppressing + sub set_fate($self, $fate, $reason=undef) { +- my $addr = pack 'J', refaddr $self; ++ my $addr = do { no overloading; pack 'J', $self; }; + if ($fate >= $SUPPRESSED) { + $why_suppressed{$self->complete_name} = $reason; + } +@@ -9301,7 +9328,8 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } + *$sub = sub { + use strict "refs"; + my $self = shift; +- return $map{pack 'J', refaddr $self}->$sub(@_); ++ no overloading; ++ return $map{pack 'J', $self}->$sub(@_); + } + } + +@@ -9714,7 +9742,7 @@ sub UCD_name ($table, $alias) { + else { + + # Keep track of cycles in the input, and refuse to infinitely loop +- my $addr = pack 'J', refaddr $item; ++ my $addr = do { no overloading; pack 'J', $item; }; + if (defined $main::already_output{$addr}) { + return "${indent}ALREADY OUTPUT: $item\n"; + } +@@ -9832,7 +9860,7 @@ sub dump_inside_out( $object, $fields_ref ) { + # Dump inside-out hashes in an object's state by converting them to a + # regular hash and then calling simple_dumper on that. + +- my $addr = pack 'J', refaddr $object; ++ my $addr = do { no overloading; pack 'J', $object; }; + + my %hash; + foreach my $key (keys %$fields_ref) { +@@ -9853,7 +9881,7 @@ sub _operator_dot($self, $other="", $reversed=0) { + } + else { + my $ref = ref $$which; +- my $addr = pack 'J', refaddr $$which; ++ my $addr = do { no overloading; pack 'J', $$which; }; + $$which = "$ref ($addr)"; + } + } +@@ -10857,7 +10885,7 @@ sub output_perl_charnames_line ($code_point, $name) { + $file->carp_bad_line("Unexpected property '$property_name'. Skipped"); + next LINE; + } +- $property_addr = pack 'J', refaddr $property_object; ++ { no overloading; $property_addr = pack 'J', $property_object; } + + # Defer changing names until have a line that is acceptable + # (the 'next' statement above means is unacceptable) +@@ -10909,7 +10937,7 @@ sub output_perl_charnames_line ($code_point, $name) { + if $file->has_missings_defaults; + foreach my $default_ref (@missings_list) { + my $default = $default_ref->[0]; +- my $addr = pack 'J', refaddr property_ref($default_ref->[1]); ++ my $addr = do { no overloading; pack 'J', property_ref($default_ref->[1]); }; + + # For string properties, the default is just what the + # file says, but non-string properties should already +-- +2.49.1 + diff --git a/steps/perl-5.36.3/patches/remove-machine-generated.patch b/steps/perl-5.36.3/patches/remove-machine-generated.patch new file mode 100644 index 00000000..66ff8d9b --- /dev/null +++ b/steps/perl-5.36.3/patches/remove-machine-generated.patch @@ -0,0 +1,19 @@ +There is no way to regenerate this easily. It is merely a fallback for when the +previous fails and it will not fail with our perl. + +diff --color -ru perl-5.36.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm perl-5.36.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm +--- perl-5.36.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm 2025-07-23 21:56:14.121284638 +1000 ++++ perl-5.36.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm 2025-07-23 22:05:05.990255330 +1000 +@@ -74,13 +74,6 @@ + my $script_run_re = eval 'no warnings "experimental::script_run"; + qr/(*script_run: ^ .* $ )/x'; + my $latin_re = my_qr('[\p{IsLatin}\p{IsInherited}\p{IsCommon}]', "\x{100}"); +-unless ($latin_re) { +- # This was machine generated to be the ranges of the union of the above +- # three properties, with things that were undefined by Unicode 4.1 filling +- # gaps. That is the version in use when Perl advanced enough to +- # successfully compile and execute the above pattern. +- $latin_re = my_qr('[\x00-\x{02E9}\x{02EC}-\x{0374}\x{037E}\x{0385}\x{0387}\x{0485}\x{0486}\x{0589}\x{060C}\x{061B}\x{061F}\x{0640}\x{064B}-\x{0655}\x{0670}\x{06DD}\x{0951}-\x{0954}\x{0964}\x{0965}\x{0E3F}\x{10FB}\x{16EB}-\x{16ED}\x{1735}\x{1736}\x{1802}\x{1803}\x{1805}\x{1D00}-\x{1D25}\x{1D2C}-\x{1D5C}\x{1D62}-\x{1D65}\x{1D6B}-\x{1D77}\x{1D79}-\x{1DBE}\x{1DC0}-\x{1EF9}\x{2000}-\x{2125}\x{2127}-\x{27FF}\x{2900}-\x{2B13}\x{2E00}-\x{2E1D}\x{2FF0}-\x{3004}\x{3006}\x{3008}-\x{3020}\x{302A}-\x{302D}\x{3030}-\x{3037}\x{303C}-\x{303F}\x{3099}-\x{309C}\x{30A0}\x{30FB}\x{30FC}\x{3190}-\x{319F}\x{31C0}-\x{31CF}\x{3220}-\x{325F}\x{327F}-\x{32CF}\x{3358}-\x{33FF}\x{4DC0}-\x{4DFF}\x{A700}-\x{A716}\x{FB00}-\x{FB06}\x{FD3E}\x{FD3F}\x{FE00}-\x{FE6B}\x{FEFF}-\x{FF65}\x{FF70}\x{FF9E}\x{FF9F}\x{FFE0}-\x{FFFD}\x{10100}-\x{1013F}\x{1D000}-\x{1D1DD}\x{1D300}-\x{1D7FF}]', "\x{100}"); +-} + + my $every_char_is_latin_re = my_qr("^(?:$latin_re)*\\z", "A"); diff --git a/steps/perl-5.36.3/sources b/steps/perl-5.36.3/sources new file mode 100644 index 00000000..45cc89d8 --- /dev/null +++ b/steps/perl-5.36.3/sources @@ -0,0 +1,2 @@ +http://www.cpan.org/src/5.0/perl-5.36.3.tar.xz 45a228daef66d02fdccc820e71f87e40d8e3df1fc4431f8d4580ec08033866bd +git://github.com/Perl/metaconfig~5.36.0 https://github.com/Perl/metaconfig/archive/5.36.0.tar.gz 0767f0566067c9fd5d17f5ff53fa04b9c45a182afa189dc05b5f8418d5888d92 From 77c09085fe33d73f29f39b8f970892d89698e75c Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 7 Sep 2025 23:17:14 +1000 Subject: [PATCH 36/64] Perl 5.40.3 --- .../files/Compress-Raw-Zlib_config.in | 6 ++ steps/perl-5.40.3/pass1.sh | 98 +++++++++++++++++++ .../patches/Devel-PPPort-remove-sprintf.patch | 13 +++ .../patches/fix-debugging-re.patch | 13 +++ .../patches/remove-machine-generated.patch | 19 ++++ steps/perl-5.40.3/sources | 2 + 6 files changed, 151 insertions(+) create mode 100644 steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.40.3/pass1.sh create mode 100644 steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch create mode 100644 steps/perl-5.40.3/patches/fix-debugging-re.patch create mode 100644 steps/perl-5.40.3/patches/remove-machine-generated.patch create mode 100644 steps/perl-5.40.3/sources diff --git a/steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in b/steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..60b8dd1c --- /dev/null +++ b/steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in @@ -0,0 +1,6 @@ +BUILD_ZLIB = False +ZLIB_INCLUDE = /usr/include +ZLIB_LIB = /usr/lib/i386-unknown-linux-musl +OLD_ZLIB = False +GZIP_OS_CODE = AUTO_DETECT +USE_ZLIB_NG = False diff --git a/steps/perl-5.40.3/pass1.sh b/steps/perl-5.40.3/pass1.sh new file mode 100755 index 00000000..8d133f1b --- /dev/null +++ b/steps/perl-5.40.3/pass1.sh @@ -0,0 +1,98 @@ +# 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 \ + dist/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \ + cpan/Win32API-File/cFile.pc cpan/Sys-Syslog/win32/Win32.pm \ + dist/ExtUtils-CBuilder/Makefile.PL \ + cpan/Test-Simple/lib/Test2/Util/HashBase.pm \ + cpan/Term-Table/lib/Term/Table/HashBase.pm \ + dist/Tie-File/Makefile.PL + rm win32/perlexe.ico + rm -r cpan/Compress-Raw-Zlib/zlib-src + + # Generated tests + rm cpan/Unicode-Collate/Collate/keys.txt + + # 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 opcode.h opnames.h pp_proto.h \ + keywords.h embed.h embedvar.h perlapi.{c,h} \ + proto.h lib/overload/numbers.pm regcharclass.h perly.{tab,h,act} \ + mg_{raw.h,vtable.h} keywords.c l1_char_class_tab.h \ + lib/feature.pm lib/B/Op_private.pm lib/unicore/uni_keywords.pl \ + miniperlmain.c unicode_constants.h uni_keywords.h \ + charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ + packsizetables.inc regexp_constants.h locale_table.h scope_types.h \ + charclass_invlists.inc + perl regen.pl + perl regen_perly.pl + perl regen/keywords.pl + perl regen/mk_PL_charclass.pl + perl regen/regcharclass.pl + perl regen/genpacksizetables.pl + perl regen/ebcdic.pl + perl regen/miniperlmain.pl + perl regen/unicode_constants.pl + perl lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p + mkdir lib_unicore + ln -s ../lib/unicore lib_unicore/ + perl -Ilib_unicore regen/mk_invlists.pl + + # regenerate configure + mconf_dir=$(echo ../metaconfig*) + ln -s "$mconf_dir"/.package . + ln -s "$mconf_dir"/U . + touch U/modified/{d_openat.U,d_vsnprintf.U,d_sched_yield.U} # null it + metaconfig -m + + # Glossary + ln -s ../perl-* "$mconf_dir"/perl + "$mconf_dir"/U/mkglossary > Porting/Glossary + + # 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=':' \ + -Dccflags="-U__DATE__ -U__TIME__" \ + -Darchname="i386-linux" \ + -Dmyhostname="(none)" \ + -Dmaildomain="(none)" +} + +src_compile() { + make "${MAKEJOBS}" pod/perlapi.pod + + pushd dist/Devel-PPPort + perl devel/mkapidoc.pl + popd + + default +} + +src_install() { + default + + # Remove messed up manpages + rm "${DESTDIR}/"*.0 +} diff --git a/steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch b/steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch new file mode 100644 index 00000000..c054c1f8 --- /dev/null +++ b/steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch @@ -0,0 +1,13 @@ +diff --git perl-5.40.3/dist/Devel-PPPort/PPPort_pm.PL perl-5.40.3/dist/Devel-PPPort/PPPort_pm.PL +index cfbfaeb8fa..f93e56df15 100644 +--- perl-5.40.3/dist/Devel-PPPort/PPPort_pm.PL ++++ perl-5.40.3/dist/Devel-PPPort/PPPort_pm.PL +@@ -891,8 +891,6 @@ __DATA__ + + %include snprintf + +-%include sprintf +- + %include exception + + %include strlfuncs diff --git a/steps/perl-5.40.3/patches/fix-debugging-re.patch b/steps/perl-5.40.3/patches/fix-debugging-re.patch new file mode 100644 index 00000000..4748311a --- /dev/null +++ b/steps/perl-5.40.3/patches/fix-debugging-re.patch @@ -0,0 +1,13 @@ +diff --git perl-5.40.3/ext/re/Makefile.PL perl-5.40.3/ext/re/Makefile.PL +index 01786e1ec2..cc4619bfc3 100644 +--- perl-5.40.3/ext/re/Makefile.PL ++++ perl-5.40.3/ext/re/Makefile.PL +@@ -27,7 +27,7 @@ foreach my $tuple (@files) { + } + } + +-my $defines = '-DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT'; ++my $defines = '-DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT -DDEBUGGING'; + my %args; + for my $arg (@ARGV) { + $args{$1} = $2 if $arg =~ /^(\w+)=(.*)$/; diff --git a/steps/perl-5.40.3/patches/remove-machine-generated.patch b/steps/perl-5.40.3/patches/remove-machine-generated.patch new file mode 100644 index 00000000..2dd00179 --- /dev/null +++ b/steps/perl-5.40.3/patches/remove-machine-generated.patch @@ -0,0 +1,19 @@ +There is no way to regenerate this easily. It is merely a fallback for when the +previous fails and it will not fail with our perl. + +diff --color -ru perl-5.40.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm perl-5.40.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm +--- perl-5.40.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm 2025-07-23 21:56:14.121284638 +1000 ++++ perl-5.40.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm 2025-07-23 22:05:05.990255330 +1000 +@@ -74,13 +74,6 @@ + my $script_run_re = eval 'no warnings "experimental::script_run"; + qr/(*script_run: ^ .* $ )/x'; + my $latin_re = my_qr('[\p{IsLatin}\p{IsInherited}\p{IsCommon}]', "\x{100}"); +-unless ($latin_re) { +- # This was machine generated to be the ranges of the union of the above +- # three properties, with things that were undefined by Unicode 4.1 filling +- # gaps. That is the version in use when Perl advanced enough to +- # successfully compile and execute the above pattern. +- $latin_re = my_qr('[\x00-\x{02E9}\x{02EC}-\x{0374}\x{037E}\x{0385}\x{0387}\x{0485}\x{0486}\x{0589}\x{060C}\x{061B}\x{061F}\x{0640}\x{064B}-\x{0655}\x{0670}\x{06DD}\x{0951}-\x{0954}\x{0964}\x{0965}\x{0E3F}\x{10FB}\x{16EB}-\x{16ED}\x{1735}\x{1736}\x{1802}\x{1803}\x{1805}\x{1D00}-\x{1D25}\x{1D2C}-\x{1D5C}\x{1D62}-\x{1D65}\x{1D6B}-\x{1D77}\x{1D79}-\x{1DBE}\x{1DC0}-\x{1EF9}\x{2000}-\x{2125}\x{2127}-\x{27FF}\x{2900}-\x{2B13}\x{2E00}-\x{2E1D}\x{2FF0}-\x{3004}\x{3006}\x{3008}-\x{3020}\x{302A}-\x{302D}\x{3030}-\x{3037}\x{303C}-\x{303F}\x{3099}-\x{309C}\x{30A0}\x{30FB}\x{30FC}\x{3190}-\x{319F}\x{31C0}-\x{31CF}\x{3220}-\x{325F}\x{327F}-\x{32CF}\x{3358}-\x{33FF}\x{4DC0}-\x{4DFF}\x{A700}-\x{A716}\x{FB00}-\x{FB06}\x{FD3E}\x{FD3F}\x{FE00}-\x{FE6B}\x{FEFF}-\x{FF65}\x{FF70}\x{FF9E}\x{FF9F}\x{FFE0}-\x{FFFD}\x{10100}-\x{1013F}\x{1D000}-\x{1D1DD}\x{1D300}-\x{1D7FF}]', "\x{100}"); +-} + + my $every_char_is_latin_re = my_qr("^(?:$latin_re)*\\z", "A"); diff --git a/steps/perl-5.40.3/sources b/steps/perl-5.40.3/sources new file mode 100644 index 00000000..09051037 --- /dev/null +++ b/steps/perl-5.40.3/sources @@ -0,0 +1,2 @@ +http://www.cpan.org/src/5.0/perl-5.40.3.tar.xz 65f63b4763ab6cb9bb3d5731dd10369e1705be3c59be9847d453eb60b349ab43 +git://github.com/Perl/metaconfig~5.42.0 https://github.com/Perl/metaconfig/archive/5.42.0.tar.gz ac3948bd684a3c017a241b6fc7b899c901f814b36d030ee79887374884e30301 From 495365c016559bc44ff57149b8b16c5c80bbe5f2 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 8 Sep 2025 10:06:30 +1000 Subject: [PATCH 37/64] Remove perl 5.32.1 --- steps/perl-5.32.1/pass1.sh | 54 ------------------- .../perl-5.32.1/patches/reproducibility.patch | 49 ----------------- .../patches/reproducibility2.patch | 47 ---------------- steps/perl-5.32.1/sources | 2 - 4 files changed, 152 deletions(-) delete mode 100755 steps/perl-5.32.1/pass1.sh delete mode 100644 steps/perl-5.32.1/patches/reproducibility.patch delete mode 100644 steps/perl-5.32.1/patches/reproducibility2.patch delete mode 100644 steps/perl-5.32.1/sources diff --git a/steps/perl-5.32.1/pass1.sh b/steps/perl-5.32.1/pass1.sh deleted file mode 100755 index c834f45a..00000000 --- a/steps/perl-5.32.1/pass1.sh +++ /dev/null @@ -1,54 +0,0 @@ -# SPDX-FileCopyrightText: 2022 Andrius Å tikonas -# SPDX-FileCopyrightText: 2022 fosslinux -# -# SPDX-License-Identifier: GPL-3.0-or-later - -src_prepare() { - default - - # Regenerate bison files - # perly.c looks suspiciously like it is from bison, but is not; from the - # below script: - # Note that perly.c is *not* regenerated - this is now a static file which - # is not dependent on perly.y any more. - perl regen_perly.pl - - # Regenerate other prebuilt header files - # Taken from headers of regen scripts - rm -f embed.h embedvar.h perlapi.c perlapi.h proto.h mg_names.inc mg_raw.h \ - mg_vtable.h opcode.h opnames.h pp_proto.h \ - lib/B/Op_private.pm overload.h overload.inc lib/overload/numbers.pm \ - reentr.h reentr.c regnodes.h lib/warnings.pm \ - warnings.h lib/feature.pm feature.h - perl regen.pl - - # Regenerate configure + config_h.SH - rm -f Configure config_h.SH - ln -s ../metaconfig-5.32.1/.package . - ln -s ../metaconfig-5.32.1/U . - metaconfig -m -} - -src_configure() { - ./Configure -des \ - -Dprefix="${PREFIX}" \ - -Dcc=gcc \ - -Dusedl=false \ - -Ddate=':' \ - -Dccflags="-U__DATE__ -U__TIME__" \ - -Darchname="i386-linux" \ - -Dmyhostname="(none)" \ - -Dmaildomain="(none)" -} - -src_install() { - default - - # Remove messed up manpages - rm "${DESTDIR}/"*.0 - rm "${DESTDIR}${PREFIX}/lib/perl5/5.32.1/pod/perldebguts.pod" - - # Improve reproducibility. hostcat might be empty or set to "cat /etc/hosts" - # depending on whether /etc/hosts was available during the build. - sed -i "s_^hostcat='.*'\$_hostcat=''_g" "${DESTDIR}${PREFIX}/lib/perl5/5.32.1/i386-linux/Config_heavy.pl" -} diff --git a/steps/perl-5.32.1/patches/reproducibility.patch b/steps/perl-5.32.1/patches/reproducibility.patch deleted file mode 100644 index c5f561fc..00000000 --- a/steps/perl-5.32.1/patches/reproducibility.patch +++ /dev/null @@ -1,49 +0,0 @@ -SPDX-FileCopyrightText: 2021-22 fosslinux - -SPDX-License-Identifier: Artistic-1.0 - -Set some things that cannot be overriden in the perl Configure script to -generate with correct values for live-bootstrap. - -NOTE: this patch CANNOT be applied to a non-live-bootstrap environment. - ---- metaconfig-5.32.1/U/threads/archname.U 2022-02-27 21:30:03.155396204 +1100 -+++ metaconfig-5.32.1/U/threads/archname.U 2022-02-27 21:30:49.392396204 +1100 -@@ -79,7 +79,7 @@ - ?X: Very GCCian. - *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;; - esac --myarchname="$tarch" -+myarchname="i686-linux" - case "$archname" in - '') dflt="$tarch";; - *) dflt="$archname";; ---- metaconfig-5.32.1/U/modified/Oldconfig.U 2022-02-27 21:31:26.911396204 +1100 -+++ metaconfig-5.32.1/U/modified/Oldconfig.U 2022-02-27 21:32:31.846396204 +1100 -@@ -117,16 +117,13 @@ - ?X: on some machines to avoid the error message when uname is not found; e.g. - ?X: old SUN-OS 3.2 would not execute hostname in (uname -a || hostname). Sigh! - ?X: Now not using a subshell but instead $test. --myuname=`$uname -a 2>/dev/null` --$test -z "$myuname" && myuname=`hostname 2>/dev/null` - # Downcase everything to avoid ambiguity. - # Remove slashes and single quotes so we can use parts of this in - # directory and file names. - # Remove newlines so myuname is sane to use elsewhere. - # tr '[A-Z]' '[a-z]' would not work in EBCDIC - # because the A-Z/a-z are not consecutive. --myuname=`echo $myuname | $sed -e "s,['/],,g" | \ -- ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '` -+myuname="linux (none) 4.14.341-openela #1 mon jan 1 00:00:01 1970 i686 gnulinux" - ?X: Save the value we just computed to reset myuname after we get done here. - newmyuname="$myuname" - dflt=n -@@ -336,7 +333,7 @@ - ?X: Note the hostname on the second one, which will fool Configure - ?X: into using the SysV case! - gnu) osname=gnu -- osvers="$3" ;; -+ osvers="4.14.341-openela" ;; - ?X: HP-UX uname -a gives something like - ?X: HP-UX foobar B.10.20 A 9000/735 2016483812 two-user license - ?X: Preserve the full 10.20 string instead of the previous plain '10'. diff --git a/steps/perl-5.32.1/patches/reproducibility2.patch b/steps/perl-5.32.1/patches/reproducibility2.patch deleted file mode 100644 index 09c53fe4..00000000 --- a/steps/perl-5.32.1/patches/reproducibility2.patch +++ /dev/null @@ -1,47 +0,0 @@ -SPDX-FileCopyrightText: 2021 fosslinux - -SPDX-License-Identifier: Artistic-1.0 - -Set some things that cannot be overriden in the perl Configure script to -generate with correct values for live-bootstrap. - -NOTE: this patch CANNOT be applied to a non-live-bootstrap environment. - ---- metaconfig-5.32.1/dist/U/archname.U 2022-02-26 10:51:45.343097807 +1100 -+++ metaconfig-5.32.1/dist/U/archname.U 2022-02-26 10:51:51.742527859 +1100 -@@ -72,5 +72,5 @@ - rp='What is your architecture name' - . ./myread - archname="$ans" --myarchname="$tarch" -+myarchname="i386" - ---- metaconfig-5.32.1/dist/U/Oldconfig.U 2022-02-27 10:55:04.890396204 +1100 -+++ metaconfig-5.32.1/dist/U/Oldconfig.U 2022-02-27 11:00:31.324396204 +1100 -@@ -109,16 +109,13 @@ - ?LINT:extern hostarch libswanted libs - ?LINT:change hostarch libswanted libs - : Determine the name of the machine --myuname=`$uname -a 2>/dev/null` --$test -z "$myuname" && myuname=`hostname 2>/dev/null` - ?X: Special mention for Xenix, whose 'uname -a' gives us output like this: - ?X: sysname=XENIX - ?X: nodename=whatever - ?X: release=2.3.2 .. etc... - ?X: Therefore, we strip all this variable assignment junk and remove all the - ?X: new lines to keep the myuname variable sane... --RAM --myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \ -- ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '` -+myuname="" - ?X: Save the value we just computed to reset myuname after we get done here. - newmyuname="$myuname" - has_uname= -@@ -277,7 +274,7 @@ - ;; - linux) osname=linux - case "$3" in -- *) osvers="$3" ;; -+ *) osvers="4.14.341-openela" ;; - esac - ;; - MiNT) osname=mint diff --git a/steps/perl-5.32.1/sources b/steps/perl-5.32.1/sources deleted file mode 100644 index 5b5cf6ea..00000000 --- a/steps/perl-5.32.1/sources +++ /dev/null @@ -1,2 +0,0 @@ -f http://www.cpan.org/src/5.0/perl-5.32.1.tar.xz 57cc47c735c8300a8ce2fa0643507b44c4ae59012bfdad0121313db639e02309 -g https://github.com/Perl/metaconfig~5.32.1 https://github.com/Perl/metaconfig/archive/refs/tags/5.32.1.tar.gz 23abd0d49995229426775c7b1a973e0722faf99bc52e5030d188f0f37973e841 From c634840581ef7b7a020f4ffa9f6b925c85bab84f Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 8 Sep 2025 10:06:42 +1000 Subject: [PATCH 38/64] Final perl: Add perl 5.42.0! --- .../files/Compress-Raw-Zlib_config.in | 6 ++ steps/perl-5.42.0/pass1.sh | 96 +++++++++++++++++++ .../patches/Devel-PPPort-remove-sprintf.patch | 13 +++ .../patches/fix-debugging-re.patch | 13 +++ .../patches/mk_invlists-remove-any.patch | 38 ++++++++ .../patches/remove-machine-generated.patch | 19 ++++ steps/perl-5.42.0/sources | 2 + 7 files changed, 187 insertions(+) create mode 100644 steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in create mode 100755 steps/perl-5.42.0/pass1.sh create mode 100644 steps/perl-5.42.0/patches/Devel-PPPort-remove-sprintf.patch create mode 100644 steps/perl-5.42.0/patches/fix-debugging-re.patch create mode 100644 steps/perl-5.42.0/patches/mk_invlists-remove-any.patch create mode 100644 steps/perl-5.42.0/patches/remove-machine-generated.patch create mode 100644 steps/perl-5.42.0/sources diff --git a/steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in b/steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in new file mode 100644 index 00000000..60b8dd1c --- /dev/null +++ b/steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in @@ -0,0 +1,6 @@ +BUILD_ZLIB = False +ZLIB_INCLUDE = /usr/include +ZLIB_LIB = /usr/lib/i386-unknown-linux-musl +OLD_ZLIB = False +GZIP_OS_CODE = AUTO_DETECT +USE_ZLIB_NG = False diff --git a/steps/perl-5.42.0/pass1.sh b/steps/perl-5.42.0/pass1.sh new file mode 100755 index 00000000..2444c823 --- /dev/null +++ b/steps/perl-5.42.0/pass1.sh @@ -0,0 +1,96 @@ +# 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 \ + dist/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \ + cpan/Win32API-File/cFile.pc cpan/Sys-Syslog/win32/Win32.pm \ + dist/ExtUtils-CBuilder/Makefile.PL \ + cpan/Test-Simple/lib/Test2/Util/HashBase.pm \ + cpan/Term-Table/lib/Term/Table/HashBase.pm \ + dist/Tie-File/Makefile.PL + rm win32/perlexe.ico + rm -r cpan/Compress-Raw-Zlib/zlib-src + + # Generated tests + rm cpan/Unicode-Collate/Collate/keys.txt + + # 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 opcode.h opnames.h pp_proto.h \ + keywords.h embed.h embedvar.h perlapi.{c,h} \ + proto.h lib/overload/numbers.pm regcharclass.h perly.{tab,h,act} \ + mg_{raw.h,vtable.h} keywords.c l1_char_class_tab.h \ + lib/feature.pm lib/B/Op_private.pm lib/unicore/uni_keywords.pl \ + miniperlmain.c unicode_constants.h uni_keywords.h \ + charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ + packsizetables.inc regexp_constants.h locale_table.h scope_types.h \ + charclass_invlists.inc + perl regen.pl + perl regen_perly.pl + perl regen/keywords.pl + perl regen/mk_PL_charclass.pl + perl regen/regcharclass.pl + perl regen/genpacksizetables.pl + perl regen/ebcdic.pl + perl regen/miniperlmain.pl + perl regen/unicode_constants.pl + perl lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p + perl -Ilib regen/mk_invlists.pl + + # regenerate configure + mconf_dir=$(echo ../metaconfig*) + ln -s "$mconf_dir"/.package . + ln -s "$mconf_dir"/U . + touch U/modified/{d_openat.U,d_vsnprintf.U,d_sched_yield.U} # null it + metaconfig -m + + # Glossary + ln -s ../perl-* "$mconf_dir"/perl + "$mconf_dir"/U/mkglossary > Porting/Glossary + + # 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=':' \ + -Dccflags="-U__DATE__ -U__TIME__" \ + -Darchname="i386-linux" \ + -Dmyhostname="(none)" \ + -Dmaildomain="(none)" +} + +src_compile() { + make "${MAKEJOBS}" pod/perlapi.pod + + pushd dist/Devel-PPPort + perl devel/mkapidoc.pl + popd + + default +} + +src_install() { + default + + # Remove messed up manpages + rm "${DESTDIR}/"*.0 +} diff --git a/steps/perl-5.42.0/patches/Devel-PPPort-remove-sprintf.patch b/steps/perl-5.42.0/patches/Devel-PPPort-remove-sprintf.patch new file mode 100644 index 00000000..4bf9d10b --- /dev/null +++ b/steps/perl-5.42.0/patches/Devel-PPPort-remove-sprintf.patch @@ -0,0 +1,13 @@ +diff --git perl-5.42.0/dist/Devel-PPPort/PPPort_pm.PL perl-5.42.0/dist/Devel-PPPort/PPPort_pm.PL +index cfbfaeb8fa..f93e56df15 100644 +--- perl-5.42.0/dist/Devel-PPPort/PPPort_pm.PL ++++ perl-5.42.0/dist/Devel-PPPort/PPPort_pm.PL +@@ -891,8 +891,6 @@ __DATA__ + + %include snprintf + +-%include sprintf +- + %include exception + + %include strlfuncs diff --git a/steps/perl-5.42.0/patches/fix-debugging-re.patch b/steps/perl-5.42.0/patches/fix-debugging-re.patch new file mode 100644 index 00000000..30287c00 --- /dev/null +++ b/steps/perl-5.42.0/patches/fix-debugging-re.patch @@ -0,0 +1,13 @@ +diff --git perl-5.42.0/ext/re/Makefile.PL perl-5.42.0/ext/re/Makefile.PL +index 01786e1ec2..cc4619bfc3 100644 +--- perl-5.42.0/ext/re/Makefile.PL ++++ perl-5.42.0/ext/re/Makefile.PL +@@ -27,7 +27,7 @@ foreach my $tuple (@files) { + } + } + +-my $defines = '-DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT'; ++my $defines = '-DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT -DDEBUGGING'; + my %args; + for my $arg (@ARGV) { + $args{$1} = $2 if $arg =~ /^(\w+)=(.*)$/; diff --git a/steps/perl-5.42.0/patches/mk_invlists-remove-any.patch b/steps/perl-5.42.0/patches/mk_invlists-remove-any.patch new file mode 100644 index 00000000..75158012 --- /dev/null +++ b/steps/perl-5.42.0/patches/mk_invlists-remove-any.patch @@ -0,0 +1,38 @@ +Make mk_invlists work in 5.40. + +diff --git perl-5.42.0/regen/mk_invlists.pl perl-5.42.0/regen/mk_invlists.pl +index 5d30ee2234..f02c07a9af 100644 +--- perl-5.42.0/regen/mk_invlists.pl ++++ perl-5.42.0/regen/mk_invlists.pl +@@ -1,12 +1,10 @@ + #!perl +-use v5.41.9; ++use v5.40.3; + use utf8; + use re "/aa"; + use feature 'signatures'; + use feature 'state'; +-use feature 'keyword_any'; + use warnings; +-no warnings 'experimental::keyword_any'; + use Data::Dumper; + $Data::Dumper::Sortkeys = 1; + use Unicode::UCD qw(prop_aliases +@@ -1483,7 +1481,7 @@ sub get_cell_list($table_size, $splits, $enums, $x, $y, $me_too = undef) { + foreach my $pair ($me_too->{$me_too_key}->@*) { + my $copy_x = $pair->[0]; + my $copy_y = $pair->[1]; +- next if any { $copy_x == $_->[0] ++ next if grep { $copy_x == $_->[0] + && $copy_y == $_->[1] + } @list; + push @list, [ $copy_x, $copy_y ]; +@@ -2185,7 +2183,7 @@ sub setup_splits($to_enum, $table_size, $has_unused, $splits) { + # If any of the items this expands to are themselves split, this + # one isn't ready to be processed. But an item can refer to + # itself. That shouldn't count XXX +- next if any { defined $splits->{$_} } ++ next if grep { defined $splits->{$_} } + grep { $_ ne $name } $splits->{$name}->@*; + + push @ordered, $name; diff --git a/steps/perl-5.42.0/patches/remove-machine-generated.patch b/steps/perl-5.42.0/patches/remove-machine-generated.patch new file mode 100644 index 00000000..b36c0af2 --- /dev/null +++ b/steps/perl-5.42.0/patches/remove-machine-generated.patch @@ -0,0 +1,19 @@ +There is no way to regenerate this easily. It is merely a fallback for when the +previous fails and it will not fail with our perl. + +diff --color -ru perl-5.42.0/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm perl-5.42.0/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm +--- perl-5.42.0/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm 2025-07-23 21:56:14.121284638 +1000 ++++ perl-5.42.0/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm 2025-07-23 22:05:05.990255330 +1000 +@@ -74,13 +74,6 @@ + my $script_run_re = eval 'no warnings "experimental::script_run"; + qr/(*script_run: ^ .* $ )/x'; + my $latin_re = my_qr('[\p{IsLatin}\p{IsInherited}\p{IsCommon}]', "\x{100}"); +-unless ($latin_re) { +- # This was machine generated to be the ranges of the union of the above +- # three properties, with things that were undefined by Unicode 4.1 filling +- # gaps. That is the version in use when Perl advanced enough to +- # successfully compile and execute the above pattern. +- $latin_re = my_qr('[\x00-\x{02E9}\x{02EC}-\x{0374}\x{037E}\x{0385}\x{0387}\x{0485}\x{0486}\x{0589}\x{060C}\x{061B}\x{061F}\x{0640}\x{064B}-\x{0655}\x{0670}\x{06DD}\x{0951}-\x{0954}\x{0964}\x{0965}\x{0E3F}\x{10FB}\x{16EB}-\x{16ED}\x{1735}\x{1736}\x{1802}\x{1803}\x{1805}\x{1D00}-\x{1D25}\x{1D2C}-\x{1D5C}\x{1D62}-\x{1D65}\x{1D6B}-\x{1D77}\x{1D79}-\x{1DBE}\x{1DC0}-\x{1EF9}\x{2000}-\x{2125}\x{2127}-\x{27FF}\x{2900}-\x{2B13}\x{2E00}-\x{2E1D}\x{2FF0}-\x{3004}\x{3006}\x{3008}-\x{3020}\x{302A}-\x{302D}\x{3030}-\x{3037}\x{303C}-\x{303F}\x{3099}-\x{309C}\x{30A0}\x{30FB}\x{30FC}\x{3190}-\x{319F}\x{31C0}-\x{31CF}\x{3220}-\x{325F}\x{327F}-\x{32CF}\x{3358}-\x{33FF}\x{4DC0}-\x{4DFF}\x{A700}-\x{A716}\x{FB00}-\x{FB06}\x{FD3E}\x{FD3F}\x{FE00}-\x{FE6B}\x{FEFF}-\x{FF65}\x{FF70}\x{FF9E}\x{FF9F}\x{FFE0}-\x{FFFD}\x{10100}-\x{1013F}\x{1D000}-\x{1D1DD}\x{1D300}-\x{1D7FF}]', "\x{100}"); +-} + + my $every_char_is_latin_re = my_qr("^(?:$latin_re)*\\z", "A"); diff --git a/steps/perl-5.42.0/sources b/steps/perl-5.42.0/sources new file mode 100644 index 00000000..4f78e053 --- /dev/null +++ b/steps/perl-5.42.0/sources @@ -0,0 +1,2 @@ +http://www.cpan.org/src/5.0/perl-5.42.0.tar.xz 73cf6cc1ea2b2b1c110a18c14bbbc73a362073003893ffcedc26d22ebdbdd0c3 +git://github.com/Perl/metaconfig~5.42.0 https://github.com/Perl/metaconfig/archive/5.42.0.tar.gz ac3948bd684a3c017a241b6fc7b899c901f814b36d030ee79887374884e30301 From 34b6d7392e1bba10556e45f93e9f41e3fbd03c42 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 8 Sep 2025 10:08:08 +1000 Subject: [PATCH 39/64] Enable the rest of the perl bootstrap --- steps/manifest | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/steps/manifest b/steps/manifest index c8c72a65..95bd131b 100644 --- a/steps/manifest +++ b/steps/manifest @@ -189,6 +189,12 @@ build: perl-Devel-Tokenizer-C-0.11 build: perl-5.24.4 build: perl-Devel-Tokenizer-C-0.11 build: perl-5.30.3 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.36.3 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.40.3 +build: perl-Devel-Tokenizer-C-0.11 +build: perl-5.42.0 build: gperf-3.1 build: libunistring-0.9.10 build: libffi-3.3 From cead0a32b426f0af3a8b4e425d95cb9bb5690f2a Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 8 Sep 2025 10:26:41 +1000 Subject: [PATCH 40/64] Remove unused file --- steps/perl-5.17.4/reenable-regcharclass.patch | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 steps/perl-5.17.4/reenable-regcharclass.patch diff --git a/steps/perl-5.17.4/reenable-regcharclass.patch b/steps/perl-5.17.4/reenable-regcharclass.patch deleted file mode 100644 index 30af8f15..00000000 --- a/steps/perl-5.17.4/reenable-regcharclass.patch +++ /dev/null @@ -1,17 +0,0 @@ -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 From 269c2e07fc8811898982466052d8856fac1348ce Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 8 Sep 2025 10:26:53 +1000 Subject: [PATCH 41/64] Add SPDX information to a 5.24 patch --- .../Unicode-UCD.pm-Add-undocumented-internal-feature.patch | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/steps/perl-5.24.4/patches/Unicode-UCD.pm-Add-undocumented-internal-feature.patch b/steps/perl-5.24.4/patches/Unicode-UCD.pm-Add-undocumented-internal-feature.patch index 854e8340..9095d82b 100644 --- a/steps/perl-5.24.4/patches/Unicode-UCD.pm-Add-undocumented-internal-feature.patch +++ b/steps/perl-5.24.4/patches/Unicode-UCD.pm-Add-undocumented-internal-feature.patch @@ -1,3 +1,10 @@ +SPDX-FileCopyrightText: 2017 Karl Williamson +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Backport this to 5.24 to be used in 5.30. + From 00616fe6cbb2f183bdc8fa035d4730261733e732 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Sat, 23 Dec 2017 14:45:02 -0700 From e9489cab46092a258aa830298103baa3e0a51793 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 8 Sep 2025 10:28:59 +1000 Subject: [PATCH 42/64] Clean up perl 5.36 --- steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in | 4 ++++ steps/perl-5.36.3/pass1.sh | 3 +++ .../perl-5.36.3/patches/Devel-PPPort-remove-sprintf.patch | 8 ++++++++ .../patches/Revert-mktables-Use-builtin-refaddr.patch | 7 +++++++ steps/perl-5.36.3/patches/remove-machine-generated.patch | 4 ++++ 5 files changed, 26 insertions(+) diff --git a/steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in b/steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in index 3bbcf2f4..cbad2f99 100644 --- a/steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + BUILD_ZLIB = False INCLUDE = /usr/include LIB = /usr/lib/i386-unknown-linux-musl diff --git a/steps/perl-5.36.3/pass1.sh b/steps/perl-5.36.3/pass1.sh index 3eee34f6..ebf6eefa 100755 --- a/steps/perl-5.36.3/pass1.sh +++ b/steps/perl-5.36.3/pass1.sh @@ -46,6 +46,9 @@ src_prepare() { mconf_dir=$(echo ../metaconfig*) ln -s "$mconf_dir"/.package . ln -s "$mconf_dir"/U . + # TODO This shouldn't be necessary, but I don't know how to fix it properly + # The problem is that these files produce duplicates in config.h which + # makes autodoc.pl very unhappy touch U/modified/{d_openat.U,d_vsnprintf.U,d_sched_yield.U} # null it metaconfig -m diff --git a/steps/perl-5.36.3/patches/Devel-PPPort-remove-sprintf.patch b/steps/perl-5.36.3/patches/Devel-PPPort-remove-sprintf.patch index 8f836365..9a33d7e1 100644 --- a/steps/perl-5.36.3/patches/Devel-PPPort-remove-sprintf.patch +++ b/steps/perl-5.36.3/patches/Devel-PPPort-remove-sprintf.patch @@ -1,3 +1,11 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +my_sprintf appears to be broken. +This should not be necessary, but is; is most likely linked to metaconfig +problems. + diff --git perl-5.36.3/dist/Devel-PPPort/PPPort_pm.PL perl-5.36.3/dist/Devel-PPPort/PPPort_pm.PL index cfbfaeb8fa..f93e56df15 100644 --- perl-5.36.3/dist/Devel-PPPort/PPPort_pm.PL diff --git a/steps/perl-5.36.3/patches/Revert-mktables-Use-builtin-refaddr.patch b/steps/perl-5.36.3/patches/Revert-mktables-Use-builtin-refaddr.patch index d5b816b4..f521b5da 100644 --- a/steps/perl-5.36.3/patches/Revert-mktables-Use-builtin-refaddr.patch +++ b/steps/perl-5.36.3/patches/Revert-mktables-Use-builtin-refaddr.patch @@ -1,3 +1,10 @@ +SPDX-FileCopyrightText: 2021 Karl Williamson +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +builtin is not available in Perl 5.30. Remove the use of it for now. + From 2cbb69f4dff9a096b47771b8d7c64008458df57a Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 7 Sep 2025 14:32:20 +1000 diff --git a/steps/perl-5.36.3/patches/remove-machine-generated.patch b/steps/perl-5.36.3/patches/remove-machine-generated.patch index 66ff8d9b..bcf36401 100644 --- a/steps/perl-5.36.3/patches/remove-machine-generated.patch +++ b/steps/perl-5.36.3/patches/remove-machine-generated.patch @@ -1,3 +1,7 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + There is no way to regenerate this easily. It is merely a fallback for when the previous fails and it will not fail with our perl. From fc08010f6d9e23f8ffd59420dc7309692c8d9fc6 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 8 Sep 2025 10:29:07 +1000 Subject: [PATCH 43/64] Clean up perl 5.40 --- steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in | 4 ++++ .../perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch | 8 ++++++++ steps/perl-5.40.3/patches/fix-debugging-re.patch | 8 ++++++++ steps/perl-5.40.3/patches/remove-machine-generated.patch | 4 ++++ 4 files changed, 24 insertions(+) diff --git a/steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in b/steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in index 60b8dd1c..22ffd510 100644 --- a/steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + BUILD_ZLIB = False ZLIB_INCLUDE = /usr/include ZLIB_LIB = /usr/lib/i386-unknown-linux-musl diff --git a/steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch b/steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch index c054c1f8..7fb9ee27 100644 --- a/steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch +++ b/steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch @@ -1,3 +1,11 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +my_sprintf appears to be broken. +This should not be necessary, but is; is most likely linked to metaconfig +problems. + diff --git perl-5.40.3/dist/Devel-PPPort/PPPort_pm.PL perl-5.40.3/dist/Devel-PPPort/PPPort_pm.PL index cfbfaeb8fa..f93e56df15 100644 --- perl-5.40.3/dist/Devel-PPPort/PPPort_pm.PL diff --git a/steps/perl-5.40.3/patches/fix-debugging-re.patch b/steps/perl-5.40.3/patches/fix-debugging-re.patch index 4748311a..98e95d24 100644 --- a/steps/perl-5.40.3/patches/fix-debugging-re.patch +++ b/steps/perl-5.40.3/patches/fix-debugging-re.patch @@ -1,3 +1,11 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +This should not be necessary, there is something weird going on here. +A number of #defines are hidden behind -DDEBUGGING that are required to build +the re extension but they are not used. Not sure why, this is a bit of a hack. + diff --git perl-5.40.3/ext/re/Makefile.PL perl-5.40.3/ext/re/Makefile.PL index 01786e1ec2..cc4619bfc3 100644 --- perl-5.40.3/ext/re/Makefile.PL diff --git a/steps/perl-5.40.3/patches/remove-machine-generated.patch b/steps/perl-5.40.3/patches/remove-machine-generated.patch index 2dd00179..fa63109e 100644 --- a/steps/perl-5.40.3/patches/remove-machine-generated.patch +++ b/steps/perl-5.40.3/patches/remove-machine-generated.patch @@ -1,3 +1,7 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + There is no way to regenerate this easily. It is merely a fallback for when the previous fails and it will not fail with our perl. From 7da78830101fa51033d93d7c5f1173fba8065be7 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 8 Sep 2025 10:29:14 +1000 Subject: [PATCH 44/64] Clean up perl 5.42 --- steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in | 4 ++++ .../perl-5.42.0/patches/Devel-PPPort-remove-sprintf.patch | 8 ++++++++ steps/perl-5.42.0/patches/fix-debugging-re.patch | 8 ++++++++ steps/perl-5.42.0/patches/mk_invlists-remove-any.patch | 4 ++++ steps/perl-5.42.0/patches/remove-machine-generated.patch | 4 ++++ 5 files changed, 28 insertions(+) diff --git a/steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in b/steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in index 60b8dd1c..22ffd510 100644 --- a/steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: MIT + BUILD_ZLIB = False ZLIB_INCLUDE = /usr/include ZLIB_LIB = /usr/lib/i386-unknown-linux-musl diff --git a/steps/perl-5.42.0/patches/Devel-PPPort-remove-sprintf.patch b/steps/perl-5.42.0/patches/Devel-PPPort-remove-sprintf.patch index 4bf9d10b..20872bec 100644 --- a/steps/perl-5.42.0/patches/Devel-PPPort-remove-sprintf.patch +++ b/steps/perl-5.42.0/patches/Devel-PPPort-remove-sprintf.patch @@ -1,3 +1,11 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +my_sprintf appears to be broken. +This should not be necessary, but is; is most likely linked to metaconfig +problems. + diff --git perl-5.42.0/dist/Devel-PPPort/PPPort_pm.PL perl-5.42.0/dist/Devel-PPPort/PPPort_pm.PL index cfbfaeb8fa..f93e56df15 100644 --- perl-5.42.0/dist/Devel-PPPort/PPPort_pm.PL diff --git a/steps/perl-5.42.0/patches/fix-debugging-re.patch b/steps/perl-5.42.0/patches/fix-debugging-re.patch index 30287c00..ec1a3083 100644 --- a/steps/perl-5.42.0/patches/fix-debugging-re.patch +++ b/steps/perl-5.42.0/patches/fix-debugging-re.patch @@ -1,3 +1,11 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +This should not be necessary, there is something weird going on here. +A number of #defines are hidden behind -DDEBUGGING that are required to build +the re extension but they are not used. Not sure why, this is a bit of a hack. + diff --git perl-5.42.0/ext/re/Makefile.PL perl-5.42.0/ext/re/Makefile.PL index 01786e1ec2..cc4619bfc3 100644 --- perl-5.42.0/ext/re/Makefile.PL diff --git a/steps/perl-5.42.0/patches/mk_invlists-remove-any.patch b/steps/perl-5.42.0/patches/mk_invlists-remove-any.patch index 75158012..ebce77f2 100644 --- a/steps/perl-5.42.0/patches/mk_invlists-remove-any.patch +++ b/steps/perl-5.42.0/patches/mk_invlists-remove-any.patch @@ -1,3 +1,7 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + Make mk_invlists work in 5.40. diff --git perl-5.42.0/regen/mk_invlists.pl perl-5.42.0/regen/mk_invlists.pl diff --git a/steps/perl-5.42.0/patches/remove-machine-generated.patch b/steps/perl-5.42.0/patches/remove-machine-generated.patch index b36c0af2..f888160c 100644 --- a/steps/perl-5.42.0/patches/remove-machine-generated.patch +++ b/steps/perl-5.42.0/patches/remove-machine-generated.patch @@ -1,3 +1,7 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + There is no way to regenerate this easily. It is merely a fallback for when the previous fails and it will not fail with our perl. From 68a09eaa1c8ebbabc710d88ed8cc578f4417af03 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 8 Sep 2025 10:29:26 +1000 Subject: [PATCH 45/64] Remove unused license (for now) --- LICENSES/Artistic-1.0-Perl.txt | 51 ---------------------------------- 1 file changed, 51 deletions(-) delete mode 100644 LICENSES/Artistic-1.0-Perl.txt diff --git a/LICENSES/Artistic-1.0-Perl.txt b/LICENSES/Artistic-1.0-Perl.txt deleted file mode 100644 index dd45f4cd..00000000 --- a/LICENSES/Artistic-1.0-Perl.txt +++ /dev/null @@ -1,51 +0,0 @@ -The "Artistic License" - -Preamble - -The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. - -Definitions: - - "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. - - "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder as specified below. - - "Copyright Holder" is whoever is named in the copyright or copyrights for the package. - - "You" is you, if you're thinking about copying or distributing this Package. - - "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) - - "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. - -1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. - -2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. - -3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: - - a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as uunet.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. - b) use the modified Package only within your corporation or organization. - c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. - d) make other distribution arrangements with the Copyright Holder. - -4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: - - a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. - b) accompany the distribution with the machine-readable source of the Package with your modifications. - c) give non-standard executables non-standard names, and clearly document the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. - d) make other distribution arrangements with the Copyright Holder. - -5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. You may embed this Package's interpreter within an executable of yours (by linking); this shall be construed as a mere form of aggregation, provided that the complete Standard Version of the interpreter is so embedded. - -6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whoever generated them, and may be sold commercially, and may be aggregated with this Package. If such scripts or library files are aggregated with this Package via the so-called "undump" or "unexec" methods of producing a binary executable image, then distribution of such an image shall neither be construed as a distribution of this Package nor shall it fall under the restrictions of Paragraphs 3 and 4, provided that you do not represent such an executable image as a Standard Version of this Package. - -7. C subroutines (or comparably compiled subroutines in other languages) supplied by you and linked into this Package in order to emulate subroutines and variables of the language defined by this Package shall not be considered part of this Package, but are the equivalent of input as in Paragraph 6, provided these subroutines do not change the language in any way that would cause it to fail the regression tests for the language. - -8. Aggregation of this Package with a commercial distribution is always permitted provided that the use of this Package is embedded; that is, when no overt attempt is made to make this Package's interfaces visible to the end user of the commercial distribution. Such use shall not be construed as a distribution of this Package. - -9. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. - -10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - -The End From a888adde33edc7d09daece06f58490a1f87ace2c Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 8 Sep 2025 10:59:57 +1000 Subject: [PATCH 46/64] Actually we don't need 5.40.3 --- steps/manifest | 2 - .../files/Compress-Raw-Zlib_config.in | 10 -- steps/perl-5.40.3/pass1.sh | 98 ------------------- .../patches/Devel-PPPort-remove-sprintf.patch | 21 ---- .../patches/fix-debugging-re.patch | 21 ---- .../patches/remove-machine-generated.patch | 23 ----- steps/perl-5.40.3/sources | 2 - steps/perl-5.42.0/pass1.sh | 4 +- .../patches/mk_invlists-remove-any.patch | 2 +- 9 files changed, 4 insertions(+), 179 deletions(-) delete mode 100644 steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in delete mode 100755 steps/perl-5.40.3/pass1.sh delete mode 100644 steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch delete mode 100644 steps/perl-5.40.3/patches/fix-debugging-re.patch delete mode 100644 steps/perl-5.40.3/patches/remove-machine-generated.patch delete mode 100644 steps/perl-5.40.3/sources diff --git a/steps/manifest b/steps/manifest index 95bd131b..7709ab1e 100644 --- a/steps/manifest +++ b/steps/manifest @@ -192,8 +192,6 @@ build: perl-5.30.3 build: perl-Devel-Tokenizer-C-0.11 build: perl-5.36.3 build: perl-Devel-Tokenizer-C-0.11 -build: perl-5.40.3 -build: perl-Devel-Tokenizer-C-0.11 build: perl-5.42.0 build: gperf-3.1 build: libunistring-0.9.10 diff --git a/steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in b/steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in deleted file mode 100644 index 22ffd510..00000000 --- a/steps/perl-5.40.3/files/Compress-Raw-Zlib_config.in +++ /dev/null @@ -1,10 +0,0 @@ -# SPDX-FileCopyrightText: 2025 fosslinux -# -# SPDX-License-Identifier: MIT - -BUILD_ZLIB = False -ZLIB_INCLUDE = /usr/include -ZLIB_LIB = /usr/lib/i386-unknown-linux-musl -OLD_ZLIB = False -GZIP_OS_CODE = AUTO_DETECT -USE_ZLIB_NG = False diff --git a/steps/perl-5.40.3/pass1.sh b/steps/perl-5.40.3/pass1.sh deleted file mode 100755 index 8d133f1b..00000000 --- a/steps/perl-5.40.3/pass1.sh +++ /dev/null @@ -1,98 +0,0 @@ -# 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 \ - dist/Devel-PPPort/parts/apidoc.fnc Configure config_h.SH \ - cpan/Win32API-File/cFile.pc cpan/Sys-Syslog/win32/Win32.pm \ - dist/ExtUtils-CBuilder/Makefile.PL \ - cpan/Test-Simple/lib/Test2/Util/HashBase.pm \ - cpan/Term-Table/lib/Term/Table/HashBase.pm \ - dist/Tie-File/Makefile.PL - rm win32/perlexe.ico - rm -r cpan/Compress-Raw-Zlib/zlib-src - - # Generated tests - rm cpan/Unicode-Collate/Collate/keys.txt - - # 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 opcode.h opnames.h pp_proto.h \ - keywords.h embed.h embedvar.h perlapi.{c,h} \ - proto.h lib/overload/numbers.pm regcharclass.h perly.{tab,h,act} \ - mg_{raw.h,vtable.h} keywords.c l1_char_class_tab.h \ - lib/feature.pm lib/B/Op_private.pm lib/unicore/uni_keywords.pl \ - miniperlmain.c unicode_constants.h uni_keywords.h \ - charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ - packsizetables.inc regexp_constants.h locale_table.h scope_types.h \ - charclass_invlists.inc - perl regen.pl - perl regen_perly.pl - perl regen/keywords.pl - perl regen/mk_PL_charclass.pl - perl regen/regcharclass.pl - perl regen/genpacksizetables.pl - perl regen/ebcdic.pl - perl regen/miniperlmain.pl - perl regen/unicode_constants.pl - perl lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p - mkdir lib_unicore - ln -s ../lib/unicore lib_unicore/ - perl -Ilib_unicore regen/mk_invlists.pl - - # regenerate configure - mconf_dir=$(echo ../metaconfig*) - ln -s "$mconf_dir"/.package . - ln -s "$mconf_dir"/U . - touch U/modified/{d_openat.U,d_vsnprintf.U,d_sched_yield.U} # null it - metaconfig -m - - # Glossary - ln -s ../perl-* "$mconf_dir"/perl - "$mconf_dir"/U/mkglossary > Porting/Glossary - - # 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=':' \ - -Dccflags="-U__DATE__ -U__TIME__" \ - -Darchname="i386-linux" \ - -Dmyhostname="(none)" \ - -Dmaildomain="(none)" -} - -src_compile() { - make "${MAKEJOBS}" pod/perlapi.pod - - pushd dist/Devel-PPPort - perl devel/mkapidoc.pl - popd - - default -} - -src_install() { - default - - # Remove messed up manpages - rm "${DESTDIR}/"*.0 -} diff --git a/steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch b/steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch deleted file mode 100644 index 7fb9ee27..00000000 --- a/steps/perl-5.40.3/patches/Devel-PPPort-remove-sprintf.patch +++ /dev/null @@ -1,21 +0,0 @@ -SPDX-FileCopyrightText: 2025 fosslinux - -SPDX-License-Identifier: Artistic-1.0 - -my_sprintf appears to be broken. -This should not be necessary, but is; is most likely linked to metaconfig -problems. - -diff --git perl-5.40.3/dist/Devel-PPPort/PPPort_pm.PL perl-5.40.3/dist/Devel-PPPort/PPPort_pm.PL -index cfbfaeb8fa..f93e56df15 100644 ---- perl-5.40.3/dist/Devel-PPPort/PPPort_pm.PL -+++ perl-5.40.3/dist/Devel-PPPort/PPPort_pm.PL -@@ -891,8 +891,6 @@ __DATA__ - - %include snprintf - --%include sprintf -- - %include exception - - %include strlfuncs diff --git a/steps/perl-5.40.3/patches/fix-debugging-re.patch b/steps/perl-5.40.3/patches/fix-debugging-re.patch deleted file mode 100644 index 98e95d24..00000000 --- a/steps/perl-5.40.3/patches/fix-debugging-re.patch +++ /dev/null @@ -1,21 +0,0 @@ -SPDX-FileCopyrightText: 2025 fosslinux - -SPDX-License-Identifier: Artistic-1.0 - -This should not be necessary, there is something weird going on here. -A number of #defines are hidden behind -DDEBUGGING that are required to build -the re extension but they are not used. Not sure why, this is a bit of a hack. - -diff --git perl-5.40.3/ext/re/Makefile.PL perl-5.40.3/ext/re/Makefile.PL -index 01786e1ec2..cc4619bfc3 100644 ---- perl-5.40.3/ext/re/Makefile.PL -+++ perl-5.40.3/ext/re/Makefile.PL -@@ -27,7 +27,7 @@ foreach my $tuple (@files) { - } - } - --my $defines = '-DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT'; -+my $defines = '-DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT -DDEBUGGING'; - my %args; - for my $arg (@ARGV) { - $args{$1} = $2 if $arg =~ /^(\w+)=(.*)$/; diff --git a/steps/perl-5.40.3/patches/remove-machine-generated.patch b/steps/perl-5.40.3/patches/remove-machine-generated.patch deleted file mode 100644 index fa63109e..00000000 --- a/steps/perl-5.40.3/patches/remove-machine-generated.patch +++ /dev/null @@ -1,23 +0,0 @@ -SPDX-FileCopyrightText: 2025 fosslinux - -SPDX-License-Identifier: Artistic-1.0 - -There is no way to regenerate this easily. It is merely a fallback for when the -previous fails and it will not fail with our perl. - -diff --color -ru perl-5.40.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm perl-5.40.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm ---- perl-5.40.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm 2025-07-23 21:56:14.121284638 +1000 -+++ perl-5.40.3/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm 2025-07-23 22:05:05.990255330 +1000 -@@ -74,13 +74,6 @@ - my $script_run_re = eval 'no warnings "experimental::script_run"; - qr/(*script_run: ^ .* $ )/x'; - my $latin_re = my_qr('[\p{IsLatin}\p{IsInherited}\p{IsCommon}]', "\x{100}"); --unless ($latin_re) { -- # This was machine generated to be the ranges of the union of the above -- # three properties, with things that were undefined by Unicode 4.1 filling -- # gaps. That is the version in use when Perl advanced enough to -- # successfully compile and execute the above pattern. -- $latin_re = my_qr('[\x00-\x{02E9}\x{02EC}-\x{0374}\x{037E}\x{0385}\x{0387}\x{0485}\x{0486}\x{0589}\x{060C}\x{061B}\x{061F}\x{0640}\x{064B}-\x{0655}\x{0670}\x{06DD}\x{0951}-\x{0954}\x{0964}\x{0965}\x{0E3F}\x{10FB}\x{16EB}-\x{16ED}\x{1735}\x{1736}\x{1802}\x{1803}\x{1805}\x{1D00}-\x{1D25}\x{1D2C}-\x{1D5C}\x{1D62}-\x{1D65}\x{1D6B}-\x{1D77}\x{1D79}-\x{1DBE}\x{1DC0}-\x{1EF9}\x{2000}-\x{2125}\x{2127}-\x{27FF}\x{2900}-\x{2B13}\x{2E00}-\x{2E1D}\x{2FF0}-\x{3004}\x{3006}\x{3008}-\x{3020}\x{302A}-\x{302D}\x{3030}-\x{3037}\x{303C}-\x{303F}\x{3099}-\x{309C}\x{30A0}\x{30FB}\x{30FC}\x{3190}-\x{319F}\x{31C0}-\x{31CF}\x{3220}-\x{325F}\x{327F}-\x{32CF}\x{3358}-\x{33FF}\x{4DC0}-\x{4DFF}\x{A700}-\x{A716}\x{FB00}-\x{FB06}\x{FD3E}\x{FD3F}\x{FE00}-\x{FE6B}\x{FEFF}-\x{FF65}\x{FF70}\x{FF9E}\x{FF9F}\x{FFE0}-\x{FFFD}\x{10100}-\x{1013F}\x{1D000}-\x{1D1DD}\x{1D300}-\x{1D7FF}]', "\x{100}"); --} - - my $every_char_is_latin_re = my_qr("^(?:$latin_re)*\\z", "A"); diff --git a/steps/perl-5.40.3/sources b/steps/perl-5.40.3/sources deleted file mode 100644 index 09051037..00000000 --- a/steps/perl-5.40.3/sources +++ /dev/null @@ -1,2 +0,0 @@ -http://www.cpan.org/src/5.0/perl-5.40.3.tar.xz 65f63b4763ab6cb9bb3d5731dd10369e1705be3c59be9847d453eb60b349ab43 -git://github.com/Perl/metaconfig~5.42.0 https://github.com/Perl/metaconfig/archive/5.42.0.tar.gz ac3948bd684a3c017a241b6fc7b899c901f814b36d030ee79887374884e30301 diff --git a/steps/perl-5.42.0/pass1.sh b/steps/perl-5.42.0/pass1.sh index 2444c823..8d133f1b 100755 --- a/steps/perl-5.42.0/pass1.sh +++ b/steps/perl-5.42.0/pass1.sh @@ -43,7 +43,9 @@ src_prepare() { perl regen/miniperlmain.pl perl regen/unicode_constants.pl perl lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p - perl -Ilib regen/mk_invlists.pl + mkdir lib_unicore + ln -s ../lib/unicore lib_unicore/ + perl -Ilib_unicore regen/mk_invlists.pl # regenerate configure mconf_dir=$(echo ../metaconfig*) diff --git a/steps/perl-5.42.0/patches/mk_invlists-remove-any.patch b/steps/perl-5.42.0/patches/mk_invlists-remove-any.patch index ebce77f2..1e7b098e 100644 --- a/steps/perl-5.42.0/patches/mk_invlists-remove-any.patch +++ b/steps/perl-5.42.0/patches/mk_invlists-remove-any.patch @@ -11,7 +11,7 @@ index 5d30ee2234..f02c07a9af 100644 @@ -1,12 +1,10 @@ #!perl -use v5.41.9; -+use v5.40.3; ++use v5.36.3; use utf8; use re "/aa"; use feature 'signatures'; From 61b294ed602bec279dee10b92f59e05965268ac2 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 8 Sep 2025 11:00:54 +1000 Subject: [PATCH 47/64] Complete parts.rst --- parts.rst | 117 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 74 insertions(+), 43 deletions(-) diff --git a/parts.rst b/parts.rst index 832efaba..08eba760 100644 --- a/parts.rst +++ b/parts.rst @@ -1051,49 +1051,6 @@ perl 5.12.5 This is the final version that can be built by perl 5.8. Again, there are new files to be regenerated. -perl 5.15.7 -=========== - -This development version of perl is the latest version that can be built by perl -5.12. Usually, we would avoid using development releases of perl. However, in -the 5.15 development cycle, the Unicode system at the core of perl was changed -somewhat to use a new script ``regen/mk_invlists.pl``, which can only be built -by a 5.15 version. So, we need to build a 5.15 version to progress. 5.15.7 is -the last version with the old Unicode system. - -perl 5.16.3 -=========== - -This is the stable version of perl corresponding to 5.15 series. The -development version is insufficient to build the following perl releases, and -is quite buggy, but is enough to at least build 5.16.3. - -perl 5.17.2, 5.17.4 -=================== - -Throughout the 5.17/18 development cycle, the new Unicode system went through a -lot of significant internal changes and restructuring. In particular, the -system was transformed to use a lot more pregenerated code, particularly -macros. There are multiple instances where a new internal symbol or macro -was introduced, and then immediately used somewhere else. These instances each -depend on one another in one way or another. All these changes mean we end -up building *two* development versions of perl to break these cycles in the -development cycle. - -perl 5.18.4 -=========== - -This is another stable version of perl. We need this version because one final -aforementioned cycle has to be broken with this version. Also, the development -versions seem to be reasonably buggy again. - -perl 5.32.1 -=========== - -We finally compile a full version of Perl using Configure. This includes all base -extensions required and is the latest version of Perl. We are now basically able -to run any Perl application we want. - libarchive 3.5.2 ================ @@ -1170,6 +1127,80 @@ This version of binutils provides a more comprehensive set of programming tools creating and managing binary programs. It also includes modern versions of the ``ld`` linker, the ``as`` assembler and the ``ar`` program. +perl 5.15.7 +=========== + +This development version of perl is the latest version that can be built by perl +5.12. Usually, we would avoid using development releases of perl. However, in +the 5.15 development cycle, the Unicode system at the core of perl was changed +somewhat to use a new script ``regen/mk_invlists.pl``, which can only be built +by a 5.15 version. So, we need to build a 5.15 version to progress. 5.15.7 is +the last version with the old Unicode system. + +perl 5.16.3 +=========== + +This is the stable version of perl corresponding to 5.15 series. The +development version is insufficient to build the following perl releases, and +is quite buggy, but is enough to at least build 5.16.3. + +perl 5.17.2, 5.17.4 +=================== + +Throughout the 5.17/18 development cycle, the new Unicode system went through a +lot of significant internal changes and restructuring. In particular, the +system was transformed to use a lot more pregenerated code, particularly +macros. There are multiple instances where a new internal symbol or macro +was introduced, and then immediately used somewhere else. These instances each +depend on one another in one way or another. All these changes mean we end +up building *two* development versions of perl to break these cycles in the +development cycle. + +perl 5.18.4 +=========== + +This is another stable version of perl. We need this version because one final +aforementioned cycle has to be broken with this version. Also, the development +versions seem to be reasonably buggy again. Many patches need to be added to +this version to allow any future perl to be built. + +perl 5.22.4 +=========== + +This is the last version that can be fairly easily built with patching perl +5.18. The next version introduces a few new complexities, so this seems a good +target. We also backport the Unicode updates from 5.24 to 5.22 to allow 5.24 +to be built with this version (see 5.24 for more information). + +perl 5.24.4 +=========== + +Up until Perl 5.30, there are a number of updates and changes to the Unicode +tables, in fact too many to reasonably backport. The better solution is to +use the raw Unicode data and table generating script from 5.30 to an earlier +version. However, it uses too many new features to be used with 5.22, so we +need an intermediate version. 5.24 seems to work. + +perl 5.30.3 +=========== + +5.30 is the last version that builds cleanly with 5.24. 5.32+ have a weird +hanging bug in one of the regen scripts when using Perl 5.24, presumably +because of a new language construct that is not yet available. + +perl 5.36.3 +=========== + +5.36 is the last version that builds cleanly with 5.30. 5.38+ introduce a +number of new language features into the mk_invlists.pl script that are not +easily removed (there have been too many changes). 5.36 has enough support +of the new features. + +perl 5.42.0 +=========== + +5.42 is the latest version of Perl! The Perl bootstrap is complete. + gperf 3.1 ========= From 9f15cc2f6c3b84034a59717571afc9801100d4f2 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 11 Sep 2025 14:09:25 +1000 Subject: [PATCH 48/64] the reordering doesn't actually work --- steps/manifest | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/steps/manifest b/steps/manifest index 7709ab1e..3a608570 100644 --- a/steps/manifest +++ b/steps/manifest @@ -161,18 +161,6 @@ build: perl-Devel-Tokenizer-C-0.11 build: perl-5.8.9 build: perl-Devel-Tokenizer-C-0.11 build: perl-5.12.5 -uninstall: perl-5.6.2 perl-5.8.9 -build: libarchive-3.5.2 -build: openssl-3.0.13 -build: ca-certificates-3.99 -build: curl-8.12.1 -build: automake-1.16.3 -build: autoconf-2.71 -build: patch-2.7.6 -build: gettext-0.21 -build: texinfo-6.7 -build: gcc-4.7.4 -build: binutils-2.41 build: perl-Devel-Tokenizer-C-0.11 build: perl-5.15.7 build: perl-Devel-Tokenizer-C-0.11 @@ -193,6 +181,18 @@ build: perl-Devel-Tokenizer-C-0.11 build: perl-5.36.3 build: perl-Devel-Tokenizer-C-0.11 build: perl-5.42.0 +uninstall: perl-5.6.2 perl-5.8.9 +build: libarchive-3.5.2 +build: openssl-3.0.13 +build: ca-certificates-3.99 +build: curl-8.12.1 +build: automake-1.16.3 +build: autoconf-2.71 +build: patch-2.7.6 +build: gettext-0.21 +build: texinfo-6.7 +build: gcc-4.7.4 +build: binutils-2.41 build: gperf-3.1 build: libunistring-0.9.10 build: libffi-3.3 From b0a2dc96ad5ed74920cc88b15c4fe07a8398a3a2 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 11 Sep 2025 14:10:24 +1000 Subject: [PATCH 49/64] Fix LIBDIR handling to be portable As per aa755b44faf7cf42725a40e45145d26ba2acc76c --- steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in | 2 +- steps/perl-5.12.5/pass1.sh | 3 ++- steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in | 2 +- steps/perl-5.15.7/pass1.sh | 3 ++- steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in | 2 +- steps/perl-5.16.3/pass1.sh | 3 ++- steps/perl-5.17.2/files/Compress-Raw-Zlib_config.in | 2 +- steps/perl-5.17.2/pass1.sh | 3 ++- steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in | 2 +- steps/perl-5.17.4/pass1.sh | 3 ++- steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in | 2 +- steps/perl-5.18.4/pass1.sh | 3 ++- steps/perl-5.22.4/files/Compress-Raw-Zlib_config.in | 2 +- steps/perl-5.22.4/pass1.sh | 3 ++- steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in | 2 +- steps/perl-5.24.4/pass1.sh | 3 ++- steps/perl-5.30.3/files/Compress-Raw-Zlib_config.in | 2 +- steps/perl-5.30.3/pass1.sh | 3 ++- steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in | 2 +- steps/perl-5.36.3/pass1.sh | 3 ++- steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in | 2 +- steps/perl-5.42.0/pass1.sh | 3 ++- 22 files changed, 33 insertions(+), 22 deletions(-) diff --git a/steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in b/steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in index cbad2f99..31902e89 100644 --- a/steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.12.5/files/Compress-Raw-Zlib_config.in @@ -4,6 +4,6 @@ BUILD_ZLIB = False INCLUDE = /usr/include -LIB = /usr/lib/i386-unknown-linux-musl +LIB = %LIBDIR% OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT diff --git a/steps/perl-5.12.5/pass1.sh b/steps/perl-5.12.5/pass1.sh index d774fec0..409e6d1a 100755 --- a/steps/perl-5.12.5/pass1.sh +++ b/steps/perl-5.12.5/pass1.sh @@ -5,7 +5,8 @@ src_prepare() { default - mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + chmod 644 cpan/Compress-Raw-Zlib/config.in + sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in # Remove miscellaneous pregenerated files rm Porting/Glossary \ diff --git a/steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in b/steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in index cbad2f99..31902e89 100644 --- a/steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.15.7/files/Compress-Raw-Zlib_config.in @@ -4,6 +4,6 @@ BUILD_ZLIB = False INCLUDE = /usr/include -LIB = /usr/lib/i386-unknown-linux-musl +LIB = %LIBDIR% OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT diff --git a/steps/perl-5.15.7/pass1.sh b/steps/perl-5.15.7/pass1.sh index 12ca2af6..d8bd5149 100755 --- a/steps/perl-5.15.7/pass1.sh +++ b/steps/perl-5.15.7/pass1.sh @@ -5,7 +5,8 @@ src_prepare() { default - mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + chmod 644 cpan/Compress-Raw-Zlib/config.in + sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in # Remove miscellaneous pregenerated files rm Porting/Glossary \ diff --git a/steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in b/steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in index cbad2f99..31902e89 100644 --- a/steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.16.3/files/Compress-Raw-Zlib_config.in @@ -4,6 +4,6 @@ BUILD_ZLIB = False INCLUDE = /usr/include -LIB = /usr/lib/i386-unknown-linux-musl +LIB = %LIBDIR% OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT diff --git a/steps/perl-5.16.3/pass1.sh b/steps/perl-5.16.3/pass1.sh index 0456a1c9..9d0475bc 100755 --- a/steps/perl-5.16.3/pass1.sh +++ b/steps/perl-5.16.3/pass1.sh @@ -5,7 +5,8 @@ src_prepare() { default - mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + chmod 644 cpan/Compress-Raw-Zlib/config.in + sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in # Remove miscellaneous pregenerated files rm Porting/Glossary \ 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 index cbad2f99..31902e89 100644 --- a/steps/perl-5.17.2/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.17.2/files/Compress-Raw-Zlib_config.in @@ -4,6 +4,6 @@ BUILD_ZLIB = False INCLUDE = /usr/include -LIB = /usr/lib/i386-unknown-linux-musl +LIB = %LIBDIR% 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 index a7c17df1..778d5d7a 100755 --- a/steps/perl-5.17.2/pass1.sh +++ b/steps/perl-5.17.2/pass1.sh @@ -5,7 +5,8 @@ src_prepare() { default - mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + chmod 644 cpan/Compress-Raw-Zlib/config.in + sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in # Socket versions greater than 2.000 have many difficult problems building # in 5.17.x versions; replace them with 2.000 diff --git a/steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in b/steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in index cbad2f99..31902e89 100644 --- a/steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.17.4/files/Compress-Raw-Zlib_config.in @@ -4,6 +4,6 @@ BUILD_ZLIB = False INCLUDE = /usr/include -LIB = /usr/lib/i386-unknown-linux-musl +LIB = %LIBDIR% OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT diff --git a/steps/perl-5.17.4/pass1.sh b/steps/perl-5.17.4/pass1.sh index 603dc703..44e3bc32 100755 --- a/steps/perl-5.17.4/pass1.sh +++ b/steps/perl-5.17.4/pass1.sh @@ -5,7 +5,8 @@ src_prepare() { default - mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + chmod 644 cpan/Compress-Raw-Zlib/config.in + sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in # Socket versions greater than 2.000 have many difficult problems building # in 5.17.x versions; replace them with 2.000 diff --git a/steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in b/steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in index cbad2f99..31902e89 100644 --- a/steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.18.4/files/Compress-Raw-Zlib_config.in @@ -4,6 +4,6 @@ BUILD_ZLIB = False INCLUDE = /usr/include -LIB = /usr/lib/i386-unknown-linux-musl +LIB = %LIBDIR% OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT diff --git a/steps/perl-5.18.4/pass1.sh b/steps/perl-5.18.4/pass1.sh index dae2a5c0..df0b19a8 100755 --- a/steps/perl-5.18.4/pass1.sh +++ b/steps/perl-5.18.4/pass1.sh @@ -5,7 +5,8 @@ src_prepare() { default - mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + chmod 644 cpan/Compress-Raw-Zlib/config.in + sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in # Remove miscellaneous pregenerated files rm Porting/Glossary \ diff --git a/steps/perl-5.22.4/files/Compress-Raw-Zlib_config.in b/steps/perl-5.22.4/files/Compress-Raw-Zlib_config.in index cbad2f99..31902e89 100644 --- a/steps/perl-5.22.4/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.22.4/files/Compress-Raw-Zlib_config.in @@ -4,6 +4,6 @@ BUILD_ZLIB = False INCLUDE = /usr/include -LIB = /usr/lib/i386-unknown-linux-musl +LIB = %LIBDIR% OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT diff --git a/steps/perl-5.22.4/pass1.sh b/steps/perl-5.22.4/pass1.sh index 69318e77..3ca73545 100755 --- a/steps/perl-5.22.4/pass1.sh +++ b/steps/perl-5.22.4/pass1.sh @@ -11,7 +11,8 @@ src_prepare() { default - mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + chmod 644 cpan/Compress-Raw-Zlib/config.in + sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in # Remove miscellaneous pregenerated files rm Porting/Glossary \ diff --git a/steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in b/steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in index cbad2f99..31902e89 100644 --- a/steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.24.4/files/Compress-Raw-Zlib_config.in @@ -4,6 +4,6 @@ BUILD_ZLIB = False INCLUDE = /usr/include -LIB = /usr/lib/i386-unknown-linux-musl +LIB = %LIBDIR% OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT diff --git a/steps/perl-5.24.4/pass1.sh b/steps/perl-5.24.4/pass1.sh index b1d82ffd..3fc35fb0 100755 --- a/steps/perl-5.24.4/pass1.sh +++ b/steps/perl-5.24.4/pass1.sh @@ -11,7 +11,8 @@ src_prepare() { default - mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + chmod 644 cpan/Compress-Raw-Zlib/config.in + sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in # Remove miscellaneous pregenerated files rm Porting/Glossary \ diff --git a/steps/perl-5.30.3/files/Compress-Raw-Zlib_config.in b/steps/perl-5.30.3/files/Compress-Raw-Zlib_config.in index cbad2f99..31902e89 100644 --- a/steps/perl-5.30.3/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.30.3/files/Compress-Raw-Zlib_config.in @@ -4,6 +4,6 @@ BUILD_ZLIB = False INCLUDE = /usr/include -LIB = /usr/lib/i386-unknown-linux-musl +LIB = %LIBDIR% OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT diff --git a/steps/perl-5.30.3/pass1.sh b/steps/perl-5.30.3/pass1.sh index abaab5c2..5b5b5eb0 100755 --- a/steps/perl-5.30.3/pass1.sh +++ b/steps/perl-5.30.3/pass1.sh @@ -5,7 +5,8 @@ src_prepare() { default - mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + chmod 644 cpan/Compress-Raw-Zlib/config.in + sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in # Remove miscellaneous pregenerated files rm Porting/Glossary \ diff --git a/steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in b/steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in index cbad2f99..31902e89 100644 --- a/steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.36.3/files/Compress-Raw-Zlib_config.in @@ -4,6 +4,6 @@ BUILD_ZLIB = False INCLUDE = /usr/include -LIB = /usr/lib/i386-unknown-linux-musl +LIB = %LIBDIR% OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT diff --git a/steps/perl-5.36.3/pass1.sh b/steps/perl-5.36.3/pass1.sh index ebf6eefa..19b3319f 100755 --- a/steps/perl-5.36.3/pass1.sh +++ b/steps/perl-5.36.3/pass1.sh @@ -5,7 +5,8 @@ src_prepare() { default - mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + chmod 644 cpan/Compress-Raw-Zlib/config.in + sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in # Remove miscellaneous pregenerated files rm -f Porting/Glossary \ diff --git a/steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in b/steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in index 22ffd510..bbfab1fe 100644 --- a/steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in +++ b/steps/perl-5.42.0/files/Compress-Raw-Zlib_config.in @@ -4,7 +4,7 @@ BUILD_ZLIB = False ZLIB_INCLUDE = /usr/include -ZLIB_LIB = /usr/lib/i386-unknown-linux-musl +ZLIB_LIB = %LIBDIR% OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT USE_ZLIB_NG = False diff --git a/steps/perl-5.42.0/pass1.sh b/steps/perl-5.42.0/pass1.sh index 8d133f1b..a87a1eac 100755 --- a/steps/perl-5.42.0/pass1.sh +++ b/steps/perl-5.42.0/pass1.sh @@ -5,7 +5,8 @@ src_prepare() { default - mv Compress-Raw-Zlib_config.in cpan/Compress-Raw-Zlib/config.in + chmod 644 cpan/Compress-Raw-Zlib/config.in + sed "s:%LIBDIR%:${LIBDIR}:" Compress-Raw-Zlib_config.in > cpan/Compress-Raw-Zlib/config.in # Remove miscellaneous pregenerated files rm -f Porting/Glossary \ From 1b276a1898cdd2da94c1b338d7241e2088c63538 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 11 Sep 2025 14:10:55 +1000 Subject: [PATCH 50/64] Fix metaconfig for 5.30 --- steps/perl-5.30.3/pass1.sh | 10 ++++++---- steps/perl-5.30.3/sources | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/steps/perl-5.30.3/pass1.sh b/steps/perl-5.30.3/pass1.sh index 5b5b5eb0..f9de8538 100755 --- a/steps/perl-5.30.3/pass1.sh +++ b/steps/perl-5.30.3/pass1.sh @@ -42,13 +42,15 @@ src_prepare() { perl lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p perl regen/mk_invlists.pl - # regenerate configure - ln -s ../metaconfig*/.package . - ln -s ../metaconfig*/U . + mconf_dir=$(echo ../metaconfig*) + ln -s "$mconf_dir"/.package . + ln -s "$mconf_dir"/U . metaconfig -m # Glossary - ../metaconfig*/U/mkglossary > Porting/Glossary + ln -s ../perl-* "$mconf_dir"/perl + "$mconf_dir"/U/mkglossary > Porting/Glossary + bash dist/Devel-PPPort/devel/mkapidoc.sh . \ dist/Devel-PPPort/parts/apidoc.fnc \ diff --git a/steps/perl-5.30.3/sources b/steps/perl-5.30.3/sources index 4e36cb8d..e9b16b0b 100644 --- a/steps/perl-5.30.3/sources +++ b/steps/perl-5.30.3/sources @@ -1,2 +1,2 @@ http://www.cpan.org/src/5.0/perl-5.30.3.tar.xz 6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 -git://github.com/Perl/metaconfig~5.26.1 https://github.com/Perl/metaconfig/archive/5.26.1.tar.gz 4641f5127a55cf2e1e8f9253ec27fba10b5b77076b4163e7f4bdc7f670d1aaf0 +git://github.com/Perl/metaconfig~5.30.3 https://github.com/Perl/metaconfig/archive/5.30.3.tar.gz 5cf99c51bbec95192e1b9b1e0d8f62d9413cabf64d0f4be0845c1fab3c4c1c9c From 626273ad2e9956caed49ef507e8094c775acfb0f Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 11 Sep 2025 14:11:10 +1000 Subject: [PATCH 51/64] Define PERL_BUILD_DATE where supported This means we don't have to do the -U__DATE__ -U__TIME__ hack in later perls. --- steps/perl-5.24.4/pass1.sh | 5 ++++- steps/perl-5.30.3/pass1.sh | 5 ++++- steps/perl-5.36.3/pass1.sh | 5 ++--- steps/perl-5.42.0/pass1.sh | 4 ++-- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/steps/perl-5.24.4/pass1.sh b/steps/perl-5.24.4/pass1.sh index 3fc35fb0..2aad1cf5 100755 --- a/steps/perl-5.24.4/pass1.sh +++ b/steps/perl-5.24.4/pass1.sh @@ -78,12 +78,15 @@ src_configure() { -Dcc=gcc \ -Dusedl=false \ -Ddate=':' \ - -Dccflags="-U__DATE__ -U__TIME__" \ -Darchname="i386-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" } +src_compile() { + PERL_BUILD_DATE="Jan 01 1970" default +} + src_install() { default diff --git a/steps/perl-5.30.3/pass1.sh b/steps/perl-5.30.3/pass1.sh index f9de8538..a2f3b1e8 100755 --- a/steps/perl-5.30.3/pass1.sh +++ b/steps/perl-5.30.3/pass1.sh @@ -72,12 +72,15 @@ src_configure() { -Dcc=gcc \ -Dusedl=false \ -Ddate=':' \ - -Dccflags="-U__DATE__ -U__TIME__" \ -Darchname="i386-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" } +src_compile() { + PERL_BUILD_DATE="Jan 01 1970" default +} + src_install() { default diff --git a/steps/perl-5.36.3/pass1.sh b/steps/perl-5.36.3/pass1.sh index 19b3319f..15ab2ed5 100755 --- a/steps/perl-5.36.3/pass1.sh +++ b/steps/perl-5.36.3/pass1.sh @@ -73,20 +73,19 @@ src_configure() { -Dcc=gcc \ -Dusedl=false \ -Ddate=':' \ - -Dccflags="-U__DATE__ -U__TIME__" \ -Darchname="i386-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" } src_compile() { - make "${MAKEJOBS}" pod/perlapi.pod + PERL_BUILD_DATE="Jan 01 1970" make "${MAKEJOBS}" pod/perlapi.pod pushd dist/Devel-PPPort perl devel/mkapidoc.pl popd - default + PERL_BUILD_DATE="Jan 01 1970" default } src_install() { diff --git a/steps/perl-5.42.0/pass1.sh b/steps/perl-5.42.0/pass1.sh index a87a1eac..7c387c97 100755 --- a/steps/perl-5.42.0/pass1.sh +++ b/steps/perl-5.42.0/pass1.sh @@ -82,13 +82,13 @@ src_configure() { } src_compile() { - make "${MAKEJOBS}" pod/perlapi.pod + PERL_BUILD_DATE="Jan 01 1970" make "${MAKEJOBS}" pod/perlapi.pod pushd dist/Devel-PPPort perl devel/mkapidoc.pl popd - default + PERL_BUILD_DATE="Jan 01 1970" default } src_install() { From 9ed20b484b015fef53df0532768fcfa96ab17ee7 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 11 Sep 2025 21:02:02 +1000 Subject: [PATCH 52/64] Make Devel-PPPort regenerations reproducible --- ...ned-from-all_files_in_dir-for-consis.patch | 27 +++++++++++++++++++ ...ned-from-all_files_in_dir-for-consis.patch | 27 +++++++++++++++++++ ...ned-from-all_files_in_dir-for-consis.patch | 27 +++++++++++++++++++ ...ned-from-all_files_in_dir-for-consis.patch | 27 +++++++++++++++++++ ...ned-from-all_files_in_dir-for-consis.patch | 27 +++++++++++++++++++ ...ned-from-all_files_in_dir-for-consis.patch | 27 +++++++++++++++++++ ...ned-from-all_files_in_dir-for-consis.patch | 27 +++++++++++++++++++ ...ned-from-all_files_in_dir-for-consis.patch | 27 +++++++++++++++++++ ...ned-from-all_files_in_dir-for-consis.patch | 27 +++++++++++++++++++ 9 files changed, 243 insertions(+) create mode 100644 steps/perl-5.12.5/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch create mode 100644 steps/perl-5.15.7/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch create mode 100644 steps/perl-5.16.3/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch create mode 100644 steps/perl-5.17.2/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch create mode 100644 steps/perl-5.17.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch create mode 100644 steps/perl-5.18.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch create mode 100644 steps/perl-5.22.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch create mode 100644 steps/perl-5.24.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch create mode 100644 steps/perl-5.8.9/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch diff --git a/steps/perl-5.12.5/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.12.5/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch new file mode 100644 index 00000000..59f2ce39 --- /dev/null +++ b/steps/perl-5.12.5/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -0,0 +1,27 @@ +From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 +From: "Matthew Horsfall (alh)" +Date: Fri, 18 Mar 2016 09:34:36 -0400 +Subject: [PATCH] Sort files returned from all_files_in_dir for consistent + builds. + +This addresses #28 / https://bugs.debian.org/801523 +--- + parts/ppptools.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git perl-5.12.5/cpan/Devel-PPPort/parts/ppptools.pl perl-5.12.5/cpan/Devel-PPPort/parts/ppptools.pl +index 6ea7516..62e5339 100644 +--- perl-5.12.5/cpan/Devel-PPPort/parts/ppptools.pl ++++ perl-5.12.5/cpan/Devel-PPPort/parts/ppptools.pl +@@ -28,7 +28,7 @@ sub all_files_in_dir + my @files = grep { !-d && !/^\./ } readdir DIR; # no dirs or hidden files + closedir DIR; + +- return map { cat_file($dir, $_) } @files; ++ return map { cat_file($dir, $_) } sort @files; + } + + sub parse_todo +-- +2.49.1 + diff --git a/steps/perl-5.15.7/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.15.7/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch new file mode 100644 index 00000000..4b8b6aab --- /dev/null +++ b/steps/perl-5.15.7/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -0,0 +1,27 @@ +From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 +From: "Matthew Horsfall (alh)" +Date: Fri, 18 Mar 2016 09:34:36 -0400 +Subject: [PATCH] Sort files returned from all_files_in_dir for consistent + builds. + +This addresses #28 / https://bugs.debian.org/801523 +--- + parts/ppptools.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git perl-5.15.7/cpan/Devel-PPPort/parts/ppptools.pl perl-5.15.7/cpan/Devel-PPPort/parts/ppptools.pl +index 6ea7516..62e5339 100644 +--- perl-5.15.7/cpan/Devel-PPPort/parts/ppptools.pl ++++ perl-5.15.7/cpan/Devel-PPPort/parts/ppptools.pl +@@ -28,7 +28,7 @@ sub all_files_in_dir + my @files = grep { !-d && !/^\./ } readdir DIR; # no dirs or hidden files + closedir DIR; + +- return map { cat_file($dir, $_) } @files; ++ return map { cat_file($dir, $_) } sort @files; + } + + sub parse_todo +-- +2.49.1 + diff --git a/steps/perl-5.16.3/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.16.3/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch new file mode 100644 index 00000000..6fa5cc8c --- /dev/null +++ b/steps/perl-5.16.3/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -0,0 +1,27 @@ +From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 +From: "Matthew Horsfall (alh)" +Date: Fri, 18 Mar 2016 09:34:36 -0400 +Subject: [PATCH] Sort files returned from all_files_in_dir for consistent + builds. + +This addresses #28 / https://bugs.debian.org/801523 +--- + parts/ppptools.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git perl-5.16.3/cpan/Devel-PPPort/parts/ppptools.pl perl-5.16.3/cpan/Devel-PPPort/parts/ppptools.pl +index 6ea7516..62e5339 100644 +--- perl-5.16.3/cpan/Devel-PPPort/parts/ppptools.pl ++++ perl-5.16.3/cpan/Devel-PPPort/parts/ppptools.pl +@@ -28,7 +28,7 @@ sub all_files_in_dir + my @files = grep { !-d && !/^\./ } readdir DIR; # no dirs or hidden files + closedir DIR; + +- return map { cat_file($dir, $_) } @files; ++ return map { cat_file($dir, $_) } sort @files; + } + + sub parse_todo +-- +2.49.1 + diff --git a/steps/perl-5.17.2/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.17.2/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch new file mode 100644 index 00000000..70d82d77 --- /dev/null +++ b/steps/perl-5.17.2/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -0,0 +1,27 @@ +From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 +From: "Matthew Horsfall (alh)" +Date: Fri, 18 Mar 2016 09:34:36 -0400 +Subject: [PATCH] Sort files returned from all_files_in_dir for consistent + builds. + +This addresses #28 / https://bugs.debian.org/801523 +--- + parts/ppptools.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git perl-5.17.2/cpan/Devel-PPPort/parts/ppptools.pl perl-5.17.2/cpan/Devel-PPPort/parts/ppptools.pl +index 6ea7516..62e5339 100644 +--- perl-5.17.2/cpan/Devel-PPPort/parts/ppptools.pl ++++ perl-5.17.2/cpan/Devel-PPPort/parts/ppptools.pl +@@ -28,7 +28,7 @@ sub all_files_in_dir + my @files = grep { !-d && !/^\./ } readdir DIR; # no dirs or hidden files + closedir DIR; + +- return map { cat_file($dir, $_) } @files; ++ return map { cat_file($dir, $_) } sort @files; + } + + sub parse_todo +-- +2.49.1 + diff --git a/steps/perl-5.17.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.17.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch new file mode 100644 index 00000000..46861c7a --- /dev/null +++ b/steps/perl-5.17.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -0,0 +1,27 @@ +From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 +From: "Matthew Horsfall (alh)" +Date: Fri, 18 Mar 2016 09:34:36 -0400 +Subject: [PATCH] Sort files returned from all_files_in_dir for consistent + builds. + +This addresses #28 / https://bugs.debian.org/801523 +--- + parts/ppptools.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git perl-5.17.4/cpan/Devel-PPPort/parts/ppptools.pl perl-5.17.4/cpan/Devel-PPPort/parts/ppptools.pl +index 6ea7516..62e5339 100644 +--- perl-5.17.4/cpan/Devel-PPPort/parts/ppptools.pl ++++ perl-5.17.4/cpan/Devel-PPPort/parts/ppptools.pl +@@ -28,7 +28,7 @@ sub all_files_in_dir + my @files = grep { !-d && !/^\./ } readdir DIR; # no dirs or hidden files + closedir DIR; + +- return map { cat_file($dir, $_) } @files; ++ return map { cat_file($dir, $_) } sort @files; + } + + sub parse_todo +-- +2.49.1 + diff --git a/steps/perl-5.18.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.18.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch new file mode 100644 index 00000000..7d00ba44 --- /dev/null +++ b/steps/perl-5.18.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -0,0 +1,27 @@ +From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 +From: "Matthew Horsfall (alh)" +Date: Fri, 18 Mar 2016 09:34:36 -0400 +Subject: [PATCH] Sort files returned from all_files_in_dir for consistent + builds. + +This addresses #28 / https://bugs.debian.org/801523 +--- + parts/ppptools.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git perl-5.18.4/cpan/Devel-PPPort/parts/ppptools.pl perl-5.18.4/cpan/Devel-PPPort/parts/ppptools.pl +index 6ea7516..62e5339 100644 +--- perl-5.18.4/cpan/Devel-PPPort/parts/ppptools.pl ++++ perl-5.18.4/cpan/Devel-PPPort/parts/ppptools.pl +@@ -28,7 +28,7 @@ sub all_files_in_dir + my @files = grep { !-d && !/^\./ } readdir DIR; # no dirs or hidden files + closedir DIR; + +- return map { cat_file($dir, $_) } @files; ++ return map { cat_file($dir, $_) } sort @files; + } + + sub parse_todo +-- +2.49.1 + diff --git a/steps/perl-5.22.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.22.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch new file mode 100644 index 00000000..2518be8a --- /dev/null +++ b/steps/perl-5.22.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -0,0 +1,27 @@ +From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 +From: "Matthew Horsfall (alh)" +Date: Fri, 18 Mar 2016 09:34:36 -0400 +Subject: [PATCH] Sort files returned from all_files_in_dir for consistent + builds. + +This addresses #28 / https://bugs.debian.org/801523 +--- + parts/ppptools.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git perl-5.22.4/cpan/Devel-PPPort/parts/ppptools.pl perl-5.22.4/cpan/Devel-PPPort/parts/ppptools.pl +index 6ea7516..62e5339 100644 +--- perl-5.22.4/cpan/Devel-PPPort/parts/ppptools.pl ++++ perl-5.22.4/cpan/Devel-PPPort/parts/ppptools.pl +@@ -28,7 +28,7 @@ sub all_files_in_dir + my @files = grep { !-d && !/^\./ } readdir DIR; # no dirs or hidden files + closedir DIR; + +- return map { cat_file($dir, $_) } @files; ++ return map { cat_file($dir, $_) } sort @files; + } + + sub parse_todo +-- +2.49.1 + diff --git a/steps/perl-5.24.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.24.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch new file mode 100644 index 00000000..f5da7fe5 --- /dev/null +++ b/steps/perl-5.24.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -0,0 +1,27 @@ +From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 +From: "Matthew Horsfall (alh)" +Date: Fri, 18 Mar 2016 09:34:36 -0400 +Subject: [PATCH] Sort files returned from all_files_in_dir for consistent + builds. + +This addresses #28 / https://bugs.debian.org/801523 +--- + parts/ppptools.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git perl-5.24.4/cpan/Devel-PPPort/parts/ppptools.pl perl-5.24.4/cpan/Devel-PPPort/parts/ppptools.pl +index 6ea7516..62e5339 100644 +--- perl-5.24.4/cpan/Devel-PPPort/parts/ppptools.pl ++++ perl-5.24.4/cpan/Devel-PPPort/parts/ppptools.pl +@@ -28,7 +28,7 @@ sub all_files_in_dir + my @files = grep { !-d && !/^\./ } readdir DIR; # no dirs or hidden files + closedir DIR; + +- return map { cat_file($dir, $_) } @files; ++ return map { cat_file($dir, $_) } sort @files; + } + + sub parse_todo +-- +2.49.1 + diff --git a/steps/perl-5.8.9/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.8.9/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch new file mode 100644 index 00000000..d1a1b55a --- /dev/null +++ b/steps/perl-5.8.9/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -0,0 +1,27 @@ +From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 +From: "Matthew Horsfall (alh)" +Date: Fri, 18 Mar 2016 09:34:36 -0400 +Subject: [PATCH] Sort files returned from all_files_in_dir for consistent + builds. + +This addresses #28 / https://bugs.debian.org/801523 +--- + parts/ppptools.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git perl-5.8.9/ext/Devel/PPPort/parts/ppptools.pl perl-5.8.9/ext/Devel/PPPort/parts/ppptools.pl +index 6ea7516..62e5339 100644 +--- perl-5.8.9/ext/Devel/PPPort/parts/ppptools.pl ++++ perl-5.8.9/ext/Devel/PPPort/parts/ppptools.pl +@@ -28,7 +28,7 @@ sub all_files_in_dir + my @files = grep { !-d && !/^\./ } readdir DIR; # no dirs or hidden files + closedir DIR; + +- return map { cat_file($dir, $_) } @files; ++ return map { cat_file($dir, $_) } sort @files; + } + + sub parse_todo +-- +2.49.1 + From d25949b8a5a405938e73230e5597b3ac996f6a38 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sat, 13 Sep 2025 17:53:10 +1000 Subject: [PATCH 53/64] Fix preseeding with >9 revisions --- steps/helpers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/steps/helpers.sh b/steps/helpers.sh index e2c0cb9f..2aa68da6 100755 --- a/steps/helpers.sh +++ b/steps/helpers.sh @@ -529,7 +529,7 @@ src_checksum() { if ! [ "$UPDATE_CHECKSUMS" = True ] ; then # We avoid using pipes as that is not supported by initial sha256sum from mescc-tools-extra local checksum_file=/tmp/checksum - _grep "${pkg}_${revision}" "${SRCDIR}/SHA256SUMS.pkgs" > "${checksum_file}" || true + _grep "${pkg}_${revision}.tar.bz2" "${SRCDIR}/SHA256SUMS.pkgs" > "${checksum_file}" || true # Check there is something in checksum_file if ! [ -s "${checksum_file}" ]; then echo "${pkg}: no checksum stored!" From 4322a200f515aaddab49b27a7204d7db49abad1a Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sat, 13 Sep 2025 22:02:40 +1000 Subject: [PATCH 54/64] Make mktables reproducible Had a datetime embedded in it --- .../patches/reproducible-mktables.patch | 19 +++++++++++++++++++ .../patches/reproducible-mktables.patch | 19 +++++++++++++++++++ .../patches/reproducible-mktables.patch | 19 +++++++++++++++++++ .../patches/reproducible-mktables.patch | 19 +++++++++++++++++++ .../patches/reproducible-mktables.patch | 19 +++++++++++++++++++ .../patches/reproducible-mktables.patch | 19 +++++++++++++++++++ .../patches/reproducible-mktables.patch | 19 +++++++++++++++++++ .../patches/reproducible-mktables.patch | 19 +++++++++++++++++++ .../patches/reproducible-mktables.patch | 19 +++++++++++++++++++ .../patches/reproducible-mktables.patch | 19 +++++++++++++++++++ .../patches/reproducible-mktables.patch | 19 +++++++++++++++++++ 11 files changed, 209 insertions(+) create mode 100644 steps/perl-5.12.5/patches/reproducible-mktables.patch create mode 100644 steps/perl-5.15.7/patches/reproducible-mktables.patch create mode 100644 steps/perl-5.16.3/patches/reproducible-mktables.patch create mode 100644 steps/perl-5.17.2/patches/reproducible-mktables.patch create mode 100644 steps/perl-5.17.4/patches/reproducible-mktables.patch create mode 100644 steps/perl-5.18.4/patches/reproducible-mktables.patch create mode 100644 steps/perl-5.22.4/patches/reproducible-mktables.patch create mode 100644 steps/perl-5.24.4/patches/reproducible-mktables.patch create mode 100644 steps/perl-5.30.3/patches/reproducible-mktables.patch create mode 100644 steps/perl-5.36.3/patches/reproducible-mktables.patch create mode 100644 steps/perl-5.42.0/patches/reproducible-mktables.patch diff --git a/steps/perl-5.12.5/patches/reproducible-mktables.patch b/steps/perl-5.12.5/patches/reproducible-mktables.patch new file mode 100644 index 00000000..569ab8a2 --- /dev/null +++ b/steps/perl-5.12.5/patches/reproducible-mktables.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +mktables embeds a timestamp + +diff --git perl-5.12.5/lib/unicore/mktables perl-5.12.5/lib/unicore/mktables +index 73ca9707e1..d019b472fd 100644 +--- perl-5.12.5/lib/unicore/mktables ++++ perl-5.12.5/lib/unicore/mktables +@@ -13971,7 +13971,7 @@ if ( $file_list and $make_list ) { + # + # $file_list -- File list for $0. + # +-# Autogenerated on @{[scalar localtime]} ++# Autogenerated + # + # - First section is input files + # ($0 itself is not listed but is automatically considered an input) diff --git a/steps/perl-5.15.7/patches/reproducible-mktables.patch b/steps/perl-5.15.7/patches/reproducible-mktables.patch new file mode 100644 index 00000000..5ce7fcc0 --- /dev/null +++ b/steps/perl-5.15.7/patches/reproducible-mktables.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +mktables embeds a timestamp + +diff --git perl-5.15.7/lib/unicore/mktables perl-5.15.7/lib/unicore/mktables +index 0f8268626c..a1b52d45c0 100644 +--- perl-5.15.7/lib/unicore/mktables ++++ perl-5.15.7/lib/unicore/mktables +@@ -16167,7 +16167,7 @@ if ( $file_list and $make_list ) { + # + # $file_list -- File list for $0. + # +-# Autogenerated starting on $start_time ($localtime) ++# Autogenerated + # + # - First section is input files + # ($0 itself is not listed but is automatically considered an input) diff --git a/steps/perl-5.16.3/patches/reproducible-mktables.patch b/steps/perl-5.16.3/patches/reproducible-mktables.patch new file mode 100644 index 00000000..d8c78254 --- /dev/null +++ b/steps/perl-5.16.3/patches/reproducible-mktables.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +mktables embeds a timestamp + +diff --git perl-5.16.3/lib/unicore/mktables perl-5.16.3/lib/unicore/mktables +index 0f8268626c..a1b52d45c0 100644 +--- perl-5.16.3/lib/unicore/mktables ++++ perl-5.16.3/lib/unicore/mktables +@@ -16167,7 +16167,7 @@ if ( $file_list and $make_list ) { + # + # $file_list -- File list for $0. + # +-# Autogenerated starting on $start_time ($localtime) ++# Autogenerated + # + # - First section is input files + # ($0 itself is not listed but is automatically considered an input) diff --git a/steps/perl-5.17.2/patches/reproducible-mktables.patch b/steps/perl-5.17.2/patches/reproducible-mktables.patch new file mode 100644 index 00000000..4ae606b5 --- /dev/null +++ b/steps/perl-5.17.2/patches/reproducible-mktables.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +mktables embeds a timestamp + +diff --git perl-5.17.2/lib/unicore/mktables perl-5.17.2/lib/unicore/mktables +index 0f8268626c..a1b52d45c0 100644 +--- perl-5.17.2/lib/unicore/mktables ++++ perl-5.17.2/lib/unicore/mktables +@@ -16167,7 +16167,7 @@ if ( $file_list and $make_list ) { + # + # $file_list -- File list for $0. + # +-# Autogenerated starting on $start_time ($localtime) ++# Autogenerated + # + # - First section is input files + # ($0 itself is not listed but is automatically considered an input) diff --git a/steps/perl-5.17.4/patches/reproducible-mktables.patch b/steps/perl-5.17.4/patches/reproducible-mktables.patch new file mode 100644 index 00000000..375f708f --- /dev/null +++ b/steps/perl-5.17.4/patches/reproducible-mktables.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +mktables embeds a timestamp + +diff --git perl-5.17.4/lib/unicore/mktables perl-5.17.4/lib/unicore/mktables +index 0f8268626c..a1b52d45c0 100644 +--- perl-5.17.4/lib/unicore/mktables ++++ perl-5.17.4/lib/unicore/mktables +@@ -16167,7 +16167,7 @@ if ( $file_list and $make_list ) { + # + # $file_list -- File list for $0. + # +-# Autogenerated starting on $start_time ($localtime) ++# Autogenerated + # + # - First section is input files + # ($0 itself is not listed but is automatically considered an input) diff --git a/steps/perl-5.18.4/patches/reproducible-mktables.patch b/steps/perl-5.18.4/patches/reproducible-mktables.patch new file mode 100644 index 00000000..ff2c04f8 --- /dev/null +++ b/steps/perl-5.18.4/patches/reproducible-mktables.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +mktables embeds a timestamp + +diff --git perl-5.18.4/lib/unicore/mktables perl-5.18.4/lib/unicore/mktables +index 0f8268626c..a1b52d45c0 100644 +--- perl-5.18.4/lib/unicore/mktables ++++ perl-5.18.4/lib/unicore/mktables +@@ -16167,7 +16167,7 @@ if ( $file_list and $make_list ) { + # + # $file_list -- File list for $0. + # +-# Autogenerated starting on $start_time ($localtime) ++# Autogenerated + # + # - First section is input files + # ($0 itself is not listed but is automatically considered an input) diff --git a/steps/perl-5.22.4/patches/reproducible-mktables.patch b/steps/perl-5.22.4/patches/reproducible-mktables.patch new file mode 100644 index 00000000..1132cde7 --- /dev/null +++ b/steps/perl-5.22.4/patches/reproducible-mktables.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +mktables embeds a timestamp + +diff --git perl-5.22.4/lib/unicore/mktables perl-5.22.4/lib/unicore/mktables +index a746b77d41..9c4e0d1c43 100644 +--- perl-5.22.4/lib/unicore/mktables ++++ perl-5.22.4/lib/unicore/mktables +@@ -18480,7 +18480,7 @@ if ( $file_list and $make_list ) { + # + # $file_list -- File list for $0. + # +-# Autogenerated starting on $start_time ($localtime) ++# Autogenerated + # From options $command_line_arguments + # + # - First section is input files diff --git a/steps/perl-5.24.4/patches/reproducible-mktables.patch b/steps/perl-5.24.4/patches/reproducible-mktables.patch new file mode 100644 index 00000000..cdfd6efa --- /dev/null +++ b/steps/perl-5.24.4/patches/reproducible-mktables.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +mktables embeds a timestamp + +diff --git perl-5.24.4/lib/unicore/mktables perl-5.24.4/lib/unicore/mktables +index a746b77d41..9c4e0d1c43 100644 +--- perl-5.24.4/lib/unicore/mktables ++++ perl-5.24.4/lib/unicore/mktables +@@ -18480,7 +18480,7 @@ if ( $file_list and $make_list ) { + # + # $file_list -- File list for $0. + # +-# Autogenerated starting on $start_time ($localtime) ++# Autogenerated + # From options $command_line_arguments + # + # - First section is input files diff --git a/steps/perl-5.30.3/patches/reproducible-mktables.patch b/steps/perl-5.30.3/patches/reproducible-mktables.patch new file mode 100644 index 00000000..4e913b1a --- /dev/null +++ b/steps/perl-5.30.3/patches/reproducible-mktables.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +mktables embeds a timestamp + +diff --git perl-5.30.3/lib/unicore/mktables perl-5.30.3/lib/unicore/mktables +index a746b77d41..9c4e0d1c43 100644 +--- perl-5.30.3/lib/unicore/mktables ++++ perl-5.30.3/lib/unicore/mktables +@@ -18480,7 +18480,7 @@ if ( $file_list and $make_list ) { + # + # $file_list -- File list for $0. + # +-# Autogenerated starting on $start_time ($localtime) ++# Autogenerated + # From options $command_line_arguments + # + # - First section is input files diff --git a/steps/perl-5.36.3/patches/reproducible-mktables.patch b/steps/perl-5.36.3/patches/reproducible-mktables.patch new file mode 100644 index 00000000..ca8ec0c9 --- /dev/null +++ b/steps/perl-5.36.3/patches/reproducible-mktables.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +mktables embeds a timestamp + +diff --git perl-5.36.3/lib/unicore/mktables perl-5.36.3/lib/unicore/mktables +index a746b77d41..9c4e0d1c43 100644 +--- perl-5.36.3/lib/unicore/mktables ++++ perl-5.36.3/lib/unicore/mktables +@@ -18480,7 +18480,7 @@ if ( $file_list and $make_list ) { + # + # $file_list -- File list for $0. + # +-# Autogenerated starting on $start_time ($localtime) ++# Autogenerated + # From options $command_line_arguments + # + # - First section is input files diff --git a/steps/perl-5.42.0/patches/reproducible-mktables.patch b/steps/perl-5.42.0/patches/reproducible-mktables.patch new file mode 100644 index 00000000..271837fb --- /dev/null +++ b/steps/perl-5.42.0/patches/reproducible-mktables.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +mktables embeds a timestamp + +diff --git perl-5.42.0/lib/unicore/mktables perl-5.42.0/lib/unicore/mktables +index a746b77d41..9c4e0d1c43 100644 +--- perl-5.42.0/lib/unicore/mktables ++++ perl-5.42.0/lib/unicore/mktables +@@ -18480,7 +18480,7 @@ if ( $file_list and $make_list ) { + # + # $file_list -- File list for $0. + # +-# Autogenerated starting on $start_time ($localtime) ++# Autogenerated + # From options $command_line_arguments + # + # - First section is input files From e4980c20e8b55c5d52d1c99b3872bde8757c7803 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 14 Sep 2025 14:03:24 +1000 Subject: [PATCH 55/64] Make PPPort.pm reproducible in Perl 5.18+ --- .../patches/PPPort-pm-reproducible.patch | 19 +++++++++++++++++++ .../patches/PPPort-pm-reproducible.patch | 19 +++++++++++++++++++ .../patches/PPPort-pm-reproducible.patch | 19 +++++++++++++++++++ .../patches/PPPort-pm-reproducible.patch | 19 +++++++++++++++++++ .../patches/PPPort-pm-reproducible.patch | 19 +++++++++++++++++++ .../patches/PPPort-pm-reproducible.patch | 19 +++++++++++++++++++ 6 files changed, 114 insertions(+) create mode 100644 steps/perl-5.18.4/patches/PPPort-pm-reproducible.patch create mode 100644 steps/perl-5.22.4/patches/PPPort-pm-reproducible.patch create mode 100644 steps/perl-5.24.4/patches/PPPort-pm-reproducible.patch create mode 100644 steps/perl-5.30.3/patches/PPPort-pm-reproducible.patch create mode 100644 steps/perl-5.36.3/patches/PPPort-pm-reproducible.patch create mode 100644 steps/perl-5.42.0/patches/PPPort-pm-reproducible.patch diff --git a/steps/perl-5.18.4/patches/PPPort-pm-reproducible.patch b/steps/perl-5.18.4/patches/PPPort-pm-reproducible.patch new file mode 100644 index 00000000..d2a634d5 --- /dev/null +++ b/steps/perl-5.18.4/patches/PPPort-pm-reproducible.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Sort the list of types in @api to make PPPort.pm reproducible. + +diff --git perl-5.18.4/cpan/Devel-PPPort/PPPort_pm.PL perl-5.18.4/cpan/Devel-PPPort/PPPort_pm.PL +index e1118caf66..009beeb594 100644 +--- perl-5.18.4/cpan/Devel-PPPort/PPPort_pm.PL ++++ perl-5.18.4/cpan/Devel-PPPort/PPPort_pm.PL +@@ -40,7 +40,7 @@ $data = expand($data); + my @api = sort { lc $a cmp lc $b } keys %provides; + + $data =~ s{^(.*)__PROVIDED_API__(\s*?)^} +- {join '', map "$1$_\n", @api}gem; ++ {join '', map "$1$_\n", sort @api}gem; + + { + my $len = 0; diff --git a/steps/perl-5.22.4/patches/PPPort-pm-reproducible.patch b/steps/perl-5.22.4/patches/PPPort-pm-reproducible.patch new file mode 100644 index 00000000..76ad72de --- /dev/null +++ b/steps/perl-5.22.4/patches/PPPort-pm-reproducible.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Sort the list of types in @api to make PPPort.pm reproducible. + +diff --git perl-5.22.4/cpan/Devel-PPPort/PPPort_pm.PL perl-5.22.4/cpan/Devel-PPPort/PPPort_pm.PL +index e1118caf66..009beeb594 100644 +--- perl-5.22.4/cpan/Devel-PPPort/PPPort_pm.PL ++++ perl-5.22.4/cpan/Devel-PPPort/PPPort_pm.PL +@@ -40,7 +40,7 @@ $data = expand($data); + my @api = sort { lc $a cmp lc $b } keys %provides; + + $data =~ s{^(.*)__PROVIDED_API__(\s*?)^} +- {join '', map "$1$_\n", @api}gem; ++ {join '', map "$1$_\n", sort @api}gem; + + { + my $len = 0; diff --git a/steps/perl-5.24.4/patches/PPPort-pm-reproducible.patch b/steps/perl-5.24.4/patches/PPPort-pm-reproducible.patch new file mode 100644 index 00000000..2ab396f5 --- /dev/null +++ b/steps/perl-5.24.4/patches/PPPort-pm-reproducible.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Sort the list of types in @api to make PPPort.pm reproducible. + +diff --git perl-5.24.4/cpan/Devel-PPPort/PPPort_pm.PL perl-5.24.4/cpan/Devel-PPPort/PPPort_pm.PL +index e1118caf66..009beeb594 100644 +--- perl-5.24.4/cpan/Devel-PPPort/PPPort_pm.PL ++++ perl-5.24.4/cpan/Devel-PPPort/PPPort_pm.PL +@@ -40,7 +40,7 @@ $data = expand($data); + my @api = sort { lc $a cmp lc $b } keys %provides; + + $data =~ s{^(.*)__PROVIDED_API__(\s*?)^} +- {join '', map "$1$_\n", @api}gem; ++ {join '', map "$1$_\n", sort @api}gem; + + { + my $len = 0; diff --git a/steps/perl-5.30.3/patches/PPPort-pm-reproducible.patch b/steps/perl-5.30.3/patches/PPPort-pm-reproducible.patch new file mode 100644 index 00000000..72623251 --- /dev/null +++ b/steps/perl-5.30.3/patches/PPPort-pm-reproducible.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Sort the list of types in @api to make PPPort.pm reproducible. + +diff --git perl-5.30.3/dist/Devel-PPPort/PPPort_pm.PL perl-5.30.3/dist/Devel-PPPort/PPPort_pm.PL +index e1118caf66..009beeb594 100644 +--- perl-5.30.3/dist/Devel-PPPort/PPPort_pm.PL ++++ perl-5.30.3/dist/Devel-PPPort/PPPort_pm.PL +@@ -40,7 +40,7 @@ $data = expand($data); + my @api = sort { lc $a cmp lc $b } keys %provides; + + $data =~ s{^(.*)__PROVIDED_API__(\s*?)^} +- {join '', map "$1$_\n", @api}gem; ++ {join '', map "$1$_\n", sort @api}gem; + + { + my $len = 0; diff --git a/steps/perl-5.36.3/patches/PPPort-pm-reproducible.patch b/steps/perl-5.36.3/patches/PPPort-pm-reproducible.patch new file mode 100644 index 00000000..d1db0273 --- /dev/null +++ b/steps/perl-5.36.3/patches/PPPort-pm-reproducible.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Sort the list of types in @provided to make PPPort.pm reproducible. + +diff --git perl-5.36.3/dist/Devel-PPPort/PPPort_pm.PL perl-5.36.3/dist/Devel-PPPort/PPPort_pm.PL +index cfbfaeb8fa..88c4bcc13c 100644 +--- perl-5.36.3/dist/Devel-PPPort/PPPort_pm.PL ++++ perl-5.36.3/dist/Devel-PPPort/PPPort_pm.PL +@@ -53,7 +53,7 @@ my @provided = sort dictionary_order keys %provides; + + # which further expands $data. + $data =~ s{^(.*)__PROVIDED_API__(\s*?)^} +- {join '', map "$1$_\n", @provided}gem; ++ {join '', map "$1$_\n", sort @provided}gem; + + { + my $len = 0; diff --git a/steps/perl-5.42.0/patches/PPPort-pm-reproducible.patch b/steps/perl-5.42.0/patches/PPPort-pm-reproducible.patch new file mode 100644 index 00000000..78d5c5cb --- /dev/null +++ b/steps/perl-5.42.0/patches/PPPort-pm-reproducible.patch @@ -0,0 +1,19 @@ +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Sort the list of types in @provided to make PPPort.pm reproducible. + +diff --git perl-5.42.0/dist/Devel-PPPort/PPPort_pm.PL perl-5.42.0/dist/Devel-PPPort/PPPort_pm.PL +index cfbfaeb8fa..88c4bcc13c 100644 +--- perl-5.42.0/dist/Devel-PPPort/PPPort_pm.PL ++++ perl-5.42.0/dist/Devel-PPPort/PPPort_pm.PL +@@ -53,7 +53,7 @@ my @provided = sort dictionary_order keys %provides; + + # which further expands $data. + $data =~ s{^(.*)__PROVIDED_API__(\s*?)^} +- {join '', map "$1$_\n", @provided}gem; ++ {join '', map "$1$_\n", sort @provided}gem; + + { + my $len = 0; From 7bc5ec4555f8cffb5ea6419d4adef07b2fc7bea3 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Sun, 14 Sep 2025 14:10:30 +1000 Subject: [PATCH 56/64] Make Perl 5.18 reproducible All of these only apply to Perl 5.18 and future perls are okay. This commit backports - a patch to make the include order of files in Encode package reproducible - a patch to make Errno and Pod pm files reproducible - a patch to make the ordering of .a files deterministic using ParseXS --- .../Encode-reproducible-includes.patch | 231 ++++++++++++++++++ ...nd-Pod-Functions-with-deterministic-.patch | 70 ++++++ .../patches/ParseXS-reproducible.patch | 47 ++++ 3 files changed, 348 insertions(+) create mode 100644 steps/perl-5.18.4/patches/Encode-reproducible-includes.patch create mode 100644 steps/perl-5.18.4/patches/Generate-Errno-and-Pod-Functions-with-deterministic-.patch create mode 100644 steps/perl-5.18.4/patches/ParseXS-reproducible.patch diff --git a/steps/perl-5.18.4/patches/Encode-reproducible-includes.patch b/steps/perl-5.18.4/patches/Encode-reproducible-includes.patch new file mode 100644 index 00000000..54d78493 --- /dev/null +++ b/steps/perl-5.18.4/patches/Encode-reproducible-includes.patch @@ -0,0 +1,231 @@ +SPDX-FileCopyrightText: 2013 Dan Kogai +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Apply this patch to Encode package to Perl 5.18's import of Encode. + +Is necessary for reproducible Encode.a. + +From e800b1d3cc678e29ae6e95c3f3916b65439fd99c Mon Sep 17 00:00:00 2001 +From: Dan Kogai +Date: Wed, 17 Jul 2013 03:11:42 +0900 +Subject: [PATCH] RT #86974: Patch to output #includes in deterministic order + +--- + Byte/Makefile.PL | 4 ++-- + CN/Makefile.PL | 4 ++-- + Changes | 7 +++++++ + EBCDIC/Makefile.PL | 4 ++-- + Encode/Makefile_PL.e2x | 10 +++++----- + JP/Makefile.PL | 4 ++-- + KR/Makefile.PL | 4 ++-- + Symbol/Makefile.PL | 4 ++-- + TW/Makefile.PL | 4 ++-- + 9 files changed, 26 insertions(+), 19 deletions(-) + +diff --git perl-5.18.4/cpan/Encode/Byte/Makefile.PL perl-5.18.4/cpan/Encode/Byte/Makefile.PL +index 60caf38..e368ac8 100644 +--- perl-5.18.4/cpan/Encode/Byte/Makefile.PL ++++ perl-5.18.4/cpan/Encode/Byte/Makefile.PL +@@ -108,7 +108,7 @@ sub post_initialize + #define U8 U8 + #include "encode.h" + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.h"\n]; + } + print XS <<"END"; +@@ -137,7 +137,7 @@ PROTOTYPES: DISABLE + BOOT: + { + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.exh"\n]; + } + print XS "}\n"; +diff --git perl-5.18.4/cpan/Encode/CN/Makefile.PL perl-5.18.4/cpan/Encode/CN/Makefile.PL +index 6d54404..323b47e 100644 +--- perl-5.18.4/cpan/Encode/CN/Makefile.PL ++++ perl-5.18.4/cpan/Encode/CN/Makefile.PL +@@ -84,7 +84,7 @@ sub post_initialize + #define U8 U8 + #include "encode.h" + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.h"\n]; + } + print XS <<"END"; +@@ -113,7 +113,7 @@ PROTOTYPES: DISABLE + BOOT: + { + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.exh"\n]; + } + print XS "}\n"; +diff --git perl-5.18.4/cpan/Encode/EBCDIC/Makefile.PL perl-5.18.4/cpan/Encode/EBCDIC/Makefile.PL +index 0e2a13c..1c78c6a 100644 +--- perl-5.18.4/cpan/Encode/EBCDIC/Makefile.PL ++++ perl-5.18.4/cpan/Encode/EBCDIC/Makefile.PL +@@ -65,7 +65,7 @@ sub post_initialize + #define U8 U8 + #include "encode.h" + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.h"\n]; + } + print XS <<"END"; +@@ -94,7 +94,7 @@ PROTOTYPES: DISABLE + BOOT: + { + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.exh"\n]; + } + print XS "}\n"; +diff --git perl-5.18.4/cpan/Encode/Encode/Makefile_PL.e2x perl-5.18.4/cpan/Encode/Encode/Makefile_PL.e2x +index ece5883..9fe60ef 100644 +--- perl-5.18.4/cpan/Encode/Encode/Makefile_PL.e2x ++++ perl-5.18.4/cpan/Encode/Encode/Makefile_PL.e2x +@@ -83,7 +83,7 @@ sub post_initialize + if $^O eq 'MacOS' && $self->{SOURCE} !~ /\b$name\.c\b/; + # $self->{'H'} = [$self->catfile($self->updir,'encode.h')]; + my %xs; +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + push (@{$self->{'C'}},"$table.c"); + # Do NOT add $table.h etc. to H_FILES unless we own up as to how they + # get built. +@@ -101,7 +101,7 @@ sub post_initialize + #define U8 U8 + #include "encode.h" + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.h"\n]; + } + print XS <<"END"; +@@ -130,7 +130,7 @@ PROTOTYPES: DISABLE + BOOT: + { + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.exh"\n]; + } + print XS "}\n"; +@@ -144,14 +144,14 @@ sub postamble + my $dir = "."; # $self->catdir('Encode'); + my $str = "# $name\$(OBJ_EXT) depends on .h and .exh files not .c files - but all written by enc2xs\n"; + $str .= "$name.c : $name.xs "; +- foreach my $table (keys %tables) ++ foreach my $table (sort keys %tables) + { + $str .= " $table.c"; + } + $str .= "\n\n"; + $str .= "$name\$(OBJ_EXT) : $name.c\n\n"; + +- foreach my $table (keys %tables) ++ foreach my $table (sort keys %tables) + { + my $numlines = 1; + my $lengthsofar = length($str); +diff --git perl-5.18.4/cpan/Encode/JP/Makefile.PL perl-5.18.4/cpan/Encode/JP/Makefile.PL +index a75685e..c6a725f 100644 +--- perl-5.18.4/cpan/Encode/JP/Makefile.PL ++++ perl-5.18.4/cpan/Encode/JP/Makefile.PL +@@ -84,7 +84,7 @@ sub post_initialize + #define U8 U8 + #include "encode.h" + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.h"\n]; + } + print XS <<"END"; +@@ -113,7 +113,7 @@ PROTOTYPES: DISABLE + BOOT: + { + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.exh"\n]; + } + print XS "}\n"; +diff --git perl-5.18.4/cpan/Encode/KR/Makefile.PL perl-5.18.4/cpan/Encode/KR/Makefile.PL +index e95d039..49c0319 100644 +--- perl-5.18.4/cpan/Encode/KR/Makefile.PL ++++ perl-5.18.4/cpan/Encode/KR/Makefile.PL +@@ -82,7 +82,7 @@ sub post_initialize + #define U8 U8 + #include "encode.h" + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.h"\n]; + } + print XS <<"END"; +@@ -111,7 +111,7 @@ PROTOTYPES: DISABLE + BOOT: + { + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.exh"\n]; + } + print XS "}\n"; +diff --git perl-5.18.4/cpan/Encode/Symbol/Makefile.PL perl-5.18.4/cpan/Encode/Symbol/Makefile.PL +index 23ca1f4..2c94aab 100644 +--- perl-5.18.4/cpan/Encode/Symbol/Makefile.PL ++++ perl-5.18.4/cpan/Encode/Symbol/Makefile.PL +@@ -70,7 +70,7 @@ sub post_initialize + #define U8 U8 + #include "encode.h" + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.h"\n]; + } + print XS <<"END"; +@@ -99,7 +99,7 @@ PROTOTYPES: DISABLE + BOOT: + { + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.exh"\n]; + } + print XS "}\n"; +diff --git perl-5.18.4/cpan/Encode/TW/Makefile.PL perl-5.18.4/cpan/Encode/TW/Makefile.PL +index 99c94bf..f90861f 100644 +--- perl-5.18.4/cpan/Encode/TW/Makefile.PL ++++ perl-5.18.4/cpan/Encode/TW/Makefile.PL +@@ -80,7 +80,7 @@ sub post_initialize + #define U8 U8 + #include "encode.h" + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.h"\n]; + } + print XS <<"END"; +@@ -109,7 +109,7 @@ PROTOTYPES: DISABLE + BOOT: + { + END +- foreach my $table (keys %tables) { ++ foreach my $table (sort keys %tables) { + print XS qq[#include "${table}.exh"\n]; + } + print XS "}\n"; +-- +2.49.1 + diff --git a/steps/perl-5.18.4/patches/Generate-Errno-and-Pod-Functions-with-deterministic-.patch b/steps/perl-5.18.4/patches/Generate-Errno-and-Pod-Functions-with-deterministic-.patch new file mode 100644 index 00000000..e09ba312 --- /dev/null +++ b/steps/perl-5.18.4/patches/Generate-Errno-and-Pod-Functions-with-deterministic-.patch @@ -0,0 +1,70 @@ +SPDX-FileCopyrightText: 2013 Nicholas Clark + +SPDX-License-Identifier: Artistic-1.0 + +Direct application of this commit to ensure reproducibility of Errno.pm and +Functions.pm. + +From 826ca1caadb538106237a9a41004ce52e2c29c51 Mon Sep 17 00:00:00 2001 +From: Nicholas Clark +Date: Fri, 12 Jul 2013 16:50:13 +0200 +Subject: [PATCH] Generate Errno and Pod::Functions with deterministic order. + +Previously the order of duplicate names in Errno was determined by hash +iteration order, as was the order of the list of types for built-ins in +Pod::Functions. With hash randomisation this meant that the generated file +could differ between builds, which isn't ideal if the input is the same. + +(Spotted as a side effect of running a diff on two installation trees.) +--- + ext/Errno/Errno_pm.PL | 4 ++-- + ext/Pod-Functions/Functions_pm.PL | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git perl-5.18.4/ext/Errno/Errno_pm.PL perl-5.18.4/ext/Errno/Errno_pm.PL +index b7079112bf..b372875480 100644 +--- perl-5.18.4/ext/Errno/Errno_pm.PL ++++ perl-5.18.4/ext/Errno/Errno_pm.PL +@@ -2,7 +2,7 @@ use ExtUtils::MakeMaker; + use Config; + use strict; + +-our $VERSION = "1.18"; ++our $VERSION = "1.19"; + + my %err = (); + my %wsa = (); +@@ -305,7 +305,7 @@ BEGIN { + %err = ( + EDQ + +- my @err = sort { $err{$a} <=> $err{$b} } ++ my @err = sort { $err{$a} <=> $err{$b} || $a cmp $b } + grep { $err{$_} =~ /-?\d+$/ } keys %err; + + foreach $err (@err) { +diff --git perl-5.18.4/ext/Pod-Functions/Functions_pm.PL perl-5.18.4/ext/Pod-Functions/Functions_pm.PL +index 0d38aef003..7cf0b51e92 100644 +--- perl-5.18.4/ext/Pod-Functions/Functions_pm.PL ++++ perl-5.18.4/ext/Pod-Functions/Functions_pm.PL +@@ -198,7 +198,7 @@ L section. + + =cut + +-our $VERSION = '1.06'; ++our $VERSION = '1.07'; + + require Exporter; + +@@ -265,7 +265,7 @@ foreach my $func (sort_funcs(keys %Flavor)) { + my $desc = $Flavor{$func}; + die "No types listed for $func" unless $Type{$func}; + next if $Omit{$func}; +- print $fh join("\t", $func, @{$Type{$func}}, $desc), "\n"; ++ print $fh join("\t", $func, (sort @{$Type{$func}}), $desc), "\n"; + } + + close $fh or die "Can't close '$temp': $!"; +-- +2.49.1 + diff --git a/steps/perl-5.18.4/patches/ParseXS-reproducible.patch b/steps/perl-5.18.4/patches/ParseXS-reproducible.patch new file mode 100644 index 00000000..37326335 --- /dev/null +++ b/steps/perl-5.18.4/patches/ParseXS-reproducible.patch @@ -0,0 +1,47 @@ +SPDX-FileCopyrightText: 2013 Karl Williamson +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + +Backport of this commit to Perl 5.18 to ensure reproducibility of anything +that uses ParseXS. + +From 06535856556a6bc0b3b1e4fac8671acb2a9aa8fd Mon Sep 17 00:00:00 2001 +From: Karl Williamson +Date: Mon, 15 Jul 2013 09:55:40 -0600 +Subject: [PATCH] ParseXS: generate deterministically ordered output + +The generated XS file output was varying between builds because of hash +randomisation. This sorts the output to make it the same for the same +inputs. This facilitates eyeballing diffs of two workspaces. +--- + dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git perl-5.18.4/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm perl-5.18.4/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm +index d50b5010cd..8e691f4ab6 100644 +--- perl-5.18.4/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm ++++ perl-5.18.4/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm +@@ -845,7 +845,8 @@ EOF + if (%{ $self->{XsubAliases} }) { + $self->{XsubAliases}->{$pname} = 0 + unless defined $self->{XsubAliases}->{$pname}; +- while ( my ($xname, $value) = each %{ $self->{XsubAliases} }) { ++ foreach my $xname (sort keys %{ $self->{XsubAliases} }) { ++ my $value = $self->{XsubAliases}->{$xname}; + push(@{ $self->{InitFileCode} }, Q(<<"EOF")); + # cv = $self->{newXS}(\"$xname\", XS_$Full_func_name, file$self->{proto}); + # XSANY.any_i32 = $value; +@@ -859,7 +860,8 @@ EOF + EOF + } + elsif ($self->{interface}) { +- while ( my ($yname, $value) = each %{ $self->{Interfaces} }) { ++ foreach my $yname (sort keys %{ $self->{Interfaces} }) { ++ my $value = $self->{Interfaces}->{$yname}; + $yname = "$Package\::$yname" unless $yname =~ /::/; + push(@{ $self->{InitFileCode} }, Q(<<"EOF")); + # cv = $self->{newXS}(\"$yname\", XS_$Full_func_name, file$self->{proto}); +-- +2.49.1 + From 83ad28221a987ec9eb57ca59e30d05f73f39f2f3 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 15 Sep 2025 10:11:19 +1000 Subject: [PATCH 57/64] Ensure digest of lib/unicore/mktables is reproducible For reasons Perl has decided files that don't exist should be given a random "small" digest to make them rebuild always. That isn't helpful for reproducibility. --- steps/perl-5.22.4/pass1.sh | 5 +++++ steps/perl-5.24.4/pass1.sh | 5 +++++ steps/perl-5.30.3/pass1.sh | 6 +++++- steps/perl-5.36.3/pass1.sh | 5 +++++ steps/perl-5.42.0/pass1.sh | 5 +++++ 5 files changed, 25 insertions(+), 1 deletion(-) diff --git a/steps/perl-5.22.4/pass1.sh b/steps/perl-5.22.4/pass1.sh index 3ca73545..3fb0c2c7 100755 --- a/steps/perl-5.22.4/pass1.sh +++ b/steps/perl-5.22.4/pass1.sh @@ -35,6 +35,11 @@ src_prepare() { lib/feature.pm lib/B/Op_private.pm miniperlmain.c unicode_constants.h \ charclass_invlists.h ebcdic_tables.h packsizetables.c overload.c \ mg_names.c + # If an input file does not exist, the "digest" of the input file (used as + # a manifest of inputs) in the generated file is a random number, which is + # not reproducible + touch lib/unicore/mktables.lst + perl regen.pl perl regen_perly.pl -b bison-2.3 perl regen/keywords.pl diff --git a/steps/perl-5.24.4/pass1.sh b/steps/perl-5.24.4/pass1.sh index 2aad1cf5..e1e6cec0 100755 --- a/steps/perl-5.24.4/pass1.sh +++ b/steps/perl-5.24.4/pass1.sh @@ -35,6 +35,11 @@ src_prepare() { lib/feature.pm lib/B/Op_private.pm miniperlmain.c unicode_constants.h \ charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ packsizetables.inc + # If an input file does not exist, the "digest" of the input file (used as + # a manifest of inputs) in the generated file is a random number, which is + # not reproducible + touch lib/unicore/mktables.lst + perl regen.pl perl regen_perly.pl -b bison-2.3 perl regen/keywords.pl diff --git a/steps/perl-5.30.3/pass1.sh b/steps/perl-5.30.3/pass1.sh index a2f3b1e8..035e49f9 100755 --- a/steps/perl-5.30.3/pass1.sh +++ b/steps/perl-5.30.3/pass1.sh @@ -30,6 +30,11 @@ src_prepare() { lib/feature.pm lib/B/Op_private.pm miniperlmain.c unicode_constants.h \ charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ packsizetables.inc uni_keywords.h + # If an input file does not exist, the "digest" of the input file (used as + # a manifest of inputs) in the generated file is a random number, which is + # not reproducible + touch lib/unicore/mktables.lst + perl regen.pl perl regen_perly.pl -b bison-2.3 perl regen/keywords.pl @@ -51,7 +56,6 @@ src_prepare() { ln -s ../perl-* "$mconf_dir"/perl "$mconf_dir"/U/mkglossary > Porting/Glossary - bash dist/Devel-PPPort/devel/mkapidoc.sh . \ dist/Devel-PPPort/parts/apidoc.fnc \ dist/Devel-PPPort/parts/embed.fnc diff --git a/steps/perl-5.36.3/pass1.sh b/steps/perl-5.36.3/pass1.sh index 15ab2ed5..db0caa80 100755 --- a/steps/perl-5.36.3/pass1.sh +++ b/steps/perl-5.36.3/pass1.sh @@ -31,6 +31,11 @@ src_prepare() { miniperlmain.c unicode_constants.h uni_keywords.h \ charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ packsizetables.inc + # If an input file does not exist, the "digest" of the input file (used as + # a manifest of inputs) in the generated file is a random number, which is + # not reproducible + touch lib/unicore/mktables.lst + perl regen.pl perl regen_perly.pl perl regen/keywords.pl diff --git a/steps/perl-5.42.0/pass1.sh b/steps/perl-5.42.0/pass1.sh index 7c387c97..f0ed900e 100755 --- a/steps/perl-5.42.0/pass1.sh +++ b/steps/perl-5.42.0/pass1.sh @@ -34,6 +34,11 @@ src_prepare() { charclass_invlists.h ebcdic_tables.h mg_names.inc overload.inc \ packsizetables.inc regexp_constants.h locale_table.h scope_types.h \ charclass_invlists.inc + # If an input file does not exist, the "digest" of the input file (used as + # a manifest of inputs) in the generated file is a random number, which is + # not reproducible + touch lib/unicore/mktables.lst + perl regen.pl perl regen_perly.pl perl regen/keywords.pl From b6422a6f4e52a2fd53b5a2fcbfe296586091b1ff Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 15 Sep 2025 10:12:46 +1000 Subject: [PATCH 58/64] Fix PERL_BUILD_DATE handling (Wow I misread the code the first time) --- steps/perl-5.24.4/pass1.sh | 7 ++----- steps/perl-5.30.3/pass1.sh | 7 ++----- steps/perl-5.36.3/pass1.sh | 7 ++++--- steps/perl-5.42.0/pass1.sh | 7 ++++--- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/steps/perl-5.24.4/pass1.sh b/steps/perl-5.24.4/pass1.sh index e1e6cec0..a62453c4 100755 --- a/steps/perl-5.24.4/pass1.sh +++ b/steps/perl-5.24.4/pass1.sh @@ -85,11 +85,8 @@ src_configure() { -Ddate=':' \ -Darchname="i386-linux" \ -Dmyhostname="(none)" \ - -Dmaildomain="(none)" -} - -src_compile() { - PERL_BUILD_DATE="Jan 01 1970" default + -Dmaildomain="(none)" \ + -Dccflags='-DPERL_BUILD_DATE="null"' } src_install() { diff --git a/steps/perl-5.30.3/pass1.sh b/steps/perl-5.30.3/pass1.sh index 035e49f9..952760ae 100755 --- a/steps/perl-5.30.3/pass1.sh +++ b/steps/perl-5.30.3/pass1.sh @@ -78,11 +78,8 @@ src_configure() { -Ddate=':' \ -Darchname="i386-linux" \ -Dmyhostname="(none)" \ - -Dmaildomain="(none)" -} - -src_compile() { - PERL_BUILD_DATE="Jan 01 1970" default + -Dmaildomain="(none)" \ + -Dccflags='-DPERL_BUILD_DATE="null"' } src_install() { diff --git a/steps/perl-5.36.3/pass1.sh b/steps/perl-5.36.3/pass1.sh index db0caa80..6face782 100755 --- a/steps/perl-5.36.3/pass1.sh +++ b/steps/perl-5.36.3/pass1.sh @@ -80,17 +80,18 @@ src_configure() { -Ddate=':' \ -Darchname="i386-linux" \ -Dmyhostname="(none)" \ - -Dmaildomain="(none)" + -Dmaildomain="(none)" \ + -Dccflags='-DPERL_BUILD_DATE="null"' } src_compile() { - PERL_BUILD_DATE="Jan 01 1970" make "${MAKEJOBS}" pod/perlapi.pod + make "${MAKEJOBS}" pod/perlapi.pod pushd dist/Devel-PPPort perl devel/mkapidoc.pl popd - PERL_BUILD_DATE="Jan 01 1970" default + default } src_install() { diff --git a/steps/perl-5.42.0/pass1.sh b/steps/perl-5.42.0/pass1.sh index f0ed900e..4157d301 100755 --- a/steps/perl-5.42.0/pass1.sh +++ b/steps/perl-5.42.0/pass1.sh @@ -83,17 +83,18 @@ src_configure() { -Dccflags="-U__DATE__ -U__TIME__" \ -Darchname="i386-linux" \ -Dmyhostname="(none)" \ - -Dmaildomain="(none)" + -Dmaildomain="(none)" \ + -Dccflags='-DPERL_BUILD_DATE="null"' } src_compile() { - PERL_BUILD_DATE="Jan 01 1970" make "${MAKEJOBS}" pod/perlapi.pod + make "${MAKEJOBS}" pod/perlapi.pod pushd dist/Devel-PPPort perl devel/mkapidoc.pl popd - PERL_BUILD_DATE="Jan 01 1970" default + default } src_install() { From 8f105b332931bbc3d8ea7c1cfa4d7759ca6b9393 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 25 Sep 2025 20:40:49 +1000 Subject: [PATCH 59/64] Make perl reproducible between bwrap and hardware Also, with these changes, change the architecture to i686, as per previous commits. --- steps/perl-5.12.5/files/config.over | 1 + steps/perl-5.12.5/pass1.sh | 2 +- steps/perl-5.15.7/files/config.over | 1 + steps/perl-5.15.7/pass1.sh | 2 +- steps/perl-5.16.3/files/config.over | 1 + steps/perl-5.16.3/pass1.sh | 2 +- steps/perl-5.17.2/files/config.over | 1 + steps/perl-5.17.2/pass1.sh | 2 +- steps/perl-5.17.4/files/config.over | 1 + steps/perl-5.17.4/pass1.sh | 2 +- steps/perl-5.18.4/files/config.over | 1 + steps/perl-5.18.4/pass1.sh | 2 +- steps/perl-5.22.4/files/config.over | 1 + steps/perl-5.22.4/pass1.sh | 2 +- steps/perl-5.24.4/files/config.over | 1 + steps/perl-5.24.4/pass1.sh | 2 +- steps/perl-5.30.3/files/config.over | 1 + steps/perl-5.30.3/pass1.sh | 2 +- steps/perl-5.36.3/files/config.over | 1 + steps/perl-5.36.3/pass1.sh | 2 +- steps/perl-5.42.0/files/config.over | 1 + steps/perl-5.42.0/pass1.sh | 2 +- steps/perl-5.6.2/files/config.h | 2 +- steps/perl-5.8.9/files/config.over | 5 +++++ steps/perl-5.8.9/pass1.sh | 2 +- steps/perl5.004-05/files/config.h | 2 +- steps/perl5.005-03/files/config.h | 2 +- 27 files changed, 31 insertions(+), 15 deletions(-) create mode 120000 steps/perl-5.12.5/files/config.over create mode 120000 steps/perl-5.15.7/files/config.over create mode 120000 steps/perl-5.16.3/files/config.over create mode 120000 steps/perl-5.17.2/files/config.over create mode 120000 steps/perl-5.17.4/files/config.over create mode 120000 steps/perl-5.18.4/files/config.over create mode 120000 steps/perl-5.22.4/files/config.over create mode 120000 steps/perl-5.24.4/files/config.over create mode 120000 steps/perl-5.30.3/files/config.over create mode 120000 steps/perl-5.36.3/files/config.over create mode 120000 steps/perl-5.42.0/files/config.over create mode 100755 steps/perl-5.8.9/files/config.over diff --git a/steps/perl-5.12.5/files/config.over b/steps/perl-5.12.5/files/config.over new file mode 120000 index 00000000..c4be551d --- /dev/null +++ b/steps/perl-5.12.5/files/config.over @@ -0,0 +1 @@ +../../perl-5.8.9/files/config.over \ No newline at end of file diff --git a/steps/perl-5.12.5/pass1.sh b/steps/perl-5.12.5/pass1.sh index 409e6d1a..9b181b61 100755 --- a/steps/perl-5.12.5/pass1.sh +++ b/steps/perl-5.12.5/pass1.sh @@ -70,7 +70,7 @@ src_configure() { -Dusedl=false \ -Ddate=':' \ -Dccflags="-U__DATE__ -U__TIME__" \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" diff --git a/steps/perl-5.15.7/files/config.over b/steps/perl-5.15.7/files/config.over new file mode 120000 index 00000000..c4be551d --- /dev/null +++ b/steps/perl-5.15.7/files/config.over @@ -0,0 +1 @@ +../../perl-5.8.9/files/config.over \ No newline at end of file diff --git a/steps/perl-5.15.7/pass1.sh b/steps/perl-5.15.7/pass1.sh index d8bd5149..70dada23 100755 --- a/steps/perl-5.15.7/pass1.sh +++ b/steps/perl-5.15.7/pass1.sh @@ -67,7 +67,7 @@ src_configure() { -Dusedevel \ -Uversiononly \ -Dccflags="-U__DATE__ -U__TIME__" \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" diff --git a/steps/perl-5.16.3/files/config.over b/steps/perl-5.16.3/files/config.over new file mode 120000 index 00000000..c4be551d --- /dev/null +++ b/steps/perl-5.16.3/files/config.over @@ -0,0 +1 @@ +../../perl-5.8.9/files/config.over \ No newline at end of file diff --git a/steps/perl-5.16.3/pass1.sh b/steps/perl-5.16.3/pass1.sh index 9d0475bc..9f88bce2 100755 --- a/steps/perl-5.16.3/pass1.sh +++ b/steps/perl-5.16.3/pass1.sh @@ -66,7 +66,7 @@ src_configure() { -Dusedl=false \ -Ddate=':' \ -Dccflags="-U__DATE__ -U__TIME__" \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" diff --git a/steps/perl-5.17.2/files/config.over b/steps/perl-5.17.2/files/config.over new file mode 120000 index 00000000..c4be551d --- /dev/null +++ b/steps/perl-5.17.2/files/config.over @@ -0,0 +1 @@ +../../perl-5.8.9/files/config.over \ No newline at end of file diff --git a/steps/perl-5.17.2/pass1.sh b/steps/perl-5.17.2/pass1.sh index 778d5d7a..57f40d96 100755 --- a/steps/perl-5.17.2/pass1.sh +++ b/steps/perl-5.17.2/pass1.sh @@ -73,7 +73,7 @@ src_configure() { -Dusedevel \ -Uversiononly \ -Dccflags="-U__DATE__ -U__TIME__" \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" diff --git a/steps/perl-5.17.4/files/config.over b/steps/perl-5.17.4/files/config.over new file mode 120000 index 00000000..c4be551d --- /dev/null +++ b/steps/perl-5.17.4/files/config.over @@ -0,0 +1 @@ +../../perl-5.8.9/files/config.over \ No newline at end of file diff --git a/steps/perl-5.17.4/pass1.sh b/steps/perl-5.17.4/pass1.sh index 44e3bc32..5b5bd921 100755 --- a/steps/perl-5.17.4/pass1.sh +++ b/steps/perl-5.17.4/pass1.sh @@ -77,7 +77,7 @@ src_configure() { -Dusedevel \ -Uversiononly \ -Dccflags="-U__DATE__ -U__TIME__" \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" diff --git a/steps/perl-5.18.4/files/config.over b/steps/perl-5.18.4/files/config.over new file mode 120000 index 00000000..c4be551d --- /dev/null +++ b/steps/perl-5.18.4/files/config.over @@ -0,0 +1 @@ +../../perl-5.8.9/files/config.over \ No newline at end of file diff --git a/steps/perl-5.18.4/pass1.sh b/steps/perl-5.18.4/pass1.sh index df0b19a8..24e12aa1 100755 --- a/steps/perl-5.18.4/pass1.sh +++ b/steps/perl-5.18.4/pass1.sh @@ -71,7 +71,7 @@ src_configure() { -Dusedl=false \ -Ddate=':' \ -Dccflags="-U__DATE__ -U__TIME__" \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" diff --git a/steps/perl-5.22.4/files/config.over b/steps/perl-5.22.4/files/config.over new file mode 120000 index 00000000..c4be551d --- /dev/null +++ b/steps/perl-5.22.4/files/config.over @@ -0,0 +1 @@ +../../perl-5.8.9/files/config.over \ No newline at end of file diff --git a/steps/perl-5.22.4/pass1.sh b/steps/perl-5.22.4/pass1.sh index 3fb0c2c7..e4eb9ab0 100755 --- a/steps/perl-5.22.4/pass1.sh +++ b/steps/perl-5.22.4/pass1.sh @@ -84,7 +84,7 @@ src_configure() { -Dusedl=false \ -Ddate=':' \ -Dccflags="-U__DATE__ -U__TIME__" \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" } diff --git a/steps/perl-5.24.4/files/config.over b/steps/perl-5.24.4/files/config.over new file mode 120000 index 00000000..c4be551d --- /dev/null +++ b/steps/perl-5.24.4/files/config.over @@ -0,0 +1 @@ +../../perl-5.8.9/files/config.over \ No newline at end of file diff --git a/steps/perl-5.24.4/pass1.sh b/steps/perl-5.24.4/pass1.sh index a62453c4..2a2b7238 100755 --- a/steps/perl-5.24.4/pass1.sh +++ b/steps/perl-5.24.4/pass1.sh @@ -83,7 +83,7 @@ src_configure() { -Dcc=gcc \ -Dusedl=false \ -Ddate=':' \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" \ -Dccflags='-DPERL_BUILD_DATE="null"' diff --git a/steps/perl-5.30.3/files/config.over b/steps/perl-5.30.3/files/config.over new file mode 120000 index 00000000..c4be551d --- /dev/null +++ b/steps/perl-5.30.3/files/config.over @@ -0,0 +1 @@ +../../perl-5.8.9/files/config.over \ No newline at end of file diff --git a/steps/perl-5.30.3/pass1.sh b/steps/perl-5.30.3/pass1.sh index 952760ae..266e7b27 100755 --- a/steps/perl-5.30.3/pass1.sh +++ b/steps/perl-5.30.3/pass1.sh @@ -76,7 +76,7 @@ src_configure() { -Dcc=gcc \ -Dusedl=false \ -Ddate=':' \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" \ -Dccflags='-DPERL_BUILD_DATE="null"' diff --git a/steps/perl-5.36.3/files/config.over b/steps/perl-5.36.3/files/config.over new file mode 120000 index 00000000..c4be551d --- /dev/null +++ b/steps/perl-5.36.3/files/config.over @@ -0,0 +1 @@ +../../perl-5.8.9/files/config.over \ No newline at end of file diff --git a/steps/perl-5.36.3/pass1.sh b/steps/perl-5.36.3/pass1.sh index 6face782..fba88bfa 100755 --- a/steps/perl-5.36.3/pass1.sh +++ b/steps/perl-5.36.3/pass1.sh @@ -78,7 +78,7 @@ src_configure() { -Dcc=gcc \ -Dusedl=false \ -Ddate=':' \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" \ -Dccflags='-DPERL_BUILD_DATE="null"' diff --git a/steps/perl-5.42.0/files/config.over b/steps/perl-5.42.0/files/config.over new file mode 120000 index 00000000..c4be551d --- /dev/null +++ b/steps/perl-5.42.0/files/config.over @@ -0,0 +1 @@ +../../perl-5.8.9/files/config.over \ No newline at end of file diff --git a/steps/perl-5.42.0/pass1.sh b/steps/perl-5.42.0/pass1.sh index 4157d301..48738132 100755 --- a/steps/perl-5.42.0/pass1.sh +++ b/steps/perl-5.42.0/pass1.sh @@ -81,7 +81,7 @@ src_configure() { -Dusedl=false \ -Ddate=':' \ -Dccflags="-U__DATE__ -U__TIME__" \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" \ -Dccflags='-DPERL_BUILD_DATE="null"' diff --git a/steps/perl-5.6.2/files/config.h b/steps/perl-5.6.2/files/config.h index 5103f75e..47b8168b 100644 --- a/steps/perl-5.6.2/files/config.h +++ b/steps/perl-5.6.2/files/config.h @@ -95,7 +95,7 @@ #define Free_t void #define SH_PATH "/bin/sh" -#define ARCHNAME "i386-linux" +#define ARCHNAME "i686-linux" #define BIN_EXP "/usr/bin" #define NVSIZE 8 /* sizeof(double) */ diff --git a/steps/perl-5.8.9/files/config.over b/steps/perl-5.8.9/files/config.over new file mode 100755 index 00000000..0402df37 --- /dev/null +++ b/steps/perl-5.8.9/files/config.over @@ -0,0 +1,5 @@ +#!/bin/sh + +osvers=4.14.0 +myarchname=i686-linux +myuname="linux live-bootstrap 4.14.0 #1 i686 gnulinux " diff --git a/steps/perl-5.8.9/pass1.sh b/steps/perl-5.8.9/pass1.sh index 964b885f..edc981b8 100755 --- a/steps/perl-5.8.9/pass1.sh +++ b/steps/perl-5.8.9/pass1.sh @@ -68,7 +68,7 @@ src_configure() { -Dusedl=false \ -Ddate=':' \ -Dccflags="-U__DATE__ -U__TIME__" \ - -Darchname="i386-linux" \ + -Darchname="i686-linux" \ -Dmyhostname="(none)" \ -Dmaildomain="(none)" } diff --git a/steps/perl5.004-05/files/config.h b/steps/perl5.004-05/files/config.h index c5e49d7f..988228f0 100644 --- a/steps/perl5.004-05/files/config.h +++ b/steps/perl5.004-05/files/config.h @@ -92,6 +92,6 @@ #define Free_t void #define SH_PATH "/bin/sh" -#define ARCHNAME "i386-linux" +#define ARCHNAME "i686-linux" #define BIN_EXP "/usr/bin" diff --git a/steps/perl5.005-03/files/config.h b/steps/perl5.005-03/files/config.h index c5e49d7f..988228f0 100644 --- a/steps/perl5.005-03/files/config.h +++ b/steps/perl5.005-03/files/config.h @@ -92,6 +92,6 @@ #define Free_t void #define SH_PATH "/bin/sh" -#define ARCHNAME "i386-linux" +#define ARCHNAME "i686-linux" #define BIN_EXP "/usr/bin" From 5ae083281e877b616e05786bda07e9be1b375090 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 25 Sep 2025 20:41:30 +1000 Subject: [PATCH 60/64] Update checksums!! --- steps/SHA256SUMS.pkgs | 44 ++++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/steps/SHA256SUMS.pkgs b/steps/SHA256SUMS.pkgs index 57975912..6449033e 100644 --- a/steps/SHA256SUMS.pkgs +++ b/steps/SHA256SUMS.pkgs @@ -36,11 +36,11 @@ fd65c11422588984bc3a440b1fd9d022307a200de182cfedfe3387a09cbece98 ca-certificate 27f283c42e2728d0d0682d56ada44b11ff11d07843e595c133a43f4c6aef53d0 coreutils-6.10_0.tar.bz2 61f5a1654935fbfd5358116bf2267236676aace3370cc6aaf8ff4fb1b4d020b2 coreutils-9.4_0.tar.bz2 d8ad6dd811872bfc4ac3f2101de85277de29e048f9e10debde1c284e3a62144b curl-8.12.1_0.tar.bz2 -748e33824a2b5b199fdcf63f126bdd67b457b3521b5cee06eb6cd78644b9c0ca curl-8.12.1_1.tar.bz2 +37317ffc7742a7f0b09cb69a6c7a919f1825439dfa6e3d97780e855d35e06871 curl-8.12.1_1.tar.bz2 0ee8251b7251bf1c4a5634554c92c79339bd562b893b7c8fb1619c3ae6084bda dhcpcd-10.0.1_0.tar.bz2 0462b6a04899a98d60c33f9d16fa00e2e6b7c21cc80ccebc8358fc08105467a2 diffutils-2.7_0.tar.bz2 4cbe1fce51122f1a421e2c8bbb896b10f4a0be849916bdb67819f6f0e754c4a5 diffutils-3.10_0.tar.bz2 -283a66575b4d7c835f6ebabb38cfb5d7d62032f832ad949f067a85b8a378c36c dist-3.5-236_0.tar.bz2 +6a24890ec15a72ee67e8722f14ab6ddfc6432c0294039584d2ee95a7992c3df3 dist-3.5_0.tar.bz2 60559f700659d70c6c9d2c70170bef62355d8e38fbb30c1d0629978351b796fd e2fsprogs-1.45.7_0.tar.bz2 bf0ae256f441485d46f456a2b2edf89d619835aeccdc4bbcc1641b690e4670ff ed-1.4_0.tar.bz2 b7c649218fefdfb5d4e01bbde241d147c27f85163c231208eb4817bd6bfd45fe file-5.44_0.tar.bz2 @@ -51,11 +51,11 @@ f6c65eef86aa9f5317396a8443b25ed87a18f72d07dfd2231a594aa2c1a68942 findutils-4.2. c925739472260498342ba6dc3263da937abf5237e7e9102622bf5657ec98094a gawk-3.0.4_0.tar.bz2 14c3c0b85ec7f98654496931b9ac0e0cea2f4d466724f1b72dbd5e6e68cf0b02 gawk-5.3.0_0.tar.bz2 b4fafdabdbd8c1f9f7c96fc4677023a8151fe2afe0702e3dee920157b30deb98 gc-8.0.4_0.tar.bz2 -2fbd45349815bea19ff77574896e89bfb490017bd59a89709d827c3ce3211579 gcc-10.5.0_0.tar.bz2 -533691bea29dae1974dda699c73d05e583c5d20f14295b69c218f5701bd26d49 gcc-15.2.0_0.tar.bz2 +a151c33be67b0d41b7470c20b5265c079bf7f83194e859dbdfbed308da9a64bd gcc-10.5.0_0.tar.bz2 +61c5fb7da5c77ea3395a6b56f08c2285c279f6deb10712cce9395643a2373c70 gcc-15.2.0_0.tar.bz2 d34de902de6de9204abedb834c4c39fbb95b993e545fbb090de2b028fa1d4a61 gcc-4.0.4_0.tar.bz2 2f13b3306832d882536c97d0302f2ec1801193086dbbe62388f930858e5728a3 gcc-4.0.4_1.tar.bz2 -763bf41efd518fc97cd863bc1e5288fd4c51199468e4f58fcb5d00df84142ade gcc-4.7.4_0.tar.bz2 +2c5268956c09c71efd6c793773dd2d8133274b6c846ec63cd67218af9080bd3d gcc-4.7.4_0.tar.bz2 4791285848460b6645e1ece7d53d836900529d52af7cbab86978bddf687acfa2 gettext-0.21_0.tar.bz2 96f33b53c24f5f46a23c2b9eef8147e684c796889a83bdd39254a73393594a49 gmp-6.2.1_0.tar.bz2 8138c02c4fef718c97827f1d6476e2fc83433ff06eff4820b53589b5419b7e15 gperf-3.1_0.tar.bz2 @@ -69,7 +69,7 @@ f27e1eaafa7ab198d2ed549aecfd8a1205d960f59a509789a159997565abd6d4 heirloom-devto 5b18018b2b29e10d4d8e4201e2d62846777172c01b83ca5295f7c8721c2bde0a kbd-1.15_0.tar.bz2 8015e91981298feb5315290d6e22408a482d91994b5fc068affb6fdf79e87f4a kexec-linux-1.0.0_0.tar.bz2 069c629aae2c86e9a23195faa3694281abeebebfdcd8dd134c73c9c68b933c41 kexec-tools-2.0.22_0.tar.bz2 -89a43c8107eff8ae34d15cdcd70f486ed440c5fe63bf57971f3587b8e22124c0 libarchive-3.5.2_0.tar.bz2 +e4ce0dc0a040f3b458e57ff2c8f4474d680a6df73ab0d7f592efe7fad565cc5f libarchive-3.5.2_0.tar.bz2 e28fdaf6191513d8e45b2c1e0d1991e01c93f4294c7fd44126568648a40f4643 libatomic_ops-7.6.10_0.tar.bz2 3e392a5332e8db77c409f1566b6f05d1f92a85e1fbe902dbe97704548c0f6c8e libbsd-0.11.8_0.tar.bz2 de10b5b3d1b721c8d8365d524c13f524b2c9cb5eff1f891698b1aa4915a73092 libffi-3.3_0.tar.bz2 @@ -97,11 +97,33 @@ f629dad141a32b592e78e8ecf465bded45437601b3340520a8799331cfac0024 opendoas-6.8.2 f39330325296612d66427de568a030aff3a514aad567a88e1de432392a08abdd patch-2.7.6_0.tar.bz2 44456a0635dc56351d34bf9701487e562c2c903393db2cc99f5c3a6d2ecf52d4 perl-5.000_0.tar.bz2 0b7ded1733433323c2056b1005828aaabb8aaca9505839333a8e80f12669f203 perl-5.003_0.tar.bz2 -012cc360816f8f46541dbb988578bcb13985c3130ee3bcf2fb9d63cc994c7e8a perl5.004-05_0.tar.bz2 -a2cbb76d60e5df1ae2439297f9e01fe9903175db600d65efb4a45e3bdaa12eb2 perl5.005-03_0.tar.bz2 -9a7b2ea9c780c4076301f9c232059e56380375a7b55cf1e86ec60cafc1c63aa3 perl-5.10.1_0.tar.bz2 -07afd8a9a1dbf69aa3c447b63c07e8d8a35d1bbc4b9c4f26f5bca8e90d7edb0f perl-5.32.1_0.tar.bz2 -2bcb1489891000b2e21859e7ca39ef8b543d92e9127ed96731569127d7a43bf6 perl-5.6.2_0.tar.bz2 +e8707f598b909ae01a5dc480fc9867ddb6254d22538f8f6cb65734294d92d728 perl5.004-05_0.tar.bz2 +335cd8ac4424ff5506b1a733a0e1fd38ae360249ad224100f25cde82b7c2f4db perl5.005-03_0.tar.bz2 +b707a9bcb3098008dbe1cfa831d3847aab38143e44c1ab206c02f04916fd28c3 perl-5.12.5_0.tar.bz2 +17271cc6e436c06a2ffbb039856788260f574c9e0d4b30ab70e584f445bb3931 perl-5.15.7_0.tar.bz2 +90c4082c4019b2a045583ac338352173b9e64e51d945205378709ad76f1c25a5 perl-5.16.3_0.tar.bz2 +9ef04af2574cf9518c9f36dfcd0bbc99b83c1a9d42b0505dd93c20330088aaea perl-5.17.2_0.tar.bz2 +0611b81ed8e369e54e51c5a0ac36b76fc172a7602538397a00b6166e1275d50a perl-5.17.4_0.tar.bz2 +af5238bb99a9d9d7403861ebd7290700050214e0e4a8300b874324b6b5307fe3 perl-5.18.4_0.tar.bz2 +2e4d36e9794d6646bec5c0ce4cd54932124476b451ff6d8ae7a6676e1770a19a perl-5.22.4_0.tar.bz2 +dac25836819f6201c3f9f2db683dab299ac00719c3b241290270314250d81ab7 perl-5.24.4_0.tar.bz2 +8ea27e2743262b5f263527fff9ab99b76cdc5b2ec83243f9b8f6a789d112e614 perl-5.30.3_0.tar.bz2 +204b8b2b2e712e5b638a0ec18661d7a6e704a7d08c279666da7bf79658f9db14 perl-5.36.3_0.tar.bz2 +3ee21bdc9460dc56fb6482b51c9427e2b65e74e2228e0153e9ab353272e38944 perl-5.42.0_0.tar.bz2 +cfa9fd4dae5610e7077838aa376c6b812bb9d3335c8b5c432f589d3d53a800e6 perl-5.6.2_0.tar.bz2 +95615d5576bad50dc60f308debab69224bb0efa8681522b82f624383533f70fd perl-5.8.9_0.tar.bz2 +d4997499d4ae8eb6c1daf43d1f2fde962fc0080dd0a20ec55e1d91557dec35eb perl-Devel-Tokenizer-C-0.11_0.tar.bz2 +f2566533cce1831a01d6d05ff9d34e68b0c9b6d6ed81b65894711b5600ff47e3 perl-Devel-Tokenizer-C-0.11_10.tar.bz2 +ef1ed729ff58ca3f10fe6cb7d5d39d783d539e2aa2b88a70d39af1bffa30ed44 perl-Devel-Tokenizer-C-0.11_11.tar.bz2 +2553cadabbc6f5952b2dfaf3505a5b650eb7275cef490e1db9db482dd6827f45 perl-Devel-Tokenizer-C-0.11_1.tar.bz2 +16787765153016b6acea3050f74c834ad09870b6a064a0289c169e66f77e6a21 perl-Devel-Tokenizer-C-0.11_2.tar.bz2 +a173b8c858e1bef638374c4317fa906ec7c95cd8b78297131cbd6d4800bae44a perl-Devel-Tokenizer-C-0.11_3.tar.bz2 +fcd5787737f32350c94319f1f26308a16b4fcd6563b4e30efae7d9fef11f5f49 perl-Devel-Tokenizer-C-0.11_4.tar.bz2 +7ee143830a64d125772c6ef20bfed5ee48934985e1e5195a89edb241b687b67b perl-Devel-Tokenizer-C-0.11_5.tar.bz2 +b4091f0273d71edc0d71c441c2f5f5aefbf9934f0f20da1eb90b4e307c820377 perl-Devel-Tokenizer-C-0.11_6.tar.bz2 +77aee4df9eb2271c3b4e450f216af83c5844078d93702eae60ec1141816622d4 perl-Devel-Tokenizer-C-0.11_7.tar.bz2 +d2f1e838b9ed58d58c0d6594dd868af49b576b1d6ef05903a43ad33d4986b32d perl-Devel-Tokenizer-C-0.11_8.tar.bz2 +3e5519ff5fec08c27f4ef146674ed9e957de6a057c381baf04bbda7adf18c11c perl-Devel-Tokenizer-C-0.11_9.tar.bz2 dfd2e494cc1c13ac241668d7489895984100bd14848281d2a4881d15436525fc pkg-config-0.29.2_0.tar.bz2 541d75be65f3daedc44df145556aacb3debbb7029635d8ccc9e96d839c8c6815 python-2.0.1_0.tar.bz2 5bd6c35b4d6003ce5d9fb7223816aad6bf2de66cabe97f31d7b27bfb5cc3b4f3 python-2.0.1_1.tar.bz2 From b7104bc3cc54a34f8e0478dd00e04468b2b3c832 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 25 Sep 2025 20:45:06 +1000 Subject: [PATCH 61/64] Fix licensing information etc --- ...ort-files-returned-from-all_files_in_dir-for-consis.patch | 5 +++++ ...ort-files-returned-from-all_files_in_dir-for-consis.patch | 5 +++++ ...ort-files-returned-from-all_files_in_dir-for-consis.patch | 5 +++++ ...ort-files-returned-from-all_files_in_dir-for-consis.patch | 5 +++++ ...ort-files-returned-from-all_files_in_dir-for-consis.patch | 5 +++++ ...ort-files-returned-from-all_files_in_dir-for-consis.patch | 5 +++++ ...ort-files-returned-from-all_files_in_dir-for-consis.patch | 5 +++++ ...ort-files-returned-from-all_files_in_dir-for-consis.patch | 5 +++++ steps/perl-5.8.9/files/config.over | 4 ++++ ...ort-files-returned-from-all_files_in_dir-for-consis.patch | 5 +++++ 10 files changed, 49 insertions(+) diff --git a/steps/perl-5.12.5/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.12.5/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch index 59f2ce39..755ca2a1 100644 --- a/steps/perl-5.12.5/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch +++ b/steps/perl-5.12.5/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -1,3 +1,8 @@ +SPDX-FileCopyrightText: 2016 Matthew Horsfall (alh) +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 From: "Matthew Horsfall (alh)" Date: Fri, 18 Mar 2016 09:34:36 -0400 diff --git a/steps/perl-5.15.7/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.15.7/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch index 4b8b6aab..48020b30 100644 --- a/steps/perl-5.15.7/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch +++ b/steps/perl-5.15.7/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -1,3 +1,8 @@ +SPDX-FileCopyrightText: 2016 Matthew Horsfall (alh) +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 From: "Matthew Horsfall (alh)" Date: Fri, 18 Mar 2016 09:34:36 -0400 diff --git a/steps/perl-5.16.3/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.16.3/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch index 6fa5cc8c..1a98f627 100644 --- a/steps/perl-5.16.3/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch +++ b/steps/perl-5.16.3/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -1,3 +1,8 @@ +SPDX-FileCopyrightText: 2016 Matthew Horsfall (alh) +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 From: "Matthew Horsfall (alh)" Date: Fri, 18 Mar 2016 09:34:36 -0400 diff --git a/steps/perl-5.17.2/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.17.2/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch index 70d82d77..86b702bd 100644 --- a/steps/perl-5.17.2/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch +++ b/steps/perl-5.17.2/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -1,3 +1,8 @@ +SPDX-FileCopyrightText: 2016 Matthew Horsfall (alh) +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 From: "Matthew Horsfall (alh)" Date: Fri, 18 Mar 2016 09:34:36 -0400 diff --git a/steps/perl-5.17.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.17.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch index 46861c7a..dc045463 100644 --- a/steps/perl-5.17.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch +++ b/steps/perl-5.17.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -1,3 +1,8 @@ +SPDX-FileCopyrightText: 2016 Matthew Horsfall (alh) +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 From: "Matthew Horsfall (alh)" Date: Fri, 18 Mar 2016 09:34:36 -0400 diff --git a/steps/perl-5.18.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.18.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch index 7d00ba44..289ec5f4 100644 --- a/steps/perl-5.18.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch +++ b/steps/perl-5.18.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -1,3 +1,8 @@ +SPDX-FileCopyrightText: 2016 Matthew Horsfall (alh) +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 From: "Matthew Horsfall (alh)" Date: Fri, 18 Mar 2016 09:34:36 -0400 diff --git a/steps/perl-5.22.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.22.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch index 2518be8a..832f5bd4 100644 --- a/steps/perl-5.22.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch +++ b/steps/perl-5.22.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -1,3 +1,8 @@ +SPDX-FileCopyrightText: 2016 Matthew Horsfall (alh) +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 From: "Matthew Horsfall (alh)" Date: Fri, 18 Mar 2016 09:34:36 -0400 diff --git a/steps/perl-5.24.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.24.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch index f5da7fe5..2ec64291 100644 --- a/steps/perl-5.24.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch +++ b/steps/perl-5.24.4/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -1,3 +1,8 @@ +SPDX-FileCopyrightText: 2016 Matthew Horsfall (alh) +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 From: "Matthew Horsfall (alh)" Date: Fri, 18 Mar 2016 09:34:36 -0400 diff --git a/steps/perl-5.8.9/files/config.over b/steps/perl-5.8.9/files/config.over index 0402df37..64ac1754 100755 --- a/steps/perl-5.8.9/files/config.over +++ b/steps/perl-5.8.9/files/config.over @@ -1,5 +1,9 @@ #!/bin/sh +# SPDX-FileCopyrightText: 2025 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + osvers=4.14.0 myarchname=i686-linux myuname="linux live-bootstrap 4.14.0 #1 i686 gnulinux " diff --git a/steps/perl-5.8.9/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch b/steps/perl-5.8.9/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch index d1a1b55a..8fa00638 100644 --- a/steps/perl-5.8.9/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch +++ b/steps/perl-5.8.9/patches/Sort-files-returned-from-all_files_in_dir-for-consis.patch @@ -1,3 +1,8 @@ +SPDX-FileCopyrightText: 2016 Matthew Horsfall (alh) +SPDX-FileCopyrightText: 2025 fosslinux + +SPDX-License-Identifier: Artistic-1.0 + From f39737ebd77b0a342e62524de30972bcb532ad87 Mon Sep 17 00:00:00 2001 From: "Matthew Horsfall (alh)" Date: Fri, 18 Mar 2016 09:34:36 -0400 From b4d9a6827c8079944cd1957f9d9fab991bfb3845 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 25 Sep 2025 20:46:54 +1000 Subject: [PATCH 62/64] Update bison parts.rst based on perl changes --- parts.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/parts.rst b/parts.rst index 08eba760..db757e40 100644 --- a/parts.rst +++ b/parts.rst @@ -1018,9 +1018,10 @@ in 2.3. This parser works sufficiently well for perl 5.10.1. bison 3.4.2 =========== -Bison 3.4.1 is buggy and segfaults when perl 5.32.1 is built. This is probably +Bison 3.4.1 is buggy and segfaults when perl is built. This is probably because it was built with a hand-written makefile. We do not build the latest -bison because perl 5.32.1 requires bison <= 3.4.2. +bison because perl maybe requires bison <= 3.4.2. +This step could be improved, possibly. dist 3.5 ======== From d16817a64949cafdf0ec22a4d240b15b34bb49eb Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Thu, 25 Sep 2025 20:47:24 +1000 Subject: [PATCH 63/64] shellcheck fix --- steps/helpers.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/steps/helpers.sh b/steps/helpers.sh index 2aa68da6..f3ddc735 100755 --- a/steps/helpers.sh +++ b/steps/helpers.sh @@ -457,7 +457,8 @@ _do_strip() { # shellcheck disable=SC2124 local f="${@: -1}" if ! [ -w "${f}" ]; then - local perms="$(stat -c %a "${f}")" + local perms + perms="$(stat -c %a "${f}")" chmod u+w "${f}" fi strip "$@" From d95aa0fecc6a1b0130f2682987efd01a05d0cb95 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Mon, 6 Oct 2025 14:17:02 +1100 Subject: [PATCH 64/64] Rebase on master, fix sources --- steps/dist-3.5/sources | 2 +- steps/perl-5.10.1/sources | 2 +- steps/perl-5.12.5/sources | 4 ++-- steps/perl-5.15.7/sources | 4 ++-- steps/perl-5.16.3/sources | 4 ++-- steps/perl-5.17.2/sources | 6 +++--- steps/perl-5.17.4/sources | 6 +++--- steps/perl-5.18.4/sources | 4 ++-- steps/perl-5.22.4/sources | 6 +++--- steps/perl-5.24.4/sources | 6 +++--- steps/perl-5.30.3/sources | 4 ++-- steps/perl-5.36.3/sources | 4 ++-- steps/perl-5.42.0/sources | 4 ++-- steps/perl-5.8.9/sources | 6 +++--- steps/perl-Devel-Tokenizer-C-0.11/sources | 2 +- 15 files changed, 32 insertions(+), 32 deletions(-) diff --git a/steps/dist-3.5/sources b/steps/dist-3.5/sources index 05654d6d..2a91baa1 100644 --- a/steps/dist-3.5/sources +++ b/steps/dist-3.5/sources @@ -1 +1 @@ -git://github.com/rmanfredi/dist~99eb95e214b87a84b0a7752adba30e9b0fec977f https://github.com/rmanfredi/dist/archive/99eb95e214b87a84b0a7752adba30e9b0fec977f.tar.gz 20cfcd13d588abdcb502c1c4682fb1f33ffefd307625b3b877d21ad938a7b705 +g https://github.com/rmanfredi/dist~99eb95e214b87a84b0a7752adba30e9b0fec977f https://github.com/rmanfredi/dist/archive/99eb95e214b87a84b0a7752adba30e9b0fec977f.tar.gz 20cfcd13d588abdcb502c1c4682fb1f33ffefd307625b3b877d21ad938a7b705 diff --git a/steps/perl-5.10.1/sources b/steps/perl-5.10.1/sources index 4cbd163c..1bde0a17 100644 --- a/steps/perl-5.10.1/sources +++ b/steps/perl-5.10.1/sources @@ -1 +1 @@ -http://www.cpan.org/src/5.0/perl-5.10.1.tar.bz2 9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826 +f http://www.cpan.org/src/5.0/perl-5.10.1.tar.bz2 9385f2c8c2ca8b1dc4a7c31903f1f8dc8f2ba867dc2a9e5c93012ed6b564e826 diff --git a/steps/perl-5.12.5/sources b/steps/perl-5.12.5/sources index 403b181e..37647779 100644 --- a/steps/perl-5.12.5/sources +++ b/steps/perl-5.12.5/sources @@ -1,2 +1,2 @@ -https://www.cpan.org/src/5.0/perl-5.12.5.tar.bz2 10749417fd3010aae320a34181ad4cd6a4855c1fc63403b87fa4d630b18e966c -git://github.com/Perl/metaconfig~7ae9aa2926eed6b1f0b68b0e61c80a0f39b14a25 https://github.com/Perl/metaconfig/archive/7ae9aa2926eed6b1f0b68b0e61c80a0f39b14a25.tar.gz 08a10e266927ebce7fe8cd24122b9d1274a173c57170414545633ebebd77d65c +f https://www.cpan.org/src/5.0/perl-5.12.5.tar.bz2 10749417fd3010aae320a34181ad4cd6a4855c1fc63403b87fa4d630b18e966c +g https://github.com/Perl/metaconfig~7ae9aa2926eed6b1f0b68b0e61c80a0f39b14a25 https://github.com/Perl/metaconfig/archive/7ae9aa2926eed6b1f0b68b0e61c80a0f39b14a25.tar.gz 08a10e266927ebce7fe8cd24122b9d1274a173c57170414545633ebebd77d65c diff --git a/steps/perl-5.15.7/sources b/steps/perl-5.15.7/sources index 8ea09bd7..379e87fa 100644 --- a/steps/perl-5.15.7/sources +++ b/steps/perl-5.15.7/sources @@ -1,2 +1,2 @@ -https://www.cpan.org/src/5.0/perl-5.15.7.tar.bz2 331fcc356fccfc47e86ed09c20c081858f9466e419324007a7578441f861177c -git://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 +f https://www.cpan.org/src/5.0/perl-5.15.7.tar.bz2 331fcc356fccfc47e86ed09c20c081858f9466e419324007a7578441f861177c +g https://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 diff --git a/steps/perl-5.16.3/sources b/steps/perl-5.16.3/sources index fab708dd..ac4a282d 100644 --- a/steps/perl-5.16.3/sources +++ b/steps/perl-5.16.3/sources @@ -1,2 +1,2 @@ -https://www.cpan.org/src/5.0/perl-5.16.3.tar.bz2 bb7bc735e6813b177dcfccd480defcde7eddefa173b5967eac11babd1bfa98e8 -git://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 +f https://www.cpan.org/src/5.0/perl-5.16.3.tar.bz2 bb7bc735e6813b177dcfccd480defcde7eddefa173b5967eac11babd1bfa98e8 +g https://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 diff --git a/steps/perl-5.17.2/sources b/steps/perl-5.17.2/sources index e94b71bc..e9ea653d 100644 --- a/steps/perl-5.17.2/sources +++ b/steps/perl-5.17.2/sources @@ -1,3 +1,3 @@ -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 -https://cpan.metacpan.org/authors/id/P/PE/PEVANS/Socket-2.000.tar.gz 91eb0dfaafdf08e450aa03cd8a3285d47facfd432f75f812a5bdafd9e445297b +f https://www.cpan.org/src/5.0/perl-5.17.2.tar.bz2 a47c59fd3667011205be4d384f4da2deb0a7544bdf1cc2efa66e9fefea435576 +g https://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 +f https://cpan.metacpan.org/authors/id/P/PE/PEVANS/Socket-2.000.tar.gz 91eb0dfaafdf08e450aa03cd8a3285d47facfd432f75f812a5bdafd9e445297b diff --git a/steps/perl-5.17.4/sources b/steps/perl-5.17.4/sources index 7fe34ee4..325b5cdb 100644 --- a/steps/perl-5.17.4/sources +++ b/steps/perl-5.17.4/sources @@ -1,3 +1,3 @@ -https://www.cpan.org/src/5.0/perl-5.17.4.tar.bz2 42e7eb0d726a6344bc54140be8a0e3636330e1be7be8793e0fb74f415666b95b -git://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 -https://cpan.metacpan.org/authors/id/P/PE/PEVANS/Socket-2.000.tar.gz 91eb0dfaafdf08e450aa03cd8a3285d47facfd432f75f812a5bdafd9e445297b +f https://www.cpan.org/src/5.0/perl-5.17.4.tar.bz2 42e7eb0d726a6344bc54140be8a0e3636330e1be7be8793e0fb74f415666b95b +g https://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 +f https://cpan.metacpan.org/authors/id/P/PE/PEVANS/Socket-2.000.tar.gz 91eb0dfaafdf08e450aa03cd8a3285d47facfd432f75f812a5bdafd9e445297b diff --git a/steps/perl-5.18.4/sources b/steps/perl-5.18.4/sources index a41aa854..76d7f731 100644 --- a/steps/perl-5.18.4/sources +++ b/steps/perl-5.18.4/sources @@ -1,2 +1,2 @@ -https://www.cpan.org/src/5.0/perl-5.18.4.tar.bz2 1fb4d27b75cd244e849f253320260efe1750641aaff4a18ce0d67556ff1b96a5 -git://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 +f https://www.cpan.org/src/5.0/perl-5.18.4.tar.bz2 1fb4d27b75cd244e849f253320260efe1750641aaff4a18ce0d67556ff1b96a5 +g https://github.com/Perl/metaconfig~79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c https://github.com/Perl/metaconfig/archive/79b14e84d83fb88c2b1a07e0dec3b62ccb9a388c.tar.gz 857e295a3e3ff3121339b348fd295e03459ce8dc3a382870e94f98c2da99a573 diff --git a/steps/perl-5.22.4/sources b/steps/perl-5.22.4/sources index a40959a5..7975bbfc 100644 --- a/steps/perl-5.22.4/sources +++ b/steps/perl-5.22.4/sources @@ -1,3 +1,3 @@ -http://www.cpan.org/src/5.0/perl-5.22.4.tar.xz 713243dce27d7aa0bdbf52b2070de5ce449f9ffbcc14a93efbc6f2beff0f5ce8 -http://www.cpan.org/src/5.0/perl-5.24.4.tar.xz 7f080287ff64750270689843ae945f02159a33cb8f2fc910248c15befba5db84 -git://github.com/Perl/metaconfig~5.26.1 https://github.com/Perl/metaconfig/archive/5.26.1.tar.gz 4641f5127a55cf2e1e8f9253ec27fba10b5b77076b4163e7f4bdc7f670d1aaf0 +f http://www.cpan.org/src/5.0/perl-5.22.4.tar.xz 713243dce27d7aa0bdbf52b2070de5ce449f9ffbcc14a93efbc6f2beff0f5ce8 +f http://www.cpan.org/src/5.0/perl-5.24.4.tar.xz 7f080287ff64750270689843ae945f02159a33cb8f2fc910248c15befba5db84 +g https://github.com/Perl/metaconfig~5.26.1 https://github.com/Perl/metaconfig/archive/5.26.1.tar.gz 4641f5127a55cf2e1e8f9253ec27fba10b5b77076b4163e7f4bdc7f670d1aaf0 diff --git a/steps/perl-5.24.4/sources b/steps/perl-5.24.4/sources index b637c921..2113d6e9 100644 --- a/steps/perl-5.24.4/sources +++ b/steps/perl-5.24.4/sources @@ -1,3 +1,3 @@ -http://www.cpan.org/src/5.0/perl-5.24.4.tar.xz 7f080287ff64750270689843ae945f02159a33cb8f2fc910248c15befba5db84 -http://www.cpan.org/src/5.0/perl-5.30.3.tar.xz 6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 -git://github.com/Perl/metaconfig~5.26.1 https://github.com/Perl/metaconfig/archive/5.26.1.tar.gz 4641f5127a55cf2e1e8f9253ec27fba10b5b77076b4163e7f4bdc7f670d1aaf0 +f http://www.cpan.org/src/5.0/perl-5.24.4.tar.xz 7f080287ff64750270689843ae945f02159a33cb8f2fc910248c15befba5db84 +f http://www.cpan.org/src/5.0/perl-5.30.3.tar.xz 6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 +g https://github.com/Perl/metaconfig~5.26.1 https://github.com/Perl/metaconfig/archive/5.26.1.tar.gz 4641f5127a55cf2e1e8f9253ec27fba10b5b77076b4163e7f4bdc7f670d1aaf0 diff --git a/steps/perl-5.30.3/sources b/steps/perl-5.30.3/sources index e9b16b0b..85f27484 100644 --- a/steps/perl-5.30.3/sources +++ b/steps/perl-5.30.3/sources @@ -1,2 +1,2 @@ -http://www.cpan.org/src/5.0/perl-5.30.3.tar.xz 6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 -git://github.com/Perl/metaconfig~5.30.3 https://github.com/Perl/metaconfig/archive/5.30.3.tar.gz 5cf99c51bbec95192e1b9b1e0d8f62d9413cabf64d0f4be0845c1fab3c4c1c9c +f http://www.cpan.org/src/5.0/perl-5.30.3.tar.xz 6967595f2e3f3a94544c35152f9a25e0cb8ea24ae45f4bf1882f2e33f4a400f4 +g https://github.com/Perl/metaconfig~5.30.3 https://github.com/Perl/metaconfig/archive/5.30.3.tar.gz 5cf99c51bbec95192e1b9b1e0d8f62d9413cabf64d0f4be0845c1fab3c4c1c9c diff --git a/steps/perl-5.36.3/sources b/steps/perl-5.36.3/sources index 45cc89d8..194ed66f 100644 --- a/steps/perl-5.36.3/sources +++ b/steps/perl-5.36.3/sources @@ -1,2 +1,2 @@ -http://www.cpan.org/src/5.0/perl-5.36.3.tar.xz 45a228daef66d02fdccc820e71f87e40d8e3df1fc4431f8d4580ec08033866bd -git://github.com/Perl/metaconfig~5.36.0 https://github.com/Perl/metaconfig/archive/5.36.0.tar.gz 0767f0566067c9fd5d17f5ff53fa04b9c45a182afa189dc05b5f8418d5888d92 +f http://www.cpan.org/src/5.0/perl-5.36.3.tar.xz 45a228daef66d02fdccc820e71f87e40d8e3df1fc4431f8d4580ec08033866bd +g https://github.com/Perl/metaconfig~5.36.0 https://github.com/Perl/metaconfig/archive/5.36.0.tar.gz 0767f0566067c9fd5d17f5ff53fa04b9c45a182afa189dc05b5f8418d5888d92 diff --git a/steps/perl-5.42.0/sources b/steps/perl-5.42.0/sources index 4f78e053..2e147ac7 100644 --- a/steps/perl-5.42.0/sources +++ b/steps/perl-5.42.0/sources @@ -1,2 +1,2 @@ -http://www.cpan.org/src/5.0/perl-5.42.0.tar.xz 73cf6cc1ea2b2b1c110a18c14bbbc73a362073003893ffcedc26d22ebdbdd0c3 -git://github.com/Perl/metaconfig~5.42.0 https://github.com/Perl/metaconfig/archive/5.42.0.tar.gz ac3948bd684a3c017a241b6fc7b899c901f814b36d030ee79887374884e30301 +f http://www.cpan.org/src/5.0/perl-5.42.0.tar.xz 73cf6cc1ea2b2b1c110a18c14bbbc73a362073003893ffcedc26d22ebdbdd0c3 +g https://github.com/Perl/metaconfig~5.42.0 https://github.com/Perl/metaconfig/archive/5.42.0.tar.gz ac3948bd684a3c017a241b6fc7b899c901f814b36d030ee79887374884e30301 diff --git a/steps/perl-5.8.9/sources b/steps/perl-5.8.9/sources index 2f51484e..e6663234 100644 --- a/steps/perl-5.8.9/sources +++ b/steps/perl-5.8.9/sources @@ -1,3 +1,3 @@ -https://www.cpan.org/src/5.0/perl-5.8.9.tar.bz2 1097fbcd48ceccb2bc735d119c9db399a02a8ab9f7dc53e29e47e6a8d0d72e79 -git://github.com/Perl/metaconfig~40501436c87602cc17baae64ee6b3ca26d74e354 https://github.com/Perl/metaconfig/archive/40501436c87602cc17baae64ee6b3ca26d74e354.tar.gz 6b0c937e1aaef684a7b2f0c089bea293c7a9d255d6513e5108567f4c10e3f4dd -https://cpan.metacpan.org/authors/id/M/MS/MSHELOR/Digest-SHA-6.04.tar.gz ee91f8f7db894ee7c6ee003daac10a99056c4948a674ef46acdbb63c81a4abeb +f https://www.cpan.org/src/5.0/perl-5.8.9.tar.bz2 1097fbcd48ceccb2bc735d119c9db399a02a8ab9f7dc53e29e47e6a8d0d72e79 +g https://github.com/Perl/metaconfig~40501436c87602cc17baae64ee6b3ca26d74e354 https://github.com/Perl/metaconfig/archive/40501436c87602cc17baae64ee6b3ca26d74e354.tar.gz 6b0c937e1aaef684a7b2f0c089bea293c7a9d255d6513e5108567f4c10e3f4dd +f https://cpan.metacpan.org/authors/id/M/MS/MSHELOR/Digest-SHA-6.04.tar.gz ee91f8f7db894ee7c6ee003daac10a99056c4948a674ef46acdbb63c81a4abeb diff --git a/steps/perl-Devel-Tokenizer-C-0.11/sources b/steps/perl-Devel-Tokenizer-C-0.11/sources index 3aa9e533..36b1136f 100644 --- a/steps/perl-Devel-Tokenizer-C-0.11/sources +++ b/steps/perl-Devel-Tokenizer-C-0.11/sources @@ -1 +1 @@ -https://cpan.metacpan.org/authors/id/M/MH/MHX/Devel-Tokenizer-C-0.11.tar.gz 5222da582ba59be26a9443a11c525c52aa070daf3bff08516805142b362ba48c +f https://cpan.metacpan.org/authors/id/M/MH/MHX/Devel-Tokenizer-C-0.11.tar.gz 5222da582ba59be26a9443a11c525c52aa070daf3bff08516805142b362ba48c