1
1
name : Install prerequisites
2
2
inputs :
3
- clang_version :
4
- required : true
5
3
llvm_version :
6
4
required : true
7
5
arch :
22
20
sudo dpkg --add-architecture i386
23
21
fi
24
22
sudo apt-get -q update
23
+
25
24
packages=( \
26
25
git-core cmake g++ \
27
26
libcurl4 libxml2-dev libzstd-dev \
@@ -30,43 +29,44 @@ runs:
30
29
if [[ $arch == x86_64 ]]; then
31
30
packages+=(g++-multilib libcurl4:i386)
32
31
fi
32
+ # extra prerequisites of apt.llvm.org install script
33
+ packages+=(lsb-release wget software-properties-common gnupg)
34
+
33
35
sudo -E apt-get -yq install ${packages[@]}
36
+
34
37
# Make sure to link libzstd statically
35
38
sudo rm /usr/lib/$arch-linux-gnu/libzstd.so
39
+
36
40
# Install a more recent CMake version in the AArch64 container (for mimalloc...)
37
41
if [[ $arch == aarch64 ]]; then
38
- curl -fL --retry 3 --max-time 300 -o cmake.tar.gz https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-$arch.tar.gz
42
+ curl -fL --retry 3 --max-time 300 -o cmake.tar.gz \
43
+ https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-$arch.tar.gz
39
44
mkdir cmake
40
45
tar -xf cmake.tar.gz --strip 1 -C cmake
41
46
rm cmake.tar.gz
42
47
sudo ln -sf $PWD/cmake/bin/cmake /usr/bin/cmake
43
48
fi
44
49
45
- - name : ' Linux: Download & extract clang' # into ../clang
50
+ - name : ' Linux: Install clang 19 from apt.llvm.org '
46
51
if : runner.os == 'Linux'
47
52
shell : bash
48
53
run : |
49
54
set -eux
50
55
cd ..
51
- arch='${{ inputs.arch }}'
52
- extraSuffix=''
53
- if [[ $arch == x86_64 ]]; then
54
- extraSuffix='-ubuntu-18.04'
55
- fi
56
- curl -fL --retry 3 --max-time 300 -o clang.tar.xz \
57
- https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ inputs.clang_version }}/clang+llvm-${{ inputs.clang_version }}-$arch-linux-gnu$extraSuffix.tar.xz
58
- mkdir clang
59
- tar -xf clang.tar.xz --strip 1 -C clang
60
- rm clang.tar.xz
61
- clang/bin/clang --version
62
- - name : ' Windows: Install clang'
56
+ curl -fL --retry 3 --max-time 30 -O https://apt.llvm.org/llvm.sh
57
+ sudo bash llvm.sh 19
58
+ for tool in clang clang++ ld.lld; do
59
+ sudo ln -sf $tool-19 /usr/bin/$tool
60
+ $tool --version
61
+ done
62
+ - name : ' Windows: Install clang v19.1.3 from GitHub'
63
63
if : runner.os == 'Windows'
64
64
shell : bash
65
65
run : |
66
66
set -eux
67
67
cd ..
68
68
curl -fL --retry 3 --max-time 300 -o clang.exe \
69
- https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ inputs.clang_version }} /LLVM-${{ inputs.clang_version }} -win64.exe
69
+ https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.3 /LLVM-19.1.3 -win64.exe
70
70
./clang.exe //S # double-slash for bash
71
71
rm clang.exe
72
72
# C:\Program Files\LLVM\bin should already be in PATH
@@ -117,28 +117,16 @@ runs:
117
117
118
118
llvm/bin/llvm-config --version
119
119
120
- - name : ' Linux: Make lld the default linker'
120
+ - name : ' Linux: Make lld (from apt.llvm.org) the default linker'
121
121
if : runner.os == 'Linux'
122
122
shell : bash
123
123
run : |
124
124
set -eux
125
- sudo ln -sf "$(dirname "$PWD")/llvm/bin/ ld.lld" /usr/bin/ld
125
+ sudo ln -sf ld.lld /usr/bin/ld
126
126
ld --version
127
127
128
- - name : Install ninja
129
- if : inputs.arch != 'aarch64'
130
- uses : symmetryinvestments/gha-setup-ninja@v2
131
- - name : Install ninja (Linux AArch64)
132
- if : inputs.arch == 'aarch64'
133
- shell : bash
134
- run : |
135
- set -eux
136
- cd ..
137
- curl -fL --retry 3 --max-time 60 -O https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux-aarch64.zip
138
- mkdir ninja
139
- unzip ninja-linux-aarch64.zip -d ninja
140
- rm ninja-linux-aarch64.zip
141
- sudo ln -sf $PWD/ninja/ninja /usr/bin/ninja
128
+ - name : Install ninja v1.12.1
129
+ uses : Ahajha/gha-setup-ninja@69595b0cf872acdad8ce599142fbdc88724b9a2b
142
130
143
131
- name : Install D host compiler
144
132
uses : dlang-community/setup-dlang@v1
0 commit comments