Skip to content

Commit f884a25

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

1 file changed

Lines changed: 29 additions & 1 deletion

File tree

Dockerfile

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ RUN apt-get update \
1515
&& apt-get install -y --no-install-recommends \
1616
build-essential \
1717
pkg-config \
18+
cmake \
1819
git \
20+
tftpd-hpa \
1921
ca-certificates \
2022
binfmt-support \
2123
dosfstools \
@@ -55,8 +57,14 @@ RUN apt-get update \
5557
python3-pip \
5658
python3-tomli \
5759
python3-sphinx \
60+
clang \
61+
libclang-dev \
62+
llvm-dev \
5863
ninja-build \
5964
libslirp0 \
65+
&& libclang_so="$(find /usr/lib -path '*/libclang.so' | head -n1)" \
66+
&& test -n "$libclang_so" \
67+
&& ln -sfn "$(dirname "$libclang_so")" /usr/lib/libclang-runtime \
6068
&& rm -rf /var/lib/apt/lists/*
6169

6270
# Build and install QEMU 10.1.2 from source
@@ -80,6 +88,25 @@ RUN mkdir -p /tmp/qemu-build \
8088
RUN usermod -aG dialout runner
8189
RUN usermod -aG kvm runner
8290

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

92119
# Rust development for runner user
93-
ENV PATH=/home/runner/.cargo/bin:$PATH \
120+
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 \
121+
LIBCLANG_PATH=/usr/lib/libclang-runtime \
94122
RUST_VERSION=nightly
95123

96124
RUN set -eux; \

0 commit comments

Comments
 (0)