[CI] Test installed headers for include errors - #19543
Open
hageboeck wants to merge 8 commits into
Open
Conversation
Test Results 21 files 21 suites 3d 7h 10m 53s ⏱️ For more details on these failures, see this check. Results for commit 7d19648. ♻️ This comment has been updated with latest results. |
hageboeck
force-pushed
the
postInstallHeaderTest
branch
5 times, most recently
from
October 9, 2025 09:58
91b55e2 to
f1ec055
Compare
hageboeck
force-pushed
the
postInstallHeaderTest
branch
4 times, most recently
from
September 1, 2026 14:54
d9afa80 to
670a4cc
Compare
hageboeck
force-pushed
the
postInstallHeaderTest
branch
2 times, most recently
from
September 3, 2026 09:36
b30fb35 to
7d19648
Compare
RTaskArena uses a message pointing to imt=Off, whereas TThreadExecutor was pointing to the name of the ROOT-internal macro. Here, the same error message is used.
Instead of globbing in inc/ and unconditionally installing all headers, provide a mode where all headers which are supposed to be installed have to be listed explicitly. In this way, headers that correspond to disabled features can be left out of modules and install set. In the long run, these sets can be converted to CMake file sets, which will simplify associating them to targets.
By explicitly listing the headers to be installed instead of globbing for them, disabled features can be removed from the install set.
When curl or daos are off, the corresponding headers are broken. Therefore, they should not be installed.
Add a script that checks all installed headers for syntax errors. This tests if they can be included standalone or if they rely on parasitic includes. Several subfolders or headers are skipped for now, since they either cannot be used standalone or depend on externals which are not necessarily installed.
hageboeck
force-pushed
the
postInstallHeaderTest
branch
from
September 4, 2026 07:06
7d19648 to
b768923
Compare
hageboeck
force-pushed
the
postInstallHeaderTest
branch
from
September 4, 2026 07:14
b768923 to
5faca22
Compare
hageboeck
marked this pull request as ready for review
September 4, 2026 07:19
hageboeck
force-pushed
the
postInstallHeaderTest
branch
from
September 4, 2026 09:43
5faca22 to
0e0d5f2
Compare
After installing, check all headers for syntax errors. This detects headers whose includes can't be resolved.
hageboeck
force-pushed
the
postInstallHeaderTest
branch
from
September 4, 2026 10:28
0e0d5f2 to
f1c4435
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add a new step to the CI. In this step, every installed header is checked for syntax errors.
Some headers which are installed are exempt, for example from TMVA, vdt, bvh, and single instances such as headers that aren't supposed to be used standalone. Minimising the suppressions and fixing the corresponding headers will be moved into a separate issue.
The test works as follows: the compiler is invoked to only run the syntax checks. If the header doesn't include all headers it depends on, this will provoke errors. This means that this header works by accident, because it's included in another TU that was already including the relevant dependencies.
This is less aggressive than IncludeWhatYouUse, but still validates that all headers can be included on their own.
Note, some commits were split off to other PRs: