Repository navigation
[cmake] Allow excluding additional include paths from being stored in dictionaries - #23705
Conversation
Test Results 24 files 24 suites 4d 0h 30m 56s ⏱️ For more details on these failures, see this check. Results for commit f3bf7c7. ♻️ This comment has been updated with latest results. |
|
ROOT in dev3 now doesn't show any paths to build directories after setting the installation prefix with this new variable: |
Should we revert the commit then? |
|
No, that was the point of this change, not to have includes to build paths that don't exist anymore (for us, the |
Oh! OK, sorry... And thanks for the feedback then! |
This Pull request:
Changes or fixes:
The include directories of external dependencies used by a library are stored in the
includePaths[]of its dictionary, and they are added to the interpreter when the library is loaded. When ROOT and its dependencies are built in one place and then relocated, these paths no longer exist but still show up ingSystem->GetIncludePath(). For example, in the LCG nightlies, ROOT and its dependencies are built under/build/jenkins/...and then deployed to CVMFS:This adds
ROOT_DICTIONARY_EXCLUDE_PATHS, a list of path prefixes that are passed to rootcling as-excludePath, so that include paths under them are not stored in the dictionaries (let me know if there is a better way of doing this). They are still used for parsing when generating the dictionaries. This is only useful for builds that are relocated, where the dependencies are found at runtime through the environment of the final installation (e.g.ROOT_INCLUDE_PATH). Nothing changes when the variable is not set. For the case above, it would be-DROOT_DICTIONARY_EXCLUDE_PATHS=/build/jenkins/workspace/lcg_nightly_pipeline/install/dev3.Together with #23704, which does the same for the ROOT build directory, no build paths are left in
gSystem->GetIncludePath().Checklist: