Building root on lxplus with pythia6

Dear ROOT experts,

I am trying to interface GENIE (software to simulate neutrino interactions) with the NA62 software. Both depends on ROOT.

  • NA62 sw is compiled using:
    /cvmfs/sft.cern.ch/lcg/releases/LCG_98python3/ROOT/v6.22.00/x86_64-centos7-gcc8-opt

  • GENIE needs to have a version of ROOT compiled with option -Dpyhia6=ON and -DPYTHIA6_LIBRARY=/path/to/pythia6/lib. Which of course is not included in any ROOT version available on CVMFS.

So I compile my own version of ROOT with pythia6 and with it I could compile GENIE, but then I cannot anymore compile NA62 software with my new ROOT as some option are missing.

Is there an easy way to recompile ROOT in the exact same was as it was done for:
/cvmfs/sft.cern.ch/lcg/releases/LCG_98python3/ROOT/v6.22.00/x86_64-centos7-gcc8-opt
but just adding the pythia6 options?

Thanks for your help

mathieu


Please read tips for efficient and successful posting and posting code

ROOT Version: Not Provided
Platform: Not Provided
Compiler: Not Provided


Hi @mperrint ,
what does NA62 complain about exactly in your build with Pythia6? It might be much easier to fix that rather than reproduce the LCG build.

Cheers,
Enrico

Hi @eguiraud,

Thanks for your help.

For instance I need to have XROOTD but on lxplus, I don’t manage to compile root with it.
I tried to configure with a -DXROOTD_ROOT_DIR pointing to a valid cvmfs but it didn’t work.
This is what I do:

cmake3 -DCMAKE_INSTALL_PREFIX=~/work/public/root-install2 -DPYTHIA6_LIBRARY=~/work/public/root-install2/lib/libPythia6.so -Dpyhia6=ON -DXROOTD_ROOT_DIR=/cvmfs/sft.cern.ch/lcg/releases/LCG_98python3/xrootd/4.12.3/x86_64-centos7-gcc8-opt/ ~/work/public/root-6.22.00/
and then:
cmake3 --build . --target install -- -j10

and I get:

