@@ -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 \
8088RUN usermod -aG dialout runner
8189RUN 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 级别锁)
84111COPY runner-wrapper /home/runner/runner-wrapper
85112RUN chmod +x /home/runner/runner-wrapper/runner-wrapper.sh \
@@ -90,7 +117,8 @@ RUN chmod +x /home/runner/runner-wrapper/runner-wrapper.sh \
90117USER 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
96124RUN set -eux; \
0 commit comments