Skip to content

Commit 60c00a1

Browse files
committed
feat: 添加 musl 交叉编译工具链
1 parent f9c12af commit 60c00a1

1 file changed

Lines changed: 28 additions & 1 deletion

File tree

Dockerfile

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ RUN apt-get update \
1515
&& apt-get install -y --no-install-recommends \
1616
build-essential \
1717
pkg-config \
18+
cmake \
1819
git \
1920
ca-certificates \
2021
binfmt-support \
@@ -55,8 +56,14 @@ RUN apt-get update \
5556
python3-pip \
5657
python3-tomli \
5758
python3-sphinx \
59+
clang \
60+
libclang-dev \
61+
llvm-dev \
5862
ninja-build \
5963
libslirp0 \
64+
&& libclang_so="$(find /usr/lib -path '*/libclang.so' | head -n1)" \
65+
&& test -n "$libclang_so" \
66+
&& ln -sfn "$(dirname "$libclang_so")" /usr/lib/libclang-runtime \
6067
&& rm -rf /var/lib/apt/lists/*
6168

6269
# Build and install QEMU 10.1.2 from source
@@ -80,6 +87,25 @@ RUN mkdir -p /tmp/qemu-build \
8087
RUN usermod -aG dialout runner
8188
RUN usermod -aG kvm runner
8289

90+
# Install prebuilt musl cross toolchains
91+
RUN set -eux; \
92+
mkdir -p /env; \
93+
cd /env; \
94+
wget https://musl.cc/aarch64-linux-musl-cross.tgz; \
95+
wget https://musl.cc/riscv64-linux-musl-cross.tgz; \
96+
wget https://musl.cc/x86_64-linux-musl-cross.tgz; \
97+
wget https://github.com/arceos-org/setup-musl/releases/download/prebuilt/loongarch64-linux-musl-cross.tgz; \
98+
tar zxf aarch64-linux-musl-cross.tgz -C /env; \
99+
tar zxf riscv64-linux-musl-cross.tgz -C /env; \
100+
tar zxf x86_64-linux-musl-cross.tgz -C /env; \
101+
tar zxf loongarch64-linux-musl-cross.tgz -C /env; \
102+
printf '%s\n' \
103+
'' \
104+
'# musl cross toolchains' \
105+
'export PATH=/env/x86_64-linux-musl-cross/bin:/env/aarch64-linux-musl-cross/bin:/env/riscv64-linux-musl-cross/bin:/env/loongarch64-linux-musl-cross/bin:$PATH' \
106+
>> /home/runner/.bashrc; \
107+
chown runner:runner /home/runner/.bashrc
108+
83109
# 多组织共享硬件锁:runner-wrapper 用于多 org 共享同一硬件时的并发控制(Job 级别锁)
84110
COPY runner-wrapper /home/runner/runner-wrapper
85111
RUN chmod +x /home/runner/runner-wrapper/runner-wrapper.sh \
@@ -90,7 +116,8 @@ RUN chmod +x /home/runner/runner-wrapper/runner-wrapper.sh \
90116
USER runner
91117

92118
# Rust development for runner user
93-
ENV PATH=/home/runner/.cargo/bin:$PATH \
119+
ENV PATH=/env/x86_64-linux-musl-cross/bin:/env/aarch64-linux-musl-cross/bin:/env/riscv64-linux-musl-cross/bin:/env/loongarch64-linux-musl-cross/bin:/home/runner/.cargo/bin:$PATH \
120+
LIBCLANG_PATH=/usr/lib/libclang-runtime \
94121
RUST_VERSION=nightly
95122

96123
RUN set -eux; \

0 commit comments

Comments
 (0)