CMakeFiles/NetxNG.dir/src/TNetXNGFile.cxx.o: In function TNetXNGFile::ReadBuffer(char*, long long, int)': TNetXNGFile.cxx:(.text+0x761): undefined reference to XrdCl::Status::ToString() const’
TNetXNGFile.cxx:(.text+0xc59): undefined reference to XrdCl::Status::ToString() const' CMakeFiles/NetxNG.dir/src/TNetXNGFile.cxx.o: In function TNetXNGFile::ReadBuffers(char*, long long*, int*, int)’:
TNetXNGFile.cxx:(.text+0x1b34): undefined reference to XrdCl::Status::ToString() const' TNetXNGFile.cxx:(.text+0x21d9): undefined reference to XrdCl::Status::ToString() const’
CMakeFiles/NetxNG.dir/src/TNetXNGFile.cxx.o: In function TNetXNGFile::ReOpen(char const*)': TNetXNGFile.cxx:(.text+0x354f): undefined reference to XrdCl::Status::ToString() const’
TNetXNGFile.cxx:(.text+0x3702): undefined reference to XrdCl::File::Open(std::string const&, XrdCl::OpenFlags::Flags, XrdCl::Access::Mode, unsigned short)' TNetXNGFile.cxx:(.text+0x3792): undefined reference to XrdCl::Status::ToString() const’
CMakeFiles/NetxNG.dir/src/TNetXNGFile.cxx.o: In function TNetXNGFile::GetVectorReadLimits()': TNetXNGFile.cxx:(.text+0x44f8): undefined reference to XrdCl::File::GetProperty(std::string const&, std::string&) const’
TNetXNGFile.cxx:(.text+0x451a): undefined reference to XrdCl::URL::URL(std::string const&)' TNetXNGFile.cxx:(.text+0x4580): undefined reference to XrdCl::File::GetProperty(std::string const&, std::string&) const’
TNetXNGFile.cxx:(.text+0x45b8): undefined reference to XrdCl::URL::URL(std::string const&)' CMakeFiles/NetxNG.dir/src/TNetXNGFile.cxx.o: In function TNetXNGFile::SetEnv()’:
TNetXNGFile.cxx:(.text+0x5477): undefined reference to XrdCl::Env::PutInt(std::string const&, int)' TNetXNGFile.cxx:(.text+0x5526): undefined reference to XrdCl::Env::PutInt(std::string const&, int)’
TNetXNGFile.cxx:(.text+0x55d6): undefined reference to XrdCl::Env::PutInt(std::string const&, int)' TNetXNGFile.cxx:(.text+0x5686): undefined reference to XrdCl::Env::PutInt(std::string const&, int)’
TNetXNGFile.cxx:(.text+0x5736): undefined reference to XrdCl::Env::PutInt(std::string const&, int)' CMakeFiles/NetxNG.dir/src/TNetXNGFile.cxx.o:TNetXNGFile.cxx:(.text+0x57e6): more undefined references to XrdCl::Env::PutInt(std::string const&, int)’ follow
CMakeFiles/NetxNG.dir/src/TNetXNGFile.cxx.o: In function TNetXNGFile::SetEnv()': TNetXNGFile.cxx:(.text+0x5c42): undefined reference to XrdCl::Env::PutString(std::string const&, std::string const&)’
TNetXNGFile.cxx:(.text+0x5d37): undefined reference to XrdCl::Env::PutString(std::string const&, std::string const&)' TNetXNGFile.cxx:(.text+0x5e2c): undefined reference to XrdCl::Env::PutString(std::string const&, std::string const&)’
TNetXNGFile.cxx:(.text+0x5ec6): undefined reference to XrdCl::Env::PutInt(std::string const&, int)' CMakeFiles/NetxNG.dir/src/TNetXNGFile.cxx.o: In function TNetXNGFile::TNetXNGFile(char const*, char const*, char const*, char const*, int, int, bool)’:
TNetXNGFile.cxx:(.text+0x7188): undefined reference to XrdCl::DefaultEnv::SetLogLevel(std::string const&)' TNetXNGFile.cxx:(.text+0x722e): undefined reference to XrdCl::URL::URL(std::string const&)’
TNetXNGFile.cxx:(.text+0x7490): undefined reference to XrdCl::File::Open(std::string const&, XrdCl::OpenFlags::Flags, XrdCl::Access::Mode, XrdCl::ResponseHandler*, unsigned short)' TNetXNGFile.cxx:(.text+0x75de): undefined reference to XrdCl::File::Open(std::string const&, XrdCl::OpenFlags::Flags, XrdCl::Access::Mode, unsigned short)’
TNetXNGFile.cxx:(.text+0x766c): undefined reference to XrdCl::Status::ToString() const' TNetXNGFile.cxx:(.text+0x77ef): undefined reference to XrdCl::Status::ToString() const’
CMakeFiles/NetxNG.dir/src/TNetXNGFile.cxx.o: In function XrdCl::XRootDStatus::ToStr() const': TNetXNGFile.cxx:(.text._ZNK5XrdCl12XRootDStatus5ToStrEv[_ZNK5XrdCl12XRootDStatus5ToStrEv]+0x2c): undefined reference to XrdCl::Status::ToString() const’
CMakeFiles/NetxNG.dir/src/TNetXNGSystem.cxx.o: In function TNetXNGSystem::GetDirEntry(void*)': TNetXNGSystem.cxx:(.text+0x1c3): undefined reference to XrdCl::FileSystem::DirList(std::string const&, XrdCl::DirListFlags::Flags, XrdCl::DirectoryList*&, unsigned short)’
CMakeFiles/NetxNG.dir/src/TNetXNGSystem.cxx.o: In function TNetXNGSystem::MakeDirectory(char const*)': TNetXNGSystem.cxx:(.text+0x457): undefined reference to XrdCl::FileSystem::MkDir(std::string const&, XrdCl::MkDirFlags::Flags, XrdCl::Access::Mode, unsigned short)’
CMakeFiles/NetxNG.dir/src/TNetXNGSystem.cxx.o: In function TNetXNGSystem::Unlink(char const*)': TNetXNGSystem.cxx:(.text+0x7aa): undefined reference to XrdCl::FileSystem::Stat(std::string const&, XrdCl::StatInfo*&, unsigned short)’
TNetXNGSystem.cxx:(.text+0x7e0): undefined reference to XrdCl::FileSystem::Rm(std::string const&, unsigned short)' TNetXNGSystem.cxx:(.text+0x917): undefined reference to XrdCl::FileSystem::RmDir(std::string const&, unsigned short)’
CMakeFiles/NetxNG.dir/src/TNetXNGSystem.cxx.o: In function TNetXNGSystem::GetPathInfo(char const*, FileStat_t&)': TNetXNGSystem.cxx:(.text+0xd16): undefined reference to XrdCl::FileSystem::Stat(std::string const&, XrdCl::StatInfo*&, unsigned short)’
CMakeFiles/NetxNG.dir/src/TNetXNGSystem.cxx.o: In function TNetXNGSystem::TNetXNGSystem(char const*, bool)': TNetXNGSystem.cxx:(.text+0x1e54): undefined reference to XrdCl::URL::URL(std::string const&)’
TNetXNGSystem.cxx:(.text+0x1e90): undefined reference to XrdCl::URL::URL(std::string const&)' CMakeFiles/NetxNG.dir/src/TNetXNGSystem.cxx.o: In function TNetXNGSystem::Stage(TCollection*, unsigned char)’:
TNetXNGSystem.cxx:(.text+0x2b7a): undefined reference to XrdCl::FileSystem::Prepare(std::vector<std::string, std::allocator<std::string> > const&, XrdCl::PrepareFlags::Flags, unsigned char, XrdCl::Buffer*&, unsigned short)' CMakeFiles/NetxNG.dir/src/TNetXNGSystem.cxx.o: In function TNetXNGSystem::Locate(char const*, TString&)’:
TNetXNGSystem.cxx:(.text+0x304d): undefined reference to XrdCl::FileSystem::Locate(std::string const&, XrdCl::OpenFlags::Flags, XrdCl::LocationInfo*&, unsigned short)' TNetXNGSystem.cxx:(.text+0x310c): undefined reference to XrdCl::URL::URL(std::string const&)’
collect2: error: ld returned 1 exit status
gmake[2]: *** [lib/libNetxNG.so] Error 1
gmake[1]: *** [net/netxng/CMakeFiles/NetxNG.dir/all] Error 2

any idea?

Uhm you don’t have to take xrootd from the system, you can ask ROOT to build its own version. Does -Dbuiltin_xrootd=ON help?

Thanks a lot @eguiraud , it worked and I could build ROOT with XROOTD.

Now, when I compile na62-fw I get these warning:

Warning in cling::IncrementalParser::CheckABICompatibility():
Possible C++ standard library mismatch, compiled with Warning in cling::IncrementalParser::CheckABICompatibility():
Possible C++ standard library mismatch, compiled with GLIBCXX____GLIBCXX ’ ‘2015062320150623’
Extraction of runtime standard library version was: ‘’
Extraction of runtime standard library version was: ‘2019022220190222’
Error in TInterpreter::InspectMembers: TClass and cling disagree on the size of the class TBaseClass, respectively 128 152

and then when it make the linking (I think) it crashed with these errors attached.

log-head.txt (44.3 KB)

Any idea how to solve it?

Thanks

mathieu

Uhm @Axel or @vvassilev might know exactly what causes errors such as those, but in general it is a mismatch between the environment you built ROOT in and the environment you are running it in. Are na62-fw and ROOT using the same environment?

Cheers,
Enrico

Thanks, in fact I just found the problem. It needed that I build root with -DCMAKE_CXX_STANDARD=17 and by safetly I used the same compiler in all compilations.
Thanks again for the support.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.