Skip to content

Use maturin as a build backend and improve github workflows #106

Use maturin as a build backend and improve github workflows

Use maturin as a build backend and improve github workflows #106

Workflow file for this run

name: Release PyPi
on:
workflow_dispatch:
# release:
# types:
# - created
pull_request:
branches: [main]
jobs:
linux:
name: Build ${{ matrix.platform.runner}} ${{ matrix.platform.target }} ${{ matrix.python-version }}
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
- runner: ubuntu-22.04
target: aarch64
manylinux: manylinux_2_28
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install required packages
run: |
sudo apt update
sudo apt install pkg-config gcc-aarch64-linux-gnu g++-aarch64-linux-gnu -qy
# toolchain choice needs to happen before cache: rustc version used as its cache key
- 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 python${{ matrix.python-version }} --features python-bindings
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: ${{ matrix.platform.manylinux }}
- 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-linux-${{ matrix.platform.target }}-${{ matrix.python-version }}
- uses: actions/download-artifact@v4
with:
pattern: wheels-*
merge-multiple: true
path: dist
- run: ls -R dist
#windows:
# name: Build ${{ matrix.platform.runner}} ${{ matrix.platform.target }} ${{ matrix.python-version }}
# runs-on: ${{ matrix.platform.runner }}
# strategy:
# matrix:
# platform:
# - runner: windows-latest
# target: x64
# alias-target: i686-pc-windows-msvc
# - runner: windows-latest
# target: x86
# alias-target: x86_64-pc-windows-msvc
# python-version: ["3.9", "3.10", "3.11", "3.12"]
# steps:
# - uses: actions/checkout@v3
# - name: Set up Python
# uses: actions/setup-python@v5
# with:
# python-version: ${{ matrix.python-version }}
# - 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
# # toolchain choice needs to happen before cache: rustc version used as its cache key
# - 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 --find-interpreter --features python-bindings
# sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
# manylinux: auto
# - uses: actions/upload-artifact@v4
# with:
# path: dist/*.whl
# name: wheels-windows-${{ matrix.platform.target }}-${{ matrix.python-version }}
# - uses: actions/download-artifact@v4
# with:
# pattern: wheels-*
# merge-multiple: true
# path: dist
# - run: ls -R dist
# macos:
# name: Build ${{ matrix.platform.runner}} ${{ matrix.platform.target }} ${{ matrix.python-version }}
# runs-on: ${{ matrix.platform.runner }}
# strategy:
# matrix:
# platform:
# - runner: macos-14
# target: x86_64
# macos_version: "14.0"
# - runner: macos-14
# target: aarch64
# macos_version: "14.0"
# - runner: macos-15
# target: x86_64
# macos_version: "15.0"
# - runner: macos-15
# target: aarch64
# macos_version: "15.0"
# python-version: ["3.9", "3.10", "3.11", "3.12"]
# steps:
# - uses: actions/checkout@v3
# - name: Set up Python
# uses: actions/setup-python@v5
# with:
# python-version: ${{ matrix.python-version }}
# - name: Set macOS version
# run: echo "MACOSX_DEPLOYMENT_TARGET=${{ matrix.platform.macos_version }}" >> $GITHUB_ENV
# # toolchain choice needs to happen before cache: rustc version used as its cache key
# - 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 --find-interpreter --features python-bindings
# sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
# manylinux: auto
# - uses: actions/upload-artifact@v4
# with:
# path: dist/*.whl
# name: wheels-${{ matrix.platform.runner }}-${{ matrix.platform.target }}-${{ matrix.python-version }}
# - uses: actions/download-artifact@v4
# with:
# pattern: wheels-*
# merge-multiple: true
# path: dist
# - run: ls -R dist
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
- uses: actions/download-artifact@v4
with:
name: sdist
path: dist
- run: ls -R dist
# release:
# name: Release to PyPI
# needs: [build_wheels, build_sdist]
# runs-on: ubuntu-latest
# steps:
# - uses: actions/download-artifact@v4
# with:
# pattern: wheels-*
# merge-multiple: true
# path: dist
# - uses: actions/download-artifact@v4
# with:
# name: sdist
# path: dist
# - name: Publish to PyPI
# uses: pypa/[email protected]
# with:
# user: __token__
# password: ${{ secrets.PYPI_SECRET }}