# Test coverage provided by this container:
# - arm64
# - dash default shell (instead of bash)
# - curl (url-lib)
# - mawk (instead of gawk)
# - zstd compression
# - verbose logging for tests
# - dbus-daemon
# - network: network-legacy, network-manager, systemd-networkd

# Not installed
# - iscsiuio, open-iscsi (not yet working with dracut, https://bugs.launchpad.net/ubuntu/+source/open-iscsi/+bug/2072484)
# - busybox-static

ARG DISTRIBUTION=debian
FROM docker.io/${DISTRIBUTION}

# export ARG
ARG DISTRIBUTION

# prefer running tests in verbose mode
ENV V=2

# Install dracut as a linux-initramfs-tool provider so that the default initramfs-tool package does not get installed
RUN apt-get update -y -qq && apt-get upgrade -y -qq && apt-get install -y -qq --no-install-recommends dracut

# extra packages for sid, rolling, devel
RUN if [ "$DISTRIBUTION" = "debian:sid" ] || [ "$DISTRIBUTION" = "ubuntu:rolling" ] || [ "$DISTRIBUTION" = "ubuntu:devel" ] ; then \
    DEBIAN_FRONTEND=noninteractive apt-get install -y -qq --no-install-recommends -o Dpkg::Use-Pty=0 \
    plymouth-themes \
    network-manager \
    systemd-cryptsetup \
    systemd-repart \
    systemd-ukify \
    ; fi

RUN \
    DEBIAN_FRONTEND=noninteractive apt-get install -y -qq --no-install-recommends -o Dpkg::Use-Pty=0 \
    asciidoc \
    bluez \
    btrfs-progs \
    ca-certificates \
    cargo \
    console-data \
    cpio \
    cryptsetup \
    curl \
    docbook \
    docbook-xml \
    docbook-xsl \
    erofs-utils \
    fdisk \
    file \
    gcc \
    gpg \
    iputils-arping \
    iputils-ping \
    isc-dhcp-client \
    isc-dhcp-server \
    jq \
    kbd \
    kmod \
    libfido2-1 \
    libkmod-dev \
    libsystemd-dev \
    linux-image-generic \
    lvm2 \
    make \
    mdadm \
    multipath-tools \
    nbd-client \
    nbd-server \
    nfs-kernel-server \
    ntfs-3g \
    nvme-cli \
    ovmf \
    parted \
    pcscd \
    pkg-config \
    procps \
    qemu-efi-aarch64 \
    qemu-kvm \
    qemu-system \
    rng-tools5 \
    squashfs-tools \
    swtpm \
    systemd-boot-efi \
    systemd-container \
    systemd-coredump \
    systemd-resolved \
    systemd-sysv \
    systemd-timesyncd \
    tgt \
    thin-provisioning-tools \
    tpm2-tools \
    xorriso \
    zstd \
    && apt-get clean \
    && chmod a+r /boot/vmlinu*

# workaround for kernel-install
RUN \
    KVERSION="$(cd /lib/modules && ls -1 | tail -1)" \
    ; if ! [ -e /usr/lib/modules/"$KVERSION"/vmlinuz ]; then ln -sf /boot/vmlinuz /usr/lib/modules/"$KVERSION"/vmlinuz; fi  \
    ; if ! [ -e /usr/lib/modules/"$KVERSION"/vmlinuz ]; then ln -sf /boot/vmlinuz-"$KVERSION" /usr/lib/modules/"$KVERSION"/vmlinuz; fi
