Merge upstream #4
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 basedpython wheels on all platforms. | |
| # | |
| # Builds the combined `basedpython` wheels (each containing both the `by` and | |
| # `buff` binaries) for PyPI. basedpython publishes wheels only — the standalone | |
| # per-platform binary archives, install-tests, and docker image that upstream | |
| # ruff ships are intentionally dropped (they were wired to the old `ruff` binary | |
| # name; re-enable them by shipping `by`/`buff` once that work is done — see | |
| # ROADMAP). | |
| # | |
| # 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 | |
| concurrency: | |
| group: build-binaries-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| permissions: {} | |
| env: | |
| PACKAGE_NAME: basedpython | |
| 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: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| 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: | |
| maturin-version: v1.14.1 | |
| command: sdist | |
| args: --out dist | |
| - 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: macos-15 | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| 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: | |
| maturin-version: v1.14.1 | |
| 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 | |
| macos-aarch64: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| architecture: arm64 | |
| - 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: | |
| maturin-version: v1.14.1 | |
| target: aarch64 | |
| args: --release --locked --out dist --compatibility pypi | |
| 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" | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-aarch64-apple-darwin | |
| path: dist | |
| windows: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: 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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| architecture: ${{ matrix.platform.arch }} | |
| - name: "Prep README.md" | |
| run: python scripts/transform_readme.py --target pypi | |
| - name: "Build wheels" | |
| uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0 | |
| with: | |
| maturin-version: v1.14.1 | |
| 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: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-${{ matrix.platform.target }} | |
| path: dist | |
| linux: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| target: | |
| - x86_64-unknown-linux-gnu | |
| - i686-unknown-linux-gnu | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| 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: | |
| maturin-version: v1.14.1 | |
| target: ${{ matrix.target }} | |
| manylinux: 2_17 | |
| args: --release --locked --out dist --compatibility pypi | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-${{ matrix.target }} | |
| path: dist | |
| linux-cross: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| platform: | |
| - target: aarch64-unknown-linux-gnu | |
| arch: aarch64 | |
| manylinux: 2_17 | |
| # see https://github.com/astral-sh/ruff/issues/3791 | |
| # and https://github.com/gnzlbg/jemallocator/issues/170#issuecomment-1503228963 | |
| maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 | |
| - target: armv7-unknown-linux-gnueabihf | |
| arch: armv7 | |
| manylinux: 2_17 | |
| - target: s390x-unknown-linux-gnu | |
| arch: s390x | |
| manylinux: 2_17 | |
| - target: powerpc64le-unknown-linux-gnu | |
| arch: ppc64le | |
| 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 | |
| arch: arm | |
| - target: riscv64gc-unknown-linux-gnu | |
| arch: riscv64 | |
| # Minimum manylinux target for riscv64 | |
| manylinux: 2_31 | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| 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: | |
| maturin-version: v1.14.1 | |
| target: ${{ matrix.platform.target }} | |
| manylinux: ${{ matrix.platform.manylinux }} | |
| docker-options: ${{ matrix.platform.maturin_docker_options }} | |
| args: --release --locked --out dist --compatibility pypi | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-${{ matrix.platform.target }} | |
| path: dist | |
| musllinux: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| target: | |
| - x86_64-unknown-linux-musl | |
| - i686-unknown-linux-musl | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| 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: | |
| maturin-version: v1.14.1 | |
| target: ${{ matrix.target }} | |
| manylinux: musllinux_1_2 | |
| args: --release --locked --out dist --compatibility pypi | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-${{ matrix.target }} | |
| path: dist | |
| musllinux-cross: | |
| if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| platform: | |
| - target: aarch64-unknown-linux-musl | |
| arch: aarch64 | |
| maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 | |
| - target: armv7-unknown-linux-musleabihf | |
| arch: armv7 | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| submodules: recursive | |
| persist-credentials: false | |
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| 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: | |
| maturin-version: v1.14.1 | |
| target: ${{ matrix.platform.target }} | |
| manylinux: musllinux_1_2 | |
| args: --release --locked --out dist --compatibility pypi | |
| docker-options: ${{ matrix.platform.maturin_docker_options }} | |
| - name: "Upload wheels" | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: wheels-${{ matrix.platform.target }} | |
| path: dist |