zoglauer / megalib

MEGAlib - the Medium-Energy Gamma-ray Astronomy library
http://megalibtoolkit.com
Other
42 stars 34 forks source link

Compilation issues on HPC (SL7) #37

Closed jccurtis closed 6 years ago

jccurtis commented 6 years ago

I'm trying to recompile the experimental branch on a HPC cluster (running SL7) to patch the recent event iteration bug fix (fc917f9) but I'm running into the following error after successfully building ROOT/GEANT4:

Compiling dictionary ...
Linking libGeomegaGui ...
Compiling dictionary ...
Linking libGeomega ...
Linking geomega ...
OMITTED/megalib/lib/libGeomegaGui.so: undefined reference to `TROOT::RegisterModule(char const*, char const**, char const**, char const*, char const*, void (*)(), std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > > const&, char const**)'
collect2: error: ld returned 1 exit status
make[2]: *** [OMITTED/megalib/bin/geomega] Error 1
make[1]: *** [geo] Error 2
make: *** [geo] Error 2
ERROR: Something went wrong while compiling MEGAlib!

Could this be related to the recent python bindings? I'm using the following environment:

Currently Loaded Modulefiles:
  1) gcc/6.3.0        3) cmake/3.7.2
  2) tbb/2016.4.072   4) git/2.11.1

The ROOT and GEANT4 versions built before this error:

root_v6.10.08
geant4_v10.02.p03
zoglauer commented 6 years ago

Hi Joey,

Could you try ROOT 6.12? I have no access to SL7, but I was able to reproduce the problem on cori (opensuse) when using ROOT 6.10.02 and it is gone with 6.12.06.

Cheers, Andreas

zoglauer commented 6 years ago

Set config/AllowedROOTVersions.txt to "612" and rerun the setup

jccurtis commented 6 years ago

Can I tell the main build script to download 6.12 or should I build it separately and then point to it?

Disregard that, I didn't see your second comment ... I am testing now ...

zoglauer commented 6 years ago

In config/AllowedROOTVersiona.txt set the version number to 612. Then the setup script will automatically download and install the latest version.

On May 30, 2018, at 12:08 AM, Joseph Curtis notifications@github.com wrote:

Can I tell the main build script to download 6.12 or should I build it separately and then point to it?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

jccurtis commented 6 years ago

When installing root_v6.12.06 I see the following warning many times:

Warning in cling::IncrementalParser::CheckABICompatibility():
  Possible C++ standard library mismatch, compiled with __GLIBCXX__ '20150623'
  Extraction of runtime standard library version was: '20161221'

I also see:

IncrementalExecutor::executeFunction: symbol '_ZN5cling10printValueB5cxx11EPPKv' unresolved while linking [cling interface function]!
You are probably missing the definition of cling::printValue[abi:cxx11](void const**)
Maybe you need to load the corresponding shared library?
ERROR in cling's callPrintValue(): cannot pass value!
(TFile *) ERROR in cling's callPrintValue(): missing value string.

Then while building MEGAlib:

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TBaseClass, respectively 128 152

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TClassRef, respectively 16 40

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TClassRef, respectively 16 40

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TEnum, respectively 216 240

and eventually get the same error:

Linking libGeomega ...
Linking geomega ...
OMITTED/megalib/lib/libGeomegaGui.so: undefined reference to `TROOT::RegisterModule(char const*, char const**, char const**, char const*, char const*, void (*)(), std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > > const&, char const**)'
collect2: error: ld returned 1 exit status
make[2]: *** [OMITTED/megalib/bin/geomega] Error 1
make[1]: *** [geo] Error 2
make: *** [geo] Error 2
ERROR: Something went wrong while compiling MEGAlib!
zoglauer commented 6 years ago

You have some kind of library mismatch. Do you have your old version of ROOT still in your path? Or another version of ROOT? Or another installation of cling? With installing ROOT you mean you are compiling it, right?

jccurtis commented 6 years ago

Yes I'm compiling ROOT (and GEANT and MEGAlib) with the MEGAlib included setup bash script (I know there is some redundancy in the args because of keepmegalibasis to prevent changing config/AllowedROOTVersions.txt:

bash setup.sh --release=dev --patch=yes --clean=yes --branch=experimental --keepenvironmentasis=yes --keepmegalibasis=yes --megalibpath=OMITTED/megalib

I looked at my $LD_LIBRARY_PATH and $PATH and didn't see anything referring to another version of ROOT or cling. I did notice this test fails in the root configuration before building:

-- Performing Test GLIBCXX_USE_CXX11_ABI
-- Performing Test GLIBCXX_USE_CXX11_ABI - Failed
jccurtis commented 6 years ago

This appears to be related to this ROOT forum post which I remember reading when I last faced similar issues on the same HPC but that was related to the Intel library tbb ... I'm going to try to build with gcc/4.8.5

jccurtis commented 6 years ago

Alright compiling ROOT/GEANT/MEGAlib with gcc/4.8.5 resolved the issue on this HPC. Thanks for the help @zoglauer! Closing