diff --git a/Disable-pma-test.awk.patch b/Disable-pma-test.awk.patch new file mode 100644 index 0000000000000000000000000000000000000000..fea626a0f54de752465291f5c6a0d7f51db0a355 --- /dev/null +++ b/Disable-pma-test.awk.patch @@ -0,0 +1,22 @@ +diff -urN gawk-5.2.0.new/test/Makefile.am gawk-5.2.0/test/Makefile.am +--- gawk-5.2.0.new/test/Makefile.am 2022-09-04 20:01:27.000000000 +0800 ++++ gawk-5.2.0/test/Makefile.am 2022-10-18 16:08:49.184074404 +0800 +@@ -1671,7 +1671,6 @@ + charset-tests-all \ + shlib-msg-start shlib-tests shlib-msg-end \ + mpfr-msg-start mpfr-tests mpfr-msg-end \ +- pma-msg-start pma-tests pma-msg-end \ + machine-msg-start machine-tests machine-msg-end + @$(MAKE) pass-fail || { $(MAKE) diffout; exit 1; } + +diff -urN gawk-5.2.0.new/test/Makefile.in gawk-5.2.0/test/Makefile.in +--- gawk-5.2.0.new/test/Makefile.in 2022-09-04 20:12:05.000000000 +0800 ++++ gawk-5.2.0/test/Makefile.in 2022-10-18 16:09:04.857137344 +0800 +@@ -2127,7 +2127,6 @@ + charset-tests-all \ + shlib-msg-start shlib-tests shlib-msg-end \ + mpfr-msg-start mpfr-tests mpfr-msg-end \ +- pma-msg-start pma-tests pma-msg-end \ + machine-msg-start machine-tests machine-msg-end + @$(MAKE) pass-fail || { $(MAKE) diffout; exit 1; } + diff --git a/Disable-racy-test-in-test-iolint.awk.patch b/Disable-racy-test-in-test-iolint.awk.patch deleted file mode 100644 index 357c6a8d15a421d62cc33838061f6d244a240df5..0000000000000000000000000000000000000000 --- a/Disable-racy-test-in-test-iolint.awk.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 0ed67a4f4f043acc08e3982a2648e3082e1f245a Mon Sep 17 00:00:00 2001 -From: "Arnold D. Robbins" -Date: Sun, 14 Nov 2021 09:33:44 +0200 -Subject: [PATCH] Disable racy test in test/iolint.awk. - ---- - test/iolint.awk | 13 ++++++++----- - test/iolint.ok | 6 +----- - 2 files changed, 9 insertions(+), 10 deletions(-) - -diff --git a/test/iolint.awk b/test/iolint.awk -index 257678e..58fd746 100644 ---- a/test/iolint.awk -+++ b/test/iolint.awk -@@ -55,12 +55,15 @@ BEGIN { - print close("cat") - fflush() - -+ # 11/2021: Disable this test since it's a race condition -+ # and fails intermittently on some systems. -+ # - # `%.*s' used for input pipe and output pipe -- "echo hello" | getline junk -- print "hello" | "echo hello" -- print close("echo hello") -- print close("echo hello") -- fflush() -+ # "echo hello" | getline junk -+ # print "hello" | "echo hello" -+ # print close("echo hello") -+ # print close("echo hello") -+ # fflush() - - # `%.*s' used for output file and output pipe" - BINMODE = 2 -diff --git a/test/iolint.ok b/test/iolint.ok -index fbf514c..620a70f 100644 ---- a/test/iolint.ok -+++ b/test/iolint.ok -@@ -23,11 +23,7 @@ gawk: iolint.awk:53: warning: `cat' used for output file and output pipe - 0 - hello - 0 --gawk: iolint.awk:60: warning: `echo hello' used for input pipe and output pipe --hello --0 --0 --gawk: iolint.awk:68: warning: `cksum' used for output file and output pipe -+gawk: iolint.awk:71: warning: `cksum' used for output file and output pipe - 3015617425 6 - 0 - 0 --- -1.8.3.1 - diff --git a/Reorder-statements-in-iolint-to-try-to-eliminate-a-r.patch b/Reorder-statements-in-iolint-to-try-to-eliminate-a-r.patch deleted file mode 100644 index d3a8ea3a9f885b217c463f8d41d8ab4b5c682343..0000000000000000000000000000000000000000 --- a/Reorder-statements-in-iolint-to-try-to-eliminate-a-r.patch +++ /dev/null @@ -1,43 +0,0 @@ -From e03c8822c48bedfe6cc7fbd5a9382d9630de6494 Mon Sep 17 00:00:00 2001 -From: "Andrew J. Schorr" -Date: Tue, 7 Dec 2021 12:00:22 -0500 -Subject: [PATCH] Reorder statements in iolint to try to eliminate a race - condition. - ---- - test/iolint.awk | 2 +- - test/iolint.ok | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/test/iolint.awk b/test/iolint.awk -index 042f743..3ebaf43 100644 ---- a/test/iolint.awk -+++ b/test/iolint.awk -@@ -49,8 +49,8 @@ BEGIN { - # `%.*s' used for output pipe and two-way pipe - # Not doing |& due to race condition and signals. sigh - cat = "cat" -- print "hello" | "cat" - print "/bin/cat \"$@\"" > "cat" -+ print "hello" | "cat" - print close("cat") - print close("cat") - fflush() -diff --git a/test/iolint.ok b/test/iolint.ok -index 7a165aa..860bcfb 100644 ---- a/test/iolint.ok -+++ b/test/iolint.ok -@@ -20,9 +20,9 @@ gawk: iolint.awk:42: warning: `echo hello' used for input pipe and output file - 0 - 0 - gawk: iolint.awk:53: warning: `cat' used for output file and output pipe --0 - hello - 0 -+0 - gawk: iolint.awk:67: warning: `eval $CMD_TO_RUN' used for input pipe and output pipe - 0 - 0 --- -1.8.3.1 - diff --git a/Restore-removed-test-in-test-iolint.awk.patch b/Restore-removed-test-in-test-iolint.awk.patch deleted file mode 100644 index 8dbd69d7649b450f202e465614319aca1ff52f91..0000000000000000000000000000000000000000 --- a/Restore-removed-test-in-test-iolint.awk.patch +++ /dev/null @@ -1,61 +0,0 @@ -From dc2613b0af11a8cf97232d55c322d40eda35c224 Mon Sep 17 00:00:00 2001 -From: "Arnold D. Robbins" -Date: Thu, 18 Nov 2021 21:04:25 +0200 -Subject: [PATCH] Restore removed test in test/iolint.awk. - ---- - test/iolint.awk | 19 ++++++++++++------- - test/iolint.ok | 5 ++++- - 2 files changed, 16 insertions(+), 8 deletions(-) - -diff --git a/test/iolint.awk b/test/iolint.awk -index 58fd746..042f743 100644 ---- a/test/iolint.awk -+++ b/test/iolint.awk -@@ -55,15 +55,20 @@ BEGIN { - print close("cat") - fflush() - -- # 11/2021: Disable this test since it's a race condition -- # and fails intermittently on some systems. -+ # 11/2021: Use a nice trick to avoid race conditions in -+ # child processes. Thanks to Miguel Pineiro Jr. . - # - # `%.*s' used for input pipe and output pipe -- # "echo hello" | getline junk -- # print "hello" | "echo hello" -- # print close("echo hello") -- # print close("echo hello") -- # fflush() -+ pipecmd = "eval $CMD_TO_RUN" -+ -+ ENVIRON["CMD_TO_RUN"] = "echo hello" -+ pipecmd | getline junk -+ ENVIRON["CMD_TO_RUN"] = "read junk" -+ print "hello" | pipecmd -+ -+ print close(pipecmd) -+ print close(pipecmd) -+ fflush() - - # `%.*s' used for output file and output pipe" - BINMODE = 2 -diff --git a/test/iolint.ok b/test/iolint.ok -index 620a70f..7a165aa 100644 ---- a/test/iolint.ok -+++ b/test/iolint.ok -@@ -23,7 +23,10 @@ gawk: iolint.awk:53: warning: `cat' used for output file and output pipe - 0 - hello - 0 --gawk: iolint.awk:71: warning: `cksum' used for output file and output pipe -+gawk: iolint.awk:67: warning: `eval $CMD_TO_RUN' used for input pipe and output pipe -+0 -+0 -+gawk: iolint.awk:76: warning: `cksum' used for output file and output pipe - 3015617425 6 - 0 - 0 --- -1.8.3.1 - diff --git a/gawk-5.1.1.tar.xz b/gawk-5.2.0.tar.xz similarity index 31% rename from gawk-5.1.1.tar.xz rename to gawk-5.2.0.tar.xz index 420de790ec23151250b2c9acde9c32d074f1b15c..db4aeb5947f960dad1aabef1685e9d7bcd37112e 100644 Binary files a/gawk-5.1.1.tar.xz and b/gawk-5.2.0.tar.xz differ diff --git a/gawk.spec b/gawk.spec index 2349b58e42818e3c69ff29b6da2167363b66d400..920b270cbb252ad276585080de1351fddccdcb88 100644 --- a/gawk.spec +++ b/gawk.spec @@ -3,16 +3,18 @@ %global gawk_api_minor %%(tar -xf %{name}-%{version}.tar.xz %{name}-%{version}/gawkapi.h --to-stdout |\ egrep -i "gawk_api_minor.*[0-9]+" | egrep -o "[0-9]") Name: gawk -Version: 5.1.1 -Release: 3 +Version: 5.2.0 +Release: 1 License: GPLv3+ and GPLv2+ and LGPLv2+ and BSD Summary: The GNU version of the AWK text processing utility URL: https://www.gnu.org/software/gawk/ Source0: https://ftp.gnu.org/gnu/gawk/gawk-%{version}.tar.xz -Patch1: Disable-racy-test-in-test-iolint.awk.patch -Patch2: Restore-removed-test-in-test-iolint.awk.patch -Patch3: Reorder-statements-in-iolint-to-try-to-eliminate-a-r.patch +#Patch1: Disable-racy-test-in-test-iolint.awk.patch +#Patch2: Restore-removed-test-in-test-iolint.awk.patch +#Patch3: Reorder-statements-in-iolint-to-try-to-eliminate-a-r.patch +Patch4: pma.patch +Patch5: Disable-pma-test.awk.patch BuildRequires: gcc automake grep BuildRequires: bison texinfo texinfo-tex ghostscript texlive-ec texlive-cm-super glibc-all-langpacks @@ -87,6 +89,7 @@ install -m 0644 -p doc/gawkinet.{pdf,ps} ${RPM_BUILD_ROOT}%{_docdir}/%{name} %doc NEWS README POSIX.STD %license COPYING %{_bindir}/*awk +%{_bindir}/gawkbug %{_libdir}/*awk %{_datadir}/*awk %{_libexecdir}/*awk @@ -107,6 +110,10 @@ install -m 0644 -p doc/gawkinet.{pdf,ps} ${RPM_BUILD_ROOT}%{_docdir}/%{name} %{_datadir}/locale/* %changelog +* Wed Oct 19 2022 dillon chen - 5.2.0-1 +- update to 5.2.0 +- Patch5: Disable pma tests when running in linux-user emulation + * Fri Sep 2 2022 zoulin - 5.1.1-3 - Type:enhancement - ID:NA diff --git a/pma.patch b/pma.patch new file mode 100644 index 0000000000000000000000000000000000000000..1369ed329053b262fd48ea7391f33a15c056c33a --- /dev/null +++ b/pma.patch @@ -0,0 +1,40 @@ +Index: gawk-5.2.0/support/pma.c +=================================================================== +--- gawk-5.2.0.orig/support/pma.c ++++ gawk-5.2.0/support/pma.c +@@ -340,16 +340,20 @@ static void flr(ao_t *p) { // remove ao + #define MMAP(N) mmap(NULL, (N), PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0) + #define MUNMAP(A, N) do { if (0 != munmap((A), (N))) { ERR("munmap()" ERN); SERN; } } while (0) + static void * addrgap(off_t n) { // find big gap in address space to map n bytes +- void *A, *Amax = NULL; size_t L = 0, U, Max = 0, N = (size_t)n; char *r; ++ void *A, *Amax = NULL; size_t L, U, Max = 0, N = (size_t)n; char *r; + FYI("addrgap(%jd)\n", (intmax_t)n); // TODO: better way to handle off_t + if (N < sizeof(pma_hdr_t) + 40960) { ERR("file size %zu too small\n", N); SERN; } +- for (U = 1; ; U *= 2) // double upper bound until failure +- if (MAP_FAILED == (A = MMAP(U))) break; +- else MUNMAP(A, U); +- while (1 + L < U) { // binary search between bounds ++ // Binary search to find max length of successfull mmap(). ++ // Invariants: ++ // Larger max might lie in range [L,U] inclusive. ++ // If a previous max has been found, it must lie in [1,L-1]. ++ // A larger max cannot lie in [U+1,UINT64_MAX]. ++ L = 1; // mmap fails if length == 0 (SUSv3) ++ U = UINT64_MAX; ++ while (L <= U) { + size_t M = L + (U - L) / 2; // avoid overflow +- if (MAP_FAILED == (A = MMAP(M))) { U = M; } +- else { Amax = A; Max = M; MUNMAP(A, M); L = M; } ++ if (MAP_FAILED != (A = MMAP(M))) { assert(Max < M); Max = M; Amax = A; MUNMAP(A, M); if (UINT64_MAX == M) break; L = M + 1; } ++ else { assert(0 < M); U = M - 1; } + } + FYI("max gap: %zu bytes at %p\n", Max, Amax); + if (Max < N + (size_t)ALGN * 2) { // safety margin +@@ -392,6 +396,7 @@ int pma_init(int verbose, const char *fi + assert((himask | lomask) == ~((uintptr_t)0)); + if (! (WDSZ == sizeof(void *) && // in C11 we'd static_assert() + WDSZ == sizeof(size_t) && ++ WDSZ == sizeof(off_t) && + WDSZ == sizeof(unsigned long))) { ERR("word size not 64 bits\n"); SERL; } + assert(0 == sizeof(pma_hdr_t) % WDSZ); + if (NULL == file) {