Skip to content

Commit

Permalink
Separate building wheels workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
torymur committed Feb 14, 2025
1 parent 0ffa051 commit 9c11667
Show file tree
Hide file tree
Showing 2 changed files with 214 additions and 233 deletions.
207 changes: 207 additions & 0 deletions .github/workflows/build_wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
name: Build Wheels

on:
workflow_call:

jobs:
linux:
name: Build ${{ matrix.platform.runner}} ${{ matrix.platform.target }}
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
# older ubuntu to avoid messing with glibc version
- runner: ubuntu-22.04
target: x86_64
manylinux: auto
interpreter: "3.9 3.10 3.11 3.12 3.13"
- runner: ubuntu-22.04
target: aarch64
manylinux: manylinux_2_28
interpreter: "3.9 3.10 3.11 3.12 3.13"

steps:
- uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"

- run: pip install -U twine

- name: Install required packages
run: |
sudo apt update
sudo apt install pkg-config gcc-aarch64-linux-gnu g++-aarch64-linux-gnu -qy
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
target: ${{ matrix.platform.target}}-unknown-linux-gnu
- uses: Swatinem/rust-cache@v2

- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --interpreter ${{ matrix.platform.interpreter }}
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: ${{ matrix.platform.manylinux }}

- name: Validate Python package distributions
run: twine check --strict dist/*

- name: Install built wheel
if: matrix.platform.target == 'x86_64'
run: |
pip install outlines_core --no-index --find-links dist --force-reinstall
python -c "import outlines_core"
- uses: actions/upload-artifact@v4
with:
path: dist/*.whl
name: wheels-linux-${{ matrix.platform.target }}

windows:
name: Build ${{ matrix.platform.runner}} ${{ matrix.platform.target }}
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: windows-latest
target: x86
alias-target: i686-pc-windows-msvc
interpreter: "3.9 3.10 3.11 3.12 3.13"
- runner: windows-latest
target: x64
alias-target: x86_64-pc-windows-msvc
interpreter: "3.9 3.10 3.11 3.12 3.13"

steps:
- uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
architecture: ${{ matrix.platform.target }}

- run: pip install -U twine

- name: Install required packages
# rustls requires aws-lc-sys, which FFI bindings to AWS-LC (AWS Libcrypto)
# aws-lc-sys requires nasm for compilation on windows
run: |
choco install nasm
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
target: ${{ matrix.platform.alias-target}}
- uses: Swatinem/rust-cache@v2

- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --interpreter ${{ matrix.platform.interpreter }}
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: auto

- name: Validate Python package distributions
run: twine check --strict dist/*

- name: Install built wheel
run: |
pip install outlines_core --no-index --find-links dist --force-reinstall
python -c "import outlines_core"
- uses: actions/upload-artifact@v4
with:
path: dist/*.whl
name: wheels-windows-${{ matrix.platform.target }}

macos:
name: Build ${{ matrix.platform.runner}} ${{ matrix.platform.target }}
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-14
target: x86_64
macos_version: "14.0"
interpreter: "3.9 3.10 3.11 3.12 3.13"
- runner: macos-14
target: aarch64
macos_version: "14.0"
interpreter: "3.9 3.10 3.11 3.12 3.13"
- runner: macos-15
target: x86_64
macos_version: "15.0"
interpreter: "3.9 3.10 3.11 3.12 3.13"
- runner: macos-15
target: aarch64
macos_version: "15.0"
interpreter: "3.9 3.10 3.11 3.12 3.13"

steps:
- uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"

- run: pip install -U twine

- name: Set macOS version
run: echo "MACOSX_DEPLOYMENT_TARGET=${{ matrix.platform.macos_version }}" >> $GITHUB_ENV

- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
target: ${{ matrix.platform.target}}-apple-darwin
- uses: Swatinem/rust-cache@v2

- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --interpreter ${{ matrix.platform.interpreter }}
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: auto

- name: Validate Python package distributions
run: twine check --strict dist/*

- name: Install built wheel
if: matrix.platform.target == 'aarch64'
run: |
pip install outlines_core --no-index --find-links dist --force-reinstall
python -c "import outlines_core"
- uses: actions/upload-artifact@v4
with:
path: dist/*.whl
name: wheels-${{ matrix.platform.runner }}-${{ matrix.platform.target }}


build_sdist:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Build sdist with Maturin
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- uses: actions/upload-artifact@v4
with:
path: dist/*.tar.gz
name: sdist
Loading

0 comments on commit 9c11667

Please sign in to comment.