|
@@ -95,11 +95,14 @@ jobs:
|
|
|
path: debs/*
|
|
|
|
|
|
build-wheels:
|
|
|
- name: Build wheels on ${{ matrix.os }}
|
|
|
+ name: Build wheels on ${{ matrix.os }} for ${{ matrix.arch }}
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
strategy:
|
|
|
matrix:
|
|
|
os: [ubuntu-20.04, macos-10.15]
|
|
|
+ arch: [x86_64, aarch64]
|
|
|
+ # is_pr is a flag used to exclude certain jobs from the matrix on PRs.
|
|
|
+ # It is not read by the rest of the workflow.
|
|
|
is_pr:
|
|
|
- ${{ startsWith(github.ref, 'refs/pull/') }}
|
|
|
|
|
@@ -107,6 +110,12 @@ jobs:
|
|
|
# Don't build macos wheels on PR CI.
|
|
|
- is_pr: true
|
|
|
os: "macos-10.15"
|
|
|
+ # Don't build aarch64 wheels on mac.
|
|
|
+ - os: "macos-10.15"
|
|
|
+ arch: aarch64
|
|
|
+ # Don't build aarch64 wheels on PR CI.
|
|
|
+ - is_pr: true
|
|
|
+ arch: aarch64
|
|
|
|
|
|
steps:
|
|
|
- uses: actions/checkout@v3
|
|
@@ -120,11 +129,19 @@ jobs:
|
|
|
- name: Install cibuildwheel
|
|
|
run: python -m pip install cibuildwheel==2.9.0 poetry==1.2.0
|
|
|
|
|
|
- # Only build a single wheel in CI.
|
|
|
- - name: Set env vars.
|
|
|
- run: |
|
|
|
- echo "CIBW_BUILD="cp37-manylinux_x86_64"" >> $GITHUB_ENV
|
|
|
+ - name: Set up QEMU to emulate aarch64
|
|
|
+ if: matrix.arch == 'aarch64'
|
|
|
+ uses: docker/setup-qemu-action@v2
|
|
|
+ with:
|
|
|
+ platforms: arm64
|
|
|
+
|
|
|
+ - name: Build aarch64 wheels
|
|
|
+ if: matrix.arch == 'aarch64'
|
|
|
+ run: echo 'CIBW_ARCHS_LINUX=aarch64' >> $GITHUB_ENV
|
|
|
+
|
|
|
+ - name: Only build a single wheel on PR
|
|
|
if: startsWith(github.ref, 'refs/pull/')
|
|
|
+ run: echo "CIBW_BUILD="cp37-manylinux_${{ matrix.arch }}"" >> $GITHUB_ENV
|
|
|
|
|
|
- name: Build wheels
|
|
|
run: python -m cibuildwheel --output-dir wheelhouse
|
|
@@ -132,6 +149,9 @@ jobs:
|
|
|
# Skip testing for platforms which various libraries don't have wheels
|
|
|
# for, and so need extra build deps.
|
|
|
CIBW_TEST_SKIP: pp39-* *i686* *musl* pp37-macosx*
|
|
|
+ # Fix Rust OOM errors on emulated aarch64: https://github.com/rust-lang/cargo/issues/10583
|
|
|
+ CARGO_NET_GIT_FETCH_WITH_CLI: true
|
|
|
+ CIBW_ENVIRONMENT_PASS_LINUX: CARGO_NET_GIT_FETCH_WITH_CLI
|
|
|
|
|
|
- uses: actions/upload-artifact@v3
|
|
|
with:
|