3434 name : Build SDist
3535 runs-on : ubuntu-latest
3636 steps :
37- - uses : actions/checkout@v5
37+ - uses : actions/checkout@v6
3838 with :
3939 fetch-depth : 0
4040 persist-credentials : false
6464 # Linux x86 manylinux
6565 - os : ubuntu-latest
6666 cibw_archs : " x86_64"
67- # Python 3.12 wheel requires libffi-devel to be installed. manylinux container uses yum
68- cibw_before_build_linux : " yum install -y libffi-devel"
67+ # manylinux_2_28 uses dnf (not yum). libffi-devel needed for Python 3.12+ cffi.
68+ cibw_before_build_linux : " dnf install -y libffi-devel || yum install -y libffi-devel || true "
6969 # skip musllinux
7070 cibw_skip : " *musl*"
7171
@@ -74,15 +74,15 @@ jobs:
7474 - os : ubuntu-latest
7575 cibw_archs : " x86_64"
7676 arch_note : " musl"
77- # skip manylinux (built elsewhere), PyPy (no musl numpy wheels), CPython 3.8 (no musl numpy wheels)
78- cibw_skip : " *many* pp* cp38* "
77+ # skip manylinux (built elsewhere)
78+ cibw_skip : " *many*"
7979
8080 # Linux aarch64
8181 # Separate runner because this requires emulation (only x86 runners are available) and is very slow.
8282 - os : ubuntu-latest
8383 cibw_archs : " aarch64"
84- # numpy wheels not available for aarch64 PyPy or musllinux
85- cibw_skip : " pp* *musl*"
84+ # numpy wheels not available for aarch64 musllinux
85+ cibw_skip : " *musl*"
8686
8787 # macOS x86
8888 # Note: keep as old as possible as due to libomp this will be the oldest supported macOS version.
9595 cibw_archs : " arm64"
9696
9797 steps :
98- - uses : actions/checkout@v5
98+ - uses : actions/checkout@v6
9999 with :
100100 fetch-depth : 0
101101 persist-credentials : false
@@ -104,7 +104,7 @@ jobs:
104104 # see https://cibuildwheel.readthedocs.io/en/stable/faq/#emulation
105105 - name : Setup QEMU (for aarch64)
106106 if : matrix.cibw_archs == 'aarch64'
107- uses : docker/setup-qemu-action@v3
107+ uses : docker/setup-qemu-action@v4
108108 with :
109109 platforms : arm64
110110
@@ -147,13 +147,16 @@ jobs:
147147 brew fetch --retry libomp && brew reinstall libomp
148148 echo MACOSX_DEPLOYMENT_TARGET=$(otool -l $(brew --prefix libomp)/lib/libomp.dylib | grep minos | awk '{print $2}') >> $GITHUB_ENV
149149
150- - uses : pypa/cibuildwheel@v2.22
150+ - uses : pypa/cibuildwheel@v3.4
151151 with :
152152 output-dir : wheelhouse
153153 env :
154154 # very verbose
155155 CIBW_BUILD_VERBOSITY : 3
156156
157+ # cibuildwheel v3: PyPy and free-threading no longer built by default
158+ CIBW_ENABLE : " pypy cpython-freethreading"
159+
157160 # Build SuiteSparse
158161 CIBW_BEFORE_ALL : bash suitesparse.sh ${{ env.GB_VERSION_REF }}
159162
@@ -174,8 +177,7 @@ jobs:
174177 # Architectures to build specified in matrix
175178 CIBW_ARCHS : ${{ matrix.cibw_archs }}
176179
177- # as of writing numpy does not support pypy 3.10
178- CIBW_SKIP : " ${{ matrix.cibw_skip }} pp310*"
180+ CIBW_SKIP : " ${{ matrix.cibw_skip }}"
179181
180182 # Use delvewheel on Windows.
181183 # This copies graphblas.dll into the wheel. "repair" in cibuildwheel parlance includes copying any shared
@@ -219,7 +221,7 @@ jobs:
219221 merge-multiple : true
220222
221223 # Upload to PyPI
222- - uses : pypa/gh-action-pypi-publish@release/v1
224+ - uses : pypa/gh-action-pypi-publish@v1.13.0
223225 name : Upload to PyPI
224226 if : github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.upload_dest == 'PyPI')
225227 with :
@@ -229,7 +231,7 @@ jobs:
229231 password : ${{ secrets.PYPI_TOKEN }}
230232
231233 # Upload to Test PyPI
232- - uses : pypa/gh-action-pypi-publish@release/v1
234+ - uses : pypa/gh-action-pypi-publish@v1.13.0
233235 name : Upload to Test PyPI
234236 if : github.event_name == 'workflow_dispatch' && github.event.inputs.upload_dest == 'Test PyPI'
235237 with :
0 commit comments