Skip to content

Commit 4487a94

Browse files
committed
ci: Build aarch64 wheels on ARM Ubuntu 24.04
Previously we were building them on x86-64 Ubuntu 24.04 runners in QEMU, and never running the tests for them because of the emulation overhead. Signed-off-by: Matt Wozniski <[email protected]>
1 parent ca8db59 commit 4487a94

File tree

1 file changed

+44
-6
lines changed

1 file changed

+44
-6
lines changed

.github/workflows/build_wheels.yml

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,27 +38,27 @@ jobs:
3838
- id: musllinux_x86_64
3939
run: echo "wheel_types=musllinux_x86_64" >> $GITHUB_OUTPUT
4040
- id: manylinux_aarch64
41-
if: github.event_name == 'release' && github.event.action == 'published'
4241
run: echo "wheel_types=manylinux_aarch64" >> $GITHUB_OUTPUT
4342
outputs:
4443
wheel_types: ${{ toJSON(steps.*.outputs.wheel_types) }}
4544

4645
build_wheels:
4746
needs: [build_sdist, choose_wheel_types]
4847
name: ${{ matrix.wheel_type }} wheels
49-
runs-on: ubuntu-latest
48+
runs-on: ${{ matrix.os }}
5049
strategy:
5150
fail-fast: false
5251
matrix:
5352
wheel_type: ${{ fromJSON(needs.choose_wheel_types.outputs.wheel_types) }}
53+
include:
54+
- os: ubuntu-latest
55+
- wheel_type: manylinux_aarch64
56+
os: ubuntu-24.04-arm
5457

5558
steps:
5659
- name: Disable ptrace security restrictions
5760
run: |
5861
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
59-
- uses: docker/setup-qemu-action@v3
60-
if: runner.os == 'Linux'
61-
name: Set up QEMU
6262
- uses: actions/download-artifact@v5
6363
with:
6464
name: sdist
@@ -69,7 +69,7 @@ jobs:
6969
uses: pypa/[email protected]
7070
env:
7171
CIBW_BUILD: "cp3{8..14}{t,}-${{ matrix.wheel_type }}"
72-
CIBW_ARCHS_LINUX: auto aarch64
72+
CIBW_ARCHS_LINUX: auto
7373
CIBW_ENABLE: cpython-prerelease
7474
- uses: actions/upload-artifact@v4
7575
with:
@@ -154,6 +154,44 @@ jobs:
154154
PYTHON_TEST_VERSION: "auto"
155155
run: python${{matrix.python_version}} -m pytest tests -k 'not 2.7' -n auto -vvv
156156

157+
test_aarch64_wheels:
158+
needs: [build_wheels]
159+
runs-on: ubuntu-24.04-arm
160+
strategy:
161+
fail-fast: false
162+
matrix:
163+
python_version: ["3.8", "3.13", "3.14"]
164+
steps:
165+
- uses: actions/checkout@v5
166+
- name: Set up Python
167+
uses: actions/setup-python@v5
168+
with:
169+
python-version: "${{matrix.python_version}}-dev"
170+
- uses: actions/download-artifact@v5
171+
with:
172+
name: "manylinux_aarch64-wheels"
173+
path: dist
174+
- name: Set up dependencies
175+
run: |
176+
sudo add-apt-repository ppa:deadsnakes/ppa
177+
sudo apt-get update
178+
sudo apt-get install -qy \
179+
gdb \
180+
python${{matrix.python_version}}-dev \
181+
python${{matrix.python_version}}-dbg
182+
- name: Install Python dependencies
183+
run: |
184+
python${{matrix.python_version}} -m pip install --upgrade pip
185+
python${{matrix.python_version}} -m pip install -r requirements-test.txt
186+
python${{matrix.python_version}} -m pip install --no-index --find-links=dist/ --only-binary=pystack pystack
187+
- name: Disable ptrace security restrictions
188+
run: |
189+
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
190+
- name: Run pytest
191+
env:
192+
PYTHON_TEST_VERSION: "auto"
193+
run: python${{matrix.python_version}} -m pytest tests -k 'not 2.7' -n auto -vvv
194+
157195
test_free_threading:
158196
needs: [build_wheels]
159197
runs-on: ubuntu-22.04

0 commit comments

Comments
 (0)