Skip to content

Simplify lookup of object types #445

Simplify lookup of object types

Simplify lookup of object types #445

Workflow file for this run

name: Release
# This should almost always run, but upload binaries only on tag.
on:
pull_request:
branches: [ master ]
paths-ignore:
- '**.md'
workflow_dispatch:
push:
branches: [ master ]
tags:
- '*.*.*'
# Cancel previous runs on the same PR.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
RUST_TOOLCHAIN: nightly-2024-10-18
jobs:
build-linux-x86_64:
name: Build Linux x86_64 wheel
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
env:
CC: "gcc"
CFLAGS: "-O2 -fno-plt"
LDFLAGS: "-O2 -flto -Wl,--as-needed"
CARGO_UNSTABLE_SPARSE_REGISTRY: "true"
steps:
- uses: actions/checkout@v4
- uses: PyO3/maturin-action@v1
with:
target: x86_64-unknown-linux-gnu
rust-toolchain: ${{ env.RUST_TOOLCHAIN }}
manylinux: auto
args: --release --strip -i python${{ matrix.python-version }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- run: python3 -m venv .venv
- run: .venv/bin/pip install -U pip wheel
- run: .venv/bin/pip install -r requirements.txt
- run: .venv/bin/pip install ormsgpack --no-index -f target/wheels
- run: .venv/bin/pytest
- uses: actions/upload-artifact@v4
with:
name: ormsgpack-x86_64-unknown-linux-gnu-${{ matrix.python-version }}
path: target/wheels
retention-days: 1
build-linux-cross:
name: Build Linux wheel
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
target: [
{
platform: 'linux/arm64',
target: 'aarch64-unknown-linux-gnu',
maturin_args: '',
},
{
platform: 'linux/arm/v7',
target: 'armv7-unknown-linux-gnueabihf',
maturin_args: '--no-default-features',
},
]
env:
CC: "gcc"
CFLAGS: "-O2"
LDFLAGS: "-O2 -flto -Wl,--as-needed"
CARGO_UNSTABLE_SPARSE_REGISTRY: "true"
steps:
- uses: actions/checkout@v4
- uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target.target }}
rust-toolchain: ${{ env.RUST_TOOLCHAIN }}
manylinux: auto
args: --release --strip -i python${{ matrix.python-version }} ${{ matrix.target.maturin_args }}
- uses: docker/setup-qemu-action@v3
- run: |
docker run \
--rm \
-v "$GITHUB_WORKSPACE":/work \
-w /work \
--platform ${{ matrix.target.platform }} \
python:${{ matrix.python-version }}-bookworm \
bash -e -c '
python3 -m venv .venv
.venv/bin/pip install -U pip wheel
.venv/bin/pip install -r tests/requirements.txt
.venv/bin/pip install ormsgpack --no-index -f target/wheels
.venv/bin/pytest
'
- uses: actions/upload-artifact@v4
with:
name: ormsgpack-${{ matrix.target.target }}-${{ matrix.python-version }}
path: target/wheels
retention-days: 1
build-windows:
name: Build Windows wheel
runs-on: windows-latest
strategy:
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- run: rustup install --profile minimal ${{ env.RUST_TOOLCHAIN }}
- run: rustup default ${{ env.RUST_TOOLCHAIN }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- run: python -m pip install --user -U pip wheel maturin
- run: pip install -r requirements.txt
- run: maturin build --release --strip -i $pythonLocation"python.exe"
- run: pip install ormsgpack --no-index -f target/wheels
- run: pytest
- uses: actions/upload-artifact@v4
with:
name: ormsgpack-x86_64-pc-windows-msvc-${{ matrix.python-version }}
path: target/wheels
retention-days: 1
build-macos-universal:
name: Build macOS universal wheel
strategy:
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- run: rustup install --profile minimal "$RUST_TOOLCHAIN"
- run: rustup default "$RUST_TOOLCHAIN"
- run: rustup target add x86_64-apple-darwin
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- run: python -m pip install -U pip wheel maturin
- run: pip install -r requirements.txt
- env:
CC: "clang"
CFLAGS: "-O2 -fno-plt -flto=thin"
LDFLAGS: "-O2 -flto=thin -fuse-ld=lld -Wl,--as-needed"
RUSTFLAGS: "-C linker=clang"
CARGO_UNSTABLE_SPARSE_REGISTRY: "true"
run: maturin build --release --strip -i python${{ matrix.python-version }} --features=unstable-simd --target universal2-apple-darwin
- run: pip install ormsgpack --no-index -f target/wheels
- run: pytest
- uses: actions/upload-artifact@v4
with:
name: ormsgpack-universal-apple-darwin-${{ matrix.python-version }}
path: target/wheels
retention-days: 1
build-sdist:
name: Build sdist
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: rustup install --profile minimal "$RUST_TOOLCHAIN"
- run: rustup default "$RUST_TOOLCHAIN"
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.11
- run: python -m pip install -U pip wheel maturin
- run: pip install -r requirements.txt
- run: maturin sdist
- uses: actions/upload-artifact@v4
with:
name: ormsgpack-sdist
path: target/wheels
retention-days: 1
release:
if: startsWith(github.ref, 'refs/tags/')
name: Release
runs-on: ubuntu-latest
needs: [
build-linux-x86_64,
build-linux-cross,
build-windows,
build-macos-universal,
build-sdist,
]
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v4
with:
pattern: ormsgpack-*
path: wheels
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: wheels/