fix: install header patterns use wrong csrc/ prefix and missing - #6051
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 |
| PATTERN "C++23/utility" EXCLUDE | ||
| PATTERN "struct.inl" EXCLUDE) |
There was a problem hiding this comment.
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.
| PATTERN "C++23/utility" EXCLUDE | |
| PATTERN "struct.inl" EXCLUDE) | |
| PATTERN "C++23/utility" | |
| PATTERN "struct.inl") |
Signed-off-by: andrewwhitecdw <andrewwhitecdw@users.noreply.github.com>
b1c2abf to
e8143f5
Compare
|
@greptile-apps thanks for catching that. I removed the |
|
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 — One observation worth considering: the sanity test in # 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. |
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).