Skip to content

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 )
 
Edited by Attila Krasznahorkay

Merge request reports

Loading