RootUtils: Workaround for pyroot __pair_base issue.
In gcc8, std::pair derives from the (empty) base class std::__pair_base. When ROOT makes dictionaries, it likes to strip std:: qualifiers. When it then tries to look up cling information for a TClass, if the lookup fails, it tries again with the std:: reinserted for all STL classes (with TClassEdit::InsertStd()). However, that doesn't work for __pair_base, because it's not a class that ROOT knows about. The upshot is that we see errors like:
Error in TClass::LoadClassInfo: no interpreter information for class __pair_base<unsigned int,string> is available even though it has a TClass initialization routine.
We work around this by hooking into ROOT's TClass creation. If we see a std::pair class, we erase the base class information from its TClass.
Merge request reports
Activity
added Core master review-pending-level-1 labels
CI Result FAILUREAthena AthSimulation externals cmake make required tests optional tests Full details available at NICOS MR-22163-2019-03-27-09-20
Athena: number of compilation errors 0, warnings 0
AthSimulation: number of compilation errors 0, warnings 0
For experts only: Jenkins output [CI-MERGE-REQUEST 36032]added urgent label
mentioned in merge request !22158 (merged)
added review-pending-level-2 label and removed review-pending-level-1 label
added RC Attention Required review-approved labels and removed review-pending-level-2 label
@wlampl, could this one be merged to make Overlay CI test run? (but maybe have a quick look before merging)
Edited by Tadej Novakmentioned in commit 06be26bf
Hi @ssnyder,
Thanks for the fix. I can confirm that diff-root now runs as expected.
Running a reco job now, I still see warnings like:
Error in <TClass::GetCheckSum>: Calculating the checksum for (pair<unsigned int,vector<int> >) requires the base class (__pair_base<unsigned int,vector<int> >) meta information to be available!
I suppose the remaining
selection.xml
files will have to be updated.added sweep:ignore label
I still see those two failing: