Skip to content

Commit 22d187a

Browse files
committed
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.
1 parent 716394d commit 22d187a

File tree

1 file changed

+6
-15
lines changed

1 file changed

+6
-15
lines changed

src/ci/scripts/install-clang.sh

+6-15
Original file line numberDiff line numberDiff line change
@@ -42,23 +42,14 @@ elif isWindows && [[ ${CUSTOM_MINGW-0} -ne 1 ]]; then
4242
# clang has an output mode compatible with MinGW that we need. If it does we
4343
# should switch to clang for MinGW as well!
4444
#
45-
# Note that the LLVM installer is an NSIS installer
46-
#
47-
# Original downloaded here came from:
48-
#
49-
# https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/LLVM-10.0.0-win64.exe
50-
#
51-
# That installer was run through `wine ./installer.exe /S /NCRC` on Linux
52-
# and then the resulting installation directory (found in
53-
# `$HOME/.wine/drive_c/Program Files/LLVM`) was packaged up into a tarball.
54-
# We've had issues otherwise that the installer will randomly hang, provide
55-
# not a lot of useful information, pollute global state, etc. In general the
56-
# tarball is just more confined and easier to deal with when working with
57-
# various CI environments.
45+
# The LLVM installer is an NSIS installer, which we can extract with 7z. We
46+
# don't want to run the installer directly; extracting it is more reliable
47+
# in CI environments.
5848

59-
mkdir -p citools
49+
mkdir -p citools/clang-rust
6050
cd citools
61-
curl -f "${MIRRORS_BASE}/LLVM-${LLVM_VERSION}-win64.tar.gz" | tar xzf -
51+
curl -f "${MIRRORS_BASE}/LLVM-${LLVM_VERSION}-win64.exe" -o "LLVM-${LLVM_VERSION}-win64.exe"
52+
7z x -oclang-rust/ "LLVM-${LLVM_VERSION}-win64.exe"
6253
ciCommandSetEnv RUST_CONFIGURE_ARGS \
6354
"${RUST_CONFIGURE_ARGS} --set llvm.clang-cl=$(pwd)/clang-rust/bin/clang-cl.exe"
6455
fi

0 commit comments

Comments
 (0)