Coder Social home page Coder Social logo

Comments (14)

rbx avatar rbx commented on August 17, 2024

Hello,

was FairRoot compiled with DDS enabled?
If it was, then DDS is included as a dependency of FairRoot (FairMQ to be specific).
Was DDS found in your AliceO2 CMake run? If not, try providing a path to it like this:
cmake -DDDS_PATH="/home/username/DDS/0.11.27.g79f48d4/" .. (with a proper path)

It could also be that we are missing a check for the dependency in the example's CMakeLists.txt.
Can you please try to add the following lines in Examples/flp2epn/CMakeLists.txt after line 55:

if(DDS_FOUND)
  set(DEPENDENCIES
    ${DEPENDENCIES}
    ${DDS_INTERCOM_LIBRARY_SHARED}
    ${DDS_PROTOCOL_LIBRARY_SHARED}
    ${DDS_USER_DEFAULTS_LIBRARY_SHARED}
  )
endif()

If this solves the issue then I will update it in the dev branch.

from aliceo2.

rbx avatar rbx commented on August 17, 2024

I've tried to reproduce this on my machines.

When FairRoot is built without DDS, any configuration of AliceO2 on OSX/Linux compiles and runs.

When FairRoot is built with DDS, DDS is included as dependency of FairMQ. In this case on both Linux/OSX everything compiles. On Linux everything (executables using FairMQ) also runs properly. But on the OSX machine, the executables that depend on FairMQ fail by not finding the DDS library. Investigating with ldd/otool I can see that the Linux build includes DDS as a dependency only when it is actually used, but the OSX build includes DDS for all executables/libraries that use FairMQ.

Applying the above CMake modifications solves the runtime problem, but is probably not the best solution because it lists/includes unused dependencies (actually dependencies of a dependency) ... need to investigate why this is happening and how change it.

That said, I still cannot reproduce any compilation errors as the ones you described.

from aliceo2.

urasantonio avatar urasantonio commented on August 17, 2024

Hello Alexey,

the AliceO2 CMake actually finds DDS:

-- Looking for DDS ... found 
/Users/auras/alialfa/ExternalPackages/DDS/lib/libdds_intercom_lib.dylib;/Users/auras/alialfa/ExternalPackages/DDS/lib/libdds_protocol_lib.dylib;/Users/auras/alialfa/ExternalPackages/DDS/lib/libdds-user-defaults.dylib

After editing the Examples/flp2epn/CMakeLists.txt file, I still have
this error when making AliceO2:

[ 27%] Built target flpSyncSampler
[ 27%] Linking CXX shared library ../lib/libCCDB.so
ld: file not found: @rpath/libdds_intercom_lib.dylib for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
make[2]: *** [lib/libCCDB.0.0.0.so] Error 1
make[1]: *** [CCDB/CMakeFiles/CCDB.dir/all] Error 2
make: *** [all] Error 2

Best regards,
Antonio

On 21/07/16 11:34, Alexey Rybalchenko wrote:

Hello,

was FairRoot compiled with DDS enabled?
If it was, then DDS is included as a dependency of FairRoot (FairMQ to
be specific).
Was DDS found in your AliceO2 CMake run? If not, try providing a path
to it like this:
|cmake -DDDS_PATH="/home/username/DDS/0.11.27.g79f48d4/" ..| (with a
proper path)

It could also be that we are missing a check for the dependency in the
example's CMakeLists.txt.
Can you please try to add the following lines in
|Examples/flp2epn/CMakeLists.txt| after line 55:

if(DDS_FOUND)
set(DEPENDENCIES
${DEPENDENCIES}
${DDS_INTERCOM_LIBRARY_SHARED}
${DDS_PROTOCOL_LIBRARY_SHARED}
${DDS_USER_DEFAULTS_LIBRARY_SHARED}
)
endif()

If this solves the issue then I will update it in the dev branch.


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
#131 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATny0gHFpGc-P66PgERd15dCcmpJBuncks5qXz0_gaJpZM4JRkKd.

Antonio Uras
Institut de Physique Nucléaire de Lyon
http://cern.ch/auras

from aliceo2.

urasantonio avatar urasantonio commented on August 17, 2024

I'll try to build FairRoot without DDS: how shall I modify the cmake command in order to do it?

Thanks,
Antonio

from aliceo2.

rbx avatar rbx commented on August 17, 2024

Hello Antonio,

the libCCDB is hitting the same problem.
Please try the following:
After you run AliceO2 CMake, add the DDS lib location to you DYLD path like this:

