Thank you for investing your time in contributing to this project! ✨
This project packages clang-apply-replacements for PyPI. Contributions
that improve the packaging, build pipeline, CI, or platform support are
welcome. For changes to the tool itself, see the
LLVM project.
- Bugs and feature requests — open an issue
- Questions — start a discussion or use issues
- Link the PR to its issue.
- Resolve merge conflicts before requesting review.
git clone git@github.com:cpp-linter/clang-apply-replacements.git
cd clang-apply-replacements
pip install -e ".[test]"pytest- Downloads the LLVM source tree from the official GitHub releases
- Compiles
clang-apply-replacementsstatically via CMake - Strips the binary for size reduction
- Packages the binary and clang builtin headers into a Python wheel
The build is orchestrated by scikit-build-core and cibuildwheel.
The version is stored in clang-apply-replacements_version.txt.
The format is <LLVM_MAJOR>.<LLVM_MINOR>.<LLVM_PATCH>, optionally
followed by .<WHEEL_PACKAGING> for rebuilds of the same LLVM version.
A monitor-llvm workflow runs daily to check for new stable LLVM releases.
When one is found, it automatically creates an issue labeled llvm-update.
Option A — Automated (recommended)
- Go to Actions → Prepare Release → "Run workflow".
- Enter the version (e.g.
16.0.1.0) and run → a PR is auto-created with the version bump. - Review and merge the PR.
- The auto-tag workflow creates and pushes the git tag.
- The release workflow builds wheels, tests them, and publishes to PyPI.
Option B — Manual
- Edit
clang-apply-replacements_version.txtto the desired version. - Create a pull request with the version bump.
- Merge the PR.
- The auto-tag workflow creates and pushes the git tag.
- The release workflow builds wheels, tests them, and publishes to PyPI.
To rebuild the same LLVM version (e.g. to fix a packaging issue), use
.post<N> as the 4th version component, or trigger the workflow
manually via the Actions tab with these inputs:
| Input | Description | Default |
|---|---|---|
llvm_version |
Override the LLVM version | (from version file) |
wheel_version |
Version suffix for rebuilds | 0 |
deploy_to_testpypi |
Deploy to TestPyPI instead of PyPI | false |
use_qemu |
Build QEMU-emulated targets (armv7l, i686) | true |