# 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 \
                      libgtk-vnc-2.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 \
                      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 \
                      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 \
                      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-cc && \
    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
