From dce2f905a3d62967aa2cd4672e3c27ad1cffcf43 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Tue, 15 Sep 2026 11:57:29 +0200 Subject: [PATCH 1/4] [ci] Add Debian testing It's like Debian13, but tests the new libcivetweb-dev package, so builtin_civetweb can be OFF. [ci] disable pyspark on Debiantesting CMake Error at cmake/modules/FindPySpark.cmake:34 (message): Currently, there are no Spark versions that support Java version greater than 21. Found Java version 25.0.4.1. Call Stack (most recent call first): cmake/modules/SearchInstalledSoftware.cmake:1259 (find_package) CMakeLists.txt:131 (include) --- .github/workflows/root-ci-config/buildconfig/debiantesting.txt | 2 ++ .github/workflows/root-ci.yml | 1 + 2 files changed, 3 insertions(+) create mode 100644 .github/workflows/root-ci-config/buildconfig/debiantesting.txt diff --git a/.github/workflows/root-ci-config/buildconfig/debiantesting.txt b/.github/workflows/root-ci-config/buildconfig/debiantesting.txt new file mode 100644 index 0000000000000..425074e32fc19 --- /dev/null +++ b/.github/workflows/root-ci-config/buildconfig/debiantesting.txt @@ -0,0 +1,2 @@ +CMAKE_CXX_STANDARD=23 +test_distrdf_pyspark=OFF diff --git a/.github/workflows/root-ci.yml b/.github/workflows/root-ci.yml index f85abd13b5faa..71cba3896cbf0 100644 --- a/.github/workflows/root-ci.yml +++ b/.github/workflows/root-ci.yml @@ -413,6 +413,7 @@ jobs: - image: ubuntu2610 - image: debian13 overrides: ["dev=ON", "CMAKE_CXX_FLAGS=-Wsuggest-override"] + - image: debiantesting # Special builds - image: alma9 platform_config: alma9-modules_off From a5e6b5cda1d53572cbda27b4328ef04a25a589f5 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Tue, 15 Sep 2026 11:46:32 +0200 Subject: [PATCH 2/4] [interpreter] do not let builtin_clang search again for LLVM if builtin_llvm=OFF Alternative to https://github.com/root-project/root/pull/23160 that does not require any upstream or downstream patches In ROOT, for builtin_llvm=OFF we have the sequence ``` find_package(LLVM) # searchs for system package, which sets DYLIB to ON set(LLVM_LINK_LLVM_DYLIB OFF) # override DYLIB to OFF, we want static add_subdirectory(clang) # this will call find_package LLVM again ``` See https://github.com/root-project/root/pull/13420 Since LLVM22 though, this fails: Even if we call for a second time `set(LLVM_LINK_LLVM_DYLIB OFF)` after the `add_subdirectory` line, it's not enough, because that variable was ON all throughout the child `clang/CMakeLists.txt` and has already configured some stuff with the wrong flag. Avoid the issue by preventing the double-search of LLVM and thus the double overwrite, by temporarily overwriting the find_package(LLVM) calls. Fixes https://github.com/root-project/root/issues/18387 Fixes https://github.com/root-project/root/issues/23155 --- interpreter/CMakeLists.txt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/interpreter/CMakeLists.txt b/interpreter/CMakeLists.txt index 77d5d7f01355d..7fa21284f4fb9 100644 --- a/interpreter/CMakeLists.txt +++ b/interpreter/CMakeLists.txt @@ -393,14 +393,26 @@ else() # Disable linking against shared LLVM set(LLVM_LINK_LLVM_DYLIB OFF) + # To ensure this override stays constant, we need to avoid subdirectories calling find_package(LLVM), + # which would set it to ON again if system was compiled that way + # Define a macro with a toggle flag to override find_package, that will only be visible in this scope, not in parent one. + macro(find_package _package_name) + if(SKIP_FIND_LLVM AND "${_package_name}" STREQUAL "LLVM") + message(STATUS "[ROOT] Prevented secondary find_package(LLVM) call to save overrides.") + else() + _find_package(${_package_name} ${ARGN}) + endif() + endmacro() # Always build LLVM with C++17. It is not necessary to compile with the same # C++ standard as the rest of ROOT and sometimes it doesn't even work. set(_cxx_standard ${CMAKE_CXX_STANDARD}) set(CMAKE_CXX_STANDARD 17) + set(SKIP_FIND_LLVM ON) add_subdirectory(llvm-project/clang EXCLUDE_FROM_ALL) - + set(SKIP_FIND_LLVM OFF) + set(CMAKE_CXX_STANDARD ${_cxx_standard}) endif(builtin_clang) From 6d97f64ca54ab7462c72a5a5d0cd698e3a1541fd Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 16 Sep 2026 08:16:34 +0200 Subject: [PATCH 3/4] [interpreter] fix CLANG_CMAKE_DIR with builtin_llvm=OFF but builtin_clang=ON. Otherwise Clad raises a configure error. --- interpreter/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/interpreter/CMakeLists.txt b/interpreter/CMakeLists.txt index 7fa21284f4fb9..73cf2aadf7d43 100644 --- a/interpreter/CMakeLists.txt +++ b/interpreter/CMakeLists.txt @@ -429,7 +429,11 @@ if (builtin_clang) ${CMAKE_CURRENT_SOURCE_DIR}/llvm-project/clang/include ${CLANG_BINARY_DIR}/include CACHE STRING "Clang include directories.") - set(CLANG_CMAKE_DIR "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/cmake/clang/") + if(builtin_llvm) + set(CLANG_CMAKE_DIR "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/cmake/clang/") + else() + set(CLANG_CMAKE_DIR "${CMAKE_BINARY_DIR}/lib/cmake/clang/") + endif() else() find_package(Clang REQUIRED CONFIG) message(STATUS "Found Clang ${CLANG_PACKAGE_VERSION} in ${CLANG_CMAKE_DIR}") From 9af027a6895fc278b20ab30d43adfbc796c589e5 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Tue, 15 Sep 2026 17:09:23 +0200 Subject: [PATCH 4/4] [ci] debiantesting: test builtin_llvm=OFF --- .github/workflows/root-ci-config/buildconfig/debiantesting.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/root-ci-config/buildconfig/debiantesting.txt b/.github/workflows/root-ci-config/buildconfig/debiantesting.txt index 425074e32fc19..da54647e3f3a6 100644 --- a/.github/workflows/root-ci-config/buildconfig/debiantesting.txt +++ b/.github/workflows/root-ci-config/buildconfig/debiantesting.txt @@ -1,2 +1,3 @@ CMAKE_CXX_STANDARD=23 +builtin_llvm=OFF test_distrdf_pyspark=OFF