Skip to content

Commit 7f25bc6

Browse files
committed
Enable builds on ARM64 targets on Windows
1 parent 51be1a1 commit 7f25bc6

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

.github/workflows/build-binaries.yml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,8 @@ jobs:
123123
platform:
124124
- target: x86_64-pc-windows-msvc
125125
arch: x64
126-
interpreter: -i python3
127126
- target: aarch64-pc-windows-msvc
128127
arch: x64
129-
interpreter: -i 3.13
130128
# NOTE: Disabling this target due to poor support in PyArrow and
131129
# friends.
132130
#- target: i686-pc-windows-msvc
@@ -140,15 +138,22 @@ jobs:
140138
with:
141139
python-version: ${{ env.PYTHON_VERSION }}
142140
architecture: ${{ matrix.platform.arch }}
141+
- name: "Download Python ARM64 libs for cross-compilation"
142+
if: startsWith(matrix.platform.target, 'aarch64')
143+
shell: pwsh
144+
run: |
145+
$pyver = python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}')"
146+
Write-Output "Installing pythonarm64 $pyver"
147+
nuget install pythonarm64 -Version $pyver -ExcludeVersion -OutputDirectory "${{ runner.temp }}\python-arm64"
148+
Write-Output "PYO3_CROSS_LIB_DIR=${{ runner.temp }}\python-arm64\pythonarm64\tools\libs" >> $env:GITHUB_ENV
143149
- name: "Build wheels"
144150
uses: PyO3/maturin-action@v1.49.1
145151
with:
146152
target: ${{ matrix.platform.target }}
147-
args: --release --locked --out dist ${{ matrix.platform.interpreter }}
153+
args: --release --locked --out dist -i ${{ startsWith(matrix.platform.target, 'aarch64') && '3.13' || 'python3' }}
148154
env:
149-
# aarch64 build fails, see https://github.com/PyO3/maturin/issues/2110
155+
# aarch64 cross-compilation, see https://github.com/PyO3/maturin/issues/2110
150156
XWIN_VERSION: 16
151-
PYO3_CROSS_PYTHON_VERSION: ${{ env.PYTHON_VERSION }}
152157
- name: "Test wheel"
153158
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }}
154159
shell: bash

0 commit comments

Comments
 (0)