From a17bf6d0b4d98e7dc30140f277b5a6fa3131b642 Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Wed, 16 Sep 2026 17:17:33 +0200 Subject: [PATCH 1/5] [CI] Unmask RNTuple and vdt headers in post-install header check. The headers are not installed when the feature is off, so the suppression is not needed any more. --- test/PostInstall/check-headers.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/PostInstall/check-headers.sh b/test/PostInstall/check-headers.sh index 98122e5600872..486a259fc69d0 100644 --- a/test/PostInstall/check-headers.sh +++ b/test/PostInstall/check-headers.sh @@ -28,11 +28,10 @@ fi # Check all installed headers for include errors. Some headers cannot be used standalone: -suppressions="TMVA\|vdt" # External +suppressions="TMVA" suppressions+="\|RField[A-Z]\|RtypesImp.h\|TAtomicCount[A-Z]\|CladDerivator.h\|TBranchProxyTemplate" # Not to be used standalone suppressions+="\|TWin32" # Why are these installed in Linux? suppressions+="\|xRooHypoSpace.h\|xRooFit" # Uses macros to declare namespaces -suppressions+="\|RDaos.h" # Might not be installed suppressions+="\|RIoUring.hxx" # Might not be installed suppressions+="\|CPyCppyy/DispatchPtr.h\|CPyCppyy/API.h" # Would need to include Python.h suppressions+="\|/bvh" # Includes a non-functioning std::span in c++17 From 4896e90952a1b9f24f5134b261a62d2c7814bd0a Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Thu, 17 Sep 2026 14:29:27 +0200 Subject: [PATCH 2/5] [CMake] Disable tmva-cudnn if tmva-gpu is off. --- cmake/modules/SearchInstalledSoftware.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 71b257e95ea7e..1d05b239ada17 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -1016,6 +1016,8 @@ if(tmva) message(SEND_ERROR "cudnn not found while -Dtmva-cudnn=ON. Install it on the system, or disable option 'tmva-cudnn'") endif() endif() + else() + set(tmva-cudnn OFF CACHE BOOL "Disabled because 'tmva-gpu' unavailable (${tmva-cudnn_description})" FORCE) endif() if(tmva-pymva) if(NOT Python3_NumPy_FOUND OR NOT Python3_Development_FOUND) From 28d009719c524cd8faed5c625b14f04f87a17224 Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Thu, 17 Sep 2026 14:30:05 +0200 Subject: [PATCH 3/5] [CMake] Keep all of TMVA off in RootConfiguration if TMVA is off. --- cmake/modules/RootConfiguration.cmake | 38 +++++++++++++-------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake index 7055457189e9d..dd73530daa6fd 100644 --- a/cmake/modules/RootConfiguration.cmake +++ b/cmake/modules/RootConfiguration.cmake @@ -434,26 +434,24 @@ if(qt6web) else() set(hasqt6webengine undef) endif() -if (tmva-cpu) - set(hastmvacpu define) -else() - set(hastmvacpu undef) -endif() -if (tmva-gpu) - set(hastmvagpu define) -else() - set(hastmvagpu undef) -endif() -if (tmva-cudnn) - set(hastmvacudnn define) -else() - set(hastmvacudnn undef) -endif() -if (tmva-pymva) - set(haspymva define) -else() - set(haspymva undef) -endif() +set(hastmvacpu undef) +set(hastmvagpu undef) +set(hastmvacudnn undef) +set(haspymva undef) +if(tmva) + if (tmva-cpu) + set(hastmvacpu define) + endif() + if (tmva-gpu) + set(hastmvagpu define) + endif() + if (tmva-cudnn) + set(hastmvacudnn define) + endif() + if (tmva-pymva) + set(haspymva define) + endif() +endif(tmva) if (uring) set(hasuring define) else() From 1c0b399bf36fb5f6239fc3991af304c294249411 Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Thu, 17 Sep 2026 14:24:47 +0200 Subject: [PATCH 4/5] [TMVA] Add missing includes. The headers could not be included standalone because a few includes were missing. --- tmva/tmva/inc/TMVA/DNN/Architectures/Cpu/CpuTensor.h | 2 +- tmva/tmva/inc/TMVA/DNN/RNN/GRULayer.h | 2 ++ tmva/tmva/inc/TMVA/DNN/RNN/LSTMLayer.h | 2 ++ tmva/tmva/inc/TMVA/DNN/RNN/RNNLayer.h | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tmva/tmva/inc/TMVA/DNN/Architectures/Cpu/CpuTensor.h b/tmva/tmva/inc/TMVA/DNN/Architectures/Cpu/CpuTensor.h index b5559d0146de7..f0b6c5b95fa6a 100644 --- a/tmva/tmva/inc/TMVA/DNN/Architectures/Cpu/CpuTensor.h +++ b/tmva/tmva/inc/TMVA/DNN/Architectures/Cpu/CpuTensor.h @@ -18,7 +18,7 @@ #define TMVA_DNN_ARCHITECTURES_CPU_CPUTENSOR #include - +#include #include "TMatrix.h" #include "TMVA/Config.h" diff --git a/tmva/tmva/inc/TMVA/DNN/RNN/GRULayer.h b/tmva/tmva/inc/TMVA/DNN/RNN/GRULayer.h index 33a01754dfc34..8f79bf42b5b3b 100644 --- a/tmva/tmva/inc/TMVA/DNN/RNN/GRULayer.h +++ b/tmva/tmva/inc/TMVA/DNN/RNN/GRULayer.h @@ -35,7 +35,9 @@ #include #include "TMatrix.h" +#include "TMVA/DNN/GeneralLayer.h" #include "TMVA/DNN/Functions.h" +#include "TMVA/DNN/CNN/ContextHandles.h" namespace TMVA { diff --git a/tmva/tmva/inc/TMVA/DNN/RNN/LSTMLayer.h b/tmva/tmva/inc/TMVA/DNN/RNN/LSTMLayer.h index 16e6df15d9829..9cf42e258269f 100644 --- a/tmva/tmva/inc/TMVA/DNN/RNN/LSTMLayer.h +++ b/tmva/tmva/inc/TMVA/DNN/RNN/LSTMLayer.h @@ -35,7 +35,9 @@ #include #include "TMatrix.h" +#include "TMVA/DNN/GeneralLayer.h" #include "TMVA/DNN/Functions.h" +#include "TMVA/DNN/CNN/ContextHandles.h" namespace TMVA { diff --git a/tmva/tmva/inc/TMVA/DNN/RNN/RNNLayer.h b/tmva/tmva/inc/TMVA/DNN/RNN/RNNLayer.h index 3eb10083ed9cb..3d9a121e98185 100644 --- a/tmva/tmva/inc/TMVA/DNN/RNN/RNNLayer.h +++ b/tmva/tmva/inc/TMVA/DNN/RNN/RNNLayer.h @@ -35,7 +35,9 @@ #include #include "TMatrix.h" +#include "TMVA/DNN/GeneralLayer.h" #include "TMVA/DNN/Functions.h" +#include "TMVA/DNN/CNN/ContextHandles.h" namespace TMVA { From 225ee8cb5d0357bc9d51bc1c0d0940114195f3ab Mon Sep 17 00:00:00 2001 From: Stephan Hageboeck Date: Wed, 16 Sep 2026 17:19:22 +0200 Subject: [PATCH 5/5] [CI] Enable checking TMVA headers post install. Remove the suppressions for TMVA headers. --- test/PostInstall/check-headers.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/PostInstall/check-headers.sh b/test/PostInstall/check-headers.sh index 486a259fc69d0..a4999f0196483 100644 --- a/test/PostInstall/check-headers.sh +++ b/test/PostInstall/check-headers.sh @@ -28,18 +28,17 @@ fi # Check all installed headers for include errors. Some headers cannot be used standalone: -suppressions="TMVA" -suppressions+="\|RField[A-Z]\|RtypesImp.h\|TAtomicCount[A-Z]\|CladDerivator.h\|TBranchProxyTemplate" # Not to be used standalone +suppressions="RField[A-Z]\|RtypesImp.h\|TAtomicCount[A-Z]\|CladDerivator.h\|TBranchProxyTemplate" # Not to be used standalone suppressions+="\|TWin32" # Why are these installed in Linux? suppressions+="\|xRooHypoSpace.h\|xRooFit" # Uses macros to declare namespaces suppressions+="\|RIoUring.hxx" # Might not be installed +suppressions+="\|TCudnn.h" # Might not be installed suppressions+="\|CPyCppyy/DispatchPtr.h\|CPyCppyy/API.h" # Would need to include Python.h suppressions+="\|/bvh" # Includes a non-functioning std::span in c++17 suppressions+="\|cfortran.h" # Seems unable to run with modern compilers suppressions+="\|hipSYCL.h\|GenVectorX" # Unconditionally installed on Fedora/Ubuntu even if broken suppressions+="\|TR[A-Z].*__ctors.h" # R interface without any includes, so cannot be parsed as C++ suppressions+="\|RTaskArena.hxx\|TThreadExecutor.hxx\|TTreeProcessorMT.hxx" # Will raise errors if imt=Off - HEADERS=$(find "${INCLUDE_DIR}" -type f -name '*.h*' | grep -v "${suppressions}") xargs -P ${NCPU:-1} -n 1 "${CXX}" -fsyntax-only -x c++ -std=c++${CXXSTANDARD} ${CXXFLAGS} -I"${INCLUDE_DIR}" <<< "${HEADERS}"