Skip to content

Commit bfe5e5c

Browse files
committed
Enable builds on ARM64 targets on Windows
1 parent 6a43ed5 commit bfe5e5c

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
@@ -121,10 +121,8 @@ jobs:
121121
platform:
122122
- target: x86_64-pc-windows-msvc
123123
arch: x64
124-
interpreter: -i python3
125124
- target: aarch64-pc-windows-msvc
126125
arch: x64
127-
interpreter: -i 3.13
128126
# NOTE: Disabling this target due to poor support in PyArrow and
129127
# friends.
130128
#- target: i686-pc-windows-msvc
@@ -138,15 +136,22 @@ jobs:
138136
with:
139137
python-version: ${{ env.PYTHON_VERSION }}
140138
architecture: ${{ matrix.platform.arch }}
139+
- name: "Download Python ARM64 libs for cross-compilation"
140+
if: startsWith(matrix.platform.target, 'aarch64')
141+
shell: pwsh
142+
run: |
143+
$pyver = python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}')"
144+
Write-Output "Installing pythonarm64 $pyver"
145+
nuget install pythonarm64 -Version $pyver -ExcludeVersion -OutputDirectory "${{ runner.temp }}\python-arm64"
146+
Write-Output "PYO3_CROSS_LIB_DIR=${{ runner.temp }}\python-arm64\pythonarm64\tools\libs" >> $env:GITHUB_ENV
141147
- name: "Build wheels"
142148
uses: PyO3/maturin-action@v1.49.1
143149
with:
144150
target: ${{ matrix.platform.target }}
145-
args: --release --locked --out dist ${{ matrix.platform.interpreter }}
151+
args: --release --locked --out dist -i ${{ startsWith(matrix.platform.target, 'aarch64') && '3.13' || 'python3' }}
146152
env:
147-
# aarch64 build fails, see https://github.com/PyO3/maturin/issues/2110
153+
# aarch64 cross-compilation, see https://github.com/PyO3/maturin/issues/2110
148154
XWIN_VERSION: 16
149-
PYO3_CROSS_PYTHON_VERSION: ${{ env.PYTHON_VERSION }}
150155
- name: "Test wheel"
151156
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }}
152157
shell: bash

0 commit comments

Comments
 (0)