ARG IMAGE="ubuntu:18.04" # Note that some commands such as 'apk add' won't work in arbitrary images. For instance, # 'apt-get' works fine under ubuntu, but not under alpine (at least not by default.) # In other words, the following 'apt-get' sections assume a debian based image or a derivitive FROM $IMAGE as base ARG DEBIAN_FRONTEND=noninteractive RUN apt-get -y update && \ apt-get install -y \ make && \ rm -rf /var/lib/apt/lists/* FROM base as builder ARG DEBIAN_FRONTEND=noninteractive RUN apt-get -y update && \ apt-get install -y \ autoconf \ automake \ bison \ build-essential \ flex \ git \ gperf COPY . . RUN bash autoconf.sh && \ ./configure && \ make && \ make install FROM builder as builder-iverilog-regression-test RUN make check ARG REGRESSION_TEST_URL=https://github.com/steveicarus/ivtest.git RUN git clone ${REGRESSION_TEST_URL} ivtest # Running the tests here was useful for troubleshooting, but we also run them below # in a lighter weight image so it is not necessary to run them here anymore # WORKDIR ivtest # RUN perl vvp_reg.pl # RUN perl vpi_reg.pl FROM base as release-candidate COPY --from=builder /usr/local /usr/local/ FROM release-candidate as iverilog-vpi RUN apt-get update && \ apt-get install -y \ build-essential FROM iverilog-vpi as test-iverilog-vpi RUN apt-get update && \ apt-get install -y \ perl COPY --from=builder-iverilog-regression-test /ivtest /ivtest WORKDIR /ivtest RUN perl vvp_reg.pl RUN perl vpi_reg.pl FROM release-candidate as iverilog # # Below are some sample commands to build docker images. # # The vpi_reg.pl script wont run in this 121 MB image which does not contain perl or c/c++ # docker build -f Dockerfile.ubuntu . -t iverilog # # This is a larger 364 MB image with c/c++ compilers through build-essential # docker build -f Dockerfile.ubuntu --target iverilog-vpi . -t iverilog-vpi # # This is a larger 382 MB image with c/c++ compilers throubh build-essential and perl # docker build -f Dockerfile.ubuntu --target test-iverilog-vpi . -t iverilog-perl # # This is a larger 665 MB image with full featured compiler, git, and full build results # docker build -f Dockerfile.ubuntu --target builder . -t iverilog-builder # # Below are some sample commands to build using ubuntu:20.04 as a base image # # The vpi_reg.pl script wont run in this 154 MB image which does not contain perl or c/c++ # docker build -f Dockerfile.ubuntu --build-arg IMAGE="ubuntu:20.04" . -t iverilog # # This is a larger 428 MB image with c/c++ compilers through build-essential # docker build -f Dockerfile.ubuntu --build-arg IMAGE="ubuntu:20.04" --target iverilog-vpi . -t iverilog-vpi # # This is a larger 445 MB image with c/c++ compilers throubh build-essential and perl # docker build -f Dockerfile.ubuntu --build-arg IMAGE="ubuntu:20.04" --target test-iverilog-vpi . -t iverilog-perl # # This is a larger 812 MB image with full featured compiler, git, and full build results # docker build -f Dockerfile.ubuntu --build-arg IMAGE="ubuntu:20.04" --target builder . -t iverilog-builder