Use PyErr_FormatUnraisable() on Python 3.13 #71
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
on: | |
push: | |
pull_request: | |
types: [ opened, synchronize, reopened ] | |
schedule: | |
- cron: '0 12 * * 1' | |
jobs: | |
sdist: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: clone repo | |
uses: actions/checkout@v4 | |
- name: build sdist | |
run: | | |
rm -rf dist/ | |
python -m pip install build | |
python -m build --sdist | |
- name: upload sdist artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
path: dist | |
if-no-files-found: error | |
linux: | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- spec: cp38-manylinux_x86_64 | |
- spec: cp39-manylinux_x86_64 | |
- spec: cp310-manylinux_x86_64 | |
- spec: cp311-manylinux_x86_64 | |
- spec: cp312-manylinux_x86_64 | |
- spec: cp38-manylinux_i686 | |
- spec: cp39-manylinux_i686 | |
- spec: cp310-manylinux_i686 | |
- spec: cp311-manylinux_i686 | |
- spec: cp312-manylinux_i686 | |
- spec: cp39-musllinux_x86_64 | |
- spec: cp310-musllinux_x86_64 | |
- spec: cp311-musllinux_x86_64 | |
- spec: cp312-musllinux_x86_64 | |
- spec: cp39-musllinux_i686 | |
- spec: cp310-musllinux_i686 | |
- spec: cp311-musllinux_i686 | |
#- spec: cp312-musllinux_i686 # busted as of 9/22/23 | |
- spec: cp38-manylinux_aarch64 | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp39-manylinux_aarch64 | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp310-manylinux_aarch64 | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp311-manylinux_aarch64 | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp312-manylinux_aarch64 | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp38-manylinux_ppc64le | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp39-manylinux_ppc64le | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp310-manylinux_ppc64le | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp311-manylinux_ppc64le | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp312-manylinux_ppc64le | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp38-manylinux_s390x | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp39-manylinux_s390x | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp310-manylinux_s390x | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp311-manylinux_s390x | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
- spec: cp312-manylinux_s390x | |
foreign_arch: true | |
test_args: '{project}/src/c' | |
steps: | |
- name: clone repo | |
uses: actions/checkout@v4 | |
- name: configure docker foreign arch support | |
uses: docker/setup-qemu-action@v3 | |
if: ${{ matrix.foreign_arch || false }} | |
- name: build/test wheels | |
env: | |
CFLAGS: -Dffi_call=cffistatic_ffi_call # override name for ffi_call to break hard if we linked against someone else's libffi | |
CIBW_ARCHS_LINUX: all | |
CIBW_BUILD: ${{ matrix.spec }} | |
CIBW_BEFORE_BUILD: | | |
set -eux && \ | |
curl -L -O https://github.com/libffi/libffi/archive/v3.4.2.tar.gz && \ | |
tar zxf v3.4.2.tar.gz && cd libffi-3.4.2 && \ | |
./autogen.sh && \ | |
./configure --without-gcc-arch --disable-docs --with-pic --enable-shared=no && \ | |
make && \ | |
make install && \ | |
ldconfig || true | |
CIBW_ENVIRONMENT_PASS_LINUX: CFLAGS # ensure that the build container can see our overridden build config | |
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_img || '' }} | |
CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.manylinux_img || '' }} | |
CIBW_PRERELEASE_PYTHONS: 'True' | |
CIBW_TEST_REQUIRES: pytest setuptools # 3.12+ no longer includes distutils, just always ensure setuptools is present | |
CIBW_TEST_COMMAND: PYTHONUNBUFFERED=1 python -m pytest ${{ matrix.test_args || '{project}' }} # default to test all | |
run: | | |
python -m pip install --upgrade "${{ matrix.cibw_version || 'cibuildwheel' }}" | |
# actually build libffi + wheel (using env tweaks above) | |
python -m cibuildwheel --output-dir dist . | |
- name: upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
path: dist | |
if-no-files-found: error | |
macos: | |
defaults: | |
run: | |
shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }} | |
runs-on: ${{ matrix.runs_on || 'macos-11' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# build for x86_64 under the default hosted macOS 10.x x86_64 runner | |
- spec: cp38-macosx_x86_64 | |
- spec: cp39-macosx_x86_64 | |
- spec: cp310-macosx_x86_64 | |
- spec: cp311-macosx_x86_64 | |
- spec: cp312-macosx_x86_64 | |
# # build for arm64 under a hacked macOS 12 self-hosted x86_64-on-arm64 runner until arm64 is fully supported | |
# # FIXME: ? cp38-macosx_arm64 requires special handling and fails some test_zdist tests under cibw 2.1.2, skip it (so Apple's XCode python3 won't have a wheel) | |
- spec: cp39-macosx_arm64 | |
deployment_target: '11.0' | |
runs_on: | |
- ${{ vars.run_macos_arm64_jobs == 'true' && 'self-hosted' || 'ubuntu-latest' }} | |
- ${{ vars.run_macos_arm64_jobs == 'true' && 'macOS' || 'ubuntu-latest' }} | |
maybe_skip: ${{ vars.run_macos_arm64_jobs != 'true' && 'skip' }} | |
run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} | |
sdkroot: macosx11.3 | |
- spec: cp310-macosx_arm64 | |
deployment_target: '11.0' | |
runs_on: | |
- ${{ vars.run_macos_arm64_jobs == 'true' && 'self-hosted' || 'ubuntu-latest' }} | |
- ${{ vars.run_macos_arm64_jobs == 'true' && 'macOS' || 'ubuntu-latest' }} | |
maybe_skip: ${{ vars.run_macos_arm64_jobs != 'true' && 'skip' }} | |
run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} | |
sdkroot: macosx11.3 | |
- spec: cp311-macosx_arm64 | |
deployment_target: '11.0' | |
runs_on: | |
- ${{ vars.run_macos_arm64_jobs == 'true' && 'self-hosted' || 'ubuntu-latest' }} | |
- ${{ vars.run_macos_arm64_jobs == 'true' && 'macOS' || 'ubuntu-latest' }} | |
maybe_skip: ${{ vars.run_macos_arm64_jobs != 'true' && 'skip' }} | |
run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} | |
sdkroot: macosx11.3 | |
- spec: cp312-macosx_arm64 | |
deployment_target: '11.0' | |
runs_on: | |
- ${{ vars.run_macos_arm64_jobs == 'true' && 'self-hosted' || 'ubuntu-latest' }} | |
- ${{ vars.run_macos_arm64_jobs == 'true' && 'macOS' || 'ubuntu-latest' }} | |
maybe_skip: ${{ vars.run_macos_arm64_jobs != 'true' && 'skip' }} | |
run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} | |
sdkroot: macosx11.3 | |
steps: | |
- name: clone repo | |
# need to use v2 until we can upgrade the runners on our private Apple Silicon build infra to one that supports node20 | |
uses: actions/checkout@v2 | |
if: ${{ matrix.maybe_skip != 'skip' }} | |
- name: build wheel prereqs | |
run: | | |
/usr/bin/pip3 install --user --upgrade "${{ matrix.cibw_version || 'cibuildwheel' }}" | |
brew uninstall --ignore-dependencies libffi || true | |
if: ${{ matrix.maybe_skip != 'skip' }} | |
- name: build/test wheels | |
env: | |
CIBW_BUILD: ${{ matrix.spec }} | |
CIBW_PRERELEASE_PYTHONS: 'True' | |
CIBW_TEST_REQUIRES: pytest setuptools | |
CIBW_TEST_COMMAND: pip install pip --upgrade; cd {project}; PYTHONUNBUFFERED=1 pytest | |
run: | | |
if [[ -n "${{ matrix.deployment_target || '' }}" ]] | |
then | |
export MACOSX_DEPLOYMENT_TARGET="${{ matrix.deployment_target || '' }}" | |
fi | |
if [[ -n "${{ matrix.sdkroot || '' }}" ]] | |
then | |
export SDKROOT="${{ matrix.sdkroot || '' }}" | |
fi | |
/usr/bin/python3 -m cibuildwheel --output-dir dist | |
if: ${{ matrix.maybe_skip != 'skip' }} | |
- name: upload artifacts | |
# need to use v2 until we can upgrade the runners on our private Apple Silicon build infra to one that supports node20 | |
uses: actions/upload-artifact@v2 | |
with: | |
path: dist | |
if-no-files-found: error | |
if: ${{ matrix.maybe_skip != 'skip' }} | |
windows: | |
runs-on: windows-2019 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- spec: cp38-win_amd64 | |
- spec: cp39-win_amd64 | |
- spec: cp310-win_amd64 | |
- spec: cp311-win_amd64 | |
- spec: cp312-win_amd64 | |
- spec: cp38-win32 | |
- spec: cp39-win32 | |
- spec: cp310-win32 | |
- spec: cp311-win32 | |
- spec: cp312-win32 | |
steps: | |
- name: clone repo | |
uses: actions/checkout@v4 | |
- name: build/test wheels | |
env: | |
CIBW_BUILD: ${{ matrix.spec }} | |
CIBW_PRERELEASE_PYTHONS: 'True' | |
CIBW_TEST_REQUIRES: pytest setuptools | |
CIBW_TEST_COMMAND: 'python -m pytest {project}/src/c' | |
# FIXME: /testing takes ~45min on Windows and has some failures... | |
# CIBW_TEST_COMMAND='python -m pytest {project}/src/c {project}/testing' | |
run: | | |
python -m pip install --upgrade pip | |
pip install "${{ matrix.cibw_version || 'cibuildwheel'}}" | |
python -m cibuildwheel --output-dir dist . | |
shell: bash | |
- name: upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
path: dist | |
if-no-files-found: error | |
check: | |
if: always() | |
needs: | |
- sdist | |
- linux | |
- macos | |
- windows | |
runs-on: ubuntu-latest | |
steps: | |
- name: Verify all previous jobs succeeded (provides a single check to sample for gating purposes) | |
uses: re-actors/alls-green@release/v1 | |
with: | |
jobs: ${{ toJSON(needs) }} |