From bf37ac1c332aec4148a96c6f5ae81ba2d39165bb Mon Sep 17 00:00:00 2001 From: PuqiAR Date: Sat, 3 Jan 2026 21:16:07 +0800 Subject: [PATCH] =?UTF-8?q?[CI]=20=E8=AE=A9ds=E5=B0=9D=E8=AF=95=E5=AE=83?= =?UTF-8?q?=E7=9A=84=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .ci/Dockerfile | 14 ++++++++------ xmake.lua | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.ci/Dockerfile b/.ci/Dockerfile index 6d8a663..50b1a21 100644 --- a/.ci/Dockerfile +++ b/.ci/Dockerfile @@ -1,7 +1,6 @@ # 第一阶段:构建基础环境 FROM ubuntu:24.04 AS builder-base -# 1. 设置APT镜像源加速 RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \ sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list @@ -23,27 +22,30 @@ RUN wget -O /usr/local/bin/xmake \ # 第二阶段:创建最终镜像 FROM ubuntu:24.04 -# 【关键修复】在最终镜像中安装CI必需的运行时工具 +# 安装CI运行时工具 RUN apt-get update && \ apt-get install -y --no-install-recommends \ git tar curl ca-certificates \ + # 关键:安装clang运行时库,解决 libclang-cpp.so.19.1 依赖 + libclang-rt-19-dev \ && rm -rf /var/lib/apt/lists/* -# 1. 复制编译器、xmake和库文件 +# 复制编译器、xmake和库文件 COPY --from=builder-base /usr/local/bin/xmake /usr/local/bin/xmake COPY --from=builder-base /usr/bin/clang++ /usr/bin/clang++ COPY --from=builder-base /usr/bin/clang /usr/bin/clang COPY --from=builder-base /usr/bin/ld.lld /usr/bin/ld.lld COPY --from=builder-base /usr/x86_64-w64-mingw32 /usr/x86_64-w64-mingw32 -COPY --from=builder-base /usr/lib/llvm-19 /usr/lib/llvm-19 +# 关键:复制完整的LLVM库目录,而不仅仅是/usr/lib/llvm-19 +COPY --from=builder-base /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu -# 2. 创建非root用户 +# 设置非root用户 RUN useradd -m -s /bin/bash builder USER builder WORKDIR /home/builder -# 3. 验证环境 +# 验证环境 RUN xmake --version | head -1 && \ clang++ --version | head -1 && \ git --version && \ diff --git a/xmake.lua b/xmake.lua index d910984..e08eeba 100644 --- a/xmake.lua +++ b/xmake.lua @@ -10,8 +10,8 @@ target("Fig") if is_plat("linux") then -- Linux: clang + libc++ set_toolchains("clang") - add_cxxflags("-stdlib=libc++") - add_ldflags("-stdlib=libc++") + add_cxxflags("-stdlib=libc++", {force = true}) + add_ldflags("-stdlib=libc++", {force = true}) elseif is_plat("mingw") then -- 1. CI cross (Linux -> Windows) -- 2. local dev (Windows + llvm-mingw)