Repository navigation
Update the RustPython Ruff fork to 0.17.2 #1
Workflow file for this run
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
| # Build ruff on all platforms. | |
| # | |
| # Generates both wheels (for PyPI) and archived binaries (for GitHub releases). | |
| # | |
| # Assumed to run as a subworkflow of .github/workflows/release.yml; specifically, as a local | |
| # artifacts job within `cargo-dist`. | |
| name: "Build binaries" | |
| on: | |
| workflow_call: | |
| inputs: | |
| plan: | |
| required: true | |
| type: string | |
| pull_request: | |
| paths: | |
| # When we change pyproject.toml, we want to ensure that the maturin builds still work. | |
| - pyproject.toml | |
| # And when we change this workflow itself... | |
| - .github/workflows/build-binaries.yml | |
| - scripts/build_ruff_pgo.py | |
| concurrency: | |
| group: build-binaries-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| permissions: | |
| contents: read | |
| env: | |
| UV_LOCKED: 1 | |
| ACTIONS_CACHE_MODE: none | |
| PACKAGE_NAME: ruff | |
| MODULE_NAME: ruff | |
| PYTHON_VERSION: "3.13" | |
| CARGO_INCREMENTAL: 0 | |
| CARGO_NET_RETRY: 10 | |
| CARGO_TERM_COLOR: always | |
| RUSTUP_MAX_RETRIES: 10 | |
| jobs: | |
| sdist: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: depot-ubuntu-24.04-4 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| cache: "" | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: "Prep README.md" | |
| run: python scripts/transform_readme.py --target pypi | |
| - name: "Build sdist" | |
| uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0 | |
| with: | |
| sccache: false | |
| maturin-version: v1.15.0 | |
| command: sdist | |
| args: --out dist | |
| - name: "Test sdist" | |
| uses: astral-sh/github-actions/release-smoke-test@3994daa59cb9d97f991f8196a17218a2641fce4b | |
| with: | |
| image: python:3.13-bookworm@sha256:933b46a028fd786c9c3d426ebabc237e29a15912231ea8de576e95f0e4f41a4c | |
| artifacts: dist | |
| rust-toolchain: rust-toolchain.toml | |
| run: | | |
| # pip builds outside /test, where the toolchain file no longer applies. | |
| rustup default "$(rustup show active-toolchain | cut -d ' ' -f1)" | |
| pip install /dist/"${PACKAGE_NAME}"-*.tar.gz --force-reinstall | |
| "${MODULE_NAME}" --help | |
| python -m "${MODULE_NAME}" --help | |
| - name: "Upload sdist" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-sdist | |
| path: dist | |
| macos-x86_64: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: ${{ github.repository == 'astral-sh/ruff' && 'namespace-profile-macos-15' || 'macos-15' }} | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| cache: "" | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| architecture: x64 | |
| - name: "Prep README.md" | |
| run: python scripts/transform_readme.py --target pypi | |
| - name: "Build wheels - x86_64" | |
| uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0 | |
| with: | |
| sccache: false | |
| maturin-version: v1.15.0 | |
| target: x86_64 | |
| args: --release --locked --out dist --compatibility pypi | |
| env: | |
| # Use Rust's bundled Mach-O LLD, which supports ICF. | |
| # ICF reduces the macOS x86_64 ruff binary size by ~1.5%. | |
| RUSTFLAGS: "-C linker=rust-lld -C linker-flavor=ld64.lld -C link-arg=--icf=safe" | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-macos-x86_64 | |
| path: dist | |
| - name: "Archive binary" | |
| run: | | |
| TARGET=x86_64-apple-darwin | |
| ARCHIVE_NAME=ruff-$TARGET | |
| ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz | |
| mkdir -p $ARCHIVE_NAME | |
| cp target/$TARGET/release/ruff $ARCHIVE_NAME/ruff | |
| tar czvf $ARCHIVE_FILE $ARCHIVE_NAME | |
| shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 | |
| - name: "Upload binary" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: artifacts-macos-x86_64 | |
| path: | | |
| *.tar.gz | |
| *.sha256 | |
| macos-aarch64: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: ${{ github.repository == 'astral-sh/ruff' && 'namespace-profile-macos-15' || 'macos-15' }} | |
| env: | |
| # Use Rust's bundled Mach-O LLD, which supports ICF. | |
| # ICF reduces the macOS aarch64 ruff binary size by ~0.8%. | |
| RUSTFLAGS: "-C linker=rust-lld -C linker-flavor=ld64.lld -C link-arg=--icf=safe" | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| cache: "" | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| architecture: arm64 | |
| - name: "Install LLVM profiling tools" | |
| run: rustup component add llvm-tools-preview | |
| - name: "Train PGO Ruff" | |
| run: | | |
| python scripts/build_ruff_pgo.py \ | |
| --target aarch64-apple-darwin \ | |
| --target-dir "${{ github.workspace }}/target/ruff-pgo" \ | |
| --train-only | |
| - name: "Prep README.md" | |
| run: python scripts/transform_readme.py --target pypi | |
| - name: "Build wheels - aarch64" | |
| uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0 | |
| with: | |
| sccache: false | |
| maturin-version: v1.15.0 | |
| target: aarch64 | |
| args: --release --locked --out dist --compatibility pypi | |
| env: | |
| RUSTFLAGS: "${{ env.RUSTFLAGS }} -Cprofile-use=${{ github.workspace }}/target/ruff-pgo/ruff.profdata" | |
| # Apple Clang cannot consume profile data from rustc's LLVM version. | |
| CFLAGS: "-fno-profile-generate -fno-profile-use" | |
| CXXFLAGS: "-fno-profile-generate -fno-profile-use" | |
| - name: "Test wheel - aarch64" | |
| run: | | |
| pip install dist/"${PACKAGE_NAME}"-*.whl --force-reinstall | |
| ruff --help | |
| python -m ruff --help | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-aarch64-apple-darwin | |
| path: dist | |
| - name: "Archive binary" | |
| run: | | |
| TARGET=aarch64-apple-darwin | |
| ARCHIVE_NAME=ruff-$TARGET | |
| ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz | |
| mkdir -p $ARCHIVE_NAME | |
| cp target/$TARGET/release/ruff $ARCHIVE_NAME/ruff | |
| tar czvf $ARCHIVE_FILE $ARCHIVE_NAME | |
| shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 | |
| - name: "Upload binary" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: artifacts-aarch64-apple-darwin | |
| path: | | |
| *.tar.gz | |
| *.sha256 | |
| windows: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: ${{ github.repository == 'astral-sh/ruff' && 'namespace-profile-windows-2022-x86-64-16x32' || 'windows-latest' }} | |
| strategy: | |
| matrix: | |
| platform: | |
| - target: x86_64-pc-windows-msvc | |
| arch: x64 | |
| - target: i686-pc-windows-msvc | |
| arch: x86 | |
| - target: aarch64-pc-windows-msvc | |
| arch: x64 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| cache: "" | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| architecture: ${{ matrix.platform.arch }} | |
| - name: "Install LLVM profiling tools" | |
| if: ${{ matrix.platform.target == 'x86_64-pc-windows-msvc' }} | |
| run: rustup component add llvm-tools-preview | |
| - name: "Train PGO Ruff" | |
| if: ${{ matrix.platform.target == 'x86_64-pc-windows-msvc' }} | |
| shell: bash | |
| run: | | |
| export RUSTFLAGS="${RUSTFLAGS:+${RUSTFLAGS} }-C target-feature=+crt-static" | |
| python scripts/build_ruff_pgo.py \ | |
| --target "${{ matrix.platform.target }}" \ | |
| --target-dir "${{ github.workspace }}/target/ruff-pgo" \ | |
| --train-only | |
| echo "RUSTFLAGS=${RUSTFLAGS:+${RUSTFLAGS} }-Cprofile-use=${{ github.workspace }}/target/ruff-pgo/ruff.profdata" >> "$GITHUB_ENV" | |
| - name: "Prep README.md" | |
| run: python scripts/transform_readme.py --target pypi | |
| - name: "Build wheels" | |
| uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0 | |
| with: | |
| sccache: false | |
| maturin-version: v1.15.0 | |
| target: ${{ matrix.platform.target }} | |
| args: --release --locked --out dist --compatibility pypi | |
| env: | |
| # aarch64 build fails, see https://github.com/PyO3/maturin/issues/2110 | |
| XWIN_VERSION: 16 | |
| - name: "Verify static Windows runtime" | |
| if: ${{ matrix.platform.target == 'x86_64-pc-windows-msvc' }} | |
| shell: bash | |
| run: | | |
| LLVM_READOBJ="$(rustc --print sysroot)/lib/rustlib/${{ matrix.platform.target }}/bin/llvm-readobj.exe" | |
| IMPORTS_FILE="$RUNNER_TEMP/ruff-coff-imports.txt" | |
| "$LLVM_READOBJ" --coff-imports "target/${{ matrix.platform.target }}/release/ruff.exe" > "$IMPORTS_FILE" | |
| if grep -Eiq 'vcruntime[[:digit:]_]*\.dll|api-ms-win-crt-' "$IMPORTS_FILE"; then | |
| echo "Ruff must not dynamically link the Visual C++ runtime" >&2 | |
| exit 1 | |
| fi | |
| - name: "Test wheel" | |
| if: ${{ !startsWith(matrix.platform.target, 'aarch64') }} | |
| shell: bash | |
| run: | | |
| python -m pip install dist/"${PACKAGE_NAME}"-*.whl --force-reinstall | |
| "${MODULE_NAME}" --help | |
| python -m "${MODULE_NAME}" --help | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-${{ matrix.platform.target }} | |
| path: dist | |
| - name: "Archive binary" | |
| shell: bash | |
| run: | | |
| ARCHIVE_FILE=ruff-${{ matrix.platform.target }}.zip | |
| 7z a $ARCHIVE_FILE ./target/${{ matrix.platform.target }}/release/ruff.exe | |
| sha256sum $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 | |
| - name: "Upload binary" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: artifacts-${{ matrix.platform.target }} | |
| path: | | |
| *.zip | |
| *.sha256 | |
| linux: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: ${{ matrix.target == 'x86_64-unknown-linux-gnu' && 'depot-ubuntu-24.04-8' || 'depot-ubuntu-24.04-4' }} | |
| strategy: | |
| matrix: | |
| target: | |
| - x86_64-unknown-linux-gnu | |
| - i686-unknown-linux-gnu | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| cache: "" | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| architecture: x64 | |
| - name: "Install LLVM profiling tools" | |
| if: ${{ matrix.target == 'x86_64-unknown-linux-gnu' }} | |
| run: rustup component add llvm-tools-preview | |
| - name: "Train PGO Ruff" | |
| if: ${{ matrix.target == 'x86_64-unknown-linux-gnu' }} | |
| run: | | |
| python scripts/build_ruff_pgo.py \ | |
| --target "${{ matrix.target }}" \ | |
| --target-dir "${{ github.workspace }}/target/ruff-pgo" \ | |
| --train-only | |
| echo "RUSTFLAGS=${RUSTFLAGS:+${RUSTFLAGS} }-Cprofile-use=${{ github.workspace }}/target/ruff-pgo/ruff.profdata" >> "$GITHUB_ENV" | |
| - name: "Prep README.md" | |
| run: python scripts/transform_readme.py --target pypi | |
| - name: "Build wheels" | |
| uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0 | |
| with: | |
| sccache: false | |
| maturin-version: v1.15.0 | |
| target: ${{ matrix.target }} | |
| manylinux: 2_17 | |
| args: --release --locked --out dist --compatibility pypi | |
| - name: "Test wheel" | |
| if: ${{ startsWith(matrix.target, 'x86_64') }} | |
| uses: astral-sh/github-actions/release-smoke-test@3994daa59cb9d97f991f8196a17218a2641fce4b | |
| with: | |
| image: python:3.13-bookworm@sha256:933b46a028fd786c9c3d426ebabc237e29a15912231ea8de576e95f0e4f41a4c | |
| artifacts: dist | |
| run: | | |
| pip install /dist/"${PACKAGE_NAME}"-*.whl --force-reinstall | |
| "${MODULE_NAME}" --help | |
| python -m "${MODULE_NAME}" --help | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-${{ matrix.target }} | |
| path: dist | |
| - name: "Archive binary" | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| TARGET=${{ matrix.target }} | |
| ARCHIVE_NAME=ruff-$TARGET | |
| ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz | |
| mkdir -p $ARCHIVE_NAME | |
| cp target/$TARGET/release/ruff $ARCHIVE_NAME/ruff | |
| tar czvf $ARCHIVE_FILE $ARCHIVE_NAME | |
| shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 | |
| - name: "Upload binary" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: artifacts-${{ matrix.target }} | |
| path: | | |
| *.tar.gz | |
| *.sha256 | |
| linux-aarch64: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: depot-ubuntu-24.04-arm-8 | |
| env: | |
| # see https://github.com/astral-sh/ruff/issues/3791 | |
| # and https://github.com/gnzlbg/jemallocator/issues/170#issuecomment-1503228963 | |
| JEMALLOC_SYS_WITH_LG_PAGE: "16" | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| cache: "" | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: "Install LLVM profiling tools" | |
| run: rustup component add llvm-tools-preview | |
| - name: "Train PGO Ruff" | |
| run: | | |
| python scripts/build_ruff_pgo.py \ | |
| --target aarch64-unknown-linux-gnu \ | |
| --target-dir "${{ github.workspace }}/target/ruff-pgo" \ | |
| --train-only | |
| echo "RUSTFLAGS=${RUSTFLAGS:+${RUSTFLAGS} }-Cprofile-use=${{ github.workspace }}/target/ruff-pgo/ruff.profdata" >> "$GITHUB_ENV" | |
| - name: "Prep README.md" | |
| run: python scripts/transform_readme.py --target pypi | |
| - name: "Build wheels" | |
| uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0 | |
| with: | |
| sccache: false | |
| maturin-version: v1.15.0 | |
| target: aarch64-unknown-linux-gnu | |
| manylinux: 2_17 | |
| docker-options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 | |
| args: --release --locked --out dist --compatibility pypi | |
| - name: "Test wheel" | |
| uses: astral-sh/github-actions/release-smoke-test@3994daa59cb9d97f991f8196a17218a2641fce4b | |
| with: | |
| image: python:3.13-bookworm@sha256:933b46a028fd786c9c3d426ebabc237e29a15912231ea8de576e95f0e4f41a4c | |
| platform: linux/arm64 | |
| artifacts: dist | |
| run: | | |
| pip install /dist/"${PACKAGE_NAME}"-*.whl --force-reinstall | |
| "${MODULE_NAME}" --help | |
| python -m "${MODULE_NAME}" --help | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-aarch64-unknown-linux-gnu | |
| path: dist | |
| - name: "Archive binary" | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| TARGET=aarch64-unknown-linux-gnu | |
| ARCHIVE_NAME=ruff-$TARGET | |
| ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz | |
| mkdir -p $ARCHIVE_NAME | |
| cp target/$TARGET/release/ruff $ARCHIVE_NAME/ruff | |
| tar czvf $ARCHIVE_FILE $ARCHIVE_NAME | |
| shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 | |
| - name: "Upload binary" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: artifacts-aarch64-unknown-linux-gnu | |
| path: | | |
| *.tar.gz | |
| *.sha256 | |
| linux-cross: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: depot-ubuntu-24.04-4 | |
| strategy: | |
| matrix: | |
| platform: | |
| - target: armv7-unknown-linux-gnueabihf | |
| test_image: arm32v7/ubuntu:20.04@sha256:d9a6ab6baaf86907ea1d46f0cbc87547920077c9c6017721faed6eeb51e9aa7e | |
| test_platform: linux/arm/v7 | |
| manylinux: 2_17 | |
| - target: s390x-unknown-linux-gnu | |
| test_image: s390x/ubuntu:20.04@sha256:221f5f8e28d896556d0e55605cd6936450e6231544e9d83d687beae2d0e71afd | |
| test_platform: linux/s390x | |
| manylinux: 2_17 | |
| maturin_docker_options: -e CFLAGS_s390x_unknown_linux_gnu=-march=z10 | |
| - target: powerpc64le-unknown-linux-gnu | |
| manylinux: 2_17 | |
| # see https://github.com/astral-sh/ruff/issues/10073 | |
| maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 | |
| - target: arm-unknown-linux-musleabihf | |
| # Use the cross container, but tag as `linux_armv6l` | |
| manylinux: auto | |
| test_image: balenalib/rpi-raspbian:bullseye@sha256:851cfc48b26f6413a72a7f6873a7624ba2a427048976f6ab4483f72fe165d4f1 | |
| test_platform: linux/arm/v6 | |
| - target: riscv64gc-unknown-linux-gnu | |
| test_image: riscv64/ubuntu:20.04@sha256:610bedb0c5d9aeae4b45e9064e820c4e0b0f6c1d2843116b0a1ae754890951ac | |
| test_platform: linux/riscv64 | |
| # Minimum manylinux target for riscv64 | |
| manylinux: 2_31 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| cache: "" | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: "Prep README.md" | |
| run: python scripts/transform_readme.py --target pypi | |
| - name: "Build wheels" | |
| uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0 | |
| with: | |
| sccache: false | |
| maturin-version: v1.15.0 | |
| target: ${{ matrix.platform.target }} | |
| manylinux: ${{ matrix.platform.manylinux }} | |
| docker-options: ${{ matrix.platform.maturin_docker_options }} | |
| args: --release --locked --out dist --compatibility pypi | |
| - name: "Test wheel" | |
| if: ${{ matrix.platform.target != 'powerpc64le-unknown-linux-gnu' }} | |
| uses: astral-sh/github-actions/release-smoke-test@3994daa59cb9d97f991f8196a17218a2641fce4b | |
| with: | |
| image: ${{ matrix.platform.test_image }} | |
| platform: ${{ matrix.platform.test_platform }} | |
| artifacts: dist | |
| run: | | |
| apt-get update | |
| apt-get install -y --no-install-recommends python3 python3-pip libatomic1 | |
| python3 -m pip install --upgrade --require-hashes -r /pip-requirements.txt | |
| python3 -m pip install "${PACKAGE_NAME}" --no-index --find-links /dist --force-reinstall | |
| ruff --help | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-${{ matrix.platform.target }} | |
| path: dist | |
| - name: "Archive binary" | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| TARGET=${{ matrix.platform.target }} | |
| ARCHIVE_NAME=ruff-$TARGET | |
| ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz | |
| mkdir -p $ARCHIVE_NAME | |
| cp target/$TARGET/release/ruff $ARCHIVE_NAME/ruff | |
| tar czvf $ARCHIVE_FILE $ARCHIVE_NAME | |
| shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 | |
| - name: "Upload binary" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: artifacts-${{ matrix.platform.target }} | |
| path: | | |
| *.tar.gz | |
| *.sha256 | |
| musllinux: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: depot-ubuntu-24.04-4 | |
| strategy: | |
| matrix: | |
| target: | |
| - x86_64-unknown-linux-musl | |
| - i686-unknown-linux-musl | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| cache: "" | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| architecture: x64 | |
| - name: "Prep README.md" | |
| run: python scripts/transform_readme.py --target pypi | |
| - name: "Build wheels" | |
| uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0 | |
| with: | |
| sccache: false | |
| maturin-version: v1.15.0 | |
| target: ${{ matrix.target }} | |
| manylinux: musllinux_1_2 | |
| args: --release --locked --out dist --compatibility pypi | |
| - name: "Test wheel" | |
| if: matrix.target == 'x86_64-unknown-linux-musl' | |
| uses: astral-sh/github-actions/release-smoke-test@3994daa59cb9d97f991f8196a17218a2641fce4b | |
| with: | |
| image: alpine:latest@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b | |
| artifacts: dist | |
| run: | | |
| apk add python3 | |
| python -m venv .venv | |
| .venv/bin/pip3 install "${PACKAGE_NAME}" --no-index --find-links /dist --force-reinstall | |
| .venv/bin/"${MODULE_NAME}" --help | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-${{ matrix.target }} | |
| path: dist | |
| - name: "Archive binary" | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| TARGET=${{ matrix.target }} | |
| ARCHIVE_NAME=ruff-$TARGET | |
| ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz | |
| mkdir -p $ARCHIVE_NAME | |
| cp target/$TARGET/release/ruff $ARCHIVE_NAME/ruff | |
| tar czvf $ARCHIVE_FILE $ARCHIVE_NAME | |
| shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 | |
| - name: "Upload binary" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: artifacts-${{ matrix.target }} | |
| path: | | |
| *.tar.gz | |
| *.sha256 | |
| musllinux-cross: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: depot-ubuntu-24.04-4 | |
| strategy: | |
| matrix: | |
| platform: | |
| - target: aarch64-unknown-linux-musl | |
| test_platform: linux/arm64 | |
| maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 | |
| - target: armv7-unknown-linux-musleabihf | |
| test_platform: linux/arm/v7 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| cache: "" | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: "Prep README.md" | |
| run: python scripts/transform_readme.py --target pypi | |
| - name: "Build wheels" | |
| uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0 | |
| with: | |
| sccache: false | |
| maturin-version: v1.15.0 | |
| target: ${{ matrix.platform.target }} | |
| manylinux: musllinux_1_2 | |
| args: --release --locked --out dist --compatibility pypi | |
| docker-options: ${{ matrix.platform.maturin_docker_options }} | |
| - name: "Test wheel" | |
| uses: astral-sh/github-actions/release-smoke-test@3994daa59cb9d97f991f8196a17218a2641fce4b | |
| with: | |
| image: alpine:latest@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b | |
| platform: ${{ matrix.platform.test_platform }} | |
| artifacts: dist | |
| run: | | |
| apk add python3 | |
| python -m venv .venv | |
| .venv/bin/pip3 install "${PACKAGE_NAME}" --no-index --find-links /dist --force-reinstall | |
| .venv/bin/"${MODULE_NAME}" --help | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-${{ matrix.platform.target }} | |
| path: dist | |
| - name: "Archive binary" | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| TARGET=${{ matrix.platform.target }} | |
| ARCHIVE_NAME=ruff-$TARGET | |
| ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz | |
| mkdir -p $ARCHIVE_NAME | |
| cp target/$TARGET/release/ruff $ARCHIVE_NAME/ruff | |
| tar czvf $ARCHIVE_FILE $ARCHIVE_NAME | |
| shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 | |
| - name: "Upload binary" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: artifacts-${{ matrix.platform.target }} | |
| path: | | |
| *.tar.gz | |
| *.sha256 |