FROM debian:bookworm

ARG FETCH_ARM64_KERNEL=1
ENV DEBIAN_FRONTEND=noninteractive

RUN dpkg --add-architecture arm64 \
    && apt-get update \
    && apt-get install -y --no-install-recommends \
    bash \
    binfmt-support \
    busybox-static \
    ca-certificates \
    cpio \
    curl \
    dosfstools \
    e2fsprogs \
    fdisk \
    ffmpeg \
    file \
    gcc-aarch64-linux-gnu \
    git \
    initramfs-tools \
    jq \
    kmod \
    libegl-mesa0:arm64 \
    libegl1:arm64 \
    libasound2-dev:arm64 \
    libavcodec-dev:arm64 \
    libavutil-dev:arm64 \
    libgbm1:arm64 \
    libgbm-dev:arm64 \
    libgl1-mesa-dri:arm64 \
    libglapi-mesa:arm64 \
    libgles2:arm64 \
    libswscale-dev:arm64 \
    libyuv-dev:arm64 \
    libglvnd0:arm64 \
    libglx-mesa0:arm64 \
    mesa-vulkan-drivers:arm64 \
    libc6-dev-arm64-cross \
    make \
    netcat-openbsd \
    novnc \
    procps \
    psmisc \
    python3 \
    python3-pil \
    python3-websockify \
    qemu-system-arm \
    qemu-user-static \
    qemu-utils \
    rsync \
    socat \
    util-linux \
    wget \
    xz-utils \
    zstd \
    && rm -rf /var/lib/apt/lists/*

COPY emulation/docker/fetch-debian-arm64-kernel.sh /usr/local/bin/fetch-debian-arm64-kernel
COPY emulation/docker/entrypoint.sh /opt/spike3/entrypoint.sh

RUN chmod +x /usr/local/bin/fetch-debian-arm64-kernel /opt/spike3/entrypoint.sh \
    && if [ "$FETCH_ARM64_KERNEL" = "1" ]; then fetch-debian-arm64-kernel; fi

EXPOSE 6080 8090 8088 8345
ENTRYPOINT ["/opt/spike3/entrypoint.sh"]
