Skip to content

Commit 965959b

Browse files
authored
ci: add builds for windows 11 arm (#210)
1 parent efeaefd commit 965959b

File tree

1 file changed

+39
-54
lines changed

1 file changed

+39
-54
lines changed

.github/workflows/ci.yml

Lines changed: 39 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
matrix:
3434
rust-version: [stable]
3535
runs-on: [ubuntu, macos]
36-
python-version: ["3.13"]
36+
python-version: [""]
3737
include:
3838
- rust-version: ${{ needs.resolve.outputs.MSRV }}
3939
runs-on: ubuntu
@@ -55,7 +55,7 @@ jobs:
5555
- name: set up python
5656
uses: actions/setup-python@v6
5757
with:
58-
python-version: ${{ matrix.python-version }}
58+
python-version: ${{ matrix.python-version || '3.13' }}
5959

6060
- uses: dtolnay/rust-toolchain@master
6161
with:
@@ -256,34 +256,34 @@ jobs:
256256
strategy:
257257
fail-fast: false
258258
matrix:
259-
os: [linux] # windows and macos builds added manually
260-
target: [x86_64, aarch64]
259+
os: [linux, windows] # windows and macos builds added manually
260+
target: [i686]
261261
manylinux: [auto]
262262
include:
263263
# manylinux for various platforms
264-
- os: linux
265-
manylinux: auto
266-
target: x86_64
267-
interpreter: graalpy3.11 graalpy3.12
264+
# x86_64 and aarch64 are PGO optimized below
268265
- os: linux
269266
manylinux: auto
270267
target: i686
271-
- os: linux
272-
manylinux: auto
273-
target: aarch64
274-
interpreter: 3.9 3.10 3.11 3.12 3.13 3.14 graalpy3.11 graalpy3.12
275268
- os: linux
276269
manylinux: auto
277270
target: armv7
278-
interpreter: 3.9 3.10 3.11 3.12 3.13 3.14
279271
- os: linux
280272
manylinux: auto
281273
target: ppc64le
282-
interpreter: 3.9 3.10 3.11 3.12 3.13 3.14
283274
- os: linux
284275
manylinux: auto
285276
target: s390x
286-
interpreter: 3.9 3.10 3.11 3.12 3.13 3.14
277+
278+
# manylinux graalpy on major architectures
279+
- os: linux
280+
manylinux: auto
281+
target: x86_64
282+
interpreter: graalpy3.11 graalpy3.12
283+
- os: linux
284+
manylinux: auto
285+
target: aarch64
286+
interpreter: graalpy3.11 graalpy3.12
287287

288288
# musllinux
289289
- os: linux
@@ -292,49 +292,42 @@ jobs:
292292
- os: linux
293293
manylinux: musllinux_1_1
294294
target: aarch64
295+
runs-on: ubuntu-24.04-arm
295296

296297
# macos;
297298
# all versions x86_64
298-
# older pythons which can't be run on the arm hardware for PGO
299+
# 3.9 can't be run on the arm hardware for PGO
299300
- os: macos
300301
target: x86_64
301302
interpreter: 3.9 3.10 3.11 3.12 3.13 3.14 graalpy3.11 graalpy3.12
302303
- os: macos
303304
target: aarch64
304305
interpreter: 3.9 graalpy3.11 graalpy3.12
305306

306-
# windows;
307-
# aarch64 only 3.11 and up, also not PGO optimized
307+
# windows 11 arm supports 3.11 and up
308308
- os: windows
309-
target: i686
310-
python-architecture: x86
311-
interpreter: 3.9 3.10 3.11 3.12 3.13 3.14
312-
# FIXME had link failures, needs investigation
313-
# - os: windows
314-
# target: aarch64
315-
# interpreter: 3.11 3.12
316-
exclude:
317-
# PGO optimized below
318-
- os: linux
319-
manylinux: auto
320-
target: x86_64
309+
target: aarch64
310+
runs-on: windows-11-arm
311+
interpreter: "3.11 3.12 3.13 3.13t 3.14 3.14t"
321312

322-
runs-on: ${{ (matrix.os == 'linux' && 'ubuntu') || matrix.os }}-latest
313+
runs-on: ${{ matrix.runs-on || format('{0}-latest', (matrix.os == 'linux' && 'ubuntu') || matrix.os) }}
323314
steps:
324315
- uses: actions/checkout@v5
325316

326317
- name: set up python
327318
uses: actions/setup-python@v6
328319
with:
329320
python-version: "3.13"
330-
architecture: ${{ matrix.python-architecture || 'x64' }}
321+
322+
- name: install rust stable
323+
uses: dtolnay/rust-toolchain@stable
331324

332325
- name: build wheels
333326
uses: PyO3/maturin-action@v1
334327
with:
335328
target: ${{ matrix.target }}
336329
manylinux: ${{ matrix.manylinux }}
337-
args: --release --out dist --interpreter ${{ matrix.interpreter || '3.9 3.10 3.11 3.12 3.13 3.14' }}
330+
args: --release --out dist --interpreter ${{ matrix.interpreter || '3.9 3.10 3.11 3.12 3.13 3.14 3.14t' }}
338331
rust-toolchain: stable
339332
working-directory: crates/jiter-python
340333

@@ -350,36 +343,28 @@ jobs:
350343
path: crates/jiter-python/dist
351344

352345
build-pgo:
353-
name: build pgo-optimized on ${{ matrix.os }} / ${{ matrix.interpreter }}
346+
name: build pgo-optimized on ${{ matrix.platform.os }} / ${{ matrix.interpreter }}
354347
# only run on push to main and on release
355348
if: startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build')
356349
strategy:
357350
fail-fast: false
358351
matrix:
359-
os: [linux, windows, macos]
352+
platform:
353+
[
354+
{ os: linux, runs-on: ubuntu-latest },
355+
{ os: linux_aarch64, runs-on: ubuntu-24.04-arm },
356+
{ os: windows, runs-on: windows-latest },
357+
{ os: macos, runs-on: macos-latest },
358+
]
360359
interpreter:
361360
["3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t"]
362-
include:
363-
# standard runners with override for macos arm
364-
- os: linux
365-
runs-on: ubuntu-latest
366-
- os: windows
367-
ls: dir
368-
runs-on: windows-latest
369-
- os: macos
370-
runs-on: macos-latest
371361
exclude:
372362
# macos arm only supported from 3.10 and up
373-
- os: macos
363+
- platform:
364+
os: macos
374365
interpreter: "3.9"
375-
# windows 3.14 cffi install blocks build on 3.14 beta 1
376-
# https://github.com/python/cpython/issues/133779
377-
- os: windows
378-
interpreter: "3.14"
379-
- os: windows
380-
interpreter: "3.14t"
381366

382-
runs-on: ${{ matrix.runs-on }}
367+
runs-on: ${{ matrix.platform.runs-on }}
383368
steps:
384369
- uses: actions/checkout@v5
385370

@@ -402,11 +387,11 @@ jobs:
402387
interpreter: ${{ matrix.interpreter }}
403388
rust-toolchain: ${{ steps.rust-toolchain.outputs.name }}
404389

405-
- run: ${{ matrix.ls || 'ls -lh' }} crates/jiter-python/dist/
390+
- run: ${{ (startsWith(matrix.platform.os, 'windows') && 'dir') || 'ls -lh' }} crates/jiter-python/dist/
406391

407392
- uses: actions/upload-artifact@v4
408393
with:
409-
name: pypi_files_${{ matrix.os }}_${{ matrix.interpreter }}
394+
name: pypi_files_${{ matrix.platform.os }}_${{ matrix.interpreter }}
410395
path: crates/jiter-python/dist
411396

412397
build-wasm-emscripten:

0 commit comments

Comments
 (0)