Repository navigation
Fix ROOT dictionary autoload header paths in views - #228
Conversation
tmadlener
left a comment
There was a problem hiding this comment.
Wondering whether we could solve at least some of these issues by not re-implementing half of the root dictionary generation here, but rather using the one that comes with ROOT now.
CI seems to have been happy before as well. Did we not catch this due to not testing the env / stack where this happens, or because we have no test for this at all?
|
I reproduced in #229 by removing CPATH, this PR also removes CPATH from the test environment and fixes it as CI is passing. So the answer was that the environment that we were using in LCIO is a bit special with a CPATH pointing to the includes which is hiding the issue. LCG stacks do not set CPATH.
Many things could be changed in iLCSoft packages related to CMake, targets, etc. I don't mind, not sure if it's worth it and maybe then you can not support the old ROOT versions that are in CI like now. |
|
Should the |
|
I thought I had done that but apparently not, there are many possible failures 🤯 |
|
Closing and re-opening just to re-trigger CI to see if things are still working today. |
LCIO's ROOT dictionaries currently record source-tree relative header paths such as
include/IMPL/LCCollectionVec.h. Installed views expose<view>/includethroughROOT_INCLUDE_PATH, so ROOT cannot resolve thosepaths and
import pyLCIOfails when the Python ownership decorators accessLCCollectionVec::addElement.Normalize dictionary header paths relative to
ROOT_DICT_INCLUDE_DIRSbefore passing them torootcint. Keep LinkDefdefined_inpragmas and CMake dependencies on the original absolute paths, becauserootcintuses themto generate class registrations.
BEGINRELEASENOTES
ROOT_INCLUDE_PATHinstead ofCPATHfor the local testsENDRELEASENOTES
Issue uncovered by iLCSoft/LCIO#226. Importing pyLCIO in a view without
include/IMPLinROOT_INCLUDE_PATHfails: