Dear All,
I just came across a build error that I’ve never-ever seen before.
While building 6.14/04
, I received this:
...
Scanning dependencies of target G__Imt
Scanning dependencies of target G__RIO
[ 75%] Generating G__Imt.cxx, ../../lib/libImt.rootmap
[ 75%] Generating G__RIO.cxx, ../../lib/libRIO.rootmap
[ 75%] Linking CXX executable ../bin/root.exe
[ 75%] Built target root.exe
[ 75%] Linking CXX shared library ../../lib/libunordered_multimapDict.so
[ 75%] Built target G__Imt
Scanning dependencies of target Imt
[ 75%] Building CXX object core/imt/CMakeFiles/Imt.dir/src/TThreadExecutor.cxx.o
[ 75%] Building CXX object core/imt/CMakeFiles/Imt.dir/src/TImplicitMT.cxx.o
[ 75%] Building CXX object core/imt/CMakeFiles/Imt.dir/G__Imt.cxx.o
[ 75%] Building CXX object core/imt/CMakeFiles/Imt.dir/src/TTaskGroup.cxx.o
[ 75%] Building CXX object core/imt/CMakeFiles/Imt.dir/src/TPoolManager.cxx.o
[ 75%] Building CXX object core/imt/CMakeFiles/Imt.dir/src/base.cxx.o
[ 75%] Built target unordered_multimapDict
[ 75%] Built target G__RIO
Scanning dependencies of target RIOObjs
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/src/TBufferIO.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/src/TBufferText.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/src/TBufferMerger.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/G__RIO.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/v7/src/TFile.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/src/TBufferMergerFile.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/src/TBufferFile.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/src/TCollectionProxyFactory.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/src/TArchiveFile.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/src/TBufferJSON.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/src/TContainerConverters.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/src/TDirectoryFile.cxx.o
[ 75%] Building CXX object io/io/CMakeFiles/RIOObjs.dir/src/TEmulatedCollectionProxy.cxx.o
/build2/atlasexternals/1.0/AnalysisBaseExternals/src/ROOT-build/core/imt/G__Imt.cxx: In function 'void {anonymous}::TriggerDictionaryInitialization_libImt_Impl()':
/build2/atlasexternals/1.0/AnalysisBaseExternals/src/ROOT-build/core/imt/G__Imt.cxx:273:100: error: no matching function for call to 'TROOT::RegisterModule(const char [7], const char* [5], const char* [2], const char*&, const char*&, void (&)(), <brace-enclosed initializer list>, const char* [10], bool)'
TriggerDictionaryInitialization_libImt_Impl, {}, classesHeaders, /*has no C++ module*/false);
^
In file included from /build2/atlasexternals/1.0/AnalysisBaseExternals/src/ROOT-build/core/imt/G__Imt.cxx:16:0:
/build2/atlasexternals/1.0/AnalysisBaseExternals/x86_64-slc6-gcc62-opt/lib/cmake/VecCore/../../../include/TROOT.h:305:22: note: candidate: static void TROOT::RegisterModule(const char*, const char**, const char**, const char*, const char*, void (*)(), const FwdDeclArgsToKeepCollection_t&, const char**)
static void RegisterModule(const char* modulename,
^~~~~~~~~~~~~~
/build2/atlasexternals/1.0/AnalysisBaseExternals/x86_64-slc6-gcc62-opt/lib/cmake/VecCore/../../../include/TROOT.h:305:22: note: candidate expects 8 arguments, 9 provided
make[5]: *** [core/imt/CMakeFiles/Imt.dir/G__Imt.cxx.o] Error 1
make[5]: *** Waiting for unfinished jobs....
...
I included a few more lines than absolutely necessary to show that ROOT was seemingly generating the G__Imt.cxx
dictionary file at the right time. (My build setup is not necessarily the simplest, though ROOT should really see itself making a full build in this setup.) But somehow it ends up being broken.
This is the problematic call in G__Imt.cxx
:
static bool isInitialized = false;
if (!isInitialized) {
TROOT::RegisterModule("libImt",
headers, includePaths, payloadCode, fwdDeclCode,
TriggerDictionaryInitialization_libImt_Impl, {}, classesHeaders, /*has no C++ module*/false);
isInitialized = true;
}
But I can’t make heads or tails of it. Other dictionary source files, which succeeded with their build, have calls exactly like this. I really don’t know what failed here.
And mind you, in a “local” build I don’t see this issue. It only shows up on our Continuous Integration machine. And I’m quite lost as to what the heck went wrong… Any ideas would be much appreciated.
Cheers,
Attila
ROOT Version: 6.14/04
Platform: x86_64-slc6-gcc62-opt
Compiler: GCC 6.2