From 5212e07a4e8c442a8e9024c929a73f308299fea3 Mon Sep 17 00:00:00 2001 From: Daniel Paoliello Date: Tue, 7 May 2024 09:59:02 -0700 Subject: [PATCH] Upgrade the version of Clang used in the build, move MSVC builds to Server 2022 --- src/bootstrap/src/core/builder.rs | 7 +++++- .../dist-x86_64-linux/build-clang.sh | 1 + src/ci/github-actions/jobs.yml | 22 ++++++------------- src/ci/scripts/install-clang.sh | 16 +++++++++----- 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/bootstrap/src/core/builder.rs b/src/bootstrap/src/core/builder.rs index 6c4b26ec2195f..8d7e53d2440bc 100644 --- a/src/bootstrap/src/core/builder.rs +++ b/src/bootstrap/src/core/builder.rs @@ -2549,7 +2549,12 @@ impl Cargo { // FIXME: the guard against msvc shouldn't need to be here if target.is_msvc() { if let Some(ref cl) = builder.config.llvm_clang_cl { - self.command.env("CC", cl).env("CXX", cl); + // FIXME: There is a bug in Clang 18 when building for ARM64: + // https://github.com/llvm/llvm-project/pull/81849. This is + // fixed in LLVM 19, but can't be backported. + if !target.starts_with("aarch64") && !target.starts_with("arm64ec") { + self.command.env("CC", cl).env("CXX", cl); + } } } else { let ccache = builder.config.ccache.as_ref(); diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh index 005f4537c84ab..f3591a69beee6 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh @@ -4,6 +4,7 @@ set -ex source shared.sh +# Try to keep the LLVM version here in sync with src/ci/scripts/install-clang.sh LLVM=llvmorg-18.1.0 mkdir llvm-project diff --git a/src/ci/github-actions/jobs.yml b/src/ci/github-actions/jobs.yml index 20b1a55ffb879..04888dc09b50d 100644 --- a/src/ci/github-actions/jobs.yml +++ b/src/ci/github-actions/jobs.yml @@ -32,14 +32,6 @@ runners: os: windows-2022-16core-64gb <<: *base-job - - &job-windows-2019-8c - os: windows-2019-8core-32gb - <<: *base-job - - - &job-windows-2019-16c - os: windows-2019-16core-64gb - <<: *base-job - - &job-aarch64-linux os: [ self-hosted, ARM64, linux ] @@ -349,13 +341,13 @@ auto: env: RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-profiler SCRIPT: make ci-msvc - <<: *job-windows-2019-8c + <<: *job-windows-8c - image: i686-msvc env: RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc SCRIPT: make ci-msvc - <<: *job-windows-2019-8c + <<: *job-windows-8c - image: x86_64-msvc-ext env: @@ -363,7 +355,7 @@ auto: HOST_TARGET: x86_64-pc-windows-msvc RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-lld --save-toolstates=/tmp/toolstate/toolstates.json DEPLOY_TOOLSTATES_JSON: toolstates-windows.json - <<: *job-windows-2019-8c + <<: *job-windows-8c # 32/64-bit MinGW builds. # @@ -414,7 +406,7 @@ auto: --set rust.codegen-units=1 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 DIST_REQUIRE_ALL_TOOLS: 1 - <<: *job-windows-2019-8c + <<: *job-windows-8c - image: dist-i686-msvc env: @@ -426,7 +418,7 @@ auto: --enable-profiler SCRIPT: python x.py dist bootstrap --include-default-paths DIST_REQUIRE_ALL_TOOLS: 1 - <<: *job-windows-2019-8c + <<: *job-windows-8c - image: dist-aarch64-msvc env: @@ -437,7 +429,7 @@ auto: --enable-profiler SCRIPT: python x.py dist bootstrap --include-default-paths DIST_REQUIRE_ALL_TOOLS: 1 - <<: *job-windows-2019-8c + <<: *job-windows-8c - image: dist-i686-mingw env: @@ -471,4 +463,4 @@ auto: env: RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-extended --enable-profiler SCRIPT: python x.py dist bootstrap --include-default-paths - <<: *job-windows-2019-8c + <<: *job-windows-8c diff --git a/src/ci/scripts/install-clang.sh b/src/ci/scripts/install-clang.sh index aa7ff813f5161..24b9904d65c25 100755 --- a/src/ci/scripts/install-clang.sh +++ b/src/ci/scripts/install-clang.sh @@ -10,18 +10,24 @@ IFS=$'\n\t' source "$(cd "$(dirname "$0")" && pwd)/../shared.sh" # Update both macOS's and Windows's tarballs when bumping the version here. -LLVM_VERSION="14.0.5" +# Try to keep this in sync with src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh +LLVM_VERSION="18.1.4" if isMacOS; then + # FIXME: This is the latest pre-built version of LLVM that's available for + # x86_64 MacOS. We may want to consider bulding our own LLVM binaries + # instead, or set `USE_XCODE_CLANG` like AArch64 does. + LLVM_VERSION="15.0.7" + # If the job selects a specific Xcode version, use that instead of # downloading our own version. if [[ ${USE_XCODE_CLANG-0} -eq 1 ]]; then bindir="$(xcode-select --print-path)/Toolchains/XcodeDefault.xctoolchain/usr/bin" else - file="${MIRRORS_BASE}/clang%2Bllvm-${LLVM_VERSION}-x86_64-apple-darwin.tar.xz" - retry curl -f "${file}" -o "clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin.tar.xz" - tar xJf "clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin.tar.xz" - bindir="$(pwd)/clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin/bin" + file="${MIRRORS_BASE}/clang%2Bllvm-${LLVM_VERSION}-x86_64-apple-darwin21.0.tar.xz" + retry curl -f "${file}" -o "clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin21.0.tar.xz" + tar xJf "clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin21.0.tar.xz" + bindir="$(pwd)/clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin21.0/bin" fi ciCommandSetEnv CC "${bindir}/clang"