@@ -35,36 +35,49 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -qq -y install \
3535 ninja-build && \
3636 rm -rf /var/lib/apt/lists/*
3737
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; \
4649 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
6881
6982# Get Rust
7083RUN curl -sSf -L https://sh.rustup.rs | bash -s -- -y
0 commit comments