Skip to content

Commit 93a948a

Browse files
feat: add sanitizer runtimes to toolchain images
1 parent 7c97f90 commit 93a948a

2 files changed

Lines changed: 50 additions & 5 deletions

File tree

Dockerfile.toolchain

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77
# runtime-base
88
# runtime-debug-base
99
# builder-gcc
10+
# builder-clang
1011
# dev-gcc
1112
# dev-clang
1213
#
1314
# Suggested image tags:
1415
# cpp-runtime-base:bookworm-v1
1516
# cpp-runtime-debug-base:bookworm-v1
1617
# cpp-builder-gcc:bookworm-v1
18+
# cpp-builder-clang:bookworm-v1
1719
# cpp-dev-gcc:bookworm-v1
1820
# cpp-dev-clang:bookworm-v1
1921
# ============================================================
@@ -22,6 +24,8 @@ ARG DEBIAN_VERSION=bookworm
2224
ARG UV_VERSION=0.11.10
2325
ARG CONAN_VERSION=2.28.1
2426
ARG PYTHON_VERSION=3.12.0
27+
ARG GCC_VERSION=12
28+
ARG LLVM_VERSION=14
2529
ARG USERNAME=dev
2630
ARG UID=1000
2731
ARG GID=1000
@@ -108,6 +112,7 @@ FROM os-base AS builder-base
108112

109113
ARG CONAN_VERSION
110114
ARG PYTHON_VERSION
115+
ARG GCC_VERSION
111116

112117
ENV PIP_DISABLE_PIP_VERSION_CHECK=1 \
113118
CONAN_HOME=/root/.conan2 \
@@ -120,6 +125,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
120125
build-essential \
121126
gcc \
122127
g++ \
128+
libgcc-${GCC_VERSION}-dev \
123129
cmake \
124130
ninja-build \
125131
make \
@@ -169,7 +175,40 @@ CMD ["/bin/bash"]
169175

170176

171177
# ============================================================
172-
# 6. dev-base
178+
# 6. builder-clang
179+
# CI/CD Clang 编译镜像
180+
# ============================================================
181+
FROM builder-base AS builder-clang
182+
183+
ARG LLVM_VERSION
184+
185+
USER root
186+
187+
RUN apt-get update && apt-get install -y --no-install-recommends \
188+
clang \
189+
lld \
190+
libclang-rt-${LLVM_VERSION}-dev \
191+
&& rm -rf /var/lib/apt/lists/*
192+
193+
ENV CC=clang \
194+
CXX=clang++
195+
196+
RUN conan profile detect --force \
197+
&& PROFILE="$(conan profile path default)" \
198+
&& if grep -q '^compiler.cppstd=' "$PROFILE"; then \
199+
sed -i 's/^compiler.cppstd=.*/compiler.cppstd=gnu20/' "$PROFILE"; \
200+
else \
201+
sed -i '/^\[settings\]/a compiler.cppstd=gnu20' "$PROFILE"; \
202+
fi \
203+
&& conan profile show -pr default
204+
205+
WORKDIR /workspace
206+
207+
CMD ["/bin/bash"]
208+
209+
210+
# ============================================================
211+
# 7. dev-base
173212
# 开发镜像公共基础层
174213
# ============================================================
175214
FROM builder-base AS dev-base
@@ -248,7 +287,7 @@ CMD ["/usr/sbin/sshd", "-D", "-e"]
248287

249288

250289
# ============================================================
251-
# 7. dev-gcc
290+
# 8. dev-gcc
252291
# GCC 开发镜像
253292
# ============================================================
254293
FROM dev-base AS dev-gcc
@@ -282,11 +321,13 @@ CMD ["/usr/sbin/sshd", "-D", "-e"]
282321

283322

284323
# ============================================================
285-
# 8. dev-clang
324+
# 9. dev-clang
286325
# Clang / LLVM 开发镜像
287326
# ============================================================
288327
FROM dev-base AS dev-clang
289328

329+
ARG LLVM_VERSION
330+
290331
USER root
291332

292333
RUN apt-get update && apt-get install -y --no-install-recommends \
@@ -296,6 +337,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
296337
clang-tidy \
297338
lld \
298339
lldb \
340+
libclang-rt-${LLVM_VERSION}-dev \
299341
gdb \
300342
&& rm -rf /var/lib/apt/lists/*
301343

@@ -318,4 +360,4 @@ RUN conan profile detect --force \
318360

319361
USER root
320362
WORKDIR /workspace
321-
CMD ["/usr/sbin/sshd", "-D", "-e"]
363+
CMD ["/usr/sbin/sshd", "-D", "-e"]

build-toolchain-images.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ docker build -f "${DOCKERFILE}" --target runtime-debug-base \
1313
docker build -f "${DOCKERFILE}" --target builder-gcc \
1414
-t "cpp-builder-gcc:${VERSION}" .
1515

16+
docker build -f "${DOCKERFILE}" --target builder-clang \
17+
-t "cpp-builder-clang:${VERSION}" .
18+
1619
docker build -f "${DOCKERFILE}" --target dev-gcc \
1720
-t "cpp-dev-gcc:${VERSION}" .
1821

1922
docker build -f "${DOCKERFILE}" --target dev-clang \
20-
-t "cpp-dev-clang:${VERSION}" .
23+
-t "cpp-dev-clang:${VERSION}" .

0 commit comments

Comments
 (0)