@@ -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 \
8087RUN usermod -aG dialout runner
8188RUN 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 级别锁)
84110COPY runner-wrapper /home/runner/runner-wrapper
85111RUN chmod +x /home/runner/runner-wrapper/runner-wrapper.sh \
@@ -90,7 +116,8 @@ RUN chmod +x /home/runner/runner-wrapper/runner-wrapper.sh \
90116USER 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
96123RUN set -eux; \
0 commit comments