diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d9f6a3b9b..d3b1fba45 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,6 +34,9 @@ jobs: - os: "ubuntu-latest" cibuild: "*musllinux*" cibw_arch: "musllinux" + - os: "ubuntu-24.04-arm" # aarch64 manylinux on ARM runner + cibuild: "*manylinux*" + cibw_arch: "aarch64" steps: - name: Free Disk Space (Ubuntu) if: matrix.os == 'ubuntu-latest' @@ -48,29 +51,44 @@ jobs: uses: styfle/cancel-workflow-action@0.12.1 - uses: actions/checkout@v4 - name: ccache + if: matrix.os != 'ubuntu-24.04-arm' uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ github.job }}-${{ matrix.os }}-${{ matrix.cibuild }} # Make cache specific to OS max-size: "5G" - name: Install dependencies + if: matrix.os != 'ubuntu-24.04-arm' run: | env export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" echo "/usr/lib/ccache:/usr/local/opt/ccache/libexec" >> $GITHUB_PATH HOST_CCACHE_DIR="$(ccache -k cache_dir)" mkdir -p $HOST_CCACHE_DIR - - name: Build wheels # check https://cibuildwheel.readthedocs.io/en/stable/setup/#github-actions + - name: Build wheels (ARM) + if: matrix.os == 'ubuntu-24.04-arm' + uses: pypa/cibuildwheel@v2.23.3 + env: + # override the default CentOS “yum install … ccache” and drop ccache + CIBW_BEFORE_ALL_LINUX: | + yum install -y \ + zlib-devel \ + curl-devel \ + expat-devel \ + libpng-devel + CIBW_BEFORE_BUILD_LINUX: "true" + CIBW_BUILD: ${{ matrix.cibuild }} + CIBW_ARCHS_LINUX: ${{ matrix.cibw_arch }} + + - name: Build wheels (all other platforms) + if: matrix.os != 'ubuntu-24.04-arm' uses: pypa/cibuildwheel@v2.23.3 - # to supply options, put them in 'env', like: - # env: - # CIBW_SOME_OPTION: value env: CIBW_BUILD: ${{ matrix.cibuild }} CIBW_ARCHS_MACOS: ${{ matrix.macos-arch }} CIBW_DEPENDENCY_VERSIONS_MACOS: cibw_constraints.txt - name: Download Cache from Docker (linux only) - if: ${{ runner.os == 'Linux' }} + if: runner.os == 'Linux' && matrix.os != 'ubuntu-24.04-arm' # hack until https://github.com/pypa/cibuildwheel/issues/1030 is fixed run: | env