|
1 | 1 | FROM ubuntu:24.04 |
2 | 2 |
|
3 | | -SHELL ["/bin/bash", "-o", "pipefail", "-c"] |
4 | | - |
5 | 3 | ENV DEBIAN_FRONTEND=noninteractive |
| 4 | +ARG LLVM_VER=22.1.0 |
| 5 | +ARG TARGETARCH |
6 | 6 |
|
7 | 7 | RUN set -e \ |
8 | 8 | && apt-get update \ |
9 | 9 | && apt-get install -y --no-install-recommends \ |
10 | 10 | build-essential \ |
11 | 11 | git \ |
12 | | - ca-certificates curl wget gnupg lsb-release software-properties-common \ |
| 12 | + ca-certificates curl gnupg lsb-release software-properties-common \ |
13 | 13 | python3 python3-pip \ |
14 | 14 | ninja-build cmake make \ |
15 | 15 | ccache \ |
16 | 16 | valgrind \ |
17 | 17 | libmpich-dev mpich \ |
18 | 18 | openmpi-bin openmpi-common libopenmpi-dev \ |
| 19 | + libomp-dev \ |
19 | 20 | gcc-14 g++-14 \ |
20 | 21 | gcovr zip \ |
21 | | - && wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor > /usr/share/keyrings/llvm-archive-keyring.gpg \ |
22 | | - && echo "deb [signed-by=/usr/share/keyrings/llvm-archive-keyring.gpg] http://apt.llvm.org/noble/ llvm-toolchain-noble-22 main" \ |
23 | | - > /etc/apt/sources.list.d/llvm.list \ |
24 | | - && apt-get update \ |
25 | | - && apt-get install -y --no-install-recommends \ |
26 | | - clang-22 clang-tools-22 clang-tidy-22 clang-format-22 \ |
27 | | - lldb-22 lld-22 llvm-22 llvm-22-dev \ |
28 | | - libomp5-22 libomp-22-dev \ |
| 22 | + xz-utils \ |
| 23 | + && case "${TARGETARCH}" in \ |
| 24 | + amd64) llvm_pkg_arch="X64" ;; \ |
| 25 | + arm64) llvm_pkg_arch="ARM64" ;; \ |
| 26 | + *) echo "Unsupported TARGETARCH: ${TARGETARCH}" >&2; exit 1 ;; \ |
| 27 | + esac \ |
| 28 | + && llvm_major="${LLVM_VER%%.*}" \ |
| 29 | + && llvm_pkg="LLVM-${LLVM_VER}-Linux-${llvm_pkg_arch}" \ |
| 30 | + && curl -fsSL --retry 5 --retry-delay 2 --retry-all-errors \ |
| 31 | + -o "${llvm_pkg}.tar.xz" \ |
| 32 | + "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VER}/${llvm_pkg}.tar.xz" \ |
| 33 | + && tar -xf "${llvm_pkg}.tar.xz" -C /opt \ |
| 34 | + && ln -s "/opt/${llvm_pkg}" "/opt/llvm-${llvm_major}" \ |
| 35 | + && ln -s "/opt/llvm-${llvm_major}" /opt/llvm \ |
| 36 | + && ln -s /opt/llvm/bin/clang++ /opt/llvm/bin/clang++-"${llvm_major}" \ |
| 37 | + && ln -s /opt/llvm/bin/clang-tidy /opt/llvm/bin/clang-tidy-"${llvm_major}" \ |
| 38 | + && ln -s /opt/llvm/bin/clang-format /opt/llvm/bin/clang-format-"${llvm_major}" \ |
| 39 | + && echo "/opt/llvm/lib" > /etc/ld.so.conf.d/llvm.conf \ |
| 40 | + && ldconfig \ |
| 41 | + && rm "${llvm_pkg}.tar.xz" \ |
29 | 42 | && apt-get clean \ |
30 | 43 | && rm -rf /var/lib/apt/lists/* |
31 | 44 |
|
32 | 45 | ENV CC=gcc-14 CXX=g++-14 |
| 46 | +ENV PATH="/opt/llvm/bin:${PATH}" |
33 | 47 |
|
34 | 48 | CMD ["bash"] |
0 commit comments