-
Notifications
You must be signed in to change notification settings - Fork 84
fix: install header patterns use wrong csrc/ prefix and missing - #6051
fix: install header patterns use wrong csrc/ prefix and missing #6051andrewwhitecdw wants to merge 1 commit into
Conversation
Greptile SummaryThe PR corrects header-install patterns so paths are evaluated relative to the
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains; the corrected positive patterns install both transitive headers identified in the previous thread. Important Files Changed
Reviews (2): Last reviewed commit: "fix: install header patterns use wrong c..." | Re-trigger Greptile |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P1 Required transitive headers excluded
When downstream consumers compile the installed base.h or polymorphic_value.h, these rules exclude the extensionless C++23/utility and struct.inl headers that they unconditionally include, causing compilation to fail with missing-header errors.
Signed-off-by: andrewwhitecdw <andrewwhitecdw@users.noreply.github.com>
b1c2abf to
e8143f5
Compare
andrewwhitecdw
commented
Aug 17, 2026
@greptile-apps thanks for catching that. I removed the EXCLUDE modifier from C++23/utility and struct.inl so the installed header tree includes the transitive headers required by base.h and polymorphic_value.h. C++20/compare remains excluded because no installed public header currently pulls it in. The updated commit is e8143f52b.
That distinction makes sense. Looking at the current diff state:
PATTERN "C++20/compare" EXCLUDE PATTERN "C++23/utility" PATTERN "struct.inl")
The logic is correct — FILES_MATCHING treats patterns without EXCLUDE as additional inclusion filters, so C++23/utility and struct.inl will be installed alongside *.h files, while C++20/compare is explicitly excluded.
One observation worth considering: the sanity test in test_cmake_sanity.py only guards against the old bad patterns reappearing, but doesn't assert the positive side — that C++23/utility and struct.inl are present without EXCLUDE. If someone later incorrectly adds EXCLUDE to those lines (or drops them entirely), the test won't catch it. You might want to add assertions like:
# Transitive headers required by installed public headers must be present # without EXCLUDE. for required in ( 'PATTERN "C++23/utility"', 'PATTERN "struct.inl"', ): self.assertIn(required, block) # Ensure the line is not followed by EXCLUDE self.assertNotIn(required + " EXCLUDE", block)
Otherwise the fix looks good.
Uh oh!
There was an error while loading. Please reload this page.
This PR addresses the following issue in
CMakeLists.txt: install header patterns use wrongcsrc/prefix and missing headers.Changes
CMakeLists.txt: make theinstall(DIRECTORY ... FILES_MATCHING ...)patterns relative toNVFUSER_SRCS_DIR, keepC++20/compareexcluded, and install the required extensionless headersC++23/utilityandstruct.inl.Details
csrc/base.hincludes<C++23/utility>andcsrc/polymorphic_value.hincludes<struct.inl>. Excluding those files from the installed header tree breaks downstream consumers that compile against the installed headers.C++20/compareis not currently used by any installed public header, so it remains excluded.Testing
Ran a local Python sanity check that verifies the install block:
The check confirms the patterns are relative to
NVFUSER_SRCS_DIR,C++20/compareis excluded, andC++23/utilityandstruct.inlare included (not excluded).