/ docker / riscv-toolchain.Dockerfile
riscv-toolchain.Dockerfile
 1  FROM ubuntu:24.04
 2  
 3  RUN apt-get update && \
 4      DEBIAN_FRONTEND=noninteractive \
 5      apt-get install -y --no-install-recommends \
 6      autoconf automake autotools-dev curl python3 python3-venv python3-pip bc lsb-release \
 7      libmpc-dev libmpfr-dev libgmp-dev gawk build-essential \
 8      bison flex texinfo gperf libtool patchutils zlib1g-dev device-tree-compiler \
 9      libexpat-dev ninja-build git ca-certificates python-is-python3 \
10      libssl-dev libbz2-dev libreadline-dev libsqlite3-dev libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev && \
11      rm -rf /var/lib/apt/lists/*
12  
13  RUN git clone --shallow-since=2024.11.20 https://github.com/riscv-collab/riscv-gnu-toolchain && \
14      cd riscv-gnu-toolchain && \
15      git checkout 2024.11.22 && \
16      ./configure --with-multilib-generator="rv32i-ilp32--a*zifence*zicsr;rv32im-ilp32--a*zifence*zicsr;rv32ic-ilp32--a*zifence*zicsr;rv32imc-ilp32--a*zifence*zicsr;rv32imfc-ilp32f--a*zifence;rv32imc_zba_zbb_zbc_zbs_zicond-ilp32--a*zifence*zicsr" && \
17      make -j$(nproc) && \
18      cd / && rm -rf riscv-gnu-toolchain
19  
20  RUN git clone --shallow-since=2024.10.01 https://github.com/riscv-software-src/riscv-isa-sim.git spike && \
21      cd spike && \
22      git checkout 7812eabb441eaf2067d07636a382eca622e48814 && \
23      mkdir build/ install/  && \
24      cd build/ && \
25      ../configure --prefix=/spike/install/ && \
26      make -j$(nproc) && \
27      make install && \
28      cd .. && \
29      rm -rf build/
30  
31  RUN git clone --depth=1 https://github.com/pyenv/pyenv.git .pyenv && \
32      export PATH=/.pyenv/bin:$PATH && \
33      export PYENV_ROOT=/root/.pyenv && \
34      eval "$(pyenv init --path)" && \
35      pyenv install 3.6.15 && \
36      pyenv global 3.6.15 && \
37      python -m venv venv3.6 && \
38      . venv3.6/bin/activate && \
39      python -m pip install --upgrade pip && \
40      python -m pip install riscof && \
41      pyenv global system