From 567df46ca2618102622c30f00bf923730cd41d1c Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Wed, 6 May 2026 17:42:42 +0200 Subject: [PATCH 1/3] [python] Whitelist Gentoo's sandbox library in import_load_libs When ROOT is tested in Gentoo's sandbox, libsandbox is loaded, which fails the test. --- 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 f1abadc6c5257..4212812a54853 100644 --- a/bindings/pyroot/pythonizations/test/import_load_libs.py +++ b/bindings/pyroot/pythonizations/test/import_load_libs.py @@ -82,6 +82,7 @@ class ImportLoadLibs(unittest.TestCase): "libclang_rt.asan-.*", "libROOTSanitizerConfig", "libjitterentropy", # by libssl on openSUSE + "libsandbox", # Gentoo portage test environment ] # Verbose mode of the test From c61a75a25fe63f855b5276ec61c3584000a21f86 Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Wed, 6 May 2026 17:43:44 +0200 Subject: [PATCH 2/3] [roottest] Fix a failing cling test. When ROOT is installed in the system, invoking just "rootcling" invokes /usr/bin/rootcling. Here, the result of the rootcling target is invoked. --- roottest/cling/dict/ROOT-9185/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roottest/cling/dict/ROOT-9185/CMakeLists.txt b/roottest/cling/dict/ROOT-9185/CMakeLists.txt index 5213208551e33..813e8ff8c09a6 100644 --- a/roottest/cling/dict/ROOT-9185/CMakeLists.txt +++ b/roottest/cling/dict/ROOT-9185/CMakeLists.txt @@ -1,4 +1,4 @@ ROOTTEST_ADD_TEST(ROOT9185 - EXEC rootcling + EXEC $ OPTS -v2 -f ROOT9185Dict.cxx -s ROOT9185Dict.so -rml ROOT9185Dict.so -rmf ROOT9185Dict.rootmap ROOT9185.h ${CMAKE_CURRENT_SOURCE_DIR}/ROOT9185Linkdef.h COPY_TO_BUILDDIR ROOT9185.h) From f598b642b9d211b87243897e585ba02c577f1b88 Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Fri, 8 May 2026 15:20:45 +0200 Subject: [PATCH 3/3] [roottest] Fix a compilation failure triggered by environment variables. The Makefile of old ROOT tests supports reading architecture and platform from the environment. If ARCH or PLATFORM are defined, this breaks, and the Makefile might fail to compile the tests. Here, these variables are unset to ensure that the test compiles in all environments. --- cmake/modules/RootMacros.cmake | 3 +++ cmake/modules/RootTestDriver.cmake | 18 ++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake index 773561f83d38f..bcdae048788a9 100644 --- a/cmake/modules/RootMacros.cmake +++ b/cmake/modules/RootMacros.cmake @@ -2960,6 +2960,9 @@ function(ROOTTEST_ADD_OLDTEST) WORKING_DIR ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS roottest-root-io-event FIXTURES_REQUIRED UtilsLibraryBuild + # The Makefile breaks if these two variables are in the environment by accident: + # If they are unset, root-config --arch --platform is invoked correctly + ENVIRONMENT ARCH=;PLATFORM= LABELS ${ARG_LABELS} TIMEOUT ${ARG_TIMEOUT}) if(MSVC) ROOTTEST_TARGETNAME_FROM_FILE(testprefix .) diff --git a/cmake/modules/RootTestDriver.cmake b/cmake/modules/RootTestDriver.cmake index 8a09431c0c183..6b65c50c62aae 100644 --- a/cmake/modules/RootTestDriver.cmake +++ b/cmake/modules/RootTestDriver.cmake @@ -89,15 +89,17 @@ if(ENV) # value as a single string. string(REPLACE ";" "\\;" pair "${pair}") - # Split KEY=VALUE into a 2-element CMake list: [KEY;VALUE] - string(REGEX REPLACE "^([^=]+)=(.*)$" "\\1;\\2" pair "${pair}") + # Split KEY=VALUE + string(REGEX REPLACE "^([^=]+)=(.*)$" "\\1" var "${pair}") + string(REGEX REPLACE "^([^=]+)=(.*)$" "\\2" val "${pair}") - list(GET pair 0 var) - list(GET pair 1 val) - - # As before, quoting is important here so the semicolons are not - # interpreted as list separators. - set(ENV{${var}} "${val}") + if(val STREQUAL "") + unset(ENV{${var}}) + else() + # As before, quoting is important here so the semicolons are not + # interpreted as list separators. + set(ENV{${var}} "${val}") + endif() if(DBG) message(STATUS "testdriver[ENV]:${var}==>${val}")