DRAFT: Add an aarch64-msvc build running on ARM64 Windows

This commit is contained in:
Daniel Paoliello
2025-04-28 12:07:30 -07:00
parent 8da623945f
commit 295378729b
4 changed files with 50 additions and 5 deletions
+3
View File
@@ -163,6 +163,9 @@ jobs:
- name: show the current environment
run: src/ci/scripts/dump-environment.sh
- name: install rust
run: src/ci/scripts/install-rust.sh
- name: install awscli
run: src/ci/scripts/install-awscli.sh
+19 -2
View File
@@ -46,6 +46,10 @@ runners:
os: windows-2025-8core-32gb
<<: *base-job
- &job-windows-aarch64
os: windows-11-arm
<<: *base-job
- &job-aarch64-linux
# Free some disk space to avoid running out of space during the build.
free_disk: true
@@ -539,6 +543,19 @@ auto:
SCRIPT: make ci-msvc-ps1
<<: *job-windows
# aarch64-msvc is split into two jobs to run tests in parallel.
- name: aarch64-msvc-1
env:
RUST_CONFIGURE_ARGS: --build=aarch64-pc-windows-msvc
SCRIPT: make ci-msvc-py
<<: *job-windows-aarch64
- name: aarch64-msvc-2
env:
RUST_CONFIGURE_ARGS: --build=aarch64-pc-windows-msvc
SCRIPT: make ci-msvc-ps1
<<: *job-windows-aarch64
# x86_64-msvc-ext is split into multiple jobs to run tests in parallel.
- name: x86_64-msvc-ext1
env:
@@ -634,14 +651,14 @@ auto:
- name: dist-aarch64-msvc
env:
RUST_CONFIGURE_ARGS: >-
--build=x86_64-pc-windows-msvc
--build=aarch64-pc-windows-msvc
--host=aarch64-pc-windows-msvc
--target=aarch64-pc-windows-msvc,arm64ec-pc-windows-msvc
--enable-full-tools
--enable-profiler
SCRIPT: python x.py dist bootstrap --include-default-paths
DIST_REQUIRE_ALL_TOOLS: 1
<<: *job-windows
<<: *job-windows-aarch64
- name: dist-i686-mingw
env:
+13 -3
View File
@@ -56,9 +56,19 @@ elif isWindows && ! isKnownToBeMingwBuild; then
mkdir -p citools/clang-rust
cd citools
retry curl -f "${MIRRORS_BASE}/LLVM-${LLVM_VERSION}-win64.exe" \
-o "LLVM-${LLVM_VERSION}-win64.exe"
7z x -oclang-rust/ "LLVM-${LLVM_VERSION}-win64.exe"
if [[ "${CI_JOB_NAME}" = *aarch64* ]]; then
suffix=woa64
# On Arm64, the Ring crate requires that Clang be on the PATH.
# https://github.com/briansmith/ring/blob/main/BUILDING.md
ciCommandAddPath "$(cygpath -m "$(pwd)/clang-rust/bin")"
else
suffix=win64
fi
retry curl -f "${MIRRORS_BASE}/LLVM-${LLVM_VERSION}-${suffix}.exe" \
-o "LLVM-${LLVM_VERSION}-${suffix}.exe"
7z x -oclang-rust/ "LLVM-${LLVM_VERSION}-${suffix}.exe"
ciCommandSetEnv RUST_CONFIGURE_ARGS \
"${RUST_CONFIGURE_ARGS} --set llvm.clang-cl=$(pwd)/clang-rust/bin/clang-cl.exe"
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash
# The Arm64 Windows Runner does not have Rust already installed
# https://github.com/actions/partner-runner-images/issues/77
set -euo pipefail
IFS=$'\n\t'
source "$(cd "$(dirname "$0")" && pwd)/../shared.sh"
if [[ "${CI_JOB_NAME}" = *aarch64* ]] && isWindows; then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
sh -s -- -y -q --default-host aarch64-pc-windows-msvc
ciCommandAddPath "${USERPROFILE}/.cargo/bin"
fi