From c7e5d7869cf72e0570f9862fac9b94b21f2b1593 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 10:23:35 +0200 Subject: [PATCH 01/16] [cmake] removing the fail-on-missing=OFF path for all dependencies that back opt-in features meaning features that are OFF by default and have no builtin_option as backup. With the new behavior, an error is raised instead of that feature being automatically turned OFF. The users is forced to actively install the dependency or to manually turn back that feature to OFF. --- README/ReleaseNotes/v642/index.md | 1 + cmake/modules/CheckCompiler.cmake | 4 +- cmake/modules/SearchInstalledSoftware.cmake | 121 +++----------------- gui/qt6webdisplay/CMakeLists.txt | 8 +- 4 files changed, 21 insertions(+), 113 deletions(-) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index e32453fdb1831..5ad1a3c48634e 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -40,6 +40,7 @@ The following people have contributed to this new version: ## Deprecation and Removal * The build options `vc`, `veccore`, `builtin_vc`, `builtin_veccore` and `rpath` that were deprecated are now removed and will result in configuration errors if used. +* The option `fail-on-missing=OFF` is no longer honored for CMake ROOT opt-in build options such as `arrow`, `cocoa`, `daos`, `daos_mock`, `dcache`, `experimental_adaptivecpp`, `fcgi`, `fortran`, `gviz`, `mpi`, `pyroot`, `pythia8`, `qt6web`, `tmva-cudnn`, `tmva-pymva`, `tmva-sofie`, `uring` or `vecgeom`, for which there are no builtin backups. If the respective associated package dependency is not installed, ROOT will always raise a configuration error independent on the value `fail-on-missing`, and the associated option e.g. `arrow` will not be automatically disabled, the user has to take action by either installing it system-wide or manually disabling that option via `-Darrow=OFF`. * The method `RooRealVar::removeRange()` and the corresponding method in `RooErrorVar` that were deprecated in ROOT 6.40 are now removed. * The overloads of `RooAbsReal::createChi2()` and `RooAbsReal::chi2FitTo()` that take unbinned **RooDataSet** data objects were deprecated in ROOT 6.40 and are now removed. * The **RooStats::HybridPlot** class and the related **HybridResult::GetPlot** method were deprecated in ROOT 6.40 and are now removed. diff --git a/cmake/modules/CheckCompiler.cmake b/cmake/modules/CheckCompiler.cmake index b9a91d046f612..c09183ffed443 100644 --- a/cmake/modules/CheckCompiler.cmake +++ b/cmake/modules/CheckCompiler.cmake @@ -49,8 +49,8 @@ if(fortran) enable_language(Fortran) endif() endif() - if(NOT CMAKE_Fortran_COMPILER AND fail-on-missing) - message(FATAL_ERROR "No Fortran compiler found. Please make sure it's installed, or disable ROOT's Fortran features with '-Dfortran=OFF' (or set '-Dfail-on-missing=OFF' to automatically disable features with missing requirements)") + if(NOT CMAKE_Fortran_COMPILER) + message(SEND_ERROR "No Fortran compiler found. Please make sure it's installed, or disable ROOT's Fortran features with '-Dfortran=OFF'") endif() else() set(CMAKE_Fortran_COMPILER CMAKE_Fortran_COMPILER-NOTFOUND) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 0452a9d7a4dd7..0eb0a27380ef2 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -478,12 +478,7 @@ if(gviz) message(STATUS "Looking for Graphviz") find_package(Graphviz) if(NOT GRAPHVIZ_FOUND) - if(fail-on-missing) - message(SEND_ERROR "Graphviz package not found and gviz option required") - else() - message(STATUS "Graphviz not found. Switching off gviz option") - set(gviz OFF CACHE BOOL "Disabled because Graphviz not found (${gviz_description})" FORCE) - endif() + message(SEND_ERROR "Graphviz package not found and gviz option required") endif() endif() @@ -544,12 +539,7 @@ if(fcgi) message(STATUS "Looking for FastCGI") find_package(FastCGI) if(NOT FASTCGI_FOUND) - if(fail-on-missing) - message(SEND_ERROR "FastCGI library not found and they are required (fcgi option enabled)") - else() - message(STATUS "FastCGI not found. Switching off fcgi option") - set(fcgi OFF CACHE BOOL "Disabled because FastCGI not found" FORCE) - endif() + message(SEND_ERROR "FastCGI library not found and they are required (fcgi option enabled)") endif() endif() @@ -572,12 +562,7 @@ if(pythia8) message(STATUS "Looking for Pythia8") find_package(Pythia8) if(NOT PYTHIA8_FOUND) - if(fail-on-missing) - message(SEND_ERROR "Pythia8 libraries not found and they are required (pythia8 option enabled)") - else() - message(STATUS "Pythia8 not found. Switching off pythia8 option") - set(pythia8 OFF CACHE BOOL "Disabled because Pythia8 not found (${pythia8_description})" FORCE) - endif() + message(SEND_ERROR "Pythia8 libraries not found and they are required (pythia8 option enabled)") endif() endif() @@ -827,12 +812,7 @@ if (uring) message(STATUS "Looking for liburing") find_package(liburing) if(NOT LIBURING_FOUND) - if(fail-on-missing) - message(SEND_ERROR "liburing not found and uring option required") - else() - message(STATUS "liburing not found. Switching off uring option") - set(uring OFF CACHE BOOL "Disabled because liburing was not found (${uring_description})" FORCE) - endif() + message(SEND_ERROR "liburing not found and uring option required") endif() endif() endif() @@ -846,29 +826,10 @@ if (testing AND NOT daos AND NOT WIN32) endif() if (daos OR daos_mock) - message(STATUS "Looking for libuuid") - if(fail-on-missing) - find_package(libuuid REQUIRED) - else() - find_package(libuuid) - if(NOT libuuid_FOUND) - message(STATUS "libuuid not found. Disabling DAOS support") - set(daos OFF CACHE BOOL "Disabled (libuuid not found)" FORCE) - set(daos_mock OFF CACHE BOOL "Disabled (libuuid not found)" FORCE) - endif() - endif() + find_package(libuuid REQUIRED) endif() if (daos) - message(STATUS "Looking for DAOS") - if(fail-on-missing) - find_package(DAOS REQUIRED) - else() - find_package(DAOS) - if(NOT DAOS_FOUND) - message(STATUS "libdaos not found. Disabling DAOS support") - set(daos OFF CACHE BOOL "Disabled (libdaos not found)" FORCE) - endif() - endif() + find_package(DAOS REQUIRED) endif() #---Check for TBB--------------------------------------------------------------------- @@ -957,15 +918,8 @@ endif() if (vecgeom) message(STATUS "Looking for VecGeom") find_package(VecGeom 1.2 CONFIG) - if(NOT VecGeom_FOUND ) - if(fail-on-missing) - message(SEND_ERROR "VecGeom not found. Ensure that the installation of VecGeom is in the CMAKE_PREFIX_PATH") - else() - message(STATUS "VecGeom not found. Ensure that the installation of VecGeom is in the CMAKE_PREFIX_PATH") - message(STATUS " example: CMAKE_PREFIX_PATH=/lib/cmake/VecGeom") - message(STATUS " For the time being switching OFF 'vecgeom' option") - set(vecgeom OFF CACHE BOOL "Disabled because VecGeom not found (${vecgeom_description})" FORCE) - endif() + if(NOT VecGeom_FOUND) + message(SEND_ERROR "VecGeom not found. Ensure that the installation of VecGeom is in the CMAKE_PREFIX_PATH, or disable 'vecgeom'") else() message(STATUS " Found VecGeom " ${VecGeom_VERSION}) endif() @@ -1000,12 +954,7 @@ if(experimental_adaptivecpp) endfunction() message(STATUS "AdaptiveCpp sycl enabled") else() - if(fail-on-missing) - message(FATAL_ERROR "AdaptiveCpp library not found") - else() - message(STATUS "AdaptiveCpp library not found") - set(sycl OFF CACHE BOOL "Disabled because no SYCL implementation is not found" FORCE) - endif() + message(SEND_ERROR "AdaptiveCpp library not found, install it or disable 'experimental_adaptivecpp'") endif() endif() @@ -1016,11 +965,7 @@ if(tmva-sofie) message(STATUS "Looking for BLAS as an optional testing dependency of TMVA-SOFIE") find_package(BLAS) if(NOT BLAS_FOUND) - if(fail-on-missing) - message(FATAL_ERROR "BLAS not found, but it's required for TMVA-SOFIE testing") - else() - message(WARNING "BLAS not found: TMVA-SOFIE will not be fully tested") - endif() + message(SEND_ERROR "BLAS not found, but it's required for TMVA-SOFIE testing") endif() endif() message(STATUS "Looking for Protobuf") @@ -1030,28 +975,13 @@ if(tmva-sofie) find_package(Protobuf MODULE) endif() if(NOT Protobuf_FOUND) - if(fail-on-missing) - message(SEND_ERROR "Protobuf libraries not found and they are required (tmva-sofie option enabled)") - else() - message(STATUS "Protobuf not found. Switching off tmva-sofie option") - set(tmva-sofie OFF CACHE BOOL "Disabled because Protobuf not found" FORCE) - endif() + message(SEND_ERROR "Protobuf libraries not found and they are required (tmva-sofie option enabled)") else() if(Protobuf_VERSION LESS 3.0) - if(fail-on-missing) - message(SEND_ERROR "Protobuf libraries found but is less than the version required (3.0) (tmva-sofie option enabled)") - else() - message(STATUS "Protobuf found but its version is not high enough (>3.0). Switching off tmva-sofie option") - set(tmva-sofie OFF CACHE BOOL "Disabled because found Protobuf version is not enough" FORCE) - endif() + message(SEND_ERROR "Protobuf libraries found but is less than the version required (3.0) (tmva-sofie option enabled)") else() if(NOT TARGET protobuf::protoc) - if(fail-on-missing) - message(SEND_ERROR "Protobuf compiler not found (tmva-sofie option enabled)") - else() - message(STATUS "Protobuf compiler not found. Switching off tmva-sofie option") - set(tmva-sofie OFF CACHE BOOL "Disabled because Protobuf compiler not found" FORCE) - endif() + message(SEND_ERROR "Protobuf compiler not found (tmva-sofie option enabled)") endif() endif() endif() @@ -1149,30 +1079,20 @@ if(tmva) ### Look for package CuDNN. if (tmva-cudnn) - if (fail-on-missing) - find_package(CUDNN REQUIRED) - else() - find_package(CUDNN) - endif() + find_package(CUDNN REQUIRED) if (CUDNN_FOUND) message(STATUS "CuDNN library found: " ${CUDNN_LIBRARIES}) # Once proper cuDNN support in CMake, replace this with an alias target: add_library(ROOT::cuDNN SHARED IMPORTED) set_property(TARGET ROOT::cuDNN PROPERTY IMPORTED_LOCATION ${CUDNN_LIBRARIES}) target_include_directories(ROOT::cuDNN INTERFACE ${CUDNN_INCLUDE_DIR}) - else() - message(STATUS "CuDNN library not found") - set(tmva-cudnn OFF CACHE BOOL "Disabled because cuDNN not found" FORCE) endif() endif() endif() if(tmva-pymva) - if(fail-on-missing AND (NOT Python3_NumPy_FOUND OR NOT Python3_Development_FOUND)) + if((NOT Python3_NumPy_FOUND OR NOT Python3_Development_FOUND)) message(SEND_ERROR "TMVA: numpy python package or Python development package not found and tmva-pymva component required" " (python executable: ${Python3_EXECUTABLE})") - elseif(NOT Python3_NumPy_FOUND OR NOT Python3_Development_FOUND) - message(STATUS "TMVA: Numpy or Python development package not found for python ${Python3_EXECUTABLE}. Switching off tmva-pymva option") - set(tmva-pymva OFF CACHE BOOL "Disabled because Numpy or Python development package were not found (${tmva-pymva_description})" FORCE) endif() endif() else() @@ -1218,15 +1138,8 @@ if (mpi) message(STATUS "Looking for MPI") find_package(MPI) if(NOT MPI_FOUND) - if(fail-on-missing) - message(SEND_ERROR "MPI not found. Ensure that the installation of MPI is in the CMAKE_PREFIX_PATH." - " Example: CMAKE_PREFIX_PATH= (e.g. \"/usr/local/mpich\")") - else() - message(STATUS "MPI not found. Ensure that the installation of MPI is in the CMAKE_PREFIX_PATH") - message(STATUS " Example: CMAKE_PREFIX_PATH= (e.g. \"/usr/local/mpich\")") - message(STATUS " For the time being switching OFF 'mpi' option") - set(mpi OFF CACHE BOOL "Disabled because MPI not found (${mpi_description})" FORCE) - endif() + message(SEND_ERROR "MPI not found. Ensure that the installation of MPI is in the CMAKE_PREFIX_PATH." + " Example: CMAKE_PREFIX_PATH= (e.g. \"/usr/local/mpich\"). Or disable option 'mpi'") endif() endif() diff --git a/gui/qt6webdisplay/CMakeLists.txt b/gui/qt6webdisplay/CMakeLists.txt index f6769c717a19d..c70ac93bb61cf 100644 --- a/gui/qt6webdisplay/CMakeLists.txt +++ b/gui/qt6webdisplay/CMakeLists.txt @@ -11,13 +11,7 @@ find_package(Qt6 COMPONENTS Core WebEngineCore WebEngineWidgets CONFIG) if(NOT Qt6_FOUND) - if(fail-on-missing) - message(FATAL_ERROR "Could NOT find Qt6 (WebEngineCore, WebEngineWidgets)") - else() - message(WARNING "Qt6 (WebEngineCore, WebEngineWidgets) not found, disabling option 'qt6web'") - set(qt6web OFF CACHE BOOL "Disabled because Qt6 not found" FORCE) - return() - endif() + message(SEND_ERROR "Could NOT find Qt6 (WebEngineCore, WebEngineWidgets), install missing packages on the system or disable option 'qt6web'") endif() set(CMAKE_AUTOMOC ON) From d4a2df7ad19a2786a3b6b77b3ec788326675e52c Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 10:26:51 +0200 Subject: [PATCH 02/16] [nfc] make message more consistent Co-authored-by: Jonas Rembser --- cmake/modules/SearchInstalledSoftware.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 0eb0a27380ef2..9df32be30c7be 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -478,7 +478,7 @@ if(gviz) message(STATUS "Looking for Graphviz") find_package(Graphviz) if(NOT GRAPHVIZ_FOUND) - message(SEND_ERROR "Graphviz package not found and gviz option required") + message(SEND_ERROR "Graphviz libraries not found and they are required (gviz option enabled)") endif() endif() From ae0fff7405c48c8f29249cc061cd5485a4866d79 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 12:34:04 +0200 Subject: [PATCH 03/16] [cmake] improved messages by guitargeek --- cmake/modules/SearchInstalledSoftware.cmake | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 9df32be30c7be..1685a379298e7 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -826,10 +826,16 @@ if (testing AND NOT daos AND NOT WIN32) endif() if (daos OR daos_mock) - find_package(libuuid REQUIRED) + find_package(libuuid) + if(NOT libuuid_FOUND) + message(SEND_ERROR "libuuid not found and it is required (daos or daos_mock option enabled). Install it on the system, or disable options 'daos' and 'daos_mock'") + endif() endif() if (daos) - find_package(DAOS REQUIRED) + find_package(DAOS) + if(NOT DAOS_FOUND) + message(SEND_ERROR "libdaos not found and it is required (daos option enabled). Install it on the system, or disable option 'daos'") + endif() endif() #---Check for TBB--------------------------------------------------------------------- @@ -1079,18 +1085,20 @@ if(tmva) ### Look for package CuDNN. if (tmva-cudnn) - find_package(CUDNN REQUIRED) + find_package(CUDNN) if (CUDNN_FOUND) message(STATUS "CuDNN library found: " ${CUDNN_LIBRARIES}) # Once proper cuDNN support in CMake, replace this with an alias target: add_library(ROOT::cuDNN SHARED IMPORTED) set_property(TARGET ROOT::cuDNN PROPERTY IMPORTED_LOCATION ${CUDNN_LIBRARIES}) target_include_directories(ROOT::cuDNN INTERFACE ${CUDNN_INCLUDE_DIR}) + else() + message(SEND_ERROR "cudnn not found and it is required (tmva-cudnn option enabled). Install it on the system, or disable option 'tmva-cudnn'") endif() endif() endif() if(tmva-pymva) - if((NOT Python3_NumPy_FOUND OR NOT Python3_Development_FOUND)) + if(NOT Python3_NumPy_FOUND OR NOT Python3_Development_FOUND) message(SEND_ERROR "TMVA: numpy python package or Python development package not found and tmva-pymva component required" " (python executable: ${Python3_EXECUTABLE})") endif() From 2d93f4dc16748cc7029c97d4f89f35e0272c9935 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 12:36:12 +0200 Subject: [PATCH 04/16] [cmake] warn instead of error for tmva-sofie tests by guitargeek --- cmake/modules/SearchInstalledSoftware.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 1685a379298e7..053cde0ce186c 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -971,7 +971,9 @@ if(tmva-sofie) message(STATUS "Looking for BLAS as an optional testing dependency of TMVA-SOFIE") find_package(BLAS) if(NOT BLAS_FOUND) - message(SEND_ERROR "BLAS not found, but it's required for TMVA-SOFIE testing") + # BLAS only backs the TMVA-SOFIE tests, not the feature itself, so a + # missing BLAS must not turn into a configuration error. + message(WARNING "BLAS not found: TMVA-SOFIE will not be fully tested") endif() endif() message(STATUS "Looking for Protobuf") From 48385d725292a62eb9a19e70ecdd634c3e61dead Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 12:39:26 +0200 Subject: [PATCH 05/16] fix list --- README/ReleaseNotes/v642/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index 5ad1a3c48634e..0af363e55bbd5 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -40,7 +40,7 @@ The following people have contributed to this new version: ## Deprecation and Removal * The build options `vc`, `veccore`, `builtin_vc`, `builtin_veccore` and `rpath` that were deprecated are now removed and will result in configuration errors if used. -* The option `fail-on-missing=OFF` is no longer honored for CMake ROOT opt-in build options such as `arrow`, `cocoa`, `daos`, `daos_mock`, `dcache`, `experimental_adaptivecpp`, `fcgi`, `fortran`, `gviz`, `mpi`, `pyroot`, `pythia8`, `qt6web`, `tmva-cudnn`, `tmva-pymva`, `tmva-sofie`, `uring` or `vecgeom`, for which there are no builtin backups. If the respective associated package dependency is not installed, ROOT will always raise a configuration error independent on the value `fail-on-missing`, and the associated option e.g. `arrow` will not be automatically disabled, the user has to take action by either installing it system-wide or manually disabling that option via `-Darrow=OFF`. +* The option `fail-on-missing=OFF` is no longer honored for CMake ROOT opt-in build options such as `arrow`, `cocoa`, `daos`, `daos_mock`, `dcache`, `experimental_adaptivecpp`, `fcgi`, `fortran`, `gviz`, `mpi`, `pythia8`, `qt6web`, `tmva-cudnn`, `tmva-pymva`, `tmva-sofie`, `uring` or `vecgeom`, for which there are no builtin backups. If the respective associated package dependency is not installed, ROOT will always raise a configuration error independent on the value `fail-on-missing`, and the associated option e.g. `arrow` will not be automatically disabled; the user has to take action by either installing it system-wide or manually disabling that option via `-Darrow=OFF`. * The method `RooRealVar::removeRange()` and the corresponding method in `RooErrorVar` that were deprecated in ROOT 6.40 are now removed. * The overloads of `RooAbsReal::createChi2()` and `RooAbsReal::chi2FitTo()` that take unbinned **RooDataSet** data objects were deprecated in ROOT 6.40 and are now removed. * The **RooStats::HybridPlot** class and the related **HybridResult::GetPlot** method were deprecated in ROOT 6.40 and are now removed. From 440531a15a10c740fb2fc82274df7e14a923ba91 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 13:17:17 +0200 Subject: [PATCH 06/16] [nfc] clarify relnotes Co-authored-by: Jonas Rembser --- README/ReleaseNotes/v642/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index 0af363e55bbd5..e65e3e433a0df 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -41,6 +41,8 @@ The following people have contributed to this new version: * The build options `vc`, `veccore`, `builtin_vc`, `builtin_veccore` and `rpath` that were deprecated are now removed and will result in configuration errors if used. * The option `fail-on-missing=OFF` is no longer honored for CMake ROOT opt-in build options such as `arrow`, `cocoa`, `daos`, `daos_mock`, `dcache`, `experimental_adaptivecpp`, `fcgi`, `fortran`, `gviz`, `mpi`, `pythia8`, `qt6web`, `tmva-cudnn`, `tmva-pymva`, `tmva-sofie`, `uring` or `vecgeom`, for which there are no builtin backups. If the respective associated package dependency is not installed, ROOT will always raise a configuration error independent on the value `fail-on-missing`, and the associated option e.g. `arrow` will not be automatically disabled; the user has to take action by either installing it system-wide or manually disabling that option via `-Darrow=OFF`. + Note that `all=ON` enables several of these options, so building with `-Dall=ON` now requires all of their dependencies to be installed, or the unwanted ones to be disabled explicitly. + Build options that are enabled by default, such as `pyroot`, are not affected: they are still disabled automatically when their dependencies are missing. * The method `RooRealVar::removeRange()` and the corresponding method in `RooErrorVar` that were deprecated in ROOT 6.40 are now removed. * The overloads of `RooAbsReal::createChi2()` and `RooAbsReal::chi2FitTo()` that take unbinned **RooDataSet** data objects were deprecated in ROOT 6.40 and are now removed. * The **RooStats::HybridPlot** class and the related **HybridResult::GetPlot** method were deprecated in ROOT 6.40 and are now removed. From 23440c8f0adaecad1cd78d50e753e41128ef700d Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 13:20:34 +0200 Subject: [PATCH 07/16] [cmake] missed arrow and dcap got lost in translation when rebasing --- cmake/modules/SearchInstalledSoftware.cmake | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 053cde0ce186c..e7858ca34635a 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -715,15 +715,8 @@ endif() if(arrow) find_package(Arrow) if(NOT ARROW_FOUND) - if(fail-on-missing) - message(SEND_ERROR "Apache Arrow not found. Please set ARROW_HOME to point to your Arrow installation, " - "or include the installation of Arrow in the CMAKE_PREFIX_PATH.") - else() - message(STATUS "Apache Arrow API not found. Set variable ARROW_HOME to point to your Arrow installation, " - "or include the installation of Arrow in the CMAKE_PREFIX_PATH.") - message(STATUS "For the time being switching OFF 'arrow' option") - set(arrow OFF CACHE BOOL "Disabled because Apache Arrow API not found (${arrow_description})" FORCE) - endif() + message(SEND_ERROR "Apache Arrow not found but is required. Please set ARROW_HOME to point to your Arrow installation, " + "or include the installation of Arrow in the CMAKE_PREFIX_PATH. Or disable option 'arrow'.") endif() endif() @@ -732,12 +725,8 @@ endif() if(dcache) find_package(DCAP) if(NOT DCAP_FOUND) - if(fail-on-missing) - message(SEND_ERROR "dCap library not found and is required (dcache option enabled)") - else() - message(STATUS "dCap library not found. Set variable DCAP_DIR to point to your dCache installation") - message(STATUS "For the time being switching OFF 'dcache' option") - set(dcache OFF CACHE BOOL "Disabled because dCap not found (${dcache_description})" FORCE) + message(SEND_ERROR "dCap library not found and is required (dcache option enabled)." + " Set variable DCAP_DIR to point to your dCache installation. Or disable option 'dcap'.") endif() endif() endif() From 5afd0be2c7f87d4a0ab7e3630fe4c6433990990d Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 13:22:54 +0200 Subject: [PATCH 08/16] update list --- README/ReleaseNotes/v642/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index e65e3e433a0df..7453c14f93973 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -42,7 +42,7 @@ The following people have contributed to this new version: * The build options `vc`, `veccore`, `builtin_vc`, `builtin_veccore` and `rpath` that were deprecated are now removed and will result in configuration errors if used. * The option `fail-on-missing=OFF` is no longer honored for CMake ROOT opt-in build options such as `arrow`, `cocoa`, `daos`, `daos_mock`, `dcache`, `experimental_adaptivecpp`, `fcgi`, `fortran`, `gviz`, `mpi`, `pythia8`, `qt6web`, `tmva-cudnn`, `tmva-pymva`, `tmva-sofie`, `uring` or `vecgeom`, for which there are no builtin backups. If the respective associated package dependency is not installed, ROOT will always raise a configuration error independent on the value `fail-on-missing`, and the associated option e.g. `arrow` will not be automatically disabled; the user has to take action by either installing it system-wide or manually disabling that option via `-Darrow=OFF`. Note that `all=ON` enables several of these options, so building with `-Dall=ON` now requires all of their dependencies to be installed, or the unwanted ones to be disabled explicitly. - Build options that are enabled by default, such as `pyroot`, are not affected: they are still disabled automatically when their dependencies are missing. + Build options that are enabled by default, such as `pyroot`, `opengl`, `xml`, `sqlite`, `davix`, `curl`, `tmva-cpu` or `tpython` are not affected: they are still disabled automatically when their dependencies are missing. * The method `RooRealVar::removeRange()` and the corresponding method in `RooErrorVar` that were deprecated in ROOT 6.40 are now removed. * The overloads of `RooAbsReal::createChi2()` and `RooAbsReal::chi2FitTo()` that take unbinned **RooDataSet** data objects were deprecated in ROOT 6.40 and are now removed. * The **RooStats::HybridPlot** class and the related **HybridResult::GetPlot** method were deprecated in ROOT 6.40 and are now removed. From b1f3d949acdf9401ad46c515afdfb0ce8761b8b2 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 13:24:32 +0200 Subject: [PATCH 09/16] fix typo --- cmake/modules/SearchInstalledSoftware.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index e7858ca34635a..900216c5c3fe7 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -726,7 +726,7 @@ if(dcache) find_package(DCAP) if(NOT DCAP_FOUND) message(SEND_ERROR "dCap library not found and is required (dcache option enabled)." - " Set variable DCAP_DIR to point to your dCache installation. Or disable option 'dcap'.") + " Set variable DCAP_DIR to point to your dCache installation. Or disable option 'dcache'.") endif() endif() endif() From f61f76000f4e55c9b0c38308a9a6c59359a5fada Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 13:25:15 +0200 Subject: [PATCH 10/16] Update SearchInstalledSoftware.cmake --- cmake/modules/SearchInstalledSoftware.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 900216c5c3fe7..0c66685c47410 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -801,7 +801,7 @@ if (uring) message(STATUS "Looking for liburing") find_package(liburing) if(NOT LIBURING_FOUND) - message(SEND_ERROR "liburing not found and uring option required") + message(SEND_ERROR "liburing not found and uring option required. Install it on the system or disable option 'uring'.") endif() endif() endif() From b11ec69113ce93506428859f5c6246cbfc76a0ad Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 15:05:35 +0200 Subject: [PATCH 11/16] Apply suggestions from code review Co-authored-by: Stephan Hageboeck --- cmake/modules/SearchInstalledSoftware.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 0c66685c47410..44674a9b17ca0 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -478,7 +478,7 @@ if(gviz) message(STATUS "Looking for Graphviz") find_package(Graphviz) if(NOT GRAPHVIZ_FOUND) - message(SEND_ERROR "Graphviz libraries not found and they are required (gviz option enabled)") + message(SEND_ERROR "Graphviz libraries not found while -Dgviz=On.") endif() endif() @@ -539,7 +539,7 @@ if(fcgi) message(STATUS "Looking for FastCGI") find_package(FastCGI) if(NOT FASTCGI_FOUND) - message(SEND_ERROR "FastCGI library not found and they are required (fcgi option enabled)") + message(SEND_ERROR "FastCGI library not found while -Dfcgi=On") endif() endif() From 3223340cf4360bcbb924272e19294b5001ed7521 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 15:06:26 +0200 Subject: [PATCH 12/16] Update SearchInstalledSoftware.cmake --- cmake/modules/SearchInstalledSoftware.cmake | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 44674a9b17ca0..8f5483b7953f9 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -726,8 +726,7 @@ if(dcache) find_package(DCAP) if(NOT DCAP_FOUND) message(SEND_ERROR "dCap library not found and is required (dcache option enabled)." - " Set variable DCAP_DIR to point to your dCache installation. Or disable option 'dcache'.") - endif() + " Set variable DCAP_ROOT to point to your dCache installation. Or disable option 'dcache'.") endif() endif() From 926af647f72496c663833aad01472e1fa34dc23a Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 15:09:43 +0200 Subject: [PATCH 13/16] Update SearchInstalledSoftware.cmake --- cmake/modules/SearchInstalledSoftware.cmake | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 8f5483b7953f9..dac2f5516807d 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -488,7 +488,7 @@ if(xml) find_package(LibXml2) if(NOT LIBXML2_FOUND) if(fail-on-missing) - message(SEND_ERROR "LibXml2 libraries not found and they are required (xml option enabled)") + message(SEND_ERROR "LibXml2 libraries not while -Dxml=ON") else() message(STATUS "LibXml2 not found. Switching off xml option") set(xml OFF CACHE BOOL "Disabled because LibXml2 not found (${xml_description})" FORCE) @@ -549,7 +549,7 @@ if(sqlite) find_package(Sqlite) if(NOT SQLITE_FOUND) if(fail-on-missing) - message(SEND_ERROR "SQLite libraries not found and they are required (sqlite option enabled)") + message(SEND_ERROR "SQLite libraries not found while -Dsqlite=ON") else() message(STATUS "SQLite not found. Switching off sqlite option") set(sqlite OFF CACHE BOOL "Disabled because SQLite not found (${sqlite_description})" FORCE) @@ -562,7 +562,7 @@ if(pythia8) message(STATUS "Looking for Pythia8") find_package(Pythia8) if(NOT PYTHIA8_FOUND) - message(SEND_ERROR "Pythia8 libraries not found and they are required (pythia8 option enabled)") + message(SEND_ERROR "Pythia8 libraries not found while -Dpythia8=ON") endif() endif() @@ -577,7 +577,7 @@ if(fftw3) find_package(FFTW) if(NOT FFTW_FOUND) if(fail-on-missing) - message(SEND_ERROR "FFTW3 libraries not found and they are required (fftw3 option enabled)") + message(SEND_ERROR "FFTW3 libraries not found while -Dfftw3=ON") else() message(STATUS "FFTW3 not found. Set [environment] variable FFTW_DIR to point to your FFTW3 installation") message(STATUS " Alternatively, you can also enable the option 'builtin_fftw3' to build FFTW3 internally'") @@ -725,7 +725,7 @@ endif() if(dcache) find_package(DCAP) if(NOT DCAP_FOUND) - message(SEND_ERROR "dCap library not found and is required (dcache option enabled)." + message(SEND_ERROR "dCap library not found while -Ddcache=ON" " Set variable DCAP_ROOT to point to your dCache installation. Or disable option 'dcache'.") endif() endif() @@ -822,7 +822,7 @@ endif() if (daos) find_package(DAOS) if(NOT DAOS_FOUND) - message(SEND_ERROR "libdaos not found and it is required (daos option enabled). Install it on the system, or disable option 'daos'") + message(SEND_ERROR "libdaos not found while -Ddaos=ON. Install it on the system, or disable option 'daos'") endif() endif() @@ -971,13 +971,13 @@ if(tmva-sofie) find_package(Protobuf MODULE) endif() if(NOT Protobuf_FOUND) - message(SEND_ERROR "Protobuf libraries not found and they are required (tmva-sofie option enabled)") + message(SEND_ERROR "Protobuf libraries not found while -Dtmva-sofie=ON") else() if(Protobuf_VERSION LESS 3.0) message(SEND_ERROR "Protobuf libraries found but is less than the version required (3.0) (tmva-sofie option enabled)") else() if(NOT TARGET protobuf::protoc) - message(SEND_ERROR "Protobuf compiler not found (tmva-sofie option enabled)") + message(SEND_ERROR "Protobuf compiler not found while -Dtmva-sofie=ON") endif() endif() endif() @@ -1083,7 +1083,7 @@ if(tmva) set_property(TARGET ROOT::cuDNN PROPERTY IMPORTED_LOCATION ${CUDNN_LIBRARIES}) target_include_directories(ROOT::cuDNN INTERFACE ${CUDNN_INCLUDE_DIR}) else() - message(SEND_ERROR "cudnn not found and it is required (tmva-cudnn option enabled). Install it on the system, or disable option 'tmva-cudnn'") + message(SEND_ERROR "cudnn not found while -Dtmva-cudnn=ON. Install it on the system, or disable option 'tmva-cudnn'") endif() endif() endif() From 76787940d9b8eb9ffb102c60f2dfe03f8fb98f78 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 15:10:17 +0200 Subject: [PATCH 14/16] Update SearchInstalledSoftware.cmake --- cmake/modules/SearchInstalledSoftware.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index dac2f5516807d..bf0d35d1835b5 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -715,7 +715,7 @@ endif() if(arrow) find_package(Arrow) if(NOT ARROW_FOUND) - message(SEND_ERROR "Apache Arrow not found but is required. Please set ARROW_HOME to point to your Arrow installation, " + message(SEND_ERROR "Apache Arrow not found but is required. Please set ARROW_ROOT to point to your Arrow installation, " "or include the installation of Arrow in the CMAKE_PREFIX_PATH. Or disable option 'arrow'.") endif() From eea194a3434a14b05b1669633bf56023ddd976e6 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 15:12:36 +0200 Subject: [PATCH 15/16] Update README/ReleaseNotes/v642/index.md Co-authored-by: Stephan Hageboeck --- README/ReleaseNotes/v642/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index 7453c14f93973..aaae1eddfb356 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -40,7 +40,7 @@ The following people have contributed to this new version: ## Deprecation and Removal * The build options `vc`, `veccore`, `builtin_vc`, `builtin_veccore` and `rpath` that were deprecated are now removed and will result in configuration errors if used. -* The option `fail-on-missing=OFF` is no longer honored for CMake ROOT opt-in build options such as `arrow`, `cocoa`, `daos`, `daos_mock`, `dcache`, `experimental_adaptivecpp`, `fcgi`, `fortran`, `gviz`, `mpi`, `pythia8`, `qt6web`, `tmva-cudnn`, `tmva-pymva`, `tmva-sofie`, `uring` or `vecgeom`, for which there are no builtin backups. If the respective associated package dependency is not installed, ROOT will always raise a configuration error independent on the value `fail-on-missing`, and the associated option e.g. `arrow` will not be automatically disabled; the user has to take action by either installing it system-wide or manually disabling that option via `-Darrow=OFF`. +* The option `fail-on-missing=OFF` is no longer honored for build options requiring external dependencies such as `arrow`, `cocoa`, `daos`, `daos_mock`, `dcache`, `experimental_adaptivecpp`, `fcgi`, `fortran`, `gviz`, `mpi`, `pythia8`, `qt6web`, `tmva-cudnn`, `tmva-pymva`, `tmva-sofie`, `uring` or `vecgeom`. If the respective associated package dependency is not installed, ROOT will always raise a configuration error independent of the value of `fail-on-missing`. The user has to take action by either providing the dependency or manually disabling that option via `-Darrow=OFF`. Note that `all=ON` enables several of these options, so building with `-Dall=ON` now requires all of their dependencies to be installed, or the unwanted ones to be disabled explicitly. Build options that are enabled by default, such as `pyroot`, `opengl`, `xml`, `sqlite`, `davix`, `curl`, `tmva-cpu` or `tpython` are not affected: they are still disabled automatically when their dependencies are missing. * The method `RooRealVar::removeRange()` and the corresponding method in `RooErrorVar` that were deprecated in ROOT 6.40 are now removed. From 190c09d2c13e7bc60fa2134e3616f790534eaaf8 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 5 Aug 2026 15:13:34 +0200 Subject: [PATCH 16/16] Update index.md --- README/ReleaseNotes/v642/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index aaae1eddfb356..2db619e44337a 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -40,7 +40,7 @@ The following people have contributed to this new version: ## Deprecation and Removal * The build options `vc`, `veccore`, `builtin_vc`, `builtin_veccore` and `rpath` that were deprecated are now removed and will result in configuration errors if used. -* The option `fail-on-missing=OFF` is no longer honored for build options requiring external dependencies such as `arrow`, `cocoa`, `daos`, `daos_mock`, `dcache`, `experimental_adaptivecpp`, `fcgi`, `fortran`, `gviz`, `mpi`, `pythia8`, `qt6web`, `tmva-cudnn`, `tmva-pymva`, `tmva-sofie`, `uring` or `vecgeom`. If the respective associated package dependency is not installed, ROOT will always raise a configuration error independent of the value of `fail-on-missing`. The user has to take action by either providing the dependency or manually disabling that option via `-Darrow=OFF`. +* The option `fail-on-missing=OFF` is no longer honored for opt-in (ie OFF by default) build options requiring external dependencies such as `arrow`, `cocoa`, `daos`, `daos_mock`, `dcache`, `experimental_adaptivecpp`, `fcgi`, `fortran`, `gviz`, `mpi`, `pythia8`, `qt6web`, `tmva-cudnn`, `tmva-pymva`, `tmva-sofie`, `uring` or `vecgeom`. If the respective associated package dependency is not installed, ROOT will always raise a configuration error independent of the value of `fail-on-missing`. The user has to take action by either providing the dependency or manually disabling that option via `-Darrow=OFF`. Note that `all=ON` enables several of these options, so building with `-Dall=ON` now requires all of their dependencies to be installed, or the unwanted ones to be disabled explicitly. Build options that are enabled by default, such as `pyroot`, `opengl`, `xml`, `sqlite`, `davix`, `curl`, `tmva-cpu` or `tpython` are not affected: they are still disabled automatically when their dependencies are missing. * The method `RooRealVar::removeRange()` and the corresponding method in `RooErrorVar` that were deprecated in ROOT 6.40 are now removed.