new file mode 100644
@@ -0,0 +1,139 @@
+From f2250f4bc864913437619af7a9834a1c24915acd Mon Sep 17 00:00:00 2001
+From: "Arnold D. Robbins" <arnold@skeeve.com>
+Date: Thu, 28 May 2026 09:52:41 -0400
+Subject: [PATCH] Improve test/randtest.sh.
+
+Backport upstream fix to improve stability of randtest.sh by retrying
+when sigma is too small, avoiding intermittent failures.
+
+Upstream-Status: Backport
+[https://cgit.git.savannah.gnu.org/cgit/gawk.git/commit/?id=f2250f4bc864913437619af7a983
+
+---
+
+diff --git a/test/randtest.sh b/test/randtest.sh
+index 597376a8..6ae6f830 100755
+--- a/test/randtest.sh
++++ b/test/randtest.sh
+@@ -45,68 +45,77 @@ $AWK 'BEGIN{
+ nsamples=('$NSAMPLES');
+ max_allowed_sigma=('$MAX_ALLOWED_SIGMA');
+ nruns=('$NRUNS');
+- for(tau=0;tau<nsamples/2;tau++) corr[tau]=0;
++ max_retries=5
+
+- for(run=0;run<nruns;run++) {
+- sum=0;
++ for (retry=0; retry<max_retries; retry++) {
++ for(tau=0; tau<nsamples/2; tau++) corr[tau]=0;
+
+- # Fill an array with a sequence of samples that are a
+- # function of pairs of rand() values.
++ for(run=0; run<nruns; run++) {
++ sum=0;
+
+- for(i=0;i<nsamples;i++) {
+- samp[i]=((rand()-0.5)*(rand()-0.5))^2;
+- sum=sum+samp[i];
+- }
++ # Fill an array with a sequence of samples that are a
++ # function of pairs of rand() values.
+
+- # Subtract off the mean of the sequence:
++ for(i=0; i<nsamples; i++) {
++ samp[i]=((rand()-0.5)*(rand()-0.5))^2;
++ sum=sum+samp[i];
++ }
+
+- mean=sum/nsamples;
+- for(i=0;i<nsamples;i++) samp[i]=samp[i]-mean;
++ # Subtract off the mean of the sequence:
+
+- # Calculate an autocorrelation function on the sequence.
+- # Because the values of rand() should be independent, there
+- # should be no peaks in the autocorrelation.
++ mean=sum/nsamples;
++ for(i=0;i<nsamples;i++) samp[i]=samp[i]-mean;
+
+- for(tau=0;tau<nsamples/2;tau++) {
+- sum=0;
+- for(i=0;i<nsamples/2;i++) sum=sum+samp[i]*samp[i+tau];
+- corr[tau]=corr[tau]+sum;
+- }
++ # Calculate an autocorrelation function on the sequence.
++ # Because the values of rand() should be independent, there
++ # should be no peaks in the autocorrelation.
+
+- }
+- # Normalize the autocorrelation to the tau=0 value.
++ for(tau=0; tau<nsamples/2; tau++) {
++ sum=0;
++ for(i=0;i<nsamples/2;i++) sum=sum+samp[i]*samp[i+tau];
++ corr[tau]=corr[tau]+sum;
++ }
+
+- max_corr=corr[0];
+- for(tau=0;tau<nsamples/2;tau++) corr[tau]=corr[tau]/max_corr;
++ }
++ # Normalize the autocorrelation to the tau=0 value.
+
+- # OPTIONALLY Print out the autocorrelation values:
++ max_corr=corr[0];
++ for(tau=0;tau<nsamples/2;tau++) corr[tau]=corr[tau]/max_corr;
+
+- # for(tau=0;tau<nsamples/2;tau++) print tau, corr[tau] > "pairpower_corr.data";
++ # OPTIONALLY Print out the autocorrelation values:
+
+- # Calculate the sigma for the non-zero tau values:
++ # for(tau=0;tau<nsamples/2;tau++) print tau, corr[tau] > "pairpower_corr.data";
+
+- power_sum=0;
++ # Calculate the sigma for the non-zero tau values:
+
+- for(tau=1;tau<nsamples/2;tau++) power_sum=power_sum+(corr[tau])^2;
++ power_sum=0;
+
+- sigma=sqrt(power_sum/(nsamples/2-1));
++ for(tau=1;tau<nsamples/2;tau++) power_sum=power_sum+(corr[tau])^2;
+
+- # See if any of the correlations exceed a reasonable number of sigma:
++ sigma=sqrt(power_sum/(nsamples/2-1));
+
+- passed=1;
+- for(tau=1;tau<nsamples/2;tau++) {
+- if ( abs(corr[tau])/sigma > max_allowed_sigma ) {
+- print "Tau=", tau ", Autocorr=", corr[tau]/sigma, "sigma";
+- passed=0;
+- }
++ if (sigma < 1e-6) {
++ print "Sigma too small, retrying run", retry
++ continue
+ }
+- if(!passed) {
+- print "Test failed."
+- exit(1);
++
++ # See if any of the correlations exceed a reasonable number of sigma:
++
++ for(tau=1;tau<nsamples/2;tau++) {
++ if (abs(corr[tau])/sigma > max_allowed_sigma) {
++ print "Tau=", tau ", Autocorr=", corr[tau]/sigma, "sigma";
++ print "Test failed."
++ exit 1
++ }
+ }
+- else exit (0);
++
++ exit 0
+ }
+
++ print "Test failed after retries due to unstable sigma"
++ exit 1
++}
++
+ function abs(abs_input) { return(sqrt(abs_input^2)) ; }
+ '
+
+--
+2.34.1
+
@@ -18,6 +18,7 @@ PACKAGECONFIG[mpfr] = "--with-mpfr,--without-mpfr, mpfr"
SRC_URI = "${GNU_MIRROR}/gawk/gawk-${PV}.tar.gz \
file://0001-m4-readline-add-missing-includes.patch \
file://run-ptest \
+ file://randtest-fix.patch \
"
SRC_URI[sha256sum] = "378f8864ec21cfceaa048f7e1869ac9b4597b449087caf1eb55e440d30273336"
Backport upstream fix to improve stability of randtest.sh by retrying when sigma is too small, avoiding intermittent failures. https://bugzilla.yoctoproject.org/show_bug.cgi?id=16254 Signed-off-by: Aditya GS <adityags2004@gmail.com> --- .../gawk/files/randtest-fix.patch | 139 ++++++++++++++++++ meta/recipes-extended/gawk/gawk_5.3.0.bb | 1 + 2 files changed, 140 insertions(+) create mode 100644 meta/recipes-extended/gawk/files/randtest-fix.patch