export DYLD_LIBRARY_PATH=/Users/username/DDS/1.1.53.gff56723/lib/:$DYLD_LIBRARY_PATH

(replace username and DDS version according to what you have).

from aliceo2.

urasantonio avatar urasantonio commented on August 17, 2024

Thanks Alexey,

as suggested, after the Alice O2 CMake I added
/Users/auras/alialfa/ExternalPackages/DDS/lib (the directory containing
the libdds_intercom_lib.dylib library) to DYLD_LIBRARY_PATH, but when
performing the make of Alice O2 I still have:

[ 27%] Linking CXX shared library ../lib/libCCDB.so
ld: file not found: @rpath/libdds_intercom_lib.dylib for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
make[2]: *** [lib/libCCDB.0.0.0.so] Error 1
make[1]: *** [CCDB/CMakeFiles/CCDB.dir/all] Error 2
make: *** [all] Error 2

Any hint?

Thanks, cheers
Antonio

On 29/07/16 10:47, Alexey Rybalchenko wrote:

Hello Antonio,

the libCCDB is hitting the same problem.
Please try the following:
After you run AliceO2 CMake, add the DDS lib location to you DYLD path
like this:

export DYLD_LIBRARY_PATH=/Users/username/DDS/1.1.53.gff56723/lib/:$DYLD_LIBRARY_PATH

(replace username and DDS version according to what you have).


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
#131 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATny0iwz7k_N9BkEMNDuEWCNzVGD8hexks5qab4_gaJpZM4JRkKd.

Antonio Uras
Institut de Physique Nucléaire de Lyon
http://cern.ch/auras

from aliceo2.

rbx avatar rbx commented on August 17, 2024

Without being able to reproduce this it is hard to say what goes wrong, although it does sound like a linker configuration problem...
Could you mention which compiler you are using (output of clang --version)?

For now, to get your compilation done, you can do either of these three things:

  • Apply the same CMake fix that helped you get flp2epn example compiling to the other parts that use FairMQ - if I am not forgetting any, it should be CCDB/CMakeLists.txt, o2cdb/CMakeLists.txt, Utilities/QA/CMakeLists.txt. Put the if(DDS_FOUND)... block after the set(DEPENDENCIES...) command.
  • Compile FairRoot without DDS. For this, just rename the libdds_intercom_lib.dylib that you have to something else, like libdds_intercom_lib_BACKUP.dylib. And then, recompile FairRoot and AliceO2.
  • Try to use the new aliBuild approach to build the entire project.

I will update this issue when I can reproduce/fix this.

from aliceo2.

urasantonio avatar urasantonio commented on August 17, 2024

Thanks Alexey. The output of clang --version is:

Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin14.5.0
Thread model: posix

Concerning the three options you suggest... unfortunately, none of them
seems to work with me:

  1. The first option couldn't be applied since in the CMakeLists.txt
    files I don't find any block starting with "if(DDS_FOUND)". Is it normal?

  2. The second option gives me the following error when recompiling FairRoot:

[ 36%] Built target fairmq_logger
make[2]: *** No rule to make target
/Users/auras/alialfa/ExternalPackages/DDS/lib/libdds_intercom_lib.dylib', needed bylib/libFairMQ.16.06.00.so'. Stop.
make[1]: *** [fairmq/CMakeFiles/FairMQ.dir/all] Error 2
make: *** [all] Error 2

  1. The third option is the one I'm following in parallel (in an
    independent directory tree, to avoid conflicts) with the support of
    Giulio Eulisse and Dario Berzano: unfortunately, this method fails
    already in compiling FairRoot due a problem in the library
    libsodium.18.dylib.

Any (more) hint?

Thanks, cheers
Antonio

On 04/08/16 13:12, Alexey Rybalchenko wrote:

Without being able to reproduce this it is hard to say what goes
wrong, although it does sound like a linker configuration problem...
Could you mention which compiler you are using (output of |clang
--version|)?

For now, to get your compilation done, you can do either of these
three things:

  • Apply the same CMake fix that helpep you get flp2epn example
    compiling to the other parts that use FairMQ - if I am not
    forgetting any, it should be |CCDB/CMakeLists.txt|,
    |o2cdb/CMakeLists.txt|, |Utilities/QA/CMakeLists.txt|. Put the
    |if(DDS_FOUND)...| block after the |set(DEPENDENCIES...)| command.
  • Compile FairRoot without DDS. For this, just rename the
    libdds_intercom_lib.dylib that you have to something else, like
    libdds_intercom_lib_BACKUP.dylib. nd then, recompile FairRoot and
    AliceO2.
  • Try to use the new aliBuild approach to build the entire project.

