From 7d08e138a400fe3233e7478e63473100636e000e Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Sun, 11 Jan 2026 10:27:05 +0100 Subject: [PATCH 1/3] [cppyy] Disable `operator-` test on iterators also on Linux On Linux this test stopped working with gcc 16, which needs to be fixed. Probably it will be fixed by the improved overload resolution after the cppyy upgrade, so for now the test should be disabled. (cherry picked from commit d0621b13793b51dd06c183f8f8572bef77bf4bb5) --- bindings/pyroot/cppyy/cppyy/test/test_operators.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bindings/pyroot/cppyy/cppyy/test/test_operators.py b/bindings/pyroot/cppyy/cppyy/test/test_operators.py index 289348a42966a..52c6b840d50e1 100644 --- a/bindings/pyroot/cppyy/cppyy/test/test_operators.py +++ b/bindings/pyroot/cppyy/cppyy/test/test_operators.py @@ -336,6 +336,7 @@ def test14_single_argument_call(self): b = ns.Bar() assert b[42] == 42 + @mark.xfail(reason='Fails on macOS and on Linux with gcc 16 because cppyy picks the wrong "operator-" overload.') def test15_class_and_global_mix(self): """Iterator methods have both class and global overloads""" @@ -346,6 +347,10 @@ def test15_class_and_global_mix(self): x = std.vector[int]([1,2,3]) assert (x.end() - 1).__deref__() == 3 + # Next line fails with "TypeError: int/long conversion expects an integer object". + # The subtraction should pick the (iterator, iterator) -> int overload, + # but it somehow chooses the (iterator, iterator) -> iterator overload + # with compiling ROOT with gcc 16. TODO: fix this. assert std.max_element(x.begin(), x.end())-x.begin() == 2 assert (x.end() - 3).__deref__() == 1 From 6f5cec6ccd520de4d3d068bd298193192678999c Mon Sep 17 00:00:00 2001 From: Jonas Rembser Date: Sun, 11 Jan 2026 10:25:51 +0100 Subject: [PATCH 2/3] [RF] Use TRandom3 in test RooFuncWrapper Use TRandom3 instead of the `` to get compiler-independent, reproducible behavior. (cherry picked from commit e1f42658629ad67ce7cb224a1379d133f61f2e35) --- roofit/roofitcore/test/testRooFuncWrapper.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/roofit/roofitcore/test/testRooFuncWrapper.cxx b/roofit/roofitcore/test/testRooFuncWrapper.cxx index cc40d9ab2281f..78f667eb99c70 100644 --- a/roofit/roofitcore/test/testRooFuncWrapper.cxx +++ b/roofit/roofitcore/test/testRooFuncWrapper.cxx @@ -35,12 +35,12 @@ #include #include +#include #include +#include #include -#include #include -#include #include "gtest_wrapper.h" @@ -67,13 +67,13 @@ double getNumDerivative(const RooAbsReal &pdf, RooRealVar &var, const RooArgSet void randomizeParameters(const RooArgSet ¶meters) { + TRandom3 rng(1337); + double lowerBound = -0.1; double upperBound = 0.1; - std::uniform_real_distribution unif(lowerBound, upperBound); - std::default_random_engine re; for (auto *param : parameters) { - double mul = unif(re); + double mul = rng.Uniform(lowerBound, upperBound); auto par = dynamic_cast(param); if (!par) From 1e409b153e9b82932a73196f1be371cf0396ec70 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Fri, 9 Jan 2026 00:32:27 +0100 Subject: [PATCH 3/3] Starting with gcc 16, libstdc++ links to libatomic. Add to whitelist. $ ldd /lib64/libstdc++.so.6 linux-vdso.so.1 (0x00007f3cb4c13000) libm.so.6 => /lib64/libm.so.6 (0x00007f3cb4afc000) libatomic.so.1 => /lib64/libatomic.so.1 (0x00007f3cb4af1000) libc.so.6 => /lib64/libc.so.6 (0x00007f3cb460d000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f3cb4ac5000) /lib64/ld-linux-x86-64.so.2 (0x00007f3cb4c15000) Adapted from commit 6ecf2d7c58e231169154f68b85eb3b5542014950 --- bindings/pyroot/pythonizations/test/import_load_libs.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bindings/pyroot/pythonizations/test/import_load_libs.py b/bindings/pyroot/pythonizations/test/import_load_libs.py index d82401fa7a435..a3701cad82efe 100644 --- a/bindings/pyroot/pythonizations/test/import_load_libs.py +++ b/bindings/pyroot/pythonizations/test/import_load_libs.py @@ -73,6 +73,7 @@ class ImportLoadLibs(unittest.TestCase): 'ld.*', 'libffi', 'libgcc_s', + 'libatomic', # AddressSanitizer runtime and ROOT configuration 'libclang_rt.asan-.*', 'libROOTSanitizerConfig',