FROM docker.io/debian:bookworm AS toolchain RUN apt update && apt upgrade -y RUN apt install -y \ build-essential \ git autoconf \ automake \ autotools-dev \ libncurses5-dev \ gperf \ bison \ flex \ texinfo \ help2man \ gawk \ wget \ subversion \ bzip2 \ libtool-bin \ unzip RUN mkdir -p /ctng WORKDIR /ctng # crosstool-ng doesn't want to run as root RUN useradd -ms /bin/bash builder RUN chown -R builder:builder /ctng USER builder RUN git clone https://github.com/crosstool-ng/crosstool-ng WORKDIR /ctng/crosstool-ng COPY no-ulimit.patch . RUN git apply no-ulimit.patch RUN ./bootstrap && \ ./configure --enable-local && \ make -j$(nproc) RUN ./ct-ng riscv32-unknown-elf RUN ./ct-ng build FROM docker.io/debian:bookworm AS qemu RUN apt update && apt upgrade -y RUN apt install -y \ build-essential \ git \ python3 python3-pip python3-venv \ python3-sphinx \ libglib2.0-dev \ libfdt-dev \ libpixman-1-dev \ zlib1g-dev \ ninja-build \ libnfs-dev \ libiscsi-dev RUN mkdir -p /qemu WORKDIR /qemu RUN git clone https://git.imp.fu-berlin.de/projekt-telematik-ss23-qemu/risc-v-qemu.git && \ cd risc-v-qemu && \ git checkout esp32_c3_bringup && \ mkdir -p build && cd build && \ ../configure --prefix=/usr/local/ --target-list=riscv32-softmmu && \ make -j$(nproc) && \ make install FROM docker.io/debian:bookworm AS final # Install qemu's runtime deps RUN apt update && apt upgrade -y RUN apt install -y libpixman-1-0 libfdt1 libglib2.0-0 libiscsi7 libnfs13 # Install additional developer tools RUN apt install -y gdb-multiarch make COPY --from=qemu /usr/local /usr/local COPY --from=toolchain /home/builder/x-tools/riscv32-unknown-elf/* /usr/local/bin/