diff mbox series

[v1] gmp: add ptest support

Message ID 20260506074618.15882-1-pratik.farkase@est.tech
State Under Review
Headers show
Series [v1] gmp: add ptest support | expand

Commit Message

Pratik Farkase May 6, 2026, 7:46 a.m. UTC
Add ptest support for gmp, running the full upstream unit test suite
(200 tests) covering mpz, mpn, mpf, mpq, rand, misc, and C++ bindings.

Tests are compiled with 'make check TESTS=' to build without executing,
then installed via libtool to the ptest directory preserving the upstream
subdirectory structure.

Tested on qemux86-64 with ptest-runner: 200 PASS, 0 FAIL (268s).

Signed-off-by: Pratik Farkase <pratik.farkase@est.tech>
---
 meta/conf/distro/include/ptest-packagelists.inc |  1 +
 meta/recipes-support/gmp/gmp.inc                |  2 +-
 meta/recipes-support/gmp/gmp/run-ptest          | 15 +++++++++++++++
 meta/recipes-support/gmp/gmp_6.3.0.bb           | 17 +++++++++++++++++
 4 files changed, 34 insertions(+), 1 deletion(-)
 create mode 100755 meta/recipes-support/gmp/gmp/run-ptest

Comments

Mathieu Dubois-Briand May 6, 2026, 4:19 p.m. UTC | #1
On Wed May 6, 2026 at 9:46 AM CEST, Pratik Farkase wrote:
> Add ptest support for gmp, running the full upstream unit test suite
> (200 tests) covering mpz, mpn, mpf, mpq, rand, misc, and C++ bindings.
>
> Tests are compiled with 'make check TESTS=' to build without executing,
> then installed via libtool to the ptest directory preserving the upstream
> subdirectory structure.
>
> Tested on qemux86-64 with ptest-runner: 200 PASS, 0 FAIL (268s).
>
> Signed-off-by: Pratik Farkase <pratik.farkase@est.tech>
> ---

Hi Pratik,

Thanks for your patch.

I believe we are seeing some failing tests on the autobuilder:

AssertionError:
Failed ptests:
{'gmp': ['mpn/t-addaddmul']}

https://autobuilder.yoctoproject.org/valkyrie/#/builders/56/builds/1552
https://autobuilder.yoctoproject.org/valkyrie/#/builders/109/builds/367
https://autobuilder.yoctoproject.org/valkyrie/#/builders/56/builds/1553

Ptest logs can be found here:

https://valkyrie.yocto.io/pub/non-release/20260506-64/testresults/qemuriscv64-ptest/core-image-ptest-gmp/
https://valkyrie.yocto.io/pub/non-release/20260506-64/testresults/qemuarm64-musl-ptest/core-image-ptest-gmp/

Can you have a look at the issue?

Thanks,
Mathieu
Pratik Farkase May 6, 2026, 6:58 p.m. UTC | #2
Hi Mathieu,

  Thanks for catching this. I see that one test "mpn/t-addaddmul" is failing only for qemuarm64 and qemuriscv64 platforms. The issue is that mpn/t-addaddmul exits with
  code 77 on architectures without a native mpn_addaddmul_1msb0
  implementation (riscv64, arm64). Exit 77 is the autotools convention for
  SKIP, but the run-ptest script was treating any non-zero exit as FAIL. I appreciate you catching this as my test setup has qemux86-64 as the MACHINE so i did not see this test failing there.

  I have sent a v2 with the fix to handle exit 77 as SKIP.

Best Regards,
Pratik
diff mbox series

Patch

diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index ed89f9dc76..920e63e4b4 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -24,6 +24,7 @@  PTESTS_FAST = "\
     gdbm \
     gdk-pixbuf \
     glib-networking \
+    gmp \
     gzip \
     icu \
     json-c \
diff --git a/meta/recipes-support/gmp/gmp.inc b/meta/recipes-support/gmp/gmp.inc
index 1872226616..106521954d 100644
--- a/meta/recipes-support/gmp/gmp.inc
+++ b/meta/recipes-support/gmp/gmp.inc
@@ -3,7 +3,7 @@  DESCRIPTION = "GMP is a free library for arbitrary precision arithmetic, operati
 HOMEPAGE = "http://gmplib.org/"
 SECTION = "devel"
 
-inherit autotools texinfo multilib_header
+inherit autotools texinfo multilib_header ptest
 
 PACKAGECONFIG ??= ""
 PACKAGECONFIG[readline] = "--with-readline=yes,--with-readline=no,readline"
diff --git a/meta/recipes-support/gmp/gmp/run-ptest b/meta/recipes-support/gmp/gmp/run-ptest
new file mode 100755
index 0000000000..c84e9ee856
--- /dev/null
+++ b/meta/recipes-support/gmp/gmp/run-ptest
@@ -0,0 +1,15 @@ 
+#!/bin/sh
+
+cd "$(dirname "$0")/tests" || exit 1
+
+for d in . mpz mpn mpf mpq rand misc cxx; do
+    [ -d "$d" ] || continue
+    for test in $(find "$d" -maxdepth 1 -type f -executable | sort); do
+        testname=$(echo "$test" | sed 's|^\./||')
+        if ./"$test"; then
+            echo "PASS: $testname"
+        else
+            echo "FAIL: $testname"
+        fi
+    done
+done
diff --git a/meta/recipes-support/gmp/gmp_6.3.0.bb b/meta/recipes-support/gmp/gmp_6.3.0.bb
index 8f18bdca1b..ffdd3e4397 100644
--- a/meta/recipes-support/gmp/gmp_6.3.0.bb
+++ b/meta/recipes-support/gmp/gmp_6.3.0.bb
@@ -16,6 +16,7 @@  SRC_URI = "https://gmplib.org/download/${BPN}/${BP}${REVISION}.tar.bz2 \
            file://0001-confiure.ac-Believe-the-cflags-from-environment.patch \
            file://0001-Complete-function-prototype-in-acinclude.m4-for-C23-.patch \
            file://0001-acinclude.m4-Add-parameter-names-in-prototype-for-g.patch \
+           file://run-ptest \
            "
 SRC_URI[sha256sum] = "ac28211a7cfb609bae2e2c8d6058d66c8fe96434f740cf6fe2e47b000d1c20cb"
 
@@ -51,3 +52,19 @@  SSTATE_SCAN_FILES += "gmp.h"
 MIPS_INSTRUCTION_SET = "mips"
 
 BBCLASSEXTEND = "native nativesdk"
+
+do_compile_ptest() {
+    oe_runmake -C ${B}/tests check TESTS=
+}
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+
+    for d in . mpz mpn mpf mpq rand misc cxx; do
+        install -d ${D}${PTEST_PATH}/tests/$d
+        find ${B}/tests/$d -maxdepth 1 -type f -executable \
+            ! -name "*.la" | while read -r t; do
+            ${B}/libtool --mode=install install -m 0755 "$t" ${D}${PTEST_PATH}/tests/$d/
+        done
+    done
+}