Skip to content

ENH: Switch to abi3 wheels #25

ENH: Switch to abi3 wheels

ENH: Switch to abi3 wheels #25

Workflow file for this run

# from https://cibuildwheel.pypa.io/en/stable/setup/#github-actions
name: Build
on:
push:
branches: ["master"]
pull_request:
branches: ["master"]
release:
types: [published]
concurrency:
group: ${{ github.workflow }}-${{ github.event.number }}-${{ github.event.ref }}
cancel-in-progress: true
jobs:
build_wheels:
name: ${{ matrix.os }} ${{ matrix.arch }} py${{ matrix.python}} wheels
runs-on: ${{ matrix.os }}
continue-on-error: true
strategy:
matrix:
# macos-13 is an intel runner, macos-14 is apple silicon
os: [ubuntu-latest, windows-latest, macos-13, macos-14]
arch: [native]
include:
- os: ubuntu-latest
arch: i686
- os: ubuntu-latest
arch: aarch64
steps:
- uses: actions/checkout@v4
with:
submodules: true
# Linux emulation for aarch64 support
# https://cibuildwheel.pypa.io/en/stable/faq/#emulation
- uses: docker/setup-qemu-action@v3
with:
platforms: all
if: runner.os == 'Linux' && matrix.arch == 'aarch64'
- uses: pypa/[email protected]
env:
CIBW_BUILDING: "true"
CIBW_ARCHS: ${{ matrix.arch }} # simplest for now
CIBW_BUILD: "{c,p}p38-*" # abi3 wheels against oldest supported version
CIBW_TEST_COMMAND: "python -c \"import rtmixer; print(rtmixer.__version__)\""
# No portaudio on these platforms:
CIBW_TEST_SKIP: "*_i686 *-musllinux_* *_aarch64"
# To enable testing we'd have to bump up to the Almalinux 8-based image:
# CIBW_MANYLINUX_AARCH64_IMAGE: "manylinux_2_28"
CIBW_BUILD_VERBOSITY: "3"
CIBW_BEFORE_TEST_LINUX: "bash {project}/tools/cibw_before_test_linux.sh"
# Use abi3audit to catch issues with Limited API wheels
CIBW_REPAIR_WHEEL_COMMAND_LINUX: "auditwheel repair -w {dest_dir} {wheel} && pipx run abi3audit --strict --report {wheel}"
CIBW_REPAIR_WHEEL_COMMAND_MACOS: "delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} && pipx run abi3audit --strict --report {wheel}"
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "pipx run abi3audit --strict --report {wheel}"
- uses: actions/upload-artifact@v4
with:
name: cibw-wheels-${{ matrix.os }}-${{ matrix.arch}}-${{ strategy.job-index }}
path: ./wheelhouse/*.whl
# From https://cibuildwheel.pypa.io/en/stable/deliver-to-pypi/
# and https://github.com/pypa/gh-action-pypi-publish?tab=readme-ov-file#trusted-publishing
make_sdist:
name: Make SDist
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pipx run build --sdist
- uses: actions/upload-artifact@v4
with:
name: cibw-sdist
path: dist/*.tar.gz
pypi-publish:
name: Upload release to PyPI
needs: [build_wheels, make_sdist]
if: github.event_name == 'release' && github.event.action == 'published'
environment:
name: pypi
url: https://pypi.org/p/rtmixer
permissions:
id-token: write
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
pattern: cibw-*
path: dist
merge-multiple: true
- run: ls -al dist/*
- uses: pypa/gh-action-pypi-publish@release/v1