# THIS FILE WAS AUTO-GENERATED
#
#  $ lcitool dockerfile --layers all --cross armv6l debian-11 qemu
#
# https://gitlab.com/libvirt/libvirt-ci

FROM docker.io/library/debian:11-slim

RUN export DEBIAN_FRONTEND=noninteractive && \
    apt-get update && \
    apt-get install -y eatmydata && \
    eatmydata apt-get dist-upgrade -y && \
    eatmydata apt-get install --no-install-recommends -y \
                      bash \
                      bc \
                      bison \
                      bsdextrautils \
                      bzip2 \
                      ca-certificates \
                      ccache \
                      dbus \
                      debianutils \
                      diffutils \
                      exuberant-ctags \
                      findutils \
                      flex \
                      gcc \
                      gcovr \
                      gettext \
                      git \
                      hostname \
                      libglib2.0-dev \
                      libpcre2-dev \
                      libsndio-dev \
                      libspice-protocol-dev \
                      llvm \
                      locales \
                      make \
                      meson \
                      mtools \
                      ncat \
                      ninja-build \
                      openssh-client \
                      pkgconf \
                      python3 \
                      python3-numpy \
                      python3-opencv \
                      python3-pillow \
                      python3-pip \
                      python3-sphinx \
                      python3-sphinx-rtd-theme \
                      python3-venv \
                      python3-yaml \
                      rpm2cpio \
                      sed \
                      socat \
                      sparse \
                      tar \
                      tesseract-ocr \
                      tesseract-ocr-eng \
                      xorriso \
                      zstd && \
    eatmydata apt-get autoremove -y && \
    eatmydata apt-get autoclean -y && \
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
    dpkg-reconfigure locales

ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
ENV LANG "en_US.UTF-8"
ENV MAKE "/usr/bin/make"
ENV NINJA "/usr/bin/ninja"
ENV PYTHON "/usr/bin/python3"

RUN export DEBIAN_FRONTEND=noninteractive && \
    dpkg --add-architecture armel && \
    eatmydata apt-get update && \
    eatmydata apt-get dist-upgrade -y && \
    eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
    eatmydata apt-get install --no-install-recommends -y \
                      g++-arm-linux-gnueabi \
                      gcc-arm-linux-gnueabi \
                      libaio-dev:armel \
                      libasan5:armel \
                      libasound2-dev:armel \
                      libattr1-dev:armel \
                      libbpf-dev:armel \
                      libbrlapi-dev:armel \
                      libbz2-dev:armel \
                      libc6-dev:armel \
                      libcacard-dev:armel \
                      libcap-ng-dev:armel \
                      libcapstone-dev:armel \
                      libcmocka-dev:armel \
                      libcurl4-gnutls-dev:armel \
                      libdaxctl-dev:armel \
                      libdrm-dev:armel \
                      libepoxy-dev:armel \
                      libfdt-dev:armel \
                      libffi-dev:armel \
                      libfuse3-dev:armel \
                      libgbm-dev:armel \
                      libgcrypt20-dev:armel \
                      libglib2.0-dev:armel \
                      libglusterfs-dev:armel \
                      libgnutls28-dev:armel \
                      libgtk-3-dev:armel \
                      libibumad-dev:armel \
                      libibverbs-dev:armel \
                      libiscsi-dev:armel \
                      libjemalloc-dev:armel \
                      libjpeg62-turbo-dev:armel \
                      libjson-c-dev:armel \
                      liblttng-ust-dev:armel \
                      liblzo2-dev:armel \
                      libncursesw5-dev:armel \
                      libnfs-dev:armel \
                      libnuma-dev:armel \
                      libpam0g-dev:armel \
                      libpixman-1-dev:armel \
                      libpng-dev:armel \
                      libpulse-dev:armel \
                      librbd-dev:armel \
                      librdmacm-dev:armel \
                      libsasl2-dev:armel \
                      libsdl2-dev:armel \
                      libsdl2-image-dev:armel \
                      libseccomp-dev:armel \
                      libselinux1-dev:armel \
                      libslirp-dev:armel \
                      libsnappy-dev:armel \
                      libspice-server-dev:armel \
                      libssh-gcrypt-dev:armel \
                      libsystemd-dev:armel \
                      libtasn1-6-dev:armel \
                      libubsan1:armel \
                      libudev-dev:armel \
                      liburing-dev:armel \
                      libusb-1.0-0-dev:armel \
                      libusbredirhost-dev:armel \
                      libvdeplug-dev:armel \
                      libvirglrenderer-dev:armel \
                      libvte-2.91-dev:armel \
                      libzstd-dev:armel \
                      nettle-dev:armel \
                      systemtap-sdt-dev:armel \
                      xfslibs-dev:armel \
                      zlib1g-dev:armel && \
    eatmydata apt-get autoremove -y && \
    eatmydata apt-get autoclean -y && \
    mkdir -p /usr/local/share/meson/cross && \
    printf "[binaries]\n\
c = '/usr/bin/arm-linux-gnueabi-gcc'\n\
ar = '/usr/bin/arm-linux-gnueabi-gcc-ar'\n\
strip = '/usr/bin/arm-linux-gnueabi-strip'\n\
pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'\n\
\n\
[host_machine]\n\
system = 'linux'\n\
cpu_family = 'arm'\n\
cpu = 'arm'\n\
endian = 'little'\n" > /usr/local/share/meson/cross/arm-linux-gnueabi && \
    dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
    mkdir -p /usr/libexec/ccache-wrappers && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-c++ && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-cc && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-g++ && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-gcc

ENV ABI "arm-linux-gnueabi"
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabi-
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user,armeb-linux-user
# As a final step configure the user (if env is defined)
ARG USER
ARG UID
RUN if [ "${USER}" ]; then \
  id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
