From aa2461cdf9a944b9a94760d138dd99417e490d5e Mon Sep 17 00:00:00 2001 From: Johnny Nunez <22727137+johnnynunez@users.noreply.github.com> Date: Sat, 4 Jul 2026 21:15:17 +0200 Subject: [PATCH 1/2] ci: build and test aarch64 manylinux wheels on ubuntu-24.04-arm runners nlopt ships no aarch64 wheels on PyPI, forcing source builds (or making installs impossible) on ARM hosts like NVIDIA DGX Spark, Jetson Thor and GH200. GitHub now provides free ubuntu-24.04-arm runners for public repos, so add them to the cibuildwheel matrix (manylinux_2_28_aarch64 image) and to the wheel test matrix. The existing test-step file discovery already matches (runner.os=Linux -> 'lin', chunk=ubuntu-24.04-arm). --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1ca1389..f2312ce 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -82,7 +82,7 @@ jobs: strategy: fail-fast: False matrix: - os: [ ubuntu-latest, macos-latest, macos-14 ] + os: [ ubuntu-latest, ubuntu-24.04-arm, macos-latest, macos-14 ] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -101,6 +101,7 @@ jobs: CIBW_SKIP: "*-manylinux_i686 *-musllinux*" # use latest build CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux2014_x86_64 + CIBW_MANYLINUX_AARCH64_IMAGE: quay.io/pypa/manylinux_2_28_aarch64 CIBW_BEFORE_ALL_MACOS: brew install swig CIBW_BEFORE_BUILD: pip install numpy swig run: | @@ -120,7 +121,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ windows-latest, ubuntu-latest, macos-latest, macos-14 ] + os: [ windows-latest, ubuntu-latest, ubuntu-24.04-arm, macos-latest, macos-14 ] python-version: ${{ fromJSON(needs.setup.outputs.python-versions) }} steps: From 923bda4318bcb88285030d6b87ea1280b9c6e3d9 Mon Sep 17 00:00:00 2001 From: Johnny Nunez <22727137+johnnynunez@users.noreply.github.com> Date: Sat, 4 Jul 2026 21:27:22 +0200 Subject: [PATCH 2/2] ci: bump x86_64 manylinux image to 2_28 (numpy>=2.5 needs gcc>=10.3) numpy stopped publishing manylinux2014 wheels, so pip builds it from source inside the cibuildwheel container; manylinux2014's gcc 10.2.1 fails numpy's GCC>=10.3 check. manylinux_2_28 ships a modern toolchain (same image family already used for aarch64). --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f2312ce..c6e5e5f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -99,8 +99,9 @@ jobs: # only build CPython-3.10+ and skip 32-bit builds CIBW_BUILD: ${{ needs.setup.outputs.cibw-build }} CIBW_SKIP: "*-manylinux_i686 *-musllinux*" - # use latest build - CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux2014_x86_64 + # use latest build; manylinux_2_28 ships gcc>=12 (manylinux2014's + # gcc 10.2 is too old for numpy>=2.5 source builds) + CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_28_x86_64 CIBW_MANYLINUX_AARCH64_IMAGE: quay.io/pypa/manylinux_2_28_aarch64 CIBW_BEFORE_ALL_MACOS: brew install swig CIBW_BEFORE_BUILD: pip install numpy swig