1515jobs :
1616 triage :
1717 name : ${{ matrix.os }} - ${{ matrix.python-version }}
18- runs-on : ${{ matrix.os }}
18+ runs-on : ${{ matrix.runner }}
1919 strategy :
2020 fail-fast : false
2121 matrix :
2222 os :
23- - windows-latest
24- - ubuntu-latest
25- - macos-15-intel # MacOS x86_64
26- - macos-latest # MacOS arm64 (M1)
27- - ubuntu-24.04-arm
28- - linux-armv7-self-hosted
23+ - Windows
24+ - Linux x86_64
25+ - macOS Intel
26+ - macOS ARM
27+ - Linux ARM64
28+ - Linux ARMv7
29+ include :
30+ - os : Windows
31+ runner : windows-latest
32+ - os : Linux x86_64
33+ runner : ubuntu-latest
34+ - os : macOS Intel
35+ runner : macos-15-intel
36+ - os : macOS ARM
37+ runner : macos-latest
38+ - os : Linux ARM64
39+ runner : ubuntu-24.04-arm
40+ - os : Linux ARMv7
41+ runner : ubuntu-latest # Use GitHub-hosted runner with QEMU
42+ setup_qemu : true
2943 python-version : ${{ fromJson(inputs.supported_python_versions) }}
3044 exclude :
3145 # Exclude oldest supported Python since it's already built in the platform builds
3246 - python-version : ${{ inputs.oldest_supported_python }}
33- os : windows-latest
47+ os : Windows
3448 - python-version : ${{ inputs.oldest_supported_python }}
35- os : ubuntu-latest
49+ os : Linux x86_64
3650 - python-version : ${{ inputs.oldest_supported_python }}
37- os : macos-15-intel
51+ os : macOS Intel
3852 - python-version : ${{ inputs.oldest_supported_python }}
39- os : macos-latest
53+ os : macOS ARM
4054 - python-version : ${{ inputs.oldest_supported_python }}
41- os : ubuntu-24.04-arm
55+ os : Linux ARM64
4256 - python-version : ${{ inputs.oldest_supported_python }}
43- os : linux-armv7-self-hosted
57+ os : Linux ARMv7
4458
4559 # Use python container on ARM - dynamically constructed with bookworm (Debian 12)
46- container : ${{matrix.os == 'linux-armv7-self-hosted ' && format('python:{0}-bookworm', matrix.python-version) || null}}
60+ container : ${{matrix.os == 'Linux ARMv7 ' && format('python:{0}-bookworm', matrix.python-version) || null}}
4761
4862 steps :
63+ - name : Set up QEMU for ARMv7
64+ if : matrix.setup_qemu
65+ uses : docker/setup-qemu-action@v3
66+ with :
67+ platforms : linux/arm/v7
68+
4969 - name : Checkout repository
5070 uses : actions/checkout@v4
5171
5272 - name : Setup Python
5373 # Skip setting python on ARM because of missing compatibility: https://github.com/actions/setup-python/issues/108
54- if : matrix.os != 'linux-armv7-self-hosted '
74+ if : matrix.os != 'Linux ARMv7 '
5575 uses : actions/setup-python@v5
5676 with :
5777 python-version : ${{ matrix.python-version }}
@@ -67,16 +87,16 @@ jobs:
6787 run : python -m pip install -r build_requirements.txt
6888
6989 - name : Install additional OS dependencies - Ubuntu
70- if : matrix.os == 'ubuntu-latest '
90+ if : matrix.os == 'Linux x86_64 '
7191 run : os_dependencies/ubuntu.sh
7292
7393 - name : Install additional OS dependencies - MacOS
74- if : matrix.os == 'macos-latest ' || matrix.os == 'macos-15-intel '
94+ if : matrix.os == 'macOS ARM ' || matrix.os == 'macOS Intel '
7595 run : os_dependencies/macos.sh
7696
7797
7898 - name : Install additional OS dependencies - Linux ARM7
79- if : matrix.os == 'linux-armv7-self-hosted ' || matrix.os == 'ubuntu-24.04-arm '
99+ if : matrix.os == 'Linux ARMv7 ' || matrix.os == 'Linux ARM64 '
80100 run : os_dependencies/linux_arm.sh
81101
82102 - name : Download artifacts
@@ -86,26 +106,26 @@ jobs:
86106 path : dependent_requirements_${{ matrix.os}}
87107
88108 - name : Print requirements
89- if : matrix.os != 'windows-latest '
109+ if : matrix.os != 'Windows '
90110 run : cat dependent_requirements_${{ matrix.os}}/dependent_requirements.txt
91111
92112 - name : Print requirements - Windows
93- if : matrix.os == 'windows-latest '
113+ if : matrix.os == 'Windows '
94114 run : type dependent_requirements_${{ matrix.os}}\\dependent_requirements.txt
95115
96116 - name : Build Python dependent wheels for ${{ matrix.python-version }}
97- if : matrix.os != 'windows-latest '
117+ if : matrix.os != 'Windows '
98118 run : |
99- # Source Rust environment for self-hosted ARMv7 runner
100- if [ "${{ matrix.os }}" = "linux-armv7-self-hosted " ]; then
119+ # Source Rust environment for ARMv7
120+ if [ "${{ matrix.os }}" = "Linux ARMv7 " ]; then
101121 export PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1
102122 . $HOME/.cargo/env
103123 fi
104124
105125 python build_wheels_from_file.py dependent_requirements_${{ matrix.os}}
106126
107127 - name : Build Python dependent wheels for ${{ matrix.python-version }} - Windows
108- if : matrix.os == 'windows-latest '
128+ if : matrix.os == 'Windows '
109129 run : python build_wheels_from_file.py dependent_requirements_${{ matrix.os}}
110130
111131
0 commit comments