Boost Pre-Configuration, main branch (2025.01.09.)
Made all projects find Boost correctly for their clients.
As @fwinkl described in ATLINFR-5571, unfortunately !77017 (merged) introduced an issue in the latest nightlies. Resulting in CMake configuration errors using Projects/WorkDir like:
...
-- Configuring done (24.3s)
CMake Error at /cvmfs/atlas-nightlies.cern.ch/repo/sw/main_Athena_x86_64-el9-gcc13-opt/2025-01-08T2101/Athena/25.0.24/InstallArea/x86_64-el9-gcc13-opt/cmake/modules/AtlasInternals.cmake:1223 (set_property):
The link interface of target "CaloConditions" contains:
Boost::timer
but the target was not found. Possible reasons include:
* There is a typo in the target name.
* A find_package call is missing for an IMPORTED target.
* An ALIAS target is missing.
Call Stack (most recent call first):
/cvmfs/atlas-nightlies.cern.ch/repo/sw/main_Athena_x86_64-el9-gcc13-opt/2025-01-08T2101/Athena/25.0.24/InstallArea/x86_64-el9-gcc13-opt/cmake/AthenaConfig.cmake:165 (atlas_copy_target)
/cvmfs/atlas-nightlies.cern.ch/repo/sw/main_Athena_x86_64-el9-gcc13-opt/2025-01-08T2101/Athena/25.0.24/InstallArea/x86_64-el9-gcc13-opt/cmake/modules/AtlasFunctions.cmake:418 (find_package)
CMakeLists.txt:155 (atlas_project)
-- Generating done (0.6s)
CMake Generate step failed. Build files cannot be regenerated correctly.
The following, quoted part is no longer relevant thanks to @rhauser's help.
As for all the other externals that we use through imported targets, we now need to "find" Boost explicitly in the project configuration files as well. This is not great, as the
BoostConfig.cmake
file coming with modern Boost installations is only setting up the imported targets that one explicitly asks for. So I had to collect all the Boost libraries from the last nightlies that some of our libraries publicly depend on. I did this with:[bash][Legolas]:~ > grep -o "Boost::[a-xA-Z_]*" /cvmfs/atlas-nightlies.cern.ch/repo/sw/main_Athena_x86_64-el9-gcc13-opt/2025-01-08T2101/Athena/25.0.24/InstallArea/x86_64-el9-gcc13-opt/cmake/AthenaConfig-targets.cmake | sort | uniq Boost::program_options Boost::regex Boost::thread Boost::timer Boost::unit_test_framework [bash][Legolas]:~ > grep -o "Boost::[a-xA-Z_]*" /cvmfs/atlas-nightlies.cern.ch/repo/sw/main_AnalysisBase_x86_64-el9-gcc13-opt/2025-01-09T0220/AnalysisBase/25.2.38/InstallArea/x86_64-el9-gcc13-opt/cmake/AnalysisBaseConfig-targets.cmake | sort | uniq Boost::regex Boost::thread [bash][Legolas]:~ > grep -o "Boost::[a-xA-Z_]*" /cvmfs/atlas-nightlies.cern.ch/repo/sw/main_AthAnalysis_x86_64-el9-gcc13-opt/2025-01-09T0001/AthAnalysis/25.2.38/InstallArea/x86_64-el9-gcc13-opt/cmake/AthAnalysisConfig-targets.cmake | sort | uniq Boost::regex Boost::thread Boost::unit_test_framework [bash][Legolas]:~ > grep -o "Boost::[a-xA-Z_]*" /cvmfs/atlas-nightlies.cern.ch/repo/sw/main_AthGeneration_x86_64-el9-gcc13-opt/2025-01-08T2126/AthGeneration/23.6.42/InstallArea/x86_64-el9-gcc13-opt/cmake/AthGenerationConfig-targets.cmake | sort | uniq Boost::regex Boost::thread Boost::timer Boost::unit_test_framework [bash][Legolas]:~ > grep -o "Boost::[a-xA-Z_]*" /cvmfs/atlas-nightlies.cern.ch/repo/sw/main_AthSimulation_x86_64-el9-gcc13-opt/2025-01-08T2101/AthSimulation/25.0.24/InstallArea/x86_64-el9-gcc13-opt/cmake/AthSimulationConfig-targets.cmake | sort | uniq Boost::regex Boost::thread Boost::timer Boost::unit_test_framework [bash][Legolas]:~ > grep -o "Boost::[a-xA-Z_]*" /cvmfs/atlas-nightlies.cern.ch/repo/sw/main_DetCommon_x86_64-el9-gcc13-opt/2025-01-08T2101/DetCommon/25.0.24/InstallArea/x86_64-el9-gcc13-opt/cmake/DetCommonConfig-targets.cmake | sort | uniq Boost::regex Boost::thread Boost::unit_test_framework [bash][Legolas]:~ >
I.e. we'll need to update these statements in the future if we ever start using a new Boost library publicly in one of our packages.
😦
Until this is included and a new nightly is built, the current (2025-01-08
/ 2025-01-09
) nightlies can be used with the following local patch:
diff --git a/Projects/WorkDir/CMakeLists.txt b/Projects/WorkDir/CMakeLists.txt
index e4e4cf5add6..55cd943152a 100644
--- a/Projects/WorkDir/CMakeLists.txt
+++ b/Projects/WorkDir/CMakeLists.txt
@@ -60,6 +60,9 @@ find_package( AtlasCMake QUIET )
# Find the project that we depend on:
find_package( ${ATLAS_PROJECT} REQUIRED )
+# Temporary hack to make r2025-01-08 work.
+find_package( Boost COMPONENTS ALL )
+
# Set up the project with its version and baseline languages.
project( WorkDir VERSION ${${ATLAS_PROJECT}_VERSION} LANGUAGES C CXX )