From 8f6eac0e80ed24dda2773b8516e47c052d52cbe1 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Tue, 18 Aug 2026 14:09:17 -0700 Subject: [PATCH] Build manylinux aarch64 wheels Add a linux/aarch64 entry to the build-linux matrix, running the same cibuildwheel job natively on GitHub's free ubuntu-24.04-arm hosted runner. The os matrix entry becomes a runner/arch object (like build-macos), CIBW_BUILD selects manylinux_, and the per-job artifact names include the arch so the two Linux builds don't collide before merging. Verified locally for cp312-manylinux_aarch64 with cibuildwheel 3.4.1 on the manylinux_2_28_aarch64 image, including run_wheel_tests.py (166/166 passed under symengine and sympy). Assisted-by: Claude:claude-fable-5 Signed-off-by: Ramon Roche --- .github/workflows/build_wheels.yml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 0300fbf9..9fe83c75 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -84,11 +84,15 @@ jobs: build-linux: if: contains(fromJSON('["push", "workflow_dispatch"]'), github.event_name) || (github.event_name == 'pull_request' && github.event.pull_request.draft == false) - runs-on: ${{ matrix.os }} + runs-on: ${{ matrix.os.runner }} strategy: fail-fast: false matrix: - os: [ubuntu-latest] + os: + - runner: ubuntu-latest + arch: x86_64 + - runner: ubuntu-24.04-arm + arch: aarch64 python-version: [cp310, cp311, cp312, cp313, cp314] steps: @@ -105,7 +109,8 @@ jobs: - name: Build wheels uses: pypa/cibuildwheel@v3.4.1 env: - CIBW_BUILD: ${{ matrix.python-version }}-manylinux_x86_64 + CIBW_BUILD: ${{ matrix.python-version }}-manylinux_${{ matrix.os.arch }} + CIBW_ARCHS_LINUX: ${{ matrix.os.arch }} CIBW_BEFORE_BUILD: yum install -y gmp-devel git CIBW_ENVIRONMENT: SYMFORCE_REWRITE_LOCAL_DEPENDENCIES=$SYMFORCE_VERSION SYMFORCE_PYTHON_OVERRIDE=python CIBW_ENVIRONMENT_PASS_LINUX: SYMFORCE_VERSION @@ -121,7 +126,7 @@ jobs: - name: Upload Wheels uses: actions/upload-artifact@v7 with: - name: symforce-wheels-${{ matrix.os }}-${{ matrix.python-version }} + name: symforce-wheels-linux-${{ matrix.os.arch }}-${{ matrix.python-version }} path: wheelhouse/*.whl merge-wheel-artifacts: