name: Build Python Wheels # https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-python on: # we just want to test in this PR pull_request: jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false max-parallel: 12 matrix: include: - os: "macos-13" # intel runner cibuild: "*macosx*" cibw_arch: "macos_x86_64" macos-arch: "x86_64" - os: "macos-14" # M1 runner cibuild: "*macosx*" cibw_arch: "macos_arm64" macos-arch: "arm64" - os: "ubuntu-latest" cibuild: "*manylinux*" cibw_arch: "manylinux" - os: "ubuntu-latest" cibuild: "*musllinux*" cibw_arch: "musllinux" - os: "ubuntu-24.04-arm" # aarch64 manylinux on ARM runner cibuild: "*manylinux*" cibw_arch: "manylinux" steps: - name: Free Disk Space (Ubuntu) if: matrix.os == 'ubuntu-latest' uses: jlumbroso/free-disk-space@main with: android: true dotnet: true haskell: true large-packages: true - uses: hmarr/debug-action@v3 - name: Cancel Workflow Action uses: styfle/cancel-workflow-action@0.12.1 - uses: actions/checkout@v4 - name: ccache 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 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 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' }} and ${{ matrix.os != 'ubuntu-24.04-arm' }} # hack until https://github.com/pypa/cibuildwheel/issues/1030 is fixed run: | env ccache -s HOST_CCACHE_DIR="$(ccache -k cache_dir)" rm -rf $HOST_CCACHE_DIR mv ./wheelhouse/.ccache $HOST_CCACHE_DIR ls -la $HOST_CCACHE_DIR ccache -s - uses: actions/upload-artifact@v4 with: name: artifact-${{ matrix.os }}-${{ matrix.cibw_arch }}-${{ strategy.job-index }} path: ./wheelhouse/*.whl