Skip to content
Snippets Groups Projects

Add fmtlib support to EventContext

Merged Marco Clemencic requested to merge 311-evtctx-fmt into master
All threads resolved!
  • make EventContext formattable via fmtlib
  • implement operator<<(ostream&, ...) in terms of fmt::format
  • add a test to ensure that EventContext formatting and printing is stable

Closes #311 (closed)

Merge request reports

Pipeline #7516839 passed

Pipeline passed for d36d1a86 on 311-evtctx-fmt

Approval is optional

Merged by Marco ClemencicMarco Clemencic 7 months ago (Jul 29, 2024 10:03am UTC)

Merge details

Pipeline #7840526 canceled

Pipeline canceled for 1089d18f on master

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Marco Clemencic changed milestone to %v38r3

    changed milestone to %v38r3

  • added 1 commit

    • d36d1a86 - Fix compatibility with fmtlib < 8

    Compare with previous version

  • Edited by Software for LHCb
    • Resolved by Marco Clemencic

      This seems to break compilation with nvcc:

      /build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/build/install/AthenaExternals/25.0.9/InstallArea/x86_64-el9-gcc13-opt/include/GaudiKernel/EventContext.h: In member function 'auto fmt::v10::formatter<EventContext>::format(const EventContext&, fmt::v10::format_context&) const':
      /build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/build/install/AthenaExternals/25.0.9/InstallArea/x86_64-el9-gcc13-opt/include/GaudiKernel/EventContext.h:151:20: error: 'consteval fmt::v10::basic_format_string<Char, Args>::basic_format_string(const S&) [with S = char [21]; typename std::enable_if<std::is_convertible<const S&, fmt::v10::basic_string_view<Char> >::value, int>::type <anonymous> = 0; Char = char; Args = {long unsigned int, long unsigned int, long unsigned int}]' called in a constant expression
        151 |         out = fmt::format( "s: {}  e: {} sub: {}", ec.slot(), ec.evt(), ec.subSlot() );
            |         ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /cvmfs/sft.cern.ch/lcg/releases/fmt/10.0.0-f6609/x86_64-el9-gcc13-opt/include/fmt/core.h:2758:40: note: 'consteval fmt::v10::basic_format_string<Char, Args>::basic_format_string(const S&) [with S = char [21]; typename std::enable_if<std::is_convertible<const S&, fmt::v10::basic_string_view<Char> >::value, int>::type <anonymous> = 0; Char = char; Args = {long unsigned int, long unsigned int, long unsigned int}]' is not usable as a 'constexpr' function because:
       2758 |   FMT_CONSTEVAL FMT_INLINE basic_format_string(const S& s) : str_(s) {
            |                                        ^~~~~~~~~~~~~~~~~~~
      /build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/build/install/AthenaExternals/25.0.9/InstallArea/x86_64-el9-gcc13-opt/include/GaudiKernel/EventContext.h:153:20: error: 'consteval fmt::v10::basic_format_string<Char, Args>::basic_format_string(const S&) [with S = char [13]; typename std::enable_if<std::is_convertible<const S&, fmt::v10::basic_string_view<Char> >::value, int>::type <anonymous> = 0; Char = char; Args = {long unsigned int, long unsigned int}]' called in a constant expression
        153 |         out = fmt::format( "s: {}  e: {}", ec.slot(), ec.evt() );
            |         ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /cvmfs/sft.cern.ch/lcg/releases/fmt/10.0.0-f6609/x86_64-el9-gcc13-opt/include/fmt/core.h:2758:40: note: 'consteval fmt::v10::basic_format_string<Char, Args>::basic_format_string(const S&) [with S = char [13]; typename std::enable_if<std::is_convertible<const S&, fmt::v10::basic_string_view<Char> >::value, int>::type <anonymous> = 0; Char = char; Args = {long unsigned int, long unsigned int}]' is not usable as a 'constexpr' function because:
       2758 |   FMT_CONSTEVAL FMT_INLINE basic_format_string(const S& s) : str_(s) {
            |                                        ^~~~~~~~~~~~~~~~~~~
      /build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/build/install/AthenaExternals/25.0.9/InstallArea/x86_64-el9-gcc13-opt/include/GaudiKernel/EventContext.h: In function 'std::ostream& operator<<(std::ostream&, const EventContext&)':
      /build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/build/install/AthenaExternals/25.0.9/InstallArea/x86_64-el9-gcc13-opt/include/GaudiKernel/EventContext.h:162:104: error: 'consteval fmt::v10::basic_format_string<Char, Args>::basic_format_string(const S&) [with S = char [3]; typename std::enable_if<std::is_convertible<const S&, fmt::v10::basic_string_view<Char> >::value, int>::type <anonymous> = 0; Char = char; Args = {const EventContext&}]' called in a constant expression
        162 | inline std::ostream& operator<<( std::ostream& os, const EventContext& ctx ) { return os << fmt::format( "{}", ctx ); }
            |                                                                                             ~~~~~~~~~~~^~~~~~~~~~~
      /cvmfs/sft.cern.ch/lcg/releases/fmt/10.0.0-f6609/x86_64-el9-gcc13-opt/include/fmt/core.h:2758:40: note: 'consteval fmt::v10::basic_format_string<Char, Args>::basic_format_string(const S&) [with S = char [3]; typename std::enable_if<std::is_convertible<const S&, fmt::v10::basic_string_view<Char> >::value, int>::type <anonymous> = 0; Char = char; Args = {const EventContext&}]' is not usable as a 'constexpr' function because:
       2758 |   FMT_CONSTEVAL FMT_INLINE basic_format_string(const S& s) : str_(s) {
            |                                        ^~~~~~~~~~~~~~~~~~~
      /build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/build/install/AthenaExternals/25.0.9/InstallArea/x86_64-el9-gcc13-opt/include/GaudiKernel/EventContext.h: In function 'std::ostream& operator<<(std::ostream&, const EventContext*)':
      /build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/build/install/AthenaExternals/25.0.9/InstallArea/x86_64-el9-gcc13-opt/include/GaudiKernel/EventContext.h:165:36: error: 'consteval fmt::v10::basic_format_string<Char, Args>::basic_format_string(const S&) [with S = char [3]; typename std::enable_if<std::is_convertible<const S&, fmt::v10::basic_string_view<Char> >::value, int>::type <anonymous> = 0; Char = char; Args = {const EventContext&}]' called in a constant expression
        165 |   if ( c ) { return os << fmt::format( "{}", *c ); }
            |                         ~~~~~~~~~~~^~~~~~~~~~
      error: Failed to execute /cvmfs/sft.cern.ch/lcg/releases/LCG_104d_ATLAS_17/cuda/12.4/x86_64-el9-gcc13-opt/bin/nvcc -forward-unknown-to-host-compiler -ccbin=/cvmfs/sft.cern.ch/lcg/releases/gcc/13.1.0-b3d18/x86_64-el9/bin/g++ -DATLAS_PACKAGE_NAME="AthExCUDA" -DAthExCUDA_EXPORTS -DBOOST_CHRONO_DYN_LINK -DBOOST_CHRONO_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_FILESYSTEM_NO_LIB -DBOOST_REGEX_DYN_LINK -DBOOST_REGEX_NO_LIB -DBOOST_SYSTEM_DYN_LINK -DBOOST_SYSTEM_NO_LIB -DBOOST_THREAD_DYN_LINK -DBOOST_THREAD_NO_LIB -DCLHEP_ABS_DEFINED -DCLHEP_MAX_MIN_DEFINED -DCLHEP_SQR_DEFINED -DEIGEN_DONT_VECTORIZE -DEIGEN_NO_CUDA -DFMT_SHARED -DGAUDI_V20_COMPAT -DJSON_DIAGNOSTICS=0 -DJSON_USE_IMPLICIT_CONVERSIONS=1 -DVECMEM_DEBUG_MSG_LVL=0 -DVECMEM_HAVE_PMR_MEMORY_RESOURCE -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/AthenaExamples/AthExCUDA -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/AthenaBaseComps -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/AthenaKernel -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/CxxUtils -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/DataModelRoot -I/cvmfs/sft.cern.ch/lcg/releases/Boost/1.82.0-fbfc9/x86_64-el9-gcc13-opt/include -I/cvmfs/sft.cern.ch/lcg/releases/LCG_104d_ATLAS_17/fmt/10.0.0/x86_64-el9-gcc13-opt/include -I/cvmfs/sft.cern.ch/lcg/releases/LCG_104d_ATLAS_17/jsonmcpp/3.10.5/x86_64-el9-gcc13-opt/include -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Event/xAOD/xAODEventInfo -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/AthContainers -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/AthContainersInterfaces -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/AthLinks -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/SGTools -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/AthAllocators -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Event/xAOD/xAODCore -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/RootUtils -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/StoreGate -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Database/PersistentDataModel -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Event/xAOD/xAODTracking -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/DetectorDescription/GeoPrimitives -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Event/EventPrimitives -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Event/xAOD/xAODBase -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Event/xAOD/xAODMeasurementBase -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkEvent/TrkNeutralParameters -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkDetDescr/TrkSurfaces -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/DetectorDescription/Identifier -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkEvent/TrkParametersBase -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkEvent/TrkEventPrimitives -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkDetDescr/TrkDetDescrUtils -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkDetDescr/TrkDetElementBase -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkEvent/TrkParameters -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkEvent/TrkTrack -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkEvent/TrkMaterialOnTrack -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkEvent/TrkMeasurementBase -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkEvent/TrkTrackLink -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkEvent/TrkTrackSummary -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Tracking/TrkEvent/VxVertex -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/AthCUDA/AthCUDAInterfaces -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/AthCUDA/AthCUDAKernel -I/build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/AthCUDA/AthCUDACore -isystem /build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/build/install/AthenaExternals/25.0.9/InstallArea/x86_64-el9-gcc13-opt/include -isystem /cvmfs/sft.cern.ch/lcg/releases/LCG_104d_ATLAS_17/Boost/1.82.0/x86_64-el9-gcc13-opt/include -isystem /cvmfs/sft.cern.ch/lcg/releases/LCG_104d_ATLAS_17/ROOT/6.28.12/x86_64-el9-gcc13-opt/include -isystem /cvmfs/sft.cern.ch/lcg/releases/LCG_104d_ATLAS_17/tbb/2020_U2/x86_64-el9-gcc13-opt/include -isystem /cvmfs/sft.cern.ch/lcg/releases/LCG_104d_ATLAS_17/cppgsl/3.1.0/x86_64-el9-gcc13-opt/include -isystem /cvmfs/sft.cern.ch/lcg/releases/LCG_104d_ATLAS_17/rangev3/0.11.0/x86_64-el9-gcc13-opt/include -isystem /cvmfs/atlas.cern.ch/repo/sw/tdaq/tdaq-common/tdaq-common-11-02-01/installed/external/x86_64-el9-gcc13-opt/include -isystem /build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/build/install/AthenaExternals/25.0.9/InstallArea/x86_64-el9-gcc13-opt/lib/CLHEP-2.4.1.3/../../include -isystem /cvmfs/sft.cern.ch/lcg/releases/LCG_104d_ATLAS_17/eigen/3.4.0/x86_64-el9-gcc13-opt/include/eigen3 -O2 -g -DNDEBUG -std=c++20 --generate-code=arch=compute_52,code=[compute_52,sm_52] -Xcompiler=-fPIC -Xcudafe --diag_suppress=177 -MD -MT Control/AthenaExamples/AthExCUDA/CMakeFiles/AthExCUDA.dir/src/TrackParticleCalibratorExampleAlg.cu.o -MF Control/AthenaExamples/AthExCUDA/CMakeFiles/AthExCUDA.dir/src/TrackParticleCalibratorExampleAlg.cu.o.d -x cu -c /build/atnight/localbuilds/nightlies/Athena/main--mainGAUDI-OMR/athena/Control/AthenaExamples/AthExCUDA/src/TrackParticleCalibratorExampleAlg.cu -o Control/AthenaExamples/AthExCUDA/CMakeFiles/AthExCUDA.dir/src/TrackParticleCalibratorExampleAlg.cu.o (return code: 1)
      Edited by Frank Winklmeier
  • Marco Clemencic changed milestone to %v39r0

    changed milestone to %v39r0

  • Marco Clemencic resolved all threads

    resolved all threads

  • Frank Winklmeier resolved all threads

    resolved all threads

  • Frank Winklmeier approved this merge request

    approved this merge request

  • mentioned in commit 1089d18f

Please register or sign in to reply
Loading