Skip to content

Commit 6cf09e3

Browse files
committed
Prefer binay packages over always building form source
1 parent 007f817 commit 6cf09e3

File tree

4 files changed

+86
-60
lines changed

4 files changed

+86
-60
lines changed

container/rockylinux9-cuda12/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ RUN dnf -y install epel-release && \
3535
make && \
3636
dnf clean all
3737

38-
# Download and build LLVM 7.1.0 for all architectures (consistency)
38+
# Build LLVM 7.1.0 from source (no packages available for Rocky Linux 9)
3939
RUN curl -sSf -L -O https://github.com/llvm/llvm-project/releases/download/llvmorg-7.1.0/llvm-7.1.0.src.tar.xz && \
4040
tar -xf llvm-7.1.0.src.tar.xz && \
4141
cd llvm-7.1.0.src && \

container/ubuntu22-cuda11/Dockerfile

Lines changed: 42 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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
7083
RUN curl -sSf -L https://sh.rustup.rs | bash -s -- -y

container/ubuntu22-cuda12/Dockerfile

Lines changed: 42 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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
7083
RUN curl -sSf -L https://sh.rustup.rs | bash -s -- -y

container/ubuntu24-cuda12/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ 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)
38+
# Build LLVM 7.1.0 from source (no compatible packages for Ubuntu 24.04)
3939
RUN curl -sSf -L -O https://github.com/llvm/llvm-project/releases/download/llvmorg-7.1.0/llvm-7.1.0.src.tar.xz && \
4040
tar -xf llvm-7.1.0.src.tar.xz && \
4141
cd llvm-7.1.0.src && \

0 commit comments

Comments
 (0)