Skip to content

Latest commit

 

History

History
103 lines (71 loc) · 3.69 KB

File metadata and controls

103 lines (71 loc) · 3.69 KB

Contributing

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.

Table of Contents

Reporting Issues

Pull Requests

  • Link the PR to its issue.
  • Resolve merge conflicts before requesting review.

Development Setup

Clone and install

git clone git@github.com:cpp-linter/clang-apply-replacements.git
cd clang-apply-replacements
pip install -e ".[test]"

Run tests

pytest

Releasing

Build process

  1. Downloads the LLVM source tree from the official GitHub releases
  2. Compiles clang-apply-replacements statically via CMake
  3. Strips the binary for size reduction
  4. Packages the binary and clang builtin headers into a Python wheel

The build is orchestrated by scikit-build-core and cibuildwheel.

Versioning

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.

Monitoring LLVM upstream

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.

How to release

Option A — Automated (recommended)

  1. Go to Actions → Prepare Release → "Run workflow".
  2. Enter the version (e.g. 16.0.1.0) and run → a PR is auto-created with the version bump.
  3. Review and merge the PR.

Option B — Manual

  1. Edit clang-apply-replacements_version.txt to the desired version.
  2. Create a pull request with the version bump.
  3. Merge the PR.

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