I will update this issue when I can reproduce/fix this.


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
#131 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATny0klMYBetLY5VQ2Ca51dmBzaG_7Qnks5qcckmgaJpZM4JRkKd.

Antonio Uras
Institut de Physique Nucléaire de Lyon
http://cern.ch/auras

from aliceo2.

rbx avatar rbx commented on August 17, 2024
  1. That is correct, the if(DDS_FOUND) block is the one you are adding, see my first reply in this thread.

  2. Sounds like you need to clean the build directory, CMake still thinks that DDS is found from the previous time it ran (so it is still trying to build those with the DDS dependency).

Hope these help :)

from aliceo2.

urasantonio avatar urasantonio commented on August 17, 2024

Sorry, I forgot that I had to create the if(DDS_FOUND) block :) Now the
AliceO2 compiling goes fine, thanks a lot!!

Cheers,
Antonio

On 04/08/16 16:36, Alexey Rybalchenko wrote:

  1. That is correct, the if(DDS_FOUND) block is the one you are adding,
    see my first reply in this thread.

  2. Sounds like you need to clean the build directory, CMake still
    thinks that DDS is found from the previous time it ran (so it is still
    trying to build those with the DDS dependency).

Hope these help :)


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
#131 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATny0vH90S4IeOtBGrovjHrZ1KzF8V_Lks5qcfj_gaJpZM4JRkKd.

Antonio Uras
Institut de Physique Nucléaire de Lyon
http://cern.ch/auras

from aliceo2.

urasantonio avatar urasantonio commented on August 17, 2024

Dear experts,

I'm re-installing the whole FairSoft + AliceO2 package and I'm again in trouble with the same problem discussed in this thread. All went fine with the FairSoft installation, but when compiling AliceO2 I find:

auras@lyoalice07:~/alialfa/AliceO2/build_o2$ make
-- Looking for Root...
-- Looking for Root... - Found /Users/auras/alialfa/external/bin/root
-- Looking for Root... - Found version is 6.06/02
-- Looking for PYTHIA8 ...
-- Looking for PYTHIA8... - found /Users/auras/alialfa/external/lib
-- Looking for Pythia6...
-- Looking for Pythia6... - found /Users/auras/alialfa/external/lib
-- Looking for GEANT3...
-- Looking for GEANT3... - found /Users/auras/alialfa/external/lib64/libgeant321.dylib
-- Looking for GEANT4...
-- Looking for GEANT4... - found /Users/auras/alialfa/external/lib
-- Looking for GEANT4 DATA files...
-- Found G4EMLOW data
-- Found PhotonEvaporation data
-- Found G4NDL data
-- Found G4NEUTRONXS data
G4PIIDATA: /Users/auras/alialfa/external/share/Geant4-10.2.1/data/G4PII1.3
-- Found G4PII data
-- Found RadioactiveDecay data
-- Found RealSurface data
-- Found G4SAID data
-- Found G4ENSDFSTATE data
-- Looking for GEANT4VMC...
-- Looking for GEANT4VMC... - found /Users/auras/alialfa/external/lib
-- Looking for VGM...
-- Looking for VGM... - found /Users/auras/alialfa/external/lib
-- Looking for CLHEP...
-- Looking for CLHEP... - found /Users/auras/alialfa/external/lib
-- Looking for CERNLIB...
-- Looking for HepMC ...
-- Looking for HepMC... - found /Users/auras/alialfa/external/lib
-- Looking for IWYU...
-- Looking for IWYU... - Not found
-- Looking for DDS...
-- Looking for DDS ... found /Users/auras/alialfa/external/DDS/lib/libdds_intercom_lib.dylib;/Users/auras/alialfa/external/DDS/lib/libdds_protocol_lib.dylib;/Users/auras/alialfa/external/DDS/lib/libdds-user-defaults.dylib
-- Boost version: 1.60.0
-- Found the following Boost libraries:
-- thread
-- system
-- timer
-- program_options
-- random
-- filesystem
-- chrono
-- exception
-- regex
-- serialization
-- log
-- log_setup
-- unit_test_framework
-- date_time
-- atomic
-- Looking for ZeroMQ...
-- Looking for ZeroMQ... - found /Users/auras/alialfa/external/lib64/libzmq.a;/Users/auras/alialfa/external/lib64/libzmq.dylib 4.1.3
-- Setting FairRoot environment…
-- FairRoot ... - found /Users/auras/alialfa/external/FairRoot
-- FairRoot Library directory : /Users/auras/alialfa/external/FairRoot/lib
-- FairRoot Include path… : /Users/auras/alialfa/external/FairRoot/include
-- FairRoot Cmake Modules : /Users/auras/alialfa/external/FairRoot/share/fairbase/cmake
-- FairRoot ... - found /Users/auras/alialfa/external/FairRoot
-- Looking for FairMQ functionality in FairRoot ...
-- Looking for FairMQ functionality in FairRoot: yes
-- Set BuildType DEBUG
-- fairsoft-config found
-- C compiler used for FairSoft installation: /usr/bin/gcc
-- C compiler used now: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-- CXX compiler used for FairSoft installation: /usr/bin/g++
-- CXX compiler used now: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-- The compiler during the compilation of FairSoft is different from the current one.
-- The error was silenced by the usage of -DUSE_DIFFERENT_COMPILER=TRUE
--- Found a Mac OS X System 10.10
--- Found GNU compiler collection
Fortran libraries found in /usr/local/gfortran/lib/gcc/x86_64-apple-darwin14/4.9.1/../../..
--- Build Type: Debug
--- Compiler Flags: -std=c++11 -std=c++11 -stdlib=libc++
-- Generate test testExampleModule1
running /bin/chmod u+x /Users/auras/alialfa/AliceO2/build_o2/macro/run_sim.sh 2>&1
running /bin/chmod u+x /Users/auras/alialfa/AliceO2/build_o2/macro/run_digi.sh 2>&1
running /bin/chmod u+x /Users/auras/alialfa/AliceO2/build_o2/macro/run_clusterer.sh 2>&1
running /bin/chmod u+x /Users/auras/alialfa/AliceO2/build_o2/macro/load_all_libs.sh 2>&1
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/auras/alialfa/AliceO2/build_o2
-- Found Git: /usr/bin/git (found version "2.5.4 (Apple Git-61)")
fatal: No names found, cannot describe anything.
-- FairRoot Version - from - Mon Oct 3 18:26:34 2016 +0200
[ 0%] Built target svnheader
[ 1%] Linking CXX shared library ../../lib/libSimulationDataFormat.dylib
ld: file not found: @rpath/libdds_intercom_lib.dylib for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/libSimulationDataFormat.dylib] Error 1
make[1]: *** [DataFormats/simulation/CMakeFiles/SimulationDataFormat.dir/all] Error 2
make: *** [all] Error 2

I tried to apply the same recipe as before (adding the if(DDS_FOUND) block to the CMakeLists.txt files) but it seems it doesn't work anymore. By the way, have the CMakeLists.txt files been modified w.r.t. what I found in July? For instance, I don't find at all the o2cdb/CMakeLists.txt file...

Thanks, cheers
Antonio

from aliceo2.

rbx avatar rbx commented on August 17, 2024

Dear Antonio,

indeed there have been some changes in the build system and now dependencies are handled via a "bucket" system.

I am working on a way to completely solve the linking issue that you are seeing.

Until then, please try the following workaround for your build. In the file cmake/O2Dependencies.cmake add following two lines (marked with comments) here (starts on line 197):

o2_define_bucket(
    NAME
    fairroot_base_bucket

    DEPENDENCIES
    root_base_bucket
    Base FairMQ FairTools ${Boost_LOG_LIBRARY} fairmq_logger Base
    common_boost_bucket
    ${Boost_THREAD_LIBRARY} pthread
    ${OPTIONAL_DDS_LIBRARIES} # <-------- this line 

    INCLUDE_DIRECTORIES
    ${FAIRROOT_INCLUDE_DIR}
    ${OPTIONAL_DDS_INCLUDE_DIR} # <-------- and this line
)

from aliceo2.

urasantonio avatar urasantonio commented on August 17, 2024

Hi Alexey,

Has the issue been fixed in the meanwhile?

Thanks, cheers
Antonio

from aliceo2.

rbx avatar rbx commented on August 17, 2024

Hi Antonio,

yes, it is now fixed. Please try the newest dev branches of FairRoot/AliceO2.

With the new version, the control & config via DDS is handled by a plugin mechanism, thus the FairMQ and user devices don't need direct dependency on DDS (unless they use it for something other than what the plugin provides).

from aliceo2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.