* [PATCH 0/7] riscv64 ptest fixes
@ 2026-10-16 20:45 OOHehir
2026-10-16 20:45 ` [PATCH 1/7] strace: skip qual_fault-syscall.test on riscv64 OOHehir
` (7 more replies)
0 siblings, 8 replies; 19+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir
This series re-enables the strace, python3 & tcl8 ptests on riscv64 & fixes the
three riscv64 failures that are not timeouts: lttng-tools, tcl/tcl8 &
python3-numpy. Patches 2, 3 & 6 only edit the riscv64 lists in
ptest-packagelists.inc; patch 1 skips one slow strace test on riscv64 &
patches 4, 5 & 7 carry the fixes.
I sent these results to Khem Raj & Trevor Gamblin before posting. Trevor
suggested profiling the per-test durations under QEMU first; patch 1 skips
the slowest test found (see "Per-test durations" below).
Where to look:
- Patch 7 works round a confirmed GCC 15+ bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127908
GCC moves the float-to-integer conversion above the range check in its
inline ceil/floor/trunc, so ceil(+-inf) raises FE_INVALID.
-fno-fp-int-builtin-inexact makes GCC call libm instead.
- Patch 4 carries an lttng-tools fix under review upstream:
https://review.lttng.org/c/lttng-tools/+/18903
- Patch 5 skips binary-40.3, which expects a negative float NaN to stay negative
when widened to double. RISC-V returns the positive canonical NaN, as the ISA
requires. Reported on an existing MIPS ticket:
https://core.tcl-lang.org/tcl/tktview/bf029ced86
Testing:
- qemuriscv64: testimage of core-image-ptest-<pkg> with the autobuilder's
PTEST_RUNNER_TIMEOUT of 450 s (a test is killed after 450 s without output),
on my machine, a Xeon E5-1680 v3 from 2014 (a plough-horse rather than a
stallion). An autobuilder worker will be faster per core, but busier.
- VisionFive 2 v1.3B (JH7110, 4x U74, 8 GB): each package in
core-image-minimal, ptest-runner -t 1800.
package qemuriscv64 VisionFive 2
strace 1081 pass, 0 fail, 24 min 1212 pass, 0 fail
python3 44546 pass, 0 fail, 71 min 44698 pass, 0 fail
tcl8 152 pass, 0 fail, 10 min only failure was binary-40.3
Per-test durations under QEMU (TCG), as the longest time without output is
what the 450 s limit measures:
- strace (make -j4, every output line timestamped): the longest gap is 283 s,
ending with qual_fault-syscall.test, which patch 1 skips on riscv64. Next are
filtering_syscall-syntax.test (139 s), trace_creds.gen.test (90 s) &
strace--tips-full.test (65 s); the rest are under 50 s.
- python3: regrtest -j4 prints a progress line at least every 30 s, so the
longest gap in the full run is around 30 s. Its slowest modules
(test_concurrent_futures.test_process_pool, about 17 min, & the
test_multiprocessing_* modules, 6-11 min) are made of many short cases: run
one at a time, no single case takes over 71 s (MiscTestCase.test_large_pool,
69-71 s in each start method). So I have not skipped anything there.
- tcl8: tcltest prints once per test file. The longest is reg.test (115 s),
then regexp.test (70 s) & io.test (45 s).
Still parked: tcl, lttng-tools, perl, python3-cffi, libpcap & zstd pass, but
are too slow for the 450 s limit on my machine. Under TCG (QEMU's software CPU
emulation), ptest-runner kills tcl in unicodeNormalize.test, lttng-tools in
test_valid_filter, perl in t/re/regexp_qr_embed_thr (485 s alone, so perl may
pass on a faster worker) & python3-cffi, each after 450 s without output.
libpcap's run-ptest prints nothing until TESTrun finishes, which takes 9.5 min
even on the board. zstd's compression/window-resize.sh exceeds the 200 s
per-case limit in cli-tests.
To confirm that these fail only on time, I reran them under QEMU with this
series, PTEST_RUNNER_TIMEOUT = "7200" & the cli-tests limit raised to 3600 s
(local changes, not in this series). All passed with 0 failures, as they do on
the board:
zstd 43 pass 10 min
libpcap 14801 pass 24 min
tcl 175 test files 46 min
lttng-tools 2088 pass 85 min
python3-numpy 45769 pass 104 min
python3-cffi 1724 pass 187 min
perl 2729 pass 219 min
python3-numpy stays parked too: patch 7 fixes its only failure (72 cases of
test_unary_spurious_fpexception), but under the 450 s limit numpy 2.5.4 is
killed before pytest prints its first result.
glib-2.0 is left parked. It passed one run on QEMU (308 pass, 31 min) & on the
board, but it was parked for intermittent failures, which one run cannot rule
out:
https://bugzilla.yoctoproject.org/show_bug.cgi?id=15891
https://bugzilla.yoctoproject.org/show_bug.cgi?id=16230
The numpy results above are for 2.5.3, before the rebase. numpy 2.5.4 with
patch 7, under QEMU with the 7200 s limit: 45993 pass, 0 fail, 87 min. One
earlier 2.5.4 run had a single failure, a wall-clock check in f2py
(test_nameargspattern_backtracking) that requires a regex search to take under
0.2 s & measured 0.22 s under TCG; it passed on the rerun.
OOHehir (7):
strace: skip qual_fault-syscall.test on riscv64
ptest-packagelists.inc: re-enable strace for riscv64
ptest-packagelists.inc: re-enable python3 for riscv64
lttng-tools: skip kernel cases when kernel tests are disabled
tcl, tcl8: skip binary-40.3 on RISC-V
ptest-packagelists.inc: re-enable tcl8 for riscv64
python3-numpy: call libm for ceil/floor/trunc on riscv64
.../distro/include/ptest-packagelists.inc | 7 +-
.../python/python3-numpy_2.5.4.bb | 7 ++
meta/recipes-devtools/strace/strace_7.2.bb | 13 +++
meta/recipes-devtools/tcltk/tcl/run-ptest | 5 +
meta/recipes-devtools/tcltk8/tcl8/run-ptest | 5 +
...our-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch | 108 ++++++++++++++++++
.../lttng/lttng-tools_2.16.0.bb | 1 +
7 files changed, 141 insertions(+), 5 deletions(-)
create mode 100644 meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
--
2.43.0
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 1/7] strace: skip qual_fault-syscall.test on riscv64
2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
@ 2026-10-16 20:45 ` OOHehir
2026-10-16 20:45 ` [PATCH 2/7] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
` (6 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir
On qemuriscv64, the strace ptest goes 283 s without output while
qual_fault-syscall.test finishes. That is 63% of the 450 s ptest-runner
limit, leaving little margin on a loaded autobuilder, so skip it there
before strace is re-enabled for riscv64.
The longest gaps between outputs in core-image-ptest-strace on
qemuriscv64 (make -j4, every output line timestamped), with the test
that ended each:
- qual_fault-syscall.test (283 s)
- filtering_syscall-syntax.test (139 s)
- trace_creds.gen.test (90 s)
- strace--tips-full.test (65 s)
The rest are under 50 s.
strace is not machine-specific, so the skip is keyed on riscv64, as the
gnutls skips in cc848c403a are. It therefore also applies to riscv64
hardware, where the test passes (VisionFive 2).
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/recipes-devtools/strace/strace_7.2.bb | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/meta/recipes-devtools/strace/strace_7.2.bb b/meta/recipes-devtools/strace/strace_7.2.bb
index 451ffa6f88..2d6dcb8c75 100644
--- a/meta/recipes-devtools/strace/strace_7.2.bb
+++ b/meta/recipes-devtools/strace/strace_7.2.bb
@@ -57,6 +57,19 @@ do_install_ptest() {
-i ${D}/${PTEST_PATH}/${TESTDIR}/Makefile
}
+# Tests that go too long without output under QEMU for the qemuriscv64 ptest
+# runs. strace is not machine-specific, so this also skips them on riscv64
+# hardware.
+STRACE_PTEST_SKIP ?= ""
+STRACE_PTEST_SKIP:riscv64 = "qual_fault-syscall"
+
+do_install_ptest:append() {
+ for t in ${STRACE_PTEST_SKIP}; do
+ sed -i -e '1a . "${srcdir=.}/init.sh"\nskip_ "Too slow under QEMU on riscv64"' \
+ ${D}${PTEST_PATH}/${TESTDIR}/$t.test
+ done
+}
+
RDEPENDS:${PN}-ptest += "make coreutils grep gawk sed locale-base-en-us"
BBCLASSEXTEND = "native"
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 2/7] ptest-packagelists.inc: re-enable strace for riscv64
2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
2026-10-16 20:45 ` [PATCH 1/7] strace: skip qual_fault-syscall.test on riscv64 OOHehir
@ 2026-10-16 20:45 ` OOHehir
2026-10-16 20:45 ` [PATCH 3/7] ptest-packagelists.inc: re-enable python3 " OOHehir
` (5 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir
strace was parked with the other failing riscv64 ptests in 22736c5281 &
passes now. core-image-ptest-strace on qemuriscv64, with the previous
commit: 1081 pass, 0 fail, in 24 min. On a VisionFive 2 (JH7110): 1212
pass, 0 fail.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/conf/distro/include/ptest-packagelists.inc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 2bd11b1706..5e99b59d4a 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -167,8 +167,8 @@ PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
PTESTS_SLOW:append:libc-musl = " libc-test"
# These tests don't yet pass for riscv64
-PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi strace lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
-PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi strace lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
# These tests don't yet pass for musl qemuarm64
PTESTS_SLOW:remove:libc-musl:qemuarm64 = "strace perl gnutls glib-2.0"
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 3/7] ptest-packagelists.inc: re-enable python3 for riscv64
2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
2026-10-16 20:45 ` [PATCH 1/7] strace: skip qual_fault-syscall.test on riscv64 OOHehir
2026-10-16 20:45 ` [PATCH 2/7] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
@ 2026-10-16 20:45 ` OOHehir
2026-10-16 20:45 ` [PATCH 4/7] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
` (4 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir
python3 was parked in adc448b19e because it hung on qemuriscv64, still
running after 42000 s. It no longer hangs. core-image-ptest-python3 on
qemuriscv64, in two runs: 44546 & 44548 pass, 0 fail, 71 min each. On a
VisionFive 2 (JH7110): 44698 pass, 0 fail.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/conf/distro/include/ptest-packagelists.inc | 3 ---
1 file changed, 3 deletions(-)
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 5e99b59d4a..97c6e35050 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -159,9 +159,6 @@ PTESTS_SLOW = "\
zstd \
"
-# python3 ptests hang on qemuriscv64
-PTESTS_SLOW:remove:riscv64 = "python3"
-PTESTS_PROBLEMS:append:riscv64 = " python3"
PTESTS_SLOW:remove:riscv32 = "lttng-tools strace "
PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
PTESTS_SLOW:append:libc-musl = " libc-test"
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 4/7] lttng-tools: skip kernel cases when kernel tests are disabled
2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
` (2 preceding siblings ...)
2026-10-16 20:45 ` [PATCH 3/7] ptest-packagelists.inc: re-enable python3 " OOHehir
@ 2026-10-16 20:45 ` OOHehir
2026-10-16 20:45 ` [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
` (3 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir
run-ptest sets LTTNG_TOOLS_DISABLE_KERNEL_TESTS when lttng-modules is not
installed, as on riscv64, but kernel/test_event_disable.py &
tools/save-load/test_save_load.py check only for root & fail with "Kernel
tracer not available". Carry the fix sent upstream.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
...our-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch | 108 ++++++++++++++++++
.../lttng/lttng-tools_2.16.0.bb | 1 +
2 files changed, 109 insertions(+)
create mode 100644 meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
new file mode 100644
index 0000000000..ca041e8da8
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
@@ -0,0 +1,108 @@
+From f56f36ecd7481d96c99876e8a6f4a609197e7132 Mon Sep 17 00:00:00 2001
+From: OOHehir <oo.hehir@gmail.com>
+Date: Tue, 13 Oct 2026 09:41:51 +0100
+Subject: [PATCH] Fix: tests: honour LTTNG_TOOLS_DISABLE_KERNEL_TESTS in two
+ Python tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+OBSERVED ISSUE
+━━━━━━━━━━━━━━
+On a target without lttng-modules, kernel/test_event_disable.py & the
+kernel cases of tools/save-load/test_save_load.py fail with "Kernel tracer
+not available", although the test run sets LTTNG_TOOLS_DISABLE_KERNEL_TESTS=1.
+Observed with the Yocto Project ptest on riscv64, which ships no lttng-modules.
+
+CAUSE
+━━━━━
+Both scripts only check that they run as root before running kernel cases,
+while the other Python tests use lttngtest._Environment.run_kernel_tests(),
+which also honours LTTNG_TOOLS_DISABLE_KERNEL_TESTS.
+
+SOLUTION
+━━━━━━━━
+Use run_kernel_tests() in both scripts. It checks for root as before, & also
+honours LTTNG_TOOLS_DISABLE_KERNEL_TESTS.
+
+Under review on Gerrit: https://review.lttng.org/c/lttng-tools/+/18903
+
+Upstream-Status: Submitted [https://lists.lttng.org/pipermail/lttng-dev/2026-October/031100.html]
+Signed-off-by: OOHehir <oo.hehir@gmail.com>
+---
+ tests/regression/kernel/test_event_disable.py | 7 ++-----
+ tests/regression/tools/save-load/test_save_load.py | 9 ++++-----
+ 2 files changed, 6 insertions(+), 10 deletions(-)
+
+diff --git a/tests/regression/kernel/test_event_disable.py b/tests/regression/kernel/test_event_disable.py
+index da9f146..a373544 100755
+--- a/tests/regression/kernel/test_event_disable.py
++++ b/tests/regression/kernel/test_event_disable.py
+@@ -15,7 +15,6 @@ Validates that disabling events works correctly:
+ - Disabling by name disables all matching rules regardless of filters
+ """
+
+-import os
+ import pathlib
+ import sys
+ import traceback
+@@ -307,11 +306,9 @@ if __name__ == "__main__":
+ ),
+ ]
+
+- is_root = os.getuid() == 0
+-
+- if not is_root:
++ if not lttngtest._Environment.run_kernel_tests():
+ tap = lttngtest.TapGenerator(len(kernel_tests))
+- tap.skip_all_remaining("Kernel tests require root privileges")
++ tap.skip_all_remaining("Kernel tests not enabled")
+ sys.exit(0)
+
+ tap = lttngtest.TapGenerator(len(kernel_tests))
+diff --git a/tests/regression/tools/save-load/test_save_load.py b/tests/regression/tools/save-load/test_save_load.py
+index 9dd8042..1983263 100755
+--- a/tests/regression/tools/save-load/test_save_load.py
++++ b/tests/regression/tools/save-load/test_save_load.py
+@@ -13,7 +13,6 @@ through save/load cycles, including:
+ - Kernel syscalls and tracepoints
+ """
+
+-import os
+ import pathlib
+ import sys
+ import traceback
+@@ -953,11 +952,11 @@ if __name__ == "__main__":
+ ),
+ ]
+
+- is_root = os.getuid() == 0
++ run_kernel_tests = lttngtest._Environment.run_kernel_tests()
+ allows_destructive = lttngtest._Environment.allows_destructive()
+
+ total_tests = len(user_tests) + len(agent_tests)
+- if is_root:
++ if run_kernel_tests:
+ total_tests += len(kernel_tests)
+ if allows_destructive:
+ total_tests += len(destructive_kernel_tests)
+@@ -971,7 +970,7 @@ if __name__ == "__main__":
+ for test_name, test_func, kwargs in agent_tests:
+ run_test(tap, test_env, test_func, test_name, **kwargs)
+
+- if is_root:
++ if run_kernel_tests:
+ with lttngtest.test_environment(
+ with_sessiond=True, log=tap.diagnostic, enable_kernel_domain=True
+ ) as test_env:
+@@ -986,6 +985,6 @@ if __name__ == "__main__":
+ "Skipping destructive kernel tests (LTTNG_ENABLE_DESTRUCTIVE_TESTS not set)"
+ )
+ else:
+- tap.diagnostic("Skipping kernel tests (not running as root)")
++ tap.diagnostic("Skipping kernel tests (not enabled)")
+
+ sys.exit(0 if tap.is_successful else 1)
+--
+2.43.0
+
diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb b/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
index cfc16ed6c7..347bdcc273 100644
--- a/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
+++ b/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
@@ -72,6 +72,7 @@ SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \
file://disable-tests2.patch \
file://0001-m4-ax_am_macros_static.m4-do-not-write-generation-da.patch \
file://muslfix.patch \
+ file://0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch \
"
SRC_URI[sha256sum] = "b8b3244894e49e773d4942b8899f768057974edf75c18dbb48b65bb123c7b2c7"
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V
2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
` (3 preceding siblings ...)
2026-10-16 20:45 ` [PATCH 4/7] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
@ 2026-10-16 20:45 ` OOHehir
2026-10-17 10:29 ` [OE-core] " Mathieu Dubois-Briand
2026-10-16 20:45 ` [PATCH 6/7] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
` (2 subsequent siblings)
7 siblings, 1 reply; 19+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir
binary-40.3 expects a negative float NaN to stay negative when widened to
double. RISC-V returns the positive canonical NaN instead, as the ISA requires,
so the test always fails there. Reported upstream on the matching MIPS ticket.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/recipes-devtools/tcltk/tcl/run-ptest | 5 +++++
meta/recipes-devtools/tcltk8/tcl8/run-ptest | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/meta/recipes-devtools/tcltk/tcl/run-ptest b/meta/recipes-devtools/tcltk/tcl/run-ptest
index 18e03716e3..6991873978 100644
--- a/meta/recipes-devtools/tcltk/tcl/run-ptest
+++ b/meta/recipes-devtools/tcltk/tcl/run-ptest
@@ -38,6 +38,11 @@ SKIP="$SKIP httpProxy-\*"
SKIP="$SKIP mutex-condition-\*"
# Timer-related tests are going to be fragile (16324)
SKIP="$SKIP timer-\*"
+# RISC-V widens a negative float NaN to the positive canonical NaN, so the
+# sign check fails: https://core.tcl-lang.org/tcl/tktview/bf029ced86
+case "$(uname -m)" in
+riscv*) SKIP="$SKIP binary-40.3" ;;
+esac
# Run all tests in tests/*.test unless tests are specified as arguments
TESTS=${*:-tests/*.test}
diff --git a/meta/recipes-devtools/tcltk8/tcl8/run-ptest b/meta/recipes-devtools/tcltk8/tcl8/run-ptest
index 40666ef851..aa0959f013 100644
--- a/meta/recipes-devtools/tcltk8/tcl8/run-ptest
+++ b/meta/recipes-devtools/tcltk8/tcl8/run-ptest
@@ -36,6 +36,11 @@ SKIP="$SKIP http11-\*"
SKIP="$SKIP httpProxy-\*"
# Timer-related tests are going to be fragile (16324)
SKIP="$SKIP timer-\*"
+# RISC-V widens a negative float NaN to the positive canonical NaN, so the
+# sign check fails: https://core.tcl-lang.org/tcl/tktview/bf029ced86
+case "$(uname -m)" in
+riscv*) SKIP="$SKIP binary-40.3" ;;
+esac
# Run all tests in tests/*.test unless tests are specified as arguments
TESTS=${*:-tests/*.test}
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 6/7] ptest-packagelists.inc: re-enable tcl8 for riscv64
2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
` (4 preceding siblings ...)
2026-10-16 20:45 ` [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
@ 2026-10-16 20:45 ` OOHehir
2026-10-16 20:45 ` [PATCH 7/7] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir
The previous commit skips binary-40.3, its only failure on riscv64.
core-image-ptest-tcl8 on qemuriscv64: 152 pass, 0 fail, 607 s. On a
VisionFive 2 (JH7110), binary-40.3 was the only failure.
tcl stays parked: under TCG, unicodeNormalize.test prints nothing for more
than 450 s & ptest-runner kills it. The binary-40.3 skip still helps tcl on
hardware.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/conf/distro/include/ptest-packagelists.inc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 97c6e35050..1b76023621 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -164,8 +164,8 @@ PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
PTESTS_SLOW:append:libc-musl = " libc-test"
# These tests don't yet pass for riscv64
-PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
-PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_SLOW:remove:riscv64 = "tcl python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_PROBLEMS:append:riscv64 = " tcl python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
# These tests don't yet pass for musl qemuarm64
PTESTS_SLOW:remove:libc-musl:qemuarm64 = "strace perl gnutls glib-2.0"
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 7/7] python3-numpy: call libm for ceil/floor/trunc on riscv64
2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
` (5 preceding siblings ...)
2026-10-16 20:45 ` [PATCH 6/7] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
@ 2026-10-16 20:45 ` OOHehir
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-16 20:45 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, OOHehir
numpy builds with -std=c11, so GCC 15 onwards expands ceil/floor/trunc
inline on riscv64, & its first scheduling pass moves the fcvt above the
|x| < 2^52 check. ceil(+-inf) & ceil(1e300) then raise FE_INVALID, & the
72 cases of test_unary_spurious_fpexception fail. Confirmed as
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127908.
-fno-fp-int-builtin-inexact makes GCC call libm, which handles these
inputs correctly. python3-numpy-ptest on a VisionFive 2 (JH7110), with
2.5.3: 45770 pass, 0 fail. On qemuriscv64 with PTEST_RUNNER_TIMEOUT = "7200",
with 2.5.4: 45993 pass, 0 fail.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/recipes-devtools/python/python3-numpy_2.5.4.bb | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/meta/recipes-devtools/python/python3-numpy_2.5.4.bb b/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
index 93aa356db1..192ae3fe75 100644
--- a/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
+++ b/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
@@ -26,6 +26,13 @@ PACKAGECONFIG[svml] = "-Ddisable-svml=false,-Ddisable-svml=true"
# the overflow tests fail with compiler-rt on aarch64
LDFLAGS:append:toolchain-clang:aarch64 = " -rtlib=libgcc -unwindlib=libgcc"
+# GCC 15 onwards expands ceil/floor/trunc inline on riscv64 but runs the fcvt
+# before the range check, so +-inf raises FE_INVALID & numpy's
+# test_unary_spurious_fpexception fails. Make it call libm instead.
+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127908
+CFLAGS:append:toolchain-gcc:riscv64 = " -fno-fp-int-builtin-inexact"
+CXXFLAGS:append:toolchain-gcc:riscv64 = " -fno-fp-int-builtin-inexact"
+
# To ensure reproducibility, remove entries from __config__ which expose build
# machine details, such as build paths, host paths, and hardware configuration.
strip_build_info() {
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [OE-core] [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V
2026-10-16 20:45 ` [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
@ 2026-10-17 10:29 ` Mathieu Dubois-Briand
2026-10-17 11:21 ` Owen O'Hehir
0 siblings, 1 reply; 19+ messages in thread
From: Mathieu Dubois-Briand @ 2026-10-17 10:29 UTC (permalink / raw)
To: oo.hehir, openembedded-core; +Cc: raj.khem, tgamblin
On Fri Oct 16, 2026 at 10:45 PM CEST, OOHehir via lists.openembedded.org wrote:
> binary-40.3 expects a negative float NaN to stay negative when widened to
> double. RISC-V returns the positive canonical NaN instead, as the ISA requires,
> so the test always fails there. Reported upstream on the matching MIPS ticket.
>
> Signed-off-by: OOHehir <oo.hehir@gmail.com>
> ---
Hi,
Thanks for your patch. Something looks wrong here, tcl/tcl8 ptests
started to fail on non-riscv architectures with a syntax error:
AssertionError:
Failed ptests:
{'tcl': 'START: ptest-runner\n'
'2026-10-17T09:16\n'
'/usr/lib/tcl/ptest/run-ptest: line 73: syntax error: unexpected '
'newline (expecting ")")\n'
'\n'
'ERROR: Exit status is 2\n'
'DURATION: 0\n'}
ptests which had no test results:
['tcl']
Failed ptests:
{'tcl8': 'START: ptest-runner\n'
'2026-10-17T09:16\n'
'/usr/lib/tcl8/ptest/run-ptest: line 69: syntax error: unexpected '
'newline (expecting ")")\n'
'\n'
'ERROR: Exit status is 2\n'
'DURATION: 0\n'}
ptests which had no test results:
['tcl8']
https://autobuilder.yoctoproject.org/valkyrie/#/builders/109/builds/1396
https://autobuilder.yoctoproject.org/valkyrie/#/builders/110/builds/1385
Can you have a look at the issue?
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [OE-core] [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V
2026-10-17 10:29 ` [OE-core] " Mathieu Dubois-Briand
@ 2026-10-17 11:21 ` Owen O'Hehir
0 siblings, 0 replies; 19+ messages in thread
From: Owen O'Hehir @ 2026-10-17 11:21 UTC (permalink / raw)
To: openembedded-core, mathieu.dubois-briand; +Cc: Khem Raj, Trevor Gamblin
Hello Mathieu,
Thanks for this. It looks like it was in the musl build during
do_install_ptest:append:libc-musl. I've modified the tcl recipes' sed
so it only matches at the start of the line. I ran some tests locally
& was able to recreate the issue. My v2 patches now build & install a
valid run-ptest on musl & glibc. I will send v2 of the series shortly.
Regards,
Owen
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 0/8] riscv64 ptest fixes
2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
` (6 preceding siblings ...)
2026-10-16 20:45 ` [PATCH 7/7] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
@ 2026-10-17 11:23 ` OOHehir
2026-10-17 11:23 ` [PATCH v2 1/8] strace: skip qual_fault-syscall.test on riscv64 OOHehir
` (7 more replies)
7 siblings, 8 replies; 19+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir
From: OOHehir <40183643+OOHehir@users.noreply.github.com>
Changes in v2:
- New patch 5: on musl, the tcl & tcl8 recipes add a skip after every line
containing SKIP="$SKIP, so v1's skip inside a case arm left run-ptest with a
syntax error (reported by Mathieu Dubois-Briand). Building tcl & tcl8 to
do_install_ptest_base for qemux86-64 & syntax-checking the installed
run-ptest: v1 reproduces the autobuilder error on musl, v2 passes on musl &
glibc.
- Patches 1 & 8: shorter recipe comments, no functional change.
This series re-enables the strace, python3 & tcl8 ptests on riscv64 & fixes the
three riscv64 failures that are not timeouts: lttng-tools, tcl/tcl8 &
python3-numpy. Patches 2, 3 & 7 only edit the riscv64 lists in
ptest-packagelists.inc; patch 1 skips one slow strace test on riscv64 &
patches 4, 6 & 8 carry the fixes. Patch 5 makes the tcl recipes'
musl sed safe for patch 6.
I sent these results to Khem Raj & Trevor Gamblin before posting. Trevor
suggested profiling the per-test durations under QEMU first; patch 1 skips
the slowest test found (see "Per-test durations" below).
Where to look:
- Patch 8 works round a confirmed GCC 15+ bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127908
GCC moves the float-to-integer conversion above the range check in its
inline ceil/floor/trunc, so ceil(+-inf) raises FE_INVALID.
-fno-fp-int-builtin-inexact makes GCC call libm instead.
- Patch 4 carries an lttng-tools fix under review upstream:
https://review.lttng.org/c/lttng-tools/+/18903
- Patch 6 skips binary-40.3, which expects a negative float NaN to stay negative
when widened to double. RISC-V returns the positive canonical NaN, as the ISA
requires. Reported on an existing MIPS ticket:
https://core.tcl-lang.org/tcl/tktview/bf029ced86
Testing:
- qemuriscv64: testimage of core-image-ptest-<pkg> with the autobuilder's
PTEST_RUNNER_TIMEOUT of 450 s (a test is killed after 450 s without output),
on my machine, a Xeon E5-1680 v3 from 2014 (a plough-horse rather than a
stallion). An autobuilder worker will be faster per core, but busier.
- VisionFive 2 v1.3B (JH7110, 4x U74, 8 GB): each package in
core-image-minimal, ptest-runner -t 1800.
package qemuriscv64 VisionFive 2
strace 1081 pass, 0 fail, 24 min 1212 pass, 0 fail
python3 44546 pass, 0 fail, 71 min 44698 pass, 0 fail
tcl8 152 pass, 0 fail, 10 min only failure was binary-40.3
Per-test durations under QEMU (TCG), as the longest time without output is
what the 450 s limit measures:
- strace (make -j4, every output line timestamped): the longest gap is 283 s,
ending with qual_fault-syscall.test, which patch 1 skips on riscv64. Next are
filtering_syscall-syntax.test (139 s), trace_creds.gen.test (90 s) &
strace--tips-full.test (65 s); the rest are under 50 s.
- python3: regrtest -j4 prints a progress line at least every 30 s, so the
longest gap in the full run is around 30 s. Its slowest modules
(test_concurrent_futures.test_process_pool, about 17 min, & the
test_multiprocessing_* modules, 6-11 min) are made of many short cases: run
one at a time, no single case takes over 71 s (MiscTestCase.test_large_pool,
69-71 s in each start method). So I have not skipped anything there.
- tcl8: tcltest prints once per test file. The longest is reg.test (115 s),
then regexp.test (70 s) & io.test (45 s).
Still parked: tcl, lttng-tools, perl, python3-cffi, libpcap & zstd pass, but
are too slow for the 450 s limit on my machine. Under TCG (QEMU's software CPU
emulation), ptest-runner kills tcl in unicodeNormalize.test, lttng-tools in
test_valid_filter, perl in t/re/regexp_qr_embed_thr (485 s alone, so perl may
pass on a faster worker) & python3-cffi, each after 450 s without output.
libpcap's run-ptest prints nothing until TESTrun finishes, which takes 9.5 min
even on the board. zstd's compression/window-resize.sh exceeds the 200 s
per-case limit in cli-tests.
To confirm that these fail only on time, I reran them under QEMU with this
series, PTEST_RUNNER_TIMEOUT = "7200" & the cli-tests limit raised to 3600 s
(local changes, not in this series). All passed with 0 failures, as they do on
the board:
zstd 43 pass 10 min
libpcap 14801 pass 24 min
tcl 175 test files 46 min
lttng-tools 2088 pass 85 min
python3-numpy 45769 pass 104 min
python3-cffi 1724 pass 187 min
perl 2729 pass 219 min
python3-numpy stays parked too: patch 8 fixes its only failure (72 cases of
test_unary_spurious_fpexception), but under the 450 s limit numpy 2.5.4 is
killed before pytest prints its first result.
glib-2.0 is left parked. It passed one run on QEMU (308 pass, 31 min) & on the
board, but it was parked for intermittent failures, which one run cannot rule
out:
https://bugzilla.yoctoproject.org/show_bug.cgi?id=15891
https://bugzilla.yoctoproject.org/show_bug.cgi?id=16230
The numpy results above are for 2.5.3, before the rebase. numpy 2.5.4 with
patch 8, under QEMU with the 7200 s limit: 45993 pass, 0 fail, 87 min. One
earlier 2.5.4 run had a single failure, a wall-clock check in f2py
(test_nameargspattern_backtracking) that requires a regex search to take under
0.2 s & measured 0.22 s under TCG; it passed on the rerun.
OOHehir (8):
strace: skip qual_fault-syscall.test on riscv64
ptest-packagelists.inc: re-enable strace for riscv64
ptest-packagelists.inc: re-enable python3 for riscv64
lttng-tools: skip kernel cases when kernel tests are disabled
tcl, tcl8: anchor the musl unixInit-3 skip to top-level SKIP lines
tcl, tcl8: skip binary-40.3 on RISC-V
ptest-packagelists.inc: re-enable tcl8 for riscv64
python3-numpy: call libm for ceil/floor/trunc on riscv64
.../distro/include/ptest-packagelists.inc | 7 +-
.../python/python3-numpy_2.5.4.bb | 5 +
meta/recipes-devtools/strace/strace_7.2.bb | 12 ++
meta/recipes-devtools/tcltk/tcl/run-ptest | 5 +
meta/recipes-devtools/tcltk/tcl_9.1.0.bb | 2 +-
meta/recipes-devtools/tcltk8/tcl8/run-ptest | 5 +
meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb | 2 +-
...our-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch | 108 ++++++++++++++++++
.../lttng/lttng-tools_2.16.0.bb | 1 +
9 files changed, 140 insertions(+), 7 deletions(-)
create mode 100644 meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
--
2.43.0
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 1/8] strace: skip qual_fault-syscall.test on riscv64
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
@ 2026-10-17 11:23 ` OOHehir
2026-10-17 11:23 ` [PATCH v2 2/8] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
` (6 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir
On qemuriscv64, the strace ptest goes 283 s without output while
qual_fault-syscall.test finishes. That is 63% of the 450 s ptest-runner
limit, leaving little margin on a loaded autobuilder, so skip it there
before strace is re-enabled for riscv64.
The longest gaps between outputs in core-image-ptest-strace on
qemuriscv64 (make -j4, every output line timestamped), with the test
that ended each:
- qual_fault-syscall.test (283 s)
- filtering_syscall-syntax.test (139 s)
- trace_creds.gen.test (90 s)
- strace--tips-full.test (65 s)
The rest are under 50 s.
strace is not machine-specific, so the skip is keyed on riscv64, as the
gnutls skips in cc848c403a are. It therefore also applies to riscv64
hardware, where the test passes (VisionFive 2).
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/recipes-devtools/strace/strace_7.2.bb | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/meta/recipes-devtools/strace/strace_7.2.bb b/meta/recipes-devtools/strace/strace_7.2.bb
index 451ffa6f88..3f7aaab3e6 100644
--- a/meta/recipes-devtools/strace/strace_7.2.bb
+++ b/meta/recipes-devtools/strace/strace_7.2.bb
@@ -57,6 +57,18 @@ do_install_ptest() {
-i ${D}/${PTEST_PATH}/${TESTDIR}/Makefile
}
+# Too long without output for ptest-runner on qemuriscv64. Keyed on riscv64, as
+# strace is not machine-specific, so also skipped on riscv64 hardware.
+STRACE_PTEST_SKIP ?= ""
+STRACE_PTEST_SKIP:riscv64 = "qual_fault-syscall"
+
+do_install_ptest:append() {
+ for t in ${STRACE_PTEST_SKIP}; do
+ sed -i -e '1a . "${srcdir=.}/init.sh"\nskip_ "Too slow under QEMU on riscv64"' \
+ ${D}${PTEST_PATH}/${TESTDIR}/$t.test
+ done
+}
+
RDEPENDS:${PN}-ptest += "make coreutils grep gawk sed locale-base-en-us"
BBCLASSEXTEND = "native"
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 2/8] ptest-packagelists.inc: re-enable strace for riscv64
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
2026-10-17 11:23 ` [PATCH v2 1/8] strace: skip qual_fault-syscall.test on riscv64 OOHehir
@ 2026-10-17 11:23 ` OOHehir
2026-10-17 11:23 ` [PATCH v2 3/8] ptest-packagelists.inc: re-enable python3 " OOHehir
` (5 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir
strace was parked with the other failing riscv64 ptests in 22736c5281 &
passes now. core-image-ptest-strace on qemuriscv64, with the previous
commit: 1081 pass, 0 fail, in 24 min. On a VisionFive 2 (JH7110): 1212
pass, 0 fail.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/conf/distro/include/ptest-packagelists.inc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 2bd11b1706..5e99b59d4a 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -167,8 +167,8 @@ PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
PTESTS_SLOW:append:libc-musl = " libc-test"
# These tests don't yet pass for riscv64
-PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi strace lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
-PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi strace lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
# These tests don't yet pass for musl qemuarm64
PTESTS_SLOW:remove:libc-musl:qemuarm64 = "strace perl gnutls glib-2.0"
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 3/8] ptest-packagelists.inc: re-enable python3 for riscv64
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
2026-10-17 11:23 ` [PATCH v2 1/8] strace: skip qual_fault-syscall.test on riscv64 OOHehir
2026-10-17 11:23 ` [PATCH v2 2/8] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
@ 2026-10-17 11:23 ` OOHehir
2026-10-17 11:23 ` [PATCH v2 4/8] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
` (4 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir
python3 was parked in adc448b19e because it hung on qemuriscv64, still
running after 42000 s. It no longer hangs. core-image-ptest-python3 on
qemuriscv64, in two runs: 44546 & 44548 pass, 0 fail, 71 min each. On a
VisionFive 2 (JH7110): 44698 pass, 0 fail.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/conf/distro/include/ptest-packagelists.inc | 3 ---
1 file changed, 3 deletions(-)
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 5e99b59d4a..97c6e35050 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -159,9 +159,6 @@ PTESTS_SLOW = "\
zstd \
"
-# python3 ptests hang on qemuriscv64
-PTESTS_SLOW:remove:riscv64 = "python3"
-PTESTS_PROBLEMS:append:riscv64 = " python3"
PTESTS_SLOW:remove:riscv32 = "lttng-tools strace "
PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
PTESTS_SLOW:append:libc-musl = " libc-test"
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 4/8] lttng-tools: skip kernel cases when kernel tests are disabled
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
` (2 preceding siblings ...)
2026-10-17 11:23 ` [PATCH v2 3/8] ptest-packagelists.inc: re-enable python3 " OOHehir
@ 2026-10-17 11:23 ` OOHehir
2026-10-17 11:23 ` [PATCH v2 5/8] tcl, tcl8: anchor the musl unixInit-3 skip to top-level SKIP lines OOHehir
` (3 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir
run-ptest sets LTTNG_TOOLS_DISABLE_KERNEL_TESTS when lttng-modules is not
installed, as on riscv64, but kernel/test_event_disable.py &
tools/save-load/test_save_load.py check only for root & fail with "Kernel
tracer not available". Carry the fix sent upstream.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
...our-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch | 108 ++++++++++++++++++
.../lttng/lttng-tools_2.16.0.bb | 1 +
2 files changed, 109 insertions(+)
create mode 100644 meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
new file mode 100644
index 0000000000..ca041e8da8
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch
@@ -0,0 +1,108 @@
+From f56f36ecd7481d96c99876e8a6f4a609197e7132 Mon Sep 17 00:00:00 2001
+From: OOHehir <oo.hehir@gmail.com>
+Date: Tue, 13 Oct 2026 09:41:51 +0100
+Subject: [PATCH] Fix: tests: honour LTTNG_TOOLS_DISABLE_KERNEL_TESTS in two
+ Python tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+OBSERVED ISSUE
+━━━━━━━━━━━━━━
+On a target without lttng-modules, kernel/test_event_disable.py & the
+kernel cases of tools/save-load/test_save_load.py fail with "Kernel tracer
+not available", although the test run sets LTTNG_TOOLS_DISABLE_KERNEL_TESTS=1.
+Observed with the Yocto Project ptest on riscv64, which ships no lttng-modules.
+
+CAUSE
+━━━━━
+Both scripts only check that they run as root before running kernel cases,
+while the other Python tests use lttngtest._Environment.run_kernel_tests(),
+which also honours LTTNG_TOOLS_DISABLE_KERNEL_TESTS.
+
+SOLUTION
+━━━━━━━━
+Use run_kernel_tests() in both scripts. It checks for root as before, & also
+honours LTTNG_TOOLS_DISABLE_KERNEL_TESTS.
+
+Under review on Gerrit: https://review.lttng.org/c/lttng-tools/+/18903
+
+Upstream-Status: Submitted [https://lists.lttng.org/pipermail/lttng-dev/2026-October/031100.html]
+Signed-off-by: OOHehir <oo.hehir@gmail.com>
+---
+ tests/regression/kernel/test_event_disable.py | 7 ++-----
+ tests/regression/tools/save-load/test_save_load.py | 9 ++++-----
+ 2 files changed, 6 insertions(+), 10 deletions(-)
+
+diff --git a/tests/regression/kernel/test_event_disable.py b/tests/regression/kernel/test_event_disable.py
+index da9f146..a373544 100755
+--- a/tests/regression/kernel/test_event_disable.py
++++ b/tests/regression/kernel/test_event_disable.py
+@@ -15,7 +15,6 @@ Validates that disabling events works correctly:
+ - Disabling by name disables all matching rules regardless of filters
+ """
+
+-import os
+ import pathlib
+ import sys
+ import traceback
+@@ -307,11 +306,9 @@ if __name__ == "__main__":
+ ),
+ ]
+
+- is_root = os.getuid() == 0
+-
+- if not is_root:
++ if not lttngtest._Environment.run_kernel_tests():
+ tap = lttngtest.TapGenerator(len(kernel_tests))
+- tap.skip_all_remaining("Kernel tests require root privileges")
++ tap.skip_all_remaining("Kernel tests not enabled")
+ sys.exit(0)
+
+ tap = lttngtest.TapGenerator(len(kernel_tests))
+diff --git a/tests/regression/tools/save-load/test_save_load.py b/tests/regression/tools/save-load/test_save_load.py
+index 9dd8042..1983263 100755
+--- a/tests/regression/tools/save-load/test_save_load.py
++++ b/tests/regression/tools/save-load/test_save_load.py
+@@ -13,7 +13,6 @@ through save/load cycles, including:
+ - Kernel syscalls and tracepoints
+ """
+
+-import os
+ import pathlib
+ import sys
+ import traceback
+@@ -953,11 +952,11 @@ if __name__ == "__main__":
+ ),
+ ]
+
+- is_root = os.getuid() == 0
++ run_kernel_tests = lttngtest._Environment.run_kernel_tests()
+ allows_destructive = lttngtest._Environment.allows_destructive()
+
+ total_tests = len(user_tests) + len(agent_tests)
+- if is_root:
++ if run_kernel_tests:
+ total_tests += len(kernel_tests)
+ if allows_destructive:
+ total_tests += len(destructive_kernel_tests)
+@@ -971,7 +970,7 @@ if __name__ == "__main__":
+ for test_name, test_func, kwargs in agent_tests:
+ run_test(tap, test_env, test_func, test_name, **kwargs)
+
+- if is_root:
++ if run_kernel_tests:
+ with lttngtest.test_environment(
+ with_sessiond=True, log=tap.diagnostic, enable_kernel_domain=True
+ ) as test_env:
+@@ -986,6 +985,6 @@ if __name__ == "__main__":
+ "Skipping destructive kernel tests (LTTNG_ENABLE_DESTRUCTIVE_TESTS not set)"
+ )
+ else:
+- tap.diagnostic("Skipping kernel tests (not running as root)")
++ tap.diagnostic("Skipping kernel tests (not enabled)")
+
+ sys.exit(0 if tap.is_successful else 1)
+--
+2.43.0
+
diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb b/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
index cfc16ed6c7..347bdcc273 100644
--- a/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
+++ b/meta/recipes-kernel/lttng/lttng-tools_2.16.0.bb
@@ -72,6 +72,7 @@ SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \
file://disable-tests2.patch \
file://0001-m4-ax_am_macros_static.m4-do-not-write-generation-da.patch \
file://muslfix.patch \
+ file://0001-tests-honour-LTTNG_TOOLS_DISABLE_KERNEL_TESTS.patch \
"
SRC_URI[sha256sum] = "b8b3244894e49e773d4942b8899f768057974edf75c18dbb48b65bb123c7b2c7"
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 5/8] tcl, tcl8: anchor the musl unixInit-3 skip to top-level SKIP lines
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
` (3 preceding siblings ...)
2026-10-17 11:23 ` [PATCH v2 4/8] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
@ 2026-10-17 11:23 ` OOHehir
2026-10-17 11:23 ` [PATCH v2 6/8] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
` (2 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir
On musl, do_install_ptest adds the unixInit-3 skip after every line of
run-ptest containing SKIP="$SKIP. A SKIP set inside a case arm then gets two
lines between ;; & esac, & run-ptest fails with a syntax error before running
any test. The next commit adds such an arm.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/recipes-devtools/tcltk/tcl_9.1.0.bb | 2 +-
meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/recipes-devtools/tcltk/tcl_9.1.0.bb b/meta/recipes-devtools/tcltk/tcl_9.1.0.bb
index 6e8a97c729..77b6270f22 100644
--- a/meta/recipes-devtools/tcltk/tcl_9.1.0.bb
+++ b/meta/recipes-devtools/tcltk/tcl_9.1.0.bb
@@ -85,7 +85,7 @@ do_install_ptest() {
do_install_ptest:append:libc-musl () {
# Assumes locales other than provided by musl-locales
- sed -i '/SKIP="$SKIP.*$/a # unixInit-3* is suppressed due to hardcoded locale assumptions\nSKIP="$SKIP unixInit-3\\\*"' ${D}${PTEST_PATH}/run-ptest
+ sed -i '/^SKIP="$SKIP.*$/a # unixInit-3* is suppressed due to hardcoded locale assumptions\nSKIP="$SKIP unixInit-3\\\*"' ${D}${PTEST_PATH}/run-ptest
}
# Fix some paths that might be used by Tcl extensions
diff --git a/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb b/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb
index 2094c9935a..9199f635f4 100644
--- a/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb
+++ b/meta/recipes-devtools/tcltk8/tcl8_8.6.18.bb
@@ -86,7 +86,7 @@ do_install_ptest() {
do_install_ptest:append:libc-musl () {
# Assumes locales other than provided by musl-locales
- sed -i '/SKIP="$SKIP.*$/a # unixInit-3* is suppressed due to hardcoded locale assumptions\nSKIP="$SKIP unixInit-3\\\*"' ${D}${PTEST_PATH}/run-ptest
+ sed -i '/^SKIP="$SKIP.*$/a # unixInit-3* is suppressed due to hardcoded locale assumptions\nSKIP="$SKIP unixInit-3\\\*"' ${D}${PTEST_PATH}/run-ptest
}
# Fix some paths that might be used by Tcl extensions
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 6/8] tcl, tcl8: skip binary-40.3 on RISC-V
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
` (4 preceding siblings ...)
2026-10-17 11:23 ` [PATCH v2 5/8] tcl, tcl8: anchor the musl unixInit-3 skip to top-level SKIP lines OOHehir
@ 2026-10-17 11:23 ` OOHehir
2026-10-17 11:23 ` [PATCH v2 7/8] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
2026-10-17 11:23 ` [PATCH v2 8/8] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir
binary-40.3 expects a negative float NaN to stay negative when widened to
double. RISC-V returns the positive canonical NaN instead, as the ISA requires,
so the test always fails there. Reported upstream on the matching MIPS ticket.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/recipes-devtools/tcltk/tcl/run-ptest | 5 +++++
meta/recipes-devtools/tcltk8/tcl8/run-ptest | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/meta/recipes-devtools/tcltk/tcl/run-ptest b/meta/recipes-devtools/tcltk/tcl/run-ptest
index 18e03716e3..6991873978 100644
--- a/meta/recipes-devtools/tcltk/tcl/run-ptest
+++ b/meta/recipes-devtools/tcltk/tcl/run-ptest
@@ -38,6 +38,11 @@ SKIP="$SKIP httpProxy-\*"
SKIP="$SKIP mutex-condition-\*"
# Timer-related tests are going to be fragile (16324)
SKIP="$SKIP timer-\*"
+# RISC-V widens a negative float NaN to the positive canonical NaN, so the
+# sign check fails: https://core.tcl-lang.org/tcl/tktview/bf029ced86
+case "$(uname -m)" in
+riscv*) SKIP="$SKIP binary-40.3" ;;
+esac
# Run all tests in tests/*.test unless tests are specified as arguments
TESTS=${*:-tests/*.test}
diff --git a/meta/recipes-devtools/tcltk8/tcl8/run-ptest b/meta/recipes-devtools/tcltk8/tcl8/run-ptest
index 40666ef851..aa0959f013 100644
--- a/meta/recipes-devtools/tcltk8/tcl8/run-ptest
+++ b/meta/recipes-devtools/tcltk8/tcl8/run-ptest
@@ -36,6 +36,11 @@ SKIP="$SKIP http11-\*"
SKIP="$SKIP httpProxy-\*"
# Timer-related tests are going to be fragile (16324)
SKIP="$SKIP timer-\*"
+# RISC-V widens a negative float NaN to the positive canonical NaN, so the
+# sign check fails: https://core.tcl-lang.org/tcl/tktview/bf029ced86
+case "$(uname -m)" in
+riscv*) SKIP="$SKIP binary-40.3" ;;
+esac
# Run all tests in tests/*.test unless tests are specified as arguments
TESTS=${*:-tests/*.test}
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 7/8] ptest-packagelists.inc: re-enable tcl8 for riscv64
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
` (5 preceding siblings ...)
2026-10-17 11:23 ` [PATCH v2 6/8] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
@ 2026-10-17 11:23 ` OOHehir
2026-10-17 11:23 ` [PATCH v2 8/8] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir
The previous commit skips binary-40.3, its only failure on riscv64.
core-image-ptest-tcl8 on qemuriscv64: 152 pass, 0 fail, 607 s. On a
VisionFive 2 (JH7110), binary-40.3 was the only failure.
tcl stays parked: under TCG, unicodeNormalize.test prints nothing for more
than 450 s & ptest-runner kills it. The binary-40.3 skip still helps tcl on
hardware.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/conf/distro/include/ptest-packagelists.inc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 97c6e35050..1b76023621 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -164,8 +164,8 @@ PTESTS_PROBLEMS:append:riscv32 = " lttng-tools strace"
PTESTS_SLOW:append:libc-musl = " libc-test"
# These tests don't yet pass for riscv64
-PTESTS_SLOW:remove:riscv64 = "tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
-PTESTS_PROBLEMS:append:riscv64 = " tcl tcl8 python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_SLOW:remove:riscv64 = "tcl python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
+PTESTS_PROBLEMS:append:riscv64 = " tcl python3-cffi lttng-tools python3-numpy perl glib-2.0 zstd libpcap"
# These tests don't yet pass for musl qemuarm64
PTESTS_SLOW:remove:libc-musl:qemuarm64 = "strace perl gnutls glib-2.0"
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 8/8] python3-numpy: call libm for ceil/floor/trunc on riscv64
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
` (6 preceding siblings ...)
2026-10-17 11:23 ` [PATCH v2 7/8] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
@ 2026-10-17 11:23 ` OOHehir
7 siblings, 0 replies; 19+ messages in thread
From: OOHehir @ 2026-10-17 11:23 UTC (permalink / raw)
To: openembedded-core; +Cc: raj.khem, tgamblin, mathieu.dubois-briand, OOHehir
numpy builds with -std=c11, so GCC 15 onwards expands ceil/floor/trunc
inline on riscv64, & its first scheduling pass moves the fcvt above the
|x| < 2^52 check. ceil(+-inf) & ceil(1e300) then raise FE_INVALID, & the
72 cases of test_unary_spurious_fpexception fail. Confirmed as
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127908.
-fno-fp-int-builtin-inexact makes GCC call libm, which handles these
inputs correctly. python3-numpy-ptest on a VisionFive 2 (JH7110), with
2.5.3: 45770 pass, 0 fail. On qemuriscv64 with PTEST_RUNNER_TIMEOUT = "7200",
with 2.5.4: 45993 pass, 0 fail.
Signed-off-by: OOHehir <oo.hehir@gmail.com>
---
meta/recipes-devtools/python/python3-numpy_2.5.4.bb | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/meta/recipes-devtools/python/python3-numpy_2.5.4.bb b/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
index 93aa356db1..275c49690b 100644
--- a/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
+++ b/meta/recipes-devtools/python/python3-numpy_2.5.4.bb
@@ -26,6 +26,11 @@ PACKAGECONFIG[svml] = "-Ddisable-svml=false,-Ddisable-svml=true"
# the overflow tests fail with compiler-rt on aarch64
LDFLAGS:append:toolchain-clang:aarch64 = " -rtlib=libgcc -unwindlib=libgcc"
+# GCC 15+ inlines ceil/floor/trunc on riscv64 with the fcvt ahead of the range
+# check, so +-inf raises FE_INVALID; call libm instead. GCC PR 127908.
+CFLAGS:append:toolchain-gcc:riscv64 = " -fno-fp-int-builtin-inexact"
+CXXFLAGS:append:toolchain-gcc:riscv64 = " -fno-fp-int-builtin-inexact"
+
# To ensure reproducibility, remove entries from __config__ which expose build
# machine details, such as build paths, host paths, and hardware configuration.
strip_build_info() {
--
2.43.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
end of thread, other threads:[~2026-10-17 11:24 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-16 20:45 [PATCH 0/7] riscv64 ptest fixes OOHehir
2026-10-16 20:45 ` [PATCH 1/7] strace: skip qual_fault-syscall.test on riscv64 OOHehir
2026-10-16 20:45 ` [PATCH 2/7] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
2026-10-16 20:45 ` [PATCH 3/7] ptest-packagelists.inc: re-enable python3 " OOHehir
2026-10-16 20:45 ` [PATCH 4/7] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
2026-10-16 20:45 ` [PATCH 5/7] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
2026-10-17 10:29 ` [OE-core] " Mathieu Dubois-Briand
2026-10-17 11:21 ` Owen O'Hehir
2026-10-16 20:45 ` [PATCH 6/7] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
2026-10-16 20:45 ` [PATCH 7/7] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
2026-10-17 11:23 ` [PATCH v2 0/8] riscv64 ptest fixes OOHehir
2026-10-17 11:23 ` [PATCH v2 1/8] strace: skip qual_fault-syscall.test on riscv64 OOHehir
2026-10-17 11:23 ` [PATCH v2 2/8] ptest-packagelists.inc: re-enable strace for riscv64 OOHehir
2026-10-17 11:23 ` [PATCH v2 3/8] ptest-packagelists.inc: re-enable python3 " OOHehir
2026-10-17 11:23 ` [PATCH v2 4/8] lttng-tools: skip kernel cases when kernel tests are disabled OOHehir
2026-10-17 11:23 ` [PATCH v2 5/8] tcl, tcl8: anchor the musl unixInit-3 skip to top-level SKIP lines OOHehir
2026-10-17 11:23 ` [PATCH v2 6/8] tcl, tcl8: skip binary-40.3 on RISC-V OOHehir
2026-10-17 11:23 ` [PATCH v2 7/8] ptest-packagelists.inc: re-enable tcl8 for riscv64 OOHehir
2026-10-17 11:23 ` [PATCH v2 8/8] python3-numpy: call libm for ceil/floor/trunc on riscv64 OOHehir
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox