diff --git a/.circleci/images/README.md b/.circleci/images/README.md deleted file mode 100644 index a2172ba2..00000000 --- a/.circleci/images/README.md +++ /dev/null @@ -1,18 +0,0 @@ -General -------- -This DockerFile contains the necessary steps to build a Docker container that can run -projects with riscv-tools, chisel3, firrtl, and verilator. It installs the necessary -apt-get packages and sets the environment variables needed in CircleCI. - -Build and Deploy the Container ------------------------------- - - sudo docker build . # to test build before building it with a tag - sudo docker build -t :tag . # to build with tag (ex. 0.0.3) - sudo docker login # login into the account to push to - sudo docker push :tag # to push to repo with tag - -Path Names ----------- -Older docker images (when this Dockerfile was in `riscv-boom/riscv-boom`) can be found in the `riscvboom/riscvboom-images`. -Current up-to-date images are located in `ucbbar/chipyard-image` diff --git a/Dockerfiles/CI-Dockerfile b/dockerfiles/CI-Dockerfile similarity index 85% rename from Dockerfiles/CI-Dockerfile rename to dockerfiles/CI-Dockerfile index 11d064d2..2ebf119c 100644 --- a/Dockerfiles/CI-Dockerfile +++ b/dockerfiles/CI-Dockerfile @@ -1,4 +1,4 @@ -### Note: This DockerFile is adapted from https://github.com/ucb-bar/chipyard/blob/master/.circleci/images/Dockerfile which was adapted from: https://github.com/CircleCI-Public/example-images/openjdk +### Note: This DockerFile is adapted from: https://github.com/CircleCI-Public/example-images/openjdk # This is a chipyard setup for CI, no toolchains are initialized FROM ubuntu:18.04 @@ -32,7 +32,7 @@ ENV RISCV="/home/riscvuser/riscv-tools-install" ENV LD_LIBRARY_PATH="$RISCV/lib" ENV PATH="$RISCV/bin:$PATH" -# Install Chipyard +# Install Chipyard and run ubuntu-req.sh to install necessary dependencies RUN git clone https://github.com/ucb-bar/chipyard.git && \ cd chipyard && \ git checkout $CHIPYARD_HASH && \ diff --git a/Dockerfiles/Dockerfile b/dockerfiles/Dockerfile similarity index 78% rename from Dockerfiles/Dockerfile rename to dockerfiles/Dockerfile index ffc8a81a..ad111121 100644 --- a/Dockerfiles/Dockerfile +++ b/dockerfiles/Dockerfile @@ -1,7 +1,9 @@ ### Note: This DockerFile is adapted from https://github.com/ucb-bar/chipyard/blob/master/.circleci/images/Dockerfile which was adapted from: https://github.com/CircleCI-Public/example-images/openjdk # This is a full chipyard setup -FROM ubuntu:18.04 +# BUILD BASE FOR CI + +FROM ubuntu:18.04 as base ARG CHIPYARD_HASH MAINTAINER https://groups.google.com/forum/#!forum/chipyard @@ -27,13 +29,24 @@ RUN groupadd --gid 3434 riscvuser \ WORKDIR /home/riscvuser USER riscvuser -# Install Chipyard +# Update PATH for RISCV toolchain (note: hardcoded for CircleCI) +ENV RISCV="/home/riscvuser/riscv-tools-install" +ENV LD_LIBRARY_PATH="$RISCV/lib" +ENV PATH="$RISCV/bin:$PATH" + +# Install Chipyard and run ubuntu-req.sh to install necessary dependencies RUN git clone https://github.com/ucb-bar/chipyard.git && \ cd chipyard && \ git checkout $CHIPYARD_HASH && \ ./scripts/ubuntu-req.sh 1>/dev/null -# Run ubuntu-req.sh to install necessary dependencies + +# BUILD IMAGE WITH TOOLCHAINS + +# Use above build as base +FROM base as base-with-tools + +# Init submodules RUN cd chipyard && \ export MAKEFLAGS=-"j $(nproc)" && \ ./scripts/init-submodules-no-riscv-tools.sh 1>/dev/null @@ -44,10 +57,11 @@ RUN cd chipyard && \ ./scripts/build-toolchains.sh riscv-tools 1>/dev/null # Install esp-tools -RUN cd chipyard && \ + RUN cd chipyard && \ export MAKEFLAGS=-"j $(nproc)" && \ ./scripts/build-toolchains.sh esp-tools 1>/dev/null +# Run script to set environment variables on entry ENTRYPOINT ["chipyard/scripts/entrypoint.sh"] # END IMAGE CUSTOMIZATIONS diff --git a/dockerfiles/README.md b/dockerfiles/README.md new file mode 100644 index 00000000..12689704 --- /dev/null +++ b/dockerfiles/README.md @@ -0,0 +1,20 @@ +General +------- +This DockerFile contains the necessary steps to build a Docker container that can run +projects with riscv-tools, chisel3, firrtl, and verilator. When run up to the base stage, it installs the necessary +apt-get packages and sets the environment variables needed in CircleCI. When run up to the base-with-tools stage, it initializes and installs the necessary toolchains for running simulations and testing projects. + +Build and Deploy the Container +------------------------------ + + sudo docker build --target base -f Dockerfile . # to build the image for the CI + sudo docker build --target base-with-tools -f Dockerfile . # to build the full image + sudo docker tag :tag . # to tag the image after the build (ex. 0.0.3) + sudo docker login # login into the account to push to + sudo docker push :tag # to push to repo with tag + sudo docker run -it bash # to run an interactive version of the container + +Path Names +---------- +Older docker images (when this Dockerfile was in `riscv-boom/riscv-boom`) can be found in the `riscvboom/riscvboom-images`. +Current up-to-date images are located in `ucbbar/chipyard-image`