feat: add llvm-cov, llvm-profdata, llvm-symbolizer, clang-scan-deps#118
Merged
Conversation
Add four new tools to the static binary build pipeline: - llvm-cov: code coverage reporting - llvm-profdata: profile data manipulation (merge, show, etc.) - llvm-symbolizer: address-to-source-line symbolization - clang-scan-deps: C/C++ module and header dependency scanning Changes: - build.py: add tools to TOOLS list with version constraints (clang-scan-deps requires LLVM 12+, clang-include-cleaner requires 18+); add end-to-end smoke tests for each new tool - build.yml: update upload-artifact pattern to include llvm-* binaries - release.py: expand versions.json with tools list (and per-tool min_llvm_version constraints) and supported platforms — this is now the single source of truth for all downstream channels - README.md: update description, support matrix with 4 new tools, and versions.json documentation - CONTRIBUTING.md: update tools list and versions.json description - scoop-examples/: add manifest examples for the 4 new tools; update README with new tool table
for more information, see https://pre-commit.ci
…add clang build target for smoke tests Two issues were causing all 15 CI build jobs to fail: 1. llvm-profdata on LLVM < 17 uses a subcommand interface and does not support the --version flag (LLVM 17+ added explicit handling in llvm-profdata.cpp main()). Skip --version for this specific case and verify the binary loads by running it with no args instead. 2. Functional smoke tests (llvm-profdata, llvm-cov, llvm-symbolizer) need the clang compiler driver to compile short C programs, but clang was never in the cmake build targets list (only clang-* tools were). Conditionally add 'clang' to cmake --target list when needed.
for more information, see https://pre-commit.ci
The smoke tests for llvm-profdata and llvm-cov compile C programs with -fprofile-instr-generate, which requires libclang_rt.profile-*.a from compiler-rt. Since compiler-rt is not enabled in the cmake configuration, these tests fail on all platforms. Add _check_profile_runtime() helper that probes whether the runtime is available before running the instrumented compilation. When unavailable: - llvm-profdata: test merge/show argument parsing with a minimal (dummy) .profraw instead of a real instrumented binary - llvm-cov: skip gracefully with an info message
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
macOS ARM64 CI jobs were failing with GCC 14 compiler errors against Xcode 26.5 SDK headers (mach/message.h) that use xnu_static_assert macros not understood by GCC in C++ mode. macos-latest recently switched to macOS 15 + Xcode 26.5 which ships these incompatible headers. Pin to macos-14 which has a stable, older Xcode version compatible with GCC 14.
The test-release steps (both bash and PowerShell) run --version on downloaded artifacts. llvm-profdata on LLVM < 17 doesn't support --version. Detect the LLVM version from the filename and skip --version when < 17, verifying the binary by running with no args instead.
The build.py already runs --version (or equivalent) smoke tests on every built tool during the build step. The test-release step was repeating the same verification, adding complexity and maintenance burden for no additional safety. Keep test-release as a dependency gate only.
Contributor
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
WalkthroughThe PR expands the tracked LLVM/Clang tool set, adds version-aware tool metadata and filtering, and updates CI workflow runner selection, artifact handling, and Windows verification steps. ChangesTooling, metadata, and CI workflow updates
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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 four new tools to the static binary build pipeline:
Changes:
Summary by CodeRabbit