Merge branch 'main' into main
This commit is contained in:
commit
88a4a0ad11
22 changed files with 98 additions and 61 deletions
26
Dockerfile
26
Dockerfile
|
@ -1,6 +1,6 @@
|
|||
# syntax=docker/dockerfile:1
|
||||
|
||||
# Stage 1 Set up QEMU RISC-V
|
||||
# Stage 1 Build QEMU
|
||||
# - https://www.qemu.org/download/
|
||||
# - https://wiki.qemu.org/Hosts/Linux#Building_QEMU_for_Linux
|
||||
# - https://wiki.qemu.org/Documentation/Platforms/RISCV
|
||||
|
@ -20,30 +20,34 @@ RUN wget https://download.qemu.org/qemu-${QEMU_VERSION}.tar.xz && \
|
|||
make -j$(nproc) && \
|
||||
make install
|
||||
|
||||
# Stage 2 Lab Environment
|
||||
# Stage 2 Set Lab Environment
|
||||
FROM ubuntu:20.04 as build
|
||||
|
||||
WORKDIR /tmp
|
||||
|
||||
# 0. Install general tools
|
||||
# 2.0. Install general tools
|
||||
RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y jq curl git python3 wget build-essential \
|
||||
# qemu dependency
|
||||
libglib2.0-0 libfdt1 libpixman-1-0 zlib1g
|
||||
libglib2.0-0 libfdt1 libpixman-1-0 zlib1g \
|
||||
# gdb
|
||||
gdb-multiarch
|
||||
|
||||
# 1. Copy qemu
|
||||
# 2.1. Copy qemu
|
||||
COPY --from=build_qemu /usr/local/bin/* /usr/local/bin
|
||||
|
||||
# 2. Install Rust
|
||||
# 2.2. Install Rust
|
||||
# - https://www.rust-lang.org/tools/install
|
||||
ENV RUSTUP_HOME=/usr/local/rustup \
|
||||
CARGO_HOME=/usr/local/cargo \
|
||||
PATH=/usr/local/cargo/bin:$PATH
|
||||
PATH=/usr/local/cargo/bin:$PATH \
|
||||
RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static \
|
||||
RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
|
||||
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
|
||||
sh -s -- -y --no-modify-path --profile minimal --default-toolchain nightly
|
||||
|
||||
# 3. Build env for labs
|
||||
# 2.3. Build env for labs
|
||||
# See os/Makefile `env:` for example.
|
||||
# This avoids having to wait for these steps each time using a new container.
|
||||
COPY rust-toolchain.toml rust-toolchain.toml
|
||||
|
@ -54,10 +58,14 @@ RUN rustup target add riscv64gc-unknown-none-elf && \
|
|||
rustup install $RUST_VERSION && \
|
||||
rustup component add --toolchain $RUST_VERSION $Components
|
||||
|
||||
# 2.4. Set GDB
|
||||
RUN ln -s /usr/bin/gdb-multiarch /usr/bin/riscv64-unknown-elf-gdb
|
||||
|
||||
# Stage 3 Sanity checking
|
||||
FROM build as test
|
||||
RUN qemu-system-riscv64 --version && \
|
||||
qemu-riscv64 --version && \
|
||||
rustup --version && \
|
||||
cargo --version && \
|
||||
rustc --version
|
||||
rustc --version && \
|
||||
riscv64-unknown-elf-gdb --version
|
Loading…
Add table
Add a link
Reference in a new issue