From 22d187a3f68017297102793e3350f18c00c23429 Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Mon, 3 May 2021 11:23:00 -0700 Subject: [PATCH 1/2] CI: Extract LLVM win64 installer directly, using 7z Currently, we have LLVM tarballs for win64, generated by someone running the installer via wine and tarring up the result. 7z knows how to extract NSIS installers directly, and the result is identical to our tarball, except that it doesn't include `Uninstall.exe` (which we don't care about) and it includes the NSIS plugin directory (which we also don't care about). This simplifies the process of upgrading CI, and allows us to just mirror the upstream release .exe directly. This also improves our supply chain. --- src/ci/scripts/install-clang.sh | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/ci/scripts/install-clang.sh b/src/ci/scripts/install-clang.sh index 8070e90f155df..a69e49b3f0800 100755 --- a/src/ci/scripts/install-clang.sh +++ b/src/ci/scripts/install-clang.sh @@ -42,23 +42,14 @@ elif isWindows && [[ ${CUSTOM_MINGW-0} -ne 1 ]]; then # clang has an output mode compatible with MinGW that we need. If it does we # should switch to clang for MinGW as well! # - # Note that the LLVM installer is an NSIS installer - # - # Original downloaded here came from: - # - # https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/LLVM-10.0.0-win64.exe - # - # That installer was run through `wine ./installer.exe /S /NCRC` on Linux - # and then the resulting installation directory (found in - # `$HOME/.wine/drive_c/Program Files/LLVM`) was packaged up into a tarball. - # We've had issues otherwise that the installer will randomly hang, provide - # not a lot of useful information, pollute global state, etc. In general the - # tarball is just more confined and easier to deal with when working with - # various CI environments. + # The LLVM installer is an NSIS installer, which we can extract with 7z. We + # don't want to run the installer directly; extracting it is more reliable + # in CI environments. - mkdir -p citools + mkdir -p citools/clang-rust cd citools - curl -f "${MIRRORS_BASE}/LLVM-${LLVM_VERSION}-win64.tar.gz" | tar xzf - + curl -f "${MIRRORS_BASE}/LLVM-${LLVM_VERSION}-win64.exe" -o "LLVM-${LLVM_VERSION}-win64.exe" + 7z x -oclang-rust/ "LLVM-${LLVM_VERSION}-win64.exe" ciCommandSetEnv RUST_CONFIGURE_ARGS \ "${RUST_CONFIGURE_ARGS} --set llvm.clang-cl=$(pwd)/clang-rust/bin/clang-cl.exe" fi From b9ef51f0600beb60afadc444ff326f2696ce9ff6 Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Mon, 3 May 2021 22:54:50 -0700 Subject: [PATCH 2/2] Update clang to 12.0.0 on Windows and macOS Needed for https://github.com/rust-lang/rust/pull/84764 . Tarballs already uploaded to the CI mirror bucket. --- src/ci/scripts/install-clang.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ci/scripts/install-clang.sh b/src/ci/scripts/install-clang.sh index a69e49b3f0800..8a30acc2e460f 100755 --- a/src/ci/scripts/install-clang.sh +++ b/src/ci/scripts/install-clang.sh @@ -9,7 +9,7 @@ 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="10.0.0" +LLVM_VERSION="12.0.0" if isMacOS; then # If the job selects a specific Xcode version, use that instead of