Skip to content

Commit a6e87c5

Browse files
committed
Auto merge of #124850 - dpaoliello:clang2022, r=Kobzol
Upgrade pre-built Clang used in MSVC and MacOS builds, move MSVC builds to Server 2022 Fixes #92948 Example working MacOS and Windows builds: <https://github.com/rust-lang/rust/actions/runs/8989360201> There is a [bug in Clang 18](llvm/llvm-project#81849) that causes issues when building for Arm64 in later parts of the build (specifically `libgit2`). As a workaround, we will still use the pre-built Clang to build LLVM but will use MSVC for the rest of the Arm64 build.
2 parents 8f9080d + 5212e07 commit a6e87c5

File tree

4 files changed

+25
-21
lines changed

4 files changed

+25
-21
lines changed

Diff for: src/bootstrap/src/core/builder.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -2549,7 +2549,12 @@ impl Cargo {
25492549
// FIXME: the guard against msvc shouldn't need to be here
25502550
if target.is_msvc() {
25512551
if let Some(ref cl) = builder.config.llvm_clang_cl {
2552-
self.command.env("CC", cl).env("CXX", cl);
2552+
// FIXME: There is a bug in Clang 18 when building for ARM64:
2553+
// https://github.com/llvm/llvm-project/pull/81849. This is
2554+
// fixed in LLVM 19, but can't be backported.
2555+
if !target.starts_with("aarch64") && !target.starts_with("arm64ec") {
2556+
self.command.env("CC", cl).env("CXX", cl);
2557+
}
25532558
}
25542559
} else {
25552560
let ccache = builder.config.ccache.as_ref();

Diff for: src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ set -ex
44

55
source shared.sh
66

7+
# Try to keep the LLVM version here in sync with src/ci/scripts/install-clang.sh
78
LLVM=llvmorg-18.1.0
89

910
mkdir llvm-project

Diff for: src/ci/github-actions/jobs.yml

+7-15
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,6 @@ runners:
3232
os: windows-2022-16core-64gb
3333
<<: *base-job
3434

35-
- &job-windows-2019-8c
36-
os: windows-2019-8core-32gb
37-
<<: *base-job
38-
39-
- &job-windows-2019-16c
40-
os: windows-2019-16core-64gb
41-
<<: *base-job
42-
4335
- &job-aarch64-linux
4436
os: [ self-hosted, ARM64, linux ]
4537

@@ -349,21 +341,21 @@ auto:
349341
env:
350342
RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-profiler
351343
SCRIPT: make ci-msvc
352-
<<: *job-windows-2019-8c
344+
<<: *job-windows-8c
353345

354346
- image: i686-msvc
355347
env:
356348
RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc
357349
SCRIPT: make ci-msvc
358-
<<: *job-windows-2019-8c
350+
<<: *job-windows-8c
359351

360352
- image: x86_64-msvc-ext
361353
env:
362354
SCRIPT: python x.py --stage 2 test src/tools/cargotest src/tools/cargo && src/ci/docker/host-x86_64/x86_64-gnu-tools/checktools.sh x.py /tmp/toolstate/toolstates.json windows
363355
HOST_TARGET: x86_64-pc-windows-msvc
364356
RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-lld --save-toolstates=/tmp/toolstate/toolstates.json
365357
DEPLOY_TOOLSTATES_JSON: toolstates-windows.json
366-
<<: *job-windows-2019-8c
358+
<<: *job-windows-8c
367359

368360
# 32/64-bit MinGW builds.
369361
#
@@ -414,7 +406,7 @@ auto:
414406
--set rust.codegen-units=1
415407
SCRIPT: python x.py build --set rust.debug=true opt-dist && PGO_HOST=x86_64-pc-windows-msvc ./build/x86_64-pc-windows-msvc/stage0-tools-bin/opt-dist windows-ci -- python x.py dist bootstrap --include-default-paths
416408
DIST_REQUIRE_ALL_TOOLS: 1
417-
<<: *job-windows-2019-8c
409+
<<: *job-windows-8c
418410

419411
- image: dist-i686-msvc
420412
env:
@@ -426,7 +418,7 @@ auto:
426418
--enable-profiler
427419
SCRIPT: python x.py dist bootstrap --include-default-paths
428420
DIST_REQUIRE_ALL_TOOLS: 1
429-
<<: *job-windows-2019-8c
421+
<<: *job-windows-8c
430422

431423
- image: dist-aarch64-msvc
432424
env:
@@ -437,7 +429,7 @@ auto:
437429
--enable-profiler
438430
SCRIPT: python x.py dist bootstrap --include-default-paths
439431
DIST_REQUIRE_ALL_TOOLS: 1
440-
<<: *job-windows-2019-8c
432+
<<: *job-windows-8c
441433

442434
- image: dist-i686-mingw
443435
env:
@@ -471,4 +463,4 @@ auto:
471463
env:
472464
RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-extended --enable-profiler
473465
SCRIPT: python x.py dist bootstrap --include-default-paths
474-
<<: *job-windows-2019-8c
466+
<<: *job-windows-8c

Diff for: src/ci/scripts/install-clang.sh

+11-5
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,24 @@ IFS=$'\n\t'
1010
source "$(cd "$(dirname "$0")" && pwd)/../shared.sh"
1111

1212
# Update both macOS's and Windows's tarballs when bumping the version here.
13-
LLVM_VERSION="14.0.5"
13+
# Try to keep this in sync with src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh
14+
LLVM_VERSION="18.1.4"
1415

1516
if isMacOS; then
17+
# FIXME: This is the latest pre-built version of LLVM that's available for
18+
# x86_64 MacOS. We may want to consider bulding our own LLVM binaries
19+
# instead, or set `USE_XCODE_CLANG` like AArch64 does.
20+
LLVM_VERSION="15.0.7"
21+
1622
# If the job selects a specific Xcode version, use that instead of
1723
# downloading our own version.
1824
if [[ ${USE_XCODE_CLANG-0} -eq 1 ]]; then
1925
bindir="$(xcode-select --print-path)/Toolchains/XcodeDefault.xctoolchain/usr/bin"
2026
else
21-
file="${MIRRORS_BASE}/clang%2Bllvm-${LLVM_VERSION}-x86_64-apple-darwin.tar.xz"
22-
retry curl -f "${file}" -o "clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin.tar.xz"
23-
tar xJf "clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin.tar.xz"
24-
bindir="$(pwd)/clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin/bin"
27+
file="${MIRRORS_BASE}/clang%2Bllvm-${LLVM_VERSION}-x86_64-apple-darwin21.0.tar.xz"
28+
retry curl -f "${file}" -o "clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin21.0.tar.xz"
29+
tar xJf "clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin21.0.tar.xz"
30+
bindir="$(pwd)/clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin21.0/bin"
2531
fi
2632

2733
ciCommandSetEnv CC "${bindir}/clang"

0 commit comments

Comments
 (0)