# THIS FILE WAS AUTO-GENERATED
#
#  $ lcitool dockerfile --layers all --cross ppc64le 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 \
                      gcovr \
                      genisoimage \
                      gettext \
                      git \
                      hostname \
                      libglib2.0-dev \
                      libpcre2-dev \
                      libsndio-dev \
                      libspice-protocol-dev \
                      llvm \
                      locales \
                      make \
                      meson \
                      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 \
                      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 ppc64el && \
    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++-powerpc64le-linux-gnu \
                      gcc-powerpc64le-linux-gnu \
                      libaio-dev:ppc64el \
                      libasan5:ppc64el \
                      libasound2-dev:ppc64el \
                      libattr1-dev:ppc64el \
                      libbpf-dev:ppc64el \
                      libbrlapi-dev:ppc64el \
                      libbz2-dev:ppc64el \
                      libc6-dev:ppc64el \
                      libcacard-dev:ppc64el \
                      libcap-ng-dev:ppc64el \
                      libcapstone-dev:ppc64el \
                      libcmocka-dev:ppc64el \
                      libcurl4-gnutls-dev:ppc64el \
                      libdaxctl-dev:ppc64el \
                      libdrm-dev:ppc64el \
                      libepoxy-dev:ppc64el \
                      libfdt-dev:ppc64el \
                      libffi-dev:ppc64el \
                      libfuse3-dev:ppc64el \
                      libgbm-dev:ppc64el \
                      libgcrypt20-dev:ppc64el \
                      libglib2.0-dev:ppc64el \
                      libglusterfs-dev:ppc64el \
                      libgnutls28-dev:ppc64el \
                      libgtk-3-dev:ppc64el \
                      libibumad-dev:ppc64el \
                      libibverbs-dev:ppc64el \
                      libiscsi-dev:ppc64el \
                      libjemalloc-dev:ppc64el \
                      libjpeg62-turbo-dev:ppc64el \
                      libjson-c-dev:ppc64el \
                      liblttng-ust-dev:ppc64el \
                      liblzo2-dev:ppc64el \
                      libncursesw5-dev:ppc64el \
                      libnfs-dev:ppc64el \
                      libnuma-dev:ppc64el \
                      libpam0g-dev:ppc64el \
                      libpixman-1-dev:ppc64el \
                      libpng-dev:ppc64el \
                      libpulse-dev:ppc64el \
                      librbd-dev:ppc64el \
                      librdmacm-dev:ppc64el \
                      libsasl2-dev:ppc64el \
                      libsdl2-dev:ppc64el \
                      libsdl2-image-dev:ppc64el \
                      libseccomp-dev:ppc64el \
                      libselinux1-dev:ppc64el \
                      libslirp-dev:ppc64el \
                      libsnappy-dev:ppc64el \
                      libspice-server-dev:ppc64el \
                      libssh-gcrypt-dev:ppc64el \
                      libsystemd-dev:ppc64el \
                      libtasn1-6-dev:ppc64el \
                      libubsan1:ppc64el \
                      libudev-dev:ppc64el \
                      liburing-dev:ppc64el \
                      libusb-1.0-0-dev:ppc64el \
                      libusbredirhost-dev:ppc64el \
                      libvdeplug-dev:ppc64el \
                      libvirglrenderer-dev:ppc64el \
                      libvte-2.91-dev:ppc64el \
                      libzstd-dev:ppc64el \
                      nettle-dev:ppc64el \
                      systemtap-sdt-dev:ppc64el \
                      xfslibs-dev:ppc64el \
                      zlib1g-dev:ppc64el && \
    eatmydata apt-get autoremove -y && \
    eatmydata apt-get autoclean -y && \
    mkdir -p /usr/local/share/meson/cross && \
    echo "[binaries]\n\
c = '/usr/bin/powerpc64le-linux-gnu-gcc'\n\
ar = '/usr/bin/powerpc64le-linux-gnu-gcc-ar'\n\
strip = '/usr/bin/powerpc64le-linux-gnu-strip'\n\
pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config'\n\
\n\
[host_machine]\n\
system = 'linux'\n\
cpu_family = 'ppc64'\n\
cpu = 'powerpc64le'\n\
endian = 'little'" > /usr/local/share/meson/cross/powerpc64le-linux-gnu && \
    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/powerpc64le-linux-gnu-c++ && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-cc && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-g++ && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-gcc

ENV ABI "powerpc64le-linux-gnu"
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
ENV QEMU_CONFIGURE_OPTS --cross-prefix=powerpc64le-linux-gnu-
ENV DEF_TARGET_LIST ppc64-softmmu,ppc64-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
