Skip to content

Commit 6debe03

Browse files
authored
Rollup merge of #140136 - dpaoliello:arm64winci, r=Kobzol
Add an aarch64-msvc build running on ARM64 Windows Resurrecting #126341 Per <rust-lang/rfcs#3817> we intend to promote `aarch64-pc-windows-msvc` to Tier 1. As part of that work, we are adding a pre-merge CI job to validate that changes do not break this target. Additionally, for consistency, the `dist-aarch64-msvc` job will also be run on Arm64 Windows runners. r? ``@Kobzol`` try-job: `*aarch64-msvc*`
2 parents 2a023bf + 2953787 commit 6debe03

File tree

4 files changed

+50
-5
lines changed

4 files changed

+50
-5
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ jobs:
152152
- name: show the current environment
153153
run: src/ci/scripts/dump-environment.sh
154154

155+
- name: install rust
156+
run: src/ci/scripts/install-rust.sh
157+
155158
- name: install awscli
156159
run: src/ci/scripts/install-awscli.sh
157160

src/ci/github-actions/jobs.yml

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ runners:
4646
os: windows-2025-8core-32gb
4747
<<: *base-job
4848

49+
- &job-windows-aarch64
50+
os: windows-11-arm
51+
<<: *base-job
52+
4953
- &job-aarch64-linux
5054
# Free some disk space to avoid running out of space during the build.
5155
free_disk: true
@@ -561,6 +565,19 @@ auto:
561565
SCRIPT: make ci-msvc-ps1
562566
<<: *job-windows
563567

568+
# aarch64-msvc is split into two jobs to run tests in parallel.
569+
- name: aarch64-msvc-1
570+
env:
571+
RUST_CONFIGURE_ARGS: --build=aarch64-pc-windows-msvc
572+
SCRIPT: make ci-msvc-py
573+
<<: *job-windows-aarch64
574+
575+
- name: aarch64-msvc-2
576+
env:
577+
RUST_CONFIGURE_ARGS: --build=aarch64-pc-windows-msvc
578+
SCRIPT: make ci-msvc-ps1
579+
<<: *job-windows-aarch64
580+
564581
# x86_64-msvc-ext is split into multiple jobs to run tests in parallel.
565582
- name: x86_64-msvc-ext1
566583
env:
@@ -656,14 +673,14 @@ auto:
656673
- name: dist-aarch64-msvc
657674
env:
658675
RUST_CONFIGURE_ARGS: >-
659-
--build=x86_64-pc-windows-msvc
676+
--build=aarch64-pc-windows-msvc
660677
--host=aarch64-pc-windows-msvc
661678
--target=aarch64-pc-windows-msvc,arm64ec-pc-windows-msvc
662679
--enable-full-tools
663680
--enable-profiler
664681
SCRIPT: python x.py dist bootstrap --include-default-paths
665682
DIST_REQUIRE_ALL_TOOLS: 1
666-
<<: *job-windows
683+
<<: *job-windows-aarch64
667684

668685
- name: dist-i686-mingw
669686
env:

src/ci/scripts/install-clang.sh

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,19 @@ elif isWindows && ! isKnownToBeMingwBuild; then
5656

5757
mkdir -p citools/clang-rust
5858
cd citools
59-
retry curl -f "${MIRRORS_BASE}/LLVM-${LLVM_VERSION}-win64.exe" \
60-
-o "LLVM-${LLVM_VERSION}-win64.exe"
61-
7z x -oclang-rust/ "LLVM-${LLVM_VERSION}-win64.exe"
59+
60+
if [[ "${CI_JOB_NAME}" = *aarch64* ]]; then
61+
suffix=woa64
62+
63+
# On Arm64, the Ring crate requires that Clang be on the PATH.
64+
# https://github.com/briansmith/ring/blob/main/BUILDING.md
65+
ciCommandAddPath "$(cygpath -m "$(pwd)/clang-rust/bin")"
66+
else
67+
suffix=win64
68+
fi
69+
retry curl -f "${MIRRORS_BASE}/LLVM-${LLVM_VERSION}-${suffix}.exe" \
70+
-o "LLVM-${LLVM_VERSION}-${suffix}.exe"
71+
7z x -oclang-rust/ "LLVM-${LLVM_VERSION}-${suffix}.exe"
6272
ciCommandSetEnv RUST_CONFIGURE_ARGS \
6373
"${RUST_CONFIGURE_ARGS} --set llvm.clang-cl=$(pwd)/clang-rust/bin/clang-cl.exe"
6474

src/ci/scripts/install-rust.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/bash
2+
3+
# The Arm64 Windows Runner does not have Rust already installed
4+
# https://github.com/actions/partner-runner-images/issues/77
5+
6+
set -euo pipefail
7+
IFS=$'\n\t'
8+
9+
source "$(cd "$(dirname "$0")" && pwd)/../shared.sh"
10+
11+
if [[ "${CI_JOB_NAME}" = *aarch64* ]] && isWindows; then
12+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
13+
sh -s -- -y -q --default-host aarch64-pc-windows-msvc
14+
ciCommandAddPath "${USERPROFILE}/.cargo/bin"
15+
fi

0 commit comments

Comments
 (0)