@@ -35,36 +35,49 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -qq -y install \
35
35
ninja-build && \
36
36
rm -rf /var/lib/apt/lists/*
37
37
38
- # Download and build LLVM 7.1.0 for all architectures (consistency)
39
- RUN curl -sSf -L -O https://github.com/llvm/llvm-project/releases/download/llvmorg-7.1.0/llvm-7.1.0.src.tar.xz && \
40
- tar -xf llvm-7.1.0.src.tar.xz && \
41
- cd llvm-7.1.0.src && \
42
- mkdir build && cd build && \
43
- ARCH=$(dpkg --print-architecture) && \
44
- if [ "$ARCH" = "amd64" ]; then \
45
- TARGETS="X86;NVPTX" ; \
38
+ # Download and install LLVM 7 - use pre-built packages where available
39
+ RUN ARCH=$(dpkg --print-architecture) && \
40
+ # Try to use pre-built packages from Ubuntu 20.04 (they should work on 22.04)
41
+ curl -sSf -L -O http://mirrors.kernel.org/ubuntu/pool/universe/l/llvm-toolchain-7/llvm-7_7.0.1-12_${ARCH}.deb && \
42
+ curl -sSf -L -O http://mirrors.kernel.org/ubuntu/pool/universe/l/llvm-toolchain-7/llvm-7-dev_7.0.1-12_${ARCH}.deb && \
43
+ curl -sSf -L -O http://mirrors.kernel.org/ubuntu/pool/universe/l/llvm-toolchain-7/libllvm7_7.0.1-12_${ARCH}.deb && \
44
+ curl -sSf -L -O http://mirrors.kernel.org/ubuntu/pool/universe/l/llvm-toolchain-7/llvm-7-runtime_7.0.1-12_${ARCH}.deb && \
45
+ # Try to install, if it fails, build from source
46
+ if dpkg -i ./*.deb || apt-get -f install -y; then \
47
+ ln -s /usr/bin/llvm-config-7 /usr/bin/llvm-config && \
48
+ rm -rf ./*.deb; \
46
49
else \
47
- TARGETS="AArch64;NVPTX" ; \
48
- fi && \
49
- cmake -G Ninja \
50
- -DCMAKE_BUILD_TYPE=Release \
51
- -DLLVM_TARGETS_TO_BUILD="$TARGETS" \
52
- -DLLVM_BUILD_LLVM_DYLIB=ON \
53
- -DLLVM_LINK_LLVM_DYLIB=ON \
54
- -DLLVM_ENABLE_ASSERTIONS=OFF \
55
- -DLLVM_ENABLE_BINDINGS=OFF \
56
- -DLLVM_INCLUDE_EXAMPLES=OFF \
57
- -DLLVM_INCLUDE_TESTS=OFF \
58
- -DLLVM_INCLUDE_BENCHMARKS=OFF \
59
- -DLLVM_ENABLE_ZLIB=ON \
60
- -DLLVM_ENABLE_TERMINFO=ON \
61
- -DCMAKE_INSTALL_PREFIX=/usr \
62
- .. && \
63
- ninja -j$(nproc) && \
64
- ninja install && \
65
- cd ../.. && \
66
- rm -rf llvm-7.1.0.src* && \
67
- ln -s /usr/bin/llvm-config /usr/bin/llvm-config-7
50
+ # If package installation fails, build from source
51
+ rm -rf ./*.deb && \
52
+ curl -sSf -L -O https://github.com/llvm/llvm-project/releases/download/llvmorg-7.1.0/llvm-7.1.0.src.tar.xz && \
53
+ tar -xf llvm-7.1.0.src.tar.xz && \
54
+ cd llvm-7.1.0.src && \
55
+ mkdir build && cd build && \
56
+ if [ "$ARCH" = "amd64" ]; then \
57
+ TARGETS="X86;NVPTX" ; \
58
+ else \
59
+ TARGETS="AArch64;NVPTX" ; \
60
+ fi && \
61
+ cmake -G Ninja \
62
+ -DCMAKE_BUILD_TYPE=Release \
63
+ -DLLVM_TARGETS_TO_BUILD="$TARGETS" \
64
+ -DLLVM_BUILD_LLVM_DYLIB=ON \
65
+ -DLLVM_LINK_LLVM_DYLIB=ON \
66
+ -DLLVM_ENABLE_ASSERTIONS=OFF \
67
+ -DLLVM_ENABLE_BINDINGS=OFF \
68
+ -DLLVM_INCLUDE_EXAMPLES=OFF \
69
+ -DLLVM_INCLUDE_TESTS=OFF \
70
+ -DLLVM_INCLUDE_BENCHMARKS=OFF \
71
+ -DLLVM_ENABLE_ZLIB=ON \
72
+ -DLLVM_ENABLE_TERMINFO=ON \
73
+ -DCMAKE_INSTALL_PREFIX=/usr \
74
+ .. && \
75
+ ninja -j$(nproc) && \
76
+ ninja install && \
77
+ cd ../.. && \
78
+ rm -rf llvm-7.1.0.src* && \
79
+ ln -s /usr/bin/llvm-config /usr/bin/llvm-config-7; \
80
+ fi
68
81
69
82
# Get Rust
70
83
RUN curl -sSf -L https://sh.rustup.rs | bash -s -- -y
0 commit comments