Add custom build backend to support build args #37
Workflow file for this run
This file contains 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
name: Build | |
on: [push, pull_request] | |
jobs: | |
build_wheels: | |
name: Build wheels on ${{ matrix.os }} ${{ matrix.arch }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
max-parallel: 99 | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
arch: x86_64 | |
- os: ubuntu-latest | |
arch: i686 | |
- os: ubuntu-latest | |
arch: aarch64 | |
- os: ubuntu-latest | |
arch: ppc64le | |
- os: ubuntu-latest | |
arch: s390x | |
- os: macOS-latest | |
arch: x86_64 | |
- os: macOS-latest | |
arch: arm64 | |
# Disabled until someone figures out how to build capnproto for arm64 and x86_64 simultaneously | |
# - os: macOS-latest | |
# arch: universal2 | |
- os: windows-2019 | |
arch: AMD64 | |
- os: windows-2019 | |
arch: x86 | |
# Does not build currently | |
# - os: windows-2019 | |
# arch: ARM64 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up QEMU | |
if: runner.os == 'Linux' | |
uses: docker/setup-qemu-action@v2 | |
# Used to host cibuildwheel | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- name: Install cibuildwheel | |
run: python -m pip install cibuildwheel==2.12.0 | |
- name: Build wheels | |
run: python -m cibuildwheel --output-dir wheelhouse | |
env: | |
CIBW_ARCHS: ${{ matrix.arch }} | |
# TODO: Disable building PyPy wheels. If the build system gets modernized, this should be | |
# auto-detected based on the Cython dependency. | |
CIBW_SKIP: pp* | |
CIBW_TEST_REQUIRES: pytest pytest-asyncio | |
CIBW_TEST_COMMAND: pytest {project} | |
# Only needed to make the macosx arm64 build work | |
CMAKE_OSX_ARCHITECTURES: "${{ matrix.arch == 'arm64' && 'arm64' || '' }}" | |
- uses: actions/upload-artifact@v3 | |
with: | |
path: ./wheelhouse/*.whl | |
build_sdist: | |
name: Build source distribution | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build sdist | |
run: pipx run build --sdist | |
- uses: actions/upload-artifact@v3 | |
with: | |
path: dist/*.tar.gz | |
lint: | |
name: Lint with flake8 and check black | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Lint with flake8 and check black | |
run: | | |
pip install black flake8 | |
flake8 . --filename '*.py,*.pyx,*.pxd' --count --show-source --statistics --exclude benchmark,build,capnp/templates/module.pyx | |
flake8 . --count --show-source --statistics --exclude benchmark,build | |
black . --check --diff --color | |
# upload_pypi: | |
# needs: [build_wheels, build_sdist] | |
# runs-on: ubuntu-latest | |
# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') | |
# steps: | |
# - uses: actions/download-artifact@v3 | |
# with: | |
# # unpacks default artifact into dist/ | |
# # if `name: artifact` is omitted, the action will create extra parent dir | |
# name: artifact | |
# path: dist | |
# - uses: pypa/[email protected] | |
# with: | |
# user: __token__ | |
# password: ${{ secrets.PYPI_PASSWORD_RELEASE }} | |
# # password: ${{ secrets.PYPI_PASSWORD }} | |
# # repository_url: https://test.pypi.org/legacy/ |