Repository navigation
test(conda): guard the per-component package boundaries - #1938
ramakrishnap-nv wants to merge 1 commit into
Conversation
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
The component outputs already load their own library with RTLD_NOW. Four gaps remain: - cuopt_cli is only checked for existence; the executable has its own DT_NEEDED closure that loading libcuopt_mathopt.so does not exercise, so run it. - "A routing-only install no longer pulls cusparse, cudss or nccl" is unasserted: the load test passes either way. Assert absence from the solved environment, so a transitive run_export that re-adds one is caught. Same for the CUDA math libraries in libcuopt-client. - libcuopt.so is a GNU ld script, not an ELF object, so CDLL cannot load it. Parse its INPUT() list and load every library it names. Its package_contents also now covers cuopt-config.cmake and cuopt-targets.cmake, which find_package(cuopt) needs and which are easy to drop when moving installs between outputs. - libcuopt-tests had no tests block; ci/run_ctests.sh globs bin/gtests/libcuopt/*_TEST, so an install landing them elsewhere leaves CI running zero tests and still passing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
df5c9bf to
270437a
Compare
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 12 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe conda recipe adds tests for libcuopt dependency isolation, executable startup, package contents, linker-script component loading, CMake files, and installed integration test executables. Changeslibcuopt package validation
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Other Suggested reviewers: Merge Risk: ⚪ Minimal · up to The added checks target the intended package artifacts without an identified false failure or packaging regression. The change is ready to merge after normal validation. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Comment |
|
Closing — the maintenance cost outweighs the value in this shape. Keeping the context here for whoever picks this up. What prompted it. The component packages in #1928 as actually built pull the libraries the split is meant to remove. Solving a routing-only environment from the CI artifact gives Root cause. Every output inherits That is also why CI went red, though only by luck — one of the ~18 leaked exports was Why not this PR. The routing and client checks were denylists of forbidden package names. They fail correctly today, but they decay silently: a heavy dependency added later that isn't on the list is simply not covered, and nothing ever goes red to say so. Better fix. Worth revisiting are the two items here with nothing to maintain: |
CI Test Summary✅ All 14 test job(s) passed. (2 skipped) |
Stacked on #1928.
#1928 already loads each component library with
RTLD_NOWin an environment holding only that package and its declared dependencies. Four gaps remain:libcuopt-mathoptcuopt_clionly checked for existencecuopt_cli --helplibcuopt-routinglibcuopt-clientlibcuoptlibcuopt.sois an ld script, soCDLLcannot cover itINPUT(), load each librarylibcuoptcuopt-config.cmakeunguardedcuopt-targets.cmaketopackage_contentslibcuopt-teststests:blockpackage_contentsfor three test binariesThe load tests pass whether or not the heavy CUDA libraries are present, so they cannot catch the split regressing. The new assertions run against the solved environment, so a transitive
run_exportis caught too.rattler-buildgives eachtests:entry its own environment, so this needs no extra CI job.Verification
Recipe renders all six outputs under
rattler-build0.57.2 (CI's version). The ld-script parser andconda-metalookup were run against an installed tree: the parser returns the three components and all threeCDLL-load; the lookup detectslibcusparse,libcudss,nccl,libcublasandlibrmmwhen present, so the assertions fail rather than pass vacuously.cuopt_cli --helpexits 0 with no GPU.Not verified: the tests have not run in the real per-output environments, which needs a full conda C++ build.
Checklist
🤖 Generated with Claude Code