RISC-V 対応の自作エミュレータを作成している。テストパタンセットであるriscv-toolsがかなりPassできるようになってきた。
満足したところで公開したいので、一応リグレッションテストをいつでも実行できるような状態にしておきたい。
というわけで、RISC-VのツールセットをインストールしたDockerコンテナの作成方法について調査を始めよう。 というか、Dockerコンテナについてあまり詳しくないから、勉強しなければ...
RISC-Vのツール群が入ったDockerコンテナ
手っ取り早くDockerコンテナを用意したければ、以下のコンテナがGitHubに用意されていた。
以下で起動することができた。
sudo docker pull sbates130272/riscv
sudo docker run -it sbates130272/riscv
これでもいいのだけれど、自分で管理できるRISC-V環境を維持しておきたいし、自作エミュレータをリグレッションする環境を構築したいので、自分でDockerコンテナを管理しておきたい。
というわけで自分でDockerfileを書き始めた。
- Dockerfile
# Pull base image (use Wily for now). FROM ubuntu:17.10 # Set the maintainer MAINTAINER msyksphinz # Install some base tools that we will need to get the risc-v # toolchain working. RUN apt update && apt install -y \ autoconf \ automake \ ... libtool \ ncurses-dev \ patchutils \ squashfs-tools \ texinfo
さらにビルドを行うために、riscv-tools
をcloneしてビルドする環境を作っておく。
# Make a working folder and set the necessary environment variables. ENV RISCV /opt/riscv ENV NUMJOBS 1 RUN mkdir -p $RISCV # Add the GNU utils bin folder to the path. ENV PATH $RISCV/bin:$PATH # Obtain the RISCV-tools repo which consists of a number of submodules # so make sure we get those too. WORKDIR $RISCV RUN git clone https://github.com/riscv/riscv-tools.git && \ cd riscv-tools && git submodule update --init --recursive
ここまでで、RISC-Vのツールチェインが動作するDockerコンテナを作ることができた。
docker build -t msyksphinz/riscv-docker sudo docker run -it msyksphinz/riscv-docker # Login
2018/04/20追記。自作RISC-Vエミュレータのビルドも行ってみた。以下でDocker上でエミュレータをclone, コンパイルすることができる。 あとはリグレッションだな。
RUN git clone https://msyksphinz:PASSWORD@bitbucket.org/msyksphinz/riscv_swimmer.git && \ cd riscv_swimmer/ && git submodule update --init --recursive RUN cd riscv_swimmer/vendor/gflags && cmake . && make RUN cd riscv_swimmer/vendor/softfloat/build && cmake . && make RUN cd riscv_swimmer/build_riscvforest/ && cmake . && make