97 lines
2.2 KiB
Docker
97 lines
2.2 KiB
Docker
ARG IMAGE="alpine:3.12"
|
|
# Note that some commands such as 'apk add' won't work in arbitrary images. For instance,
|
|
# 'apk add' works fine under alpine, but not under Ubuntu (at least not by default.)
|
|
# In other words, the following 'apk add' sections assume an alpine based image or a derivitive
|
|
|
|
FROM $IMAGE as base
|
|
|
|
RUN apk add --no-cache \
|
|
bzip2 \
|
|
libbz2 \
|
|
libgcc \
|
|
libhistory \
|
|
libstdc++ \
|
|
make \
|
|
readline \
|
|
zlib
|
|
|
|
FROM base as builder
|
|
|
|
RUN apk add --no-cache \
|
|
autoconf \
|
|
build-base \
|
|
bison \
|
|
bzip2-dev \
|
|
flex \
|
|
git \
|
|
gperf \
|
|
readline-dev \
|
|
zlib-dev
|
|
|
|
COPY . .
|
|
|
|
RUN sh autoconf.sh && \
|
|
./configure && \
|
|
make && \
|
|
make install
|
|
|
|
FROM builder as test-builder
|
|
|
|
RUN make check
|
|
|
|
FROM base as test-release-candidate
|
|
|
|
COPY --from=builder /usr/local /usr/local/
|
|
|
|
FROM test-release-candidate as release-candidate
|
|
|
|
RUN adduser --disabled-password ic
|
|
USER ic
|
|
WORKDIR /home/ic
|
|
|
|
FROM release-candidate as release-candidate-entrypoint-make
|
|
|
|
ENTRYPOINT [ "make" ]
|
|
|
|
# This commented section or something similar may be used to test the release candidate
|
|
# image before it is finally released. A failure here would stop the process so that
|
|
# a faulty image is not released.
|
|
#
|
|
# We create a layer that contains the tests as builder-iverilog-regression-test here:
|
|
|
|
FROM builder as builder-iverilog-regression-test-base
|
|
|
|
ARG REGRESSION_TEST_URL=https://github.com/steveicarus/ivtest.git
|
|
RUN git clone ${REGRESSION_TEST_URL} ivtest
|
|
|
|
FROM builder-iverilog-regression-test-base as builder-iverilog-regression-test
|
|
|
|
WORKDIR ivtest
|
|
RUN perl vvp_reg.pl
|
|
RUN perl vpi_reg.pl
|
|
|
|
FROM test-release-candidate as test-release-candidate-perl
|
|
|
|
RUN apk add --no-cache \
|
|
musl \
|
|
perl
|
|
|
|
RUN adduser --disabled-password ic
|
|
USER ic
|
|
WORKDIR /home/ic
|
|
|
|
COPY --from=builder-iverilog-regression-test-base /ivtest /home/ic/
|
|
|
|
RUN perl vvp_reg.pl
|
|
# RUN perl vpi_reg.pl
|
|
# RUN perl vhdl_reg.pl
|
|
|
|
FROM release-candidate-entrypoint-make as iverilog-make
|
|
|
|
FROM release-candidate as iverilog
|
|
|
|
# Below are some sample commands to build docker images.
|
|
#
|
|
# docker build . -t iverilog
|
|
#
|
|
# docker build --target iverilog-make . -t iverilog-make |