FROM alpine:3.18.0

RUN apk add --no-cache \
    busybox-extras \
    e2fsprogs \
    fakeroot \
    gcc \
    git \
    graphviz \
    iproute2 \
    iputils \
    jq \
    libc-dev \
    libyang-dev \
    linux-headers \
    openssh-client \
    python3-dev \
    qemu-img \
    qemu-system-x86_64 \
    ruby-mustache \
    socat \
    squashfs-tools \
    sshpass \
    tcpdump \
    tshark \
    openssl \
    curl \
    e2tools \
    make \
    ethtool

ARG MTOOL_VERSION="3.0"
RUN wget https://github.com/troglobit/mtools/releases/download/v3.0/mtools-$MTOOL_VERSION.tar.gz -O /tmp/mtools-$MTOOL_VERSION.tar.gz
RUN cd /tmp/ && tar zxvf mtools-$MTOOL_VERSION.tar.gz
RUN cd /tmp/mtools-$MTOOL_VERSION && make && make install

# Alpine's QEMU package does not bundle this for some reason, copied
# from Ubuntu
COPY qemu-ifup /etc

# Needed to let qeneth find mustache(1)
ENV PATH="${PATH}:/usr/lib/ruby/gems/3.2.0/bin"

# Install all python packages used by the tests
COPY init-venv.sh /root
COPY pip-requirements.txt /root

# Add bootstrap YANG models, the rest will be downloaded from the device
ADD yang /root/yang

RUN ~/init-venv.sh ~/pip-requirements.txt

COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["/bin/sh"]
