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

FROM docker.io/library/debian:13-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 \
                      bzip2 \
                      ca-certificates \
                      ccache \
                      findutils \
                      flex \
                      gcc \
                      git \
                      libc6-dev \
                      libfdt-dev \
                      libffi-dev \
                      libglib2.0-dev \
                      libpixman-1-dev \
                      locales \
                      make \
                      ninja-build \
                      pkgconf \
                      python3 \
                      python3-pip \
                      python3-setuptools \
                      python3-venv \
                      python3-wheel \
                      sed \
                      tar && \
    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 && \
    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/cc && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc

RUN /usr/bin/pip3 install meson==1.8.1

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"
# extras for cross and alternate toolchains
RUN DEBIAN_FRONTEND=noninteractive eatmydata \
  apt install -y --no-install-recommends \
  clang\
  dpkg-dev\
  libclang-rt-dev
ENV AVAILABLE_COMPILERS gcc-aarch64-linux-gnu \
  libc6-dev-arm64-cross \
  gcc-arm-linux-gnueabihf \
  libc6-dev-armhf-cross \
  gcc-alpha-linux-gnu \
  libc6.1-dev-alpha-cross \
  gcc-mips-linux-gnu \
  libc6-dev-mips-cross \
  gcc-mips64-linux-gnuabi64 \
  libc6-dev-mips64-cross \
  gcc-mips64el-linux-gnuabi64 \
  libc6-dev-mips64el-cross \
  gcc-mipsel-linux-gnu \
  libc6-dev-mipsel-cross \
  gcc-powerpc64le-linux-gnu \
  libc6-dev-ppc64el-cross \
  gcc-riscv64-linux-gnu \
  libc6-dev-riscv64-cross \
  gcc-s390x-linux-gnu \
  libc6-dev-s390x-cross\
  gcc-sh4-linux-gnu \
  libc6-dev-sh4-cross
RUN if dpkg-architecture -e amd64; then \
  export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-hppa-linux-gnu libc6-dev-hppa-cross"; \
  export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-m68k-linux-gnu libc6-dev-m68k-cross"; \
  export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-powerpc-linux-gnu libc6-dev-powerpc-cross"; \
  export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-powerpc64-linux-gnu libc6-dev-ppc64-cross"; \
  export AVAILABLE_COMPILERS="${AVAILABLE_COMPILERS} gcc-sparc64-linux-gnu libc6-dev-sparc64-cross"; \
fi && \
DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \
${AVAILABLE_COMPILERS} && \
dpkg-query --showformat '${Package}_${Version}_${Architecture}' --show > /packages.txt
ENV QEMU_CONFIGURE_OPTS --disable-docs
ENV DEF_TARGET_LIST aarch64-linux-user,alpha-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sh4-linux-user,sparc64-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
