Subject: Re: bug#47698: [powerpc64le-linux] "check" package fails to build

From: Chris Marusich <[email-masked]>
Date: Thu, 03 Jun 2021 23:58:21 -0700

Chris Marusich <[email-masked]> writes:

> [...] I've reported this issue upstream:
> https://github.com/libcheck/check/issues/333

Branden Archer replied in the above issue.  In short, the unreleased
upstream commit 4fbe702fa4f35bee8a90512f9f59d1441c4ae82e fixes this
issue on PPC platforms.  Here's what the commit does:

https://github.com/libcheck/check/commit/4fbe702fa4f35bee8a90512f9f59d1441c4ae82e.patch

  Adjust test suite for 106-bit long double precision

  On PowerPC architectures (ppc, ppc64el, powerp) 'long double' has a
  precision of 106-bit, compared to 80-bit precision on amd64.

  This leads to the test_ck_assert_(float|double|ldouble)_eq_tol succeed
  rather than fail as expected, cause 0.003-0.002 will be actually
  slightly bigger than 0.001 and not slightly smaller.

  Increase the change to the tolerance, so it will be on all architectures
  smaller than the difference of ~0.001 and the unit tests will fail as
  expected.

This commit was merged to the check repository's master branch after its
latest release (0.15.2).  It will be included in the next check release,
but until then, we will have to apply the fix as a patch to our check
package.  I've attached a patch that does this.

-- 
Chris
From 7692295f970a292a3f3db31fc21d05efd97dcb25 Mon Sep 17 00:00:00 2001
From: Chris Marusich <[email-masked]>
Date: Thu, 3 Jun 2021 23:12:24 -0700
Subject: [PATCH] gnu: check: Fix failing tests on powerpc64le-linux.

* gnu/packages/check.scm (check)[source]: Apply unreleased upstream commit
4fbe702 as a patch.
---
 gnu/packages/check.scm | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 6641a0de58..069d4e05fc 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -146,7 +146,27 @@ like Jasmine or Mocha.")
                           version "/check-" version ".tar.gz"))
       (sha256
        (base32
-        "02m25y9m46pb6n46s51av62kpd936lkfv3b13kfpckgvmh5lxpm8"))))
+        "02m25y9m46pb6n46s51av62kpd936lkfv3b13kfpckgvmh5lxpm8"))
+      (patches
+       (list
+        ;; This patch fixes some tests that would otherwise fail on
+        ;; powerpc64le-linux.  Without this patch, the tests make certain
+        ;; assumptions about floating point number precision that are not true
+        ;; on that platform.
+        ;;
+        ;; TODO: Remove this patch when updating to the next check release,
+        ;; since it will be included there.  See:
+        ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=47698
+        (origin
+          (method url-fetch)
+          (uri
+           (string-append "https://github.com/libcheck/check/commit/"
+                          "4fbe702fa4f35bee8a90512f9f59d1441c4ae82e.patch"))
+          (file-name (string-append name
+                                    "-fix-test-precision-for-ppc.patch"))
+          (sha256
+           (base32
+            "04qg1p9afdd6453k18qskazrvscysdcjz9j6w4i6p5x4xyma19v6")))))))
     (build-system gnu-build-system)
     (home-page "https://libcheck.github.io/check/")
     (synopsis "Unit test framework for C")
-- 
2.30.2