Skip to content

Commit b3e47aa

Browse files
committed
ci: use uv + cibuildwheel to build all wheels
Previously, wheel builds were a combination of using `cibuildwheel` and `pip wheel`. On Linux, we manually spawned a container image and provided our own script for building the wheel. This commit standardizes on using `cibuildwheel` everywhere. We run `cibuildwheel` via `uv` as a dependency package so behavior is more deterministic.
1 parent ceb3ee6 commit b3e47aa

File tree

6 files changed

+221
-116
lines changed

6 files changed

+221
-116
lines changed

.github/workflows/wheel.yml

Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,44 +10,46 @@ jobs:
1010
fail-fast: false
1111

1212
matrix:
13-
image:
14-
- 'manylinux2014_aarch64'
15-
- 'musllinux_1_1_aarch64'
16-
- 'musllinux_1_2_aarch64'
17-
- 'manylinux2014_i686'
18-
- 'musllinux_1_2_i686'
19-
- 'manylinux2014_ppc64le'
20-
- 'musllinux_1_2_ppc64le'
21-
- 'manylinux2014_s390x'
22-
- 'musllinux_1_2_s390x'
23-
- 'manylinux2014_x86_64'
24-
- 'musllinux_1_1_x86_64'
25-
- 'musllinux_1_2_x86_64'
2613
py:
27-
- 'cp39-cp39'
28-
- 'cp310-cp310'
29-
- 'cp311-cp311'
30-
- 'cp312-cp312'
31-
- 'cp313-cp313'
32-
- 'cp314-cp314'
33-
exclude:
34-
- image: 'musllinux_1_1_aarch64'
35-
py: 'cp314-cp314'
36-
- image: 'musllinux_1_1_x86_64'
37-
py: 'cp314-cp314'
14+
- 'cp39'
15+
- 'cp310'
16+
- 'cp311'
17+
- 'cp312'
18+
- 'cp313'
19+
- 'cp314'
20+
arch:
21+
- 'aarch64'
22+
- 'i686'
23+
- 'ppc64le'
24+
- 's390x'
25+
- 'x86_64'
26+
abi:
27+
- 'manylinux2014'
28+
- 'musllinux_1_1'
29+
- 'musllinux_1_2'
3830
runs-on: ${{ endsWith(matrix.image, 'aarch64') && 'ubuntu-22.04-arm' || 'ubuntu-22.04' }}
31+
env:
32+
CIBW_ARCHS: ${{ matrix.arch }}
33+
CIBW_BUILD: ${{ matrix.py }}-${{ matrix.abi }}_*
34+
CIBW_BUILD_VERBOSITY: '1'
35+
ZSTD_WARNINGS_AS_ERRORS: '1'
3936
steps:
4037
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
4138
with:
4239
persist-credentials: false
4340

41+
- name: Install uv
42+
uses: astral-sh/setup-uv@d9e0f98d3fc6adb07d1e3d37f3043649ddad06a1 # v6.5.0
43+
with:
44+
version: "0.8.11"
45+
4446
- name: Set up QEMU
4547
if: ${{ endsWith(matrix.image, 'ppc64le') || endsWith(matrix.image, 's390x') }}
4648
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
4749

4850
- name: Build Wheel
4951
run: |
50-
docker run -e PYPATH=/opt/python/${{ matrix.py }} -e ZSTD_WARNINGS_AS_ERRORS=1 --rm -v `pwd`:/project quay.io/pypa/${{ matrix.image }} /project/ci/build-manylinux-wheel.sh
52+
uv run cibuildwheel --output-dir dist
5153
5254
- name: Upload Wheel
5355
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
@@ -85,13 +87,14 @@ jobs:
8587
with:
8688
persist-credentials: false
8789

88-
- name: Install Dependencies
89-
run: |
90-
python -m pip install --require-hashes -r ci/requirements.macoswheels.txt
90+
- name: Install uv
91+
uses: astral-sh/setup-uv@d9e0f98d3fc6adb07d1e3d37f3043649ddad06a1 # v6.5.0
92+
with:
93+
version: "0.8.11"
9194

9295
- name: Build Wheel
9396
run: |
94-
cibuildwheel --output-dir dist
97+
uv run cibuildwheel --output-dir dist
9598
9699
- name: Upload Wheel
97100
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
@@ -123,6 +126,9 @@ jobs:
123126
arch: 'arm64'
124127
runs-on: ${{ matrix.arch == 'arm64' && 'windows-11-arm' || 'windows-2022' }}
125128
env:
129+
CIBW_ARCHES: ${{ matrix.arch }}
130+
CIBW_BUILD: ${{ matrix.py }}
131+
CIBW_BUILD_VERBOSITY: '1'
126132
ZSTD_WARNINGS_AS_ERRORS: '1'
127133
steps:
128134
- name: Set up Python
@@ -136,9 +142,14 @@ jobs:
136142
with:
137143
persist-credentials: false
138144

145+
- name: Install uv
146+
uses: astral-sh/setup-uv@d9e0f98d3fc6adb07d1e3d37f3043649ddad06a1 # v6.5.0
147+
with:
148+
version: "0.8.11"
149+
139150
- name: Build Wheel
140151
run: |
141-
python -m pip wheel -w dist .
152+
uv run cibuildwheel --output-dir dist
142153
143154
- name: Upload Wheel
144155
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2

ci/build-manylinux-wheel.sh

Lines changed: 0 additions & 26 deletions
This file was deleted.

ci/requirements.macoswheels.in

Lines changed: 0 additions & 1 deletion
This file was deleted.

ci/requirements.macoswheels.txt

Lines changed: 0 additions & 57 deletions
This file was deleted.

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ build-backend = "setuptools.build_meta:__legacy__"
4343

4444
[dependency-groups]
4545
dev = [
46+
"cibuildwheel>=2.23.3",
4647
"hypothesis==6.111.0",
4748
"mypy>=1.17.1",
4849
"pytest>=8.4.1",

0 commit comments

Comments
 (0)