# THIS FILE WAS AUTO-GENERATED
#
#  $ lcitool dockerfile --layers all --cross-arch 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-setuptools \
                      python3-sphinx \
                      python3-sphinx-rtd-theme \
                      python3-venv \
                      python3-wheel \
                      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 && \
    rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED

RUN /usr/bin/pip3 install tomli

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 \
                      libasan6: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 \
                      libpipewire-0.3-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
