Thanks, this is good.

It also helps to use -vN option when re-sending a patch or a patchset.
The header will change to [PATCH v2] ... and so on, so it's easy to
see which is the latest version.

Alex

On Thu, 28 May 2026 at 20:57, Aditya GS <[email protected]> wrote:
>
> 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 <[email protected]>
> ---
>  .../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
>
> diff --git a/meta/recipes-extended/gawk/files/randtest-fix.patch 
> b/meta/recipes-extended/gawk/files/randtest-fix.patch
> new file mode 100644
> index 0000000000..0b813e667e
> --- /dev/null
> +++ b/meta/recipes-extended/gawk/files/randtest-fix.patch
> @@ -0,0 +1,139 @@
> +From f2250f4bc864913437619af7a9834a1c24915acd Mon Sep 17 00:00:00 2001
> +From: "Arnold D. Robbins" <[email protected]>
> +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
> +
> diff --git a/meta/recipes-extended/gawk/gawk_5.3.0.bb 
> b/meta/recipes-extended/gawk/gawk_5.3.0.bb
> index ac9d8500d6..06184a4b48 100644
> --- a/meta/recipes-extended/gawk/gawk_5.3.0.bb
> +++ b/meta/recipes-extended/gawk/gawk_5.3.0.bb
> @@ -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"
> --
> 2.34.1
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#237723): 
https://lists.openembedded.org/g/openembedded-core/message/237723
Mute This Topic: https://lists.openembedded.org/mt/119535145/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to