From 7bdfa528fb512f0774ba7355e9e4dd380ada7abb Mon Sep 17 00:00:00 2001 From: Daniel Martinez Date: Thu, 15 Aug 2024 21:44:53 -0400 Subject: [PATCH] gawk: update to 5.3.0. --- srcpkgs/gawk/patches/fix-str2wstr.patch | 193 ++++++++++++++++++++++++ srcpkgs/gawk/template | 11 +- 2 files changed, 200 insertions(+), 4 deletions(-) create mode 100644 srcpkgs/gawk/patches/fix-str2wstr.patch diff --git a/srcpkgs/gawk/patches/fix-str2wstr.patch b/srcpkgs/gawk/patches/fix-str2wstr.patch new file mode 100644 index 00000000000..078ba8b1c74 --- /dev/null +++ b/srcpkgs/gawk/patches/fix-str2wstr.patch @@ -0,0 +1,193 @@ +https://bugs.gentoo.org/921503 +https://lists.gnu.org/archive/html/bug-gawk/2024-01/msg00013.html +https://git.savannah.gnu.org/cgit/gawk.git/commit/?h=gawk-5.3-stable&id=e05040b5d81b5a0e809fc56df2a7c3d654c77e1d + +From e05040b5d81b5a0e809fc56df2a7c3d654c77e1d Mon Sep 17 00:00:00 2001 +From: "Arnold D. Robbins" +Date: Sun, 28 Jan 2024 20:24:09 +0200 +Subject: Bug fix in str2wstr. + +--- + node.c | 26 ++++++++++++++------------ + pc/Makefile.tst | 6 ++++++ + test/Makefile.am | 5 ++++- + test/Makefile.in | 10 +++++++++- + test/Maketests | 5 +++++ + test/match4.awk | 1 + + test/match4.ok | 1 + + 10 files changed, 56 insertions(+), 14 deletions(-) + create mode 100644 test/match4.awk + create mode 100644 test/match4.ok + +diff --git a/node.c b/node.c +index de12f05..5aac5e8 100644 +--- a/node.c ++++ b/node.c +@@ -816,6 +816,20 @@ str2wstr(NODE *n, size_t **ptr) + assert((n->flags & (STRING|STRCUR)) != 0); + + /* ++ * For use by do_match, create and fill in an array. ++ * For each byte `i' in n->stptr (the original string), ++ * a[i] is equal to `j', where `j' is the corresponding wchar_t ++ * in the converted wide string. ++ * ++ * This is needed even for Nnull_string or Null_field. ++ * ++ * Create the array. ++ */ ++ if (ptr != NULL) { ++ ezalloc(*ptr, size_t *, sizeof(size_t) * (n->stlen + 1), "str2wstr"); ++ } ++ ++ /* + * Don't convert global null string or global null field + * variables to a wide string. They are both zero-length anyway. + * This also avoids future double-free errors while releasing +@@ -848,18 +862,6 @@ str2wstr(NODE *n, size_t **ptr) + emalloc(n->wstptr, wchar_t *, sizeof(wchar_t) * (n->stlen + 1), "str2wstr"); + wsp = n->wstptr; + +- /* +- * For use by do_match, create and fill in an array. +- * For each byte `i' in n->stptr (the original string), +- * a[i] is equal to `j', where `j' is the corresponding wchar_t +- * in the converted wide string. +- * +- * Create the array. +- */ +- if (ptr != NULL) { +- ezalloc(*ptr, size_t *, sizeof(size_t) * (n->stlen + 1), "str2wstr"); +- } +- + sp = n->stptr; + src_count = n->stlen; + memset(& mbs, 0, sizeof(mbs)); +diff --git a/pc/Makefile.tst b/pc/Makefile.tst +index daf3c56..9ab61c7 100644 +--- a/pc/Makefile.tst ++++ b/pc/Makefile.tst +@@ -180,6 +180,7 @@ BASIC_TESTS = \ + substr swaplns synerr1 synerr2 synerr3 tailrecurse tradanch \ + trailbs tweakfld uninit2 uninit3 uninit4 uninit5 uninitialized \ + unterm uparrfs uplus wideidx wideidx2 widesub widesub2 widesub3 \ ++ match4 \ + widesub4 wjposer1 zero2 zeroe0 zeroflag + + UNIX_TESTS = \ +@@ -2602,6 +2603,11 @@ widesub3: + AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + ++match4: ++ @echo $@ ++ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ++ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ++ + widesub4: + @echo $@ $(ZOS_FAIL) + @-[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=ENU_USA.1252; export GAWKLOCALE; \ +diff --git a/test/Makefile.am b/test/Makefile.am +index a876b3a..e1e1f3f 100644 +--- a/test/Makefile.am ++++ b/test/Makefile.am +@@ -1,7 +1,7 @@ + # + # test/Makefile.am --- automake input file for gawk + # +-# Copyright (C) 1988-2023 the Free Software Foundation, Inc. ++# Copyright (C) 1988-2024 the Free Software Foundation, Inc. + # + # This file is part of GAWK, the GNU implementation of the + # AWK Programming Language. +@@ -763,6 +763,8 @@ EXTRA_DIST = \ + match3.awk \ + match3.in \ + match3.ok \ ++ match4.awk \ ++ match4.ok \ + math.awk \ + math.ok \ + mbfw1.awk \ +@@ -1544,6 +1546,7 @@ BASIC_TESTS = \ + substr swaplns synerr1 synerr2 synerr3 tailrecurse tradanch \ + trailbs tweakfld uninit2 uninit3 uninit4 uninit5 uninitialized \ + unterm uparrfs uplus wideidx wideidx2 widesub widesub2 widesub3 \ ++ match4 \ + widesub4 wjposer1 zero2 zeroe0 zeroflag + + UNIX_TESTS = \ +diff --git a/test/Makefile.in b/test/Makefile.in +index 1ef143f..681a85b 100644 +--- a/test/Makefile.in ++++ b/test/Makefile.in +@@ -17,7 +17,7 @@ + # + # test/Makefile.am --- automake input file for gawk + # +-# Copyright (C) 1988-2023 the Free Software Foundation, Inc. ++# Copyright (C) 1988-2024 the Free Software Foundation, Inc. + # + # This file is part of GAWK, the GNU implementation of the + # AWK Programming Language. +@@ -1027,6 +1027,8 @@ EXTRA_DIST = \ + match3.awk \ + match3.in \ + match3.ok \ ++ match4.awk \ ++ match4.ok \ + math.awk \ + math.ok \ + mbfw1.awk \ +@@ -1808,6 +1810,7 @@ BASIC_TESTS = \ + substr swaplns synerr1 synerr2 synerr3 tailrecurse tradanch \ + trailbs tweakfld uninit2 uninit3 uninit4 uninit5 uninitialized \ + unterm uparrfs uplus wideidx wideidx2 widesub widesub2 widesub3 \ ++ match4 \ + widesub4 wjposer1 zero2 zeroe0 zeroflag + + UNIX_TESTS = \ +@@ -4414,6 +4417,11 @@ widesub3: + AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + ++match4: ++ @echo $@ ++ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ++ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ++ + widesub4: + @echo $@ $(ZOS_FAIL) + @-[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; export GAWKLOCALE; \ +diff --git a/test/Maketests b/test/Maketests +index bac220f..9a00140 100644 +--- a/test/Maketests ++++ b/test/Maketests +@@ -1288,6 +1288,11 @@ widesub3: + AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + ++match4: ++ @echo $@ ++ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ ++ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ ++ + widesub4: + @echo $@ $(ZOS_FAIL) + @-[ -z "$$GAWKLOCALE" ] && GAWKLOCALE=en_US.UTF-8; export GAWKLOCALE; \ +diff --git a/test/match4.awk b/test/match4.awk +new file mode 100644 +index 0000000..e50150a +--- /dev/null ++++ b/test/match4.awk +@@ -0,0 +1 @@ ++BEGIN { print match (m, /a?/) } +diff --git a/test/match4.ok b/test/match4.ok +new file mode 100644 +index 0000000..d00491f +--- /dev/null ++++ b/test/match4.ok +@@ -0,0 +1 @@ ++1 +-- +cgit v1.1 diff --git a/srcpkgs/gawk/template b/srcpkgs/gawk/template index b5f624bebf4..d3574fd16ff 100644 --- a/srcpkgs/gawk/template +++ b/srcpkgs/gawk/template @@ -1,16 +1,18 @@ # Template file for 'gawk' pkgname=gawk -version=5.1.1 +version=5.3.0 revision=1 build_style=gnu-configure -configure_args="--with-readline" +configure_args="--with-readline --disable-pma" +hostmakedepends="automake" # Needed to run because of sed makedepends="readline-devel" short_desc="GNU awk utility" maintainer="Enno Boland " license="GPL-3.0-or-later" homepage="https://directory.fsf.org/wiki/Gawk" -distfiles="${GNU_SITE}/${pkgname}/${pkgname}-${version}.tar.xz" -checksum=d87629386e894bbea11a5e00515fc909dc9b7249529dad9e6a3a2c77085f7ea2 +changelog="https://git.savannah.gnu.org/cgit/gawk.git/plain/NEWS" +distfiles="${GNU_SITE}/gawk/gawk-${version}.tar.xz" +checksum=ca9c16d3d11d0ff8c69d79dc0b47267e1329a69b39b799895604ed447d3ca90b lib32disabled=yes provides="awk-0_1" @@ -28,6 +30,7 @@ pre_check() { case "$XBPS_TARGET_MACHINE" in *-musl) + vsed -i 's/No child processes/No child process/' test/testext.ok vsed -i '/testext/d' test/Makefile vsed -i '/clos1way6/d' test/Makefile ;; esac