From fa8b34116885c5cb36969d6061f31f5e0f79be6f Mon Sep 17 00:00:00 2001 From: Florian Uhlig <f.uhlig@gsi.de> Date: Sun, 14 Mar 2021 14:38:48 +0100 Subject: [PATCH] Allow to use FairRoot from a Spack installation Remove check for ZeroMQ. ZeroMQ isn't needed any longer. Fix installation of externals when using Spack. Pass extra flags flags to NicaFemto configuration if needed. Patch ipc source code. Add missing include file. Cleanup .gitignore in externals. Fix linking of CbmGlobalTraking library. Add missing link directory. In normal installation Vc probably was found in the ROOT installation. With Spack ROOT is build without builtin Vc. Use correct syntax for function call. With the latest FairMQ version the old backward compatibility layer was removed. Use now the new syntax to change the state. --- CMakeLists.txt | 2 +- MQ/hitbuilder/CbmDeviceHitBuilderTof.cxx | 28 ++++++++---------------- external/.gitignore | 2 -- external/InstallNicaFemto.cmake | 7 ++++++ external/ipc/CMakeLists.txt | 1 + external/ipc/ipc.patch | 13 +++++++++++ reco/tracking/global/CMakeLists.txt | 1 + 7 files changed, 32 insertions(+), 22 deletions(-) create mode 100644 external/ipc/ipc.patch diff --git a/CMakeLists.txt b/CMakeLists.txt index 13772c164f..880fd6c713 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -273,7 +273,7 @@ else(CBMROOT_MINIMAL) find_package(TBB) find_package(SSE) # find_package(IWYU) - find_package(ZeroMQ) +# find_package(ZeroMQ) Set(Boost_NO_SYSTEM_PATHS TRUE) Set(Boost_NO_BOOST_CMAKE TRUE) diff --git a/MQ/hitbuilder/CbmDeviceHitBuilderTof.cxx b/MQ/hitbuilder/CbmDeviceHitBuilderTof.cxx index d750ce4184..12066ade69 100644 --- a/MQ/hitbuilder/CbmDeviceHitBuilderTof.cxx +++ b/MQ/hitbuilder/CbmDeviceHitBuilderTof.cxx @@ -259,8 +259,7 @@ void CbmDeviceHitBuilderTof::InitTask() try { InitRootOutput(); } catch (InitTaskError& e) { LOG(error) << e.what(); - //ChangeState(ERROR_FOUND); - ChangeState(fair::mq::Transition(ERROR_FOUND)); + ChangeState(fair::mq::Transition::ErrorFound); } bool CbmDeviceHitBuilderTof::IsChannelNameAllowed(std::string channelName) { @@ -453,8 +452,7 @@ Bool_t CbmDeviceHitBuilderTof::InitContainers() { iGeoVersion = fGeoHandler->Init(isSimulation); if (k21a > iGeoVersion) { LOG(error) << "Incompatible geometry !!!"; - //ChangeState(STOP); - ChangeState(fair::mq::Transition(STOP)); + ChangeState(fair::mq::Transition::Stop); } switch (iGeoVersion) { case k14a: fTofId = new CbmTofDetectorId_v14a(); break; @@ -656,8 +654,7 @@ bool CbmDeviceHitBuilderTof::HandleData(FairMQParts& parts, int /*index*/) { WriteHistograms(); fOutRootFile->Close(); LOG(info) << "File closed after " << fdEvent << " events. "; - //ChangeState(STOP); - ChangeState(fair::mq::Transition(STOP)); + ChangeState(fair::mq::Transition::Stop); } } if (!FillHistos()) @@ -700,12 +697,9 @@ bool CbmDeviceHitBuilderTof::HandleMessage(FairMQMessagePtr& msg, ChangeState(END); LOG(info) << "Current State: " << FairMQStateMachine::GetCurrentStateName(); */ - // ChangeState(fair::mq::Transition(internal_READY)); - //ChangeState(fair::mq::Transition(internal_DEVICE_READY)); - //ChangeState(fair::mq::Transition(internal_IDLE)); - ChangeState(fair::mq::Transition(STOP)); + ChangeState(fair::mq::Transition::Stop); std::this_thread::sleep_for(std::chrono::milliseconds(1000)); - ChangeState(fair::mq::Transition(END)); + ChangeState(fair::mq::Transition::End); } return true; @@ -795,8 +789,7 @@ Bool_t CbmDeviceHitBuilderTof::InitCalibParameter() { if (NULL == fCalParFile) { LOG(error) << "InitCalibParameter: " << "file " << fCalParFileName << " does not exist!"; - //ChangeState(STOP); - ChangeState(fair::mq::Transition(STOP)); + ChangeState(fair::mq::Transition::Stop); } /* gDirectory->Print(); @@ -2579,8 +2572,7 @@ Bool_t CbmDeviceHitBuilderTof::BuildHits() { fChannelInfo->GetY(), fChannelInfo->GetZ(), fNode); - //ChangeState(STOP); - ChangeState(fair::mq::Transition(STOP)); + ChangeState(fair::mq::Transition::Stop); } CbmTofDigi* xDigiA = @@ -3419,8 +3411,7 @@ Bool_t CbmDeviceHitBuilderTof::AddNextChan(Int_t iSmType, fChannelInfo->GetY(), fChannelInfo->GetZ(), cNode); - //ChangeState(STOP); - ChangeState(fair::mq::Transition(STOP)); + ChangeState(fair::mq::Transition::Stop); } /*TGeoHMatrix* cMatrix = */ gGeoManager->GetCurrentMatrix(); @@ -3580,8 +3571,7 @@ Bool_t CbmDeviceHitBuilderTof::LoadGeometry() { fChannelInfo->GetY(), fChannelInfo->GetZ(), fNode); - //ChangeState(STOP); - ChangeState(fair::mq::Transition(STOP)); + ChangeState(fair::mq::Transition::Stop); } if (icell == 0) { TGeoHMatrix* cMatrix = gGeoManager->GetCurrentMatrix(); diff --git a/external/.gitignore b/external/.gitignore index a0c1e79cd8..95ce981061 100644 --- a/external/.gitignore +++ b/external/.gitignore @@ -5,9 +5,7 @@ NicaFemto Vc cppzmq flib_dpb/flib_dpb -flib_dpb_20 ipc/ipc -ipc_legacy/ipc jsroot googletest diff --git a/external/InstallNicaFemto.cmake b/external/InstallNicaFemto.cmake index ca62f01981..f77aba58ff 100644 --- a/external/InstallNicaFemto.cmake +++ b/external/InstallNicaFemto.cmake @@ -21,6 +21,12 @@ If(ProjectUpdated) Message("NicaFemto source directory was changed so build directory was deleted") EndIf() +If(USE_DIFFERENT_COMPILER) + Set(EXTRA_ARGS "-DUSE_DIFFERENT_COMPILER=TRUE") +Else() + Set(EXTRA_ARGS "") +EndIf() + ExternalProject_Add(NICAFEMTO BUILD_IN_SOURCE 0 SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/NicaFemto @@ -37,6 +43,7 @@ ExternalProject_Add(NICAFEMTO -DROOTSYS=${SIMPATH} -DJSROOT=${CMAKE_CURRENT_SOURCE_DIR} -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON + "${EXTRA_ARGS}" INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install ) diff --git a/external/ipc/CMakeLists.txt b/external/ipc/CMakeLists.txt index 1c0752f798..1aa23c83d6 100644 --- a/external/ipc/CMakeLists.txt +++ b/external/ipc/CMakeLists.txt @@ -8,6 +8,7 @@ download_project_if_needed(PROJECT fles_ipc GIT_TAG "e2d20813a74561cf58661b077c046c0da1f28288" GIT_STASH TRUE SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ipc + PATCH_COMMAND "patch -p1 < ${CMAKE_CURRENT_SOURCE_DIR}/ipc.patch" TEST_FILE CMakeLists.txt ) diff --git a/external/ipc/ipc.patch b/external/ipc/ipc.patch new file mode 100644 index 0000000000..bb86afb777 --- /dev/null +++ b/external/ipc/ipc.patch @@ -0,0 +1,13 @@ +diff --git a/lib/fles_ipc/StorableTimeslice.cpp b/lib/fles_ipc/StorableTimeslice.cpp +index 8d7ca72..15a3e88 100644 +--- a/lib/fles_ipc/StorableTimeslice.cpp ++++ b/lib/fles_ipc/StorableTimeslice.cpp +@@ -2,6 +2,8 @@ + + #include "StorableTimeslice.hpp" + ++#include <algorithm> ++ + namespace fles { + + StorableTimeslice::StorableTimeslice(const StorableTimeslice& ts) diff --git a/reco/tracking/global/CMakeLists.txt b/reco/tracking/global/CMakeLists.txt index 2a5921fa9c..64cdd31b27 100755 --- a/reco/tracking/global/CMakeLists.txt +++ b/reco/tracking/global/CMakeLists.txt @@ -41,6 +41,7 @@ Set(LINK_DIRECTORIES ${FAIRROOT_LIBRARY_DIR} ${Boost_LIBRARY_DIRS} ${KFParticle_LIB_DIR} + ${Vc_LIB_DIR} ) Link_Directories( ${LINK_DIRECTORIES}) -- GitLab