# THIS FILE WAS AUTO-GENERATED
#
#  $ lcitool dockerfile --layers all opensuse-leap-153 qemu
#
# https://gitlab.com/libvirt/libvirt-ci

FROM registry.opensuse.org/opensuse/leap:15.3

RUN zypper update -y && \
    zypper install -y \
           Mesa-devel \
           alsa-lib-devel \
           bash \
           bc \
           bison \
           brlapi-devel \
           bzip2 \
           ca-certificates \
           ccache \
           clang \
           ctags \
           cyrus-sasl-devel \
           dbus-1 \
           diffutils \
           findutils \
           flex \
           fuse3-devel \
           gcc \
           gcc-c++ \
           gcovr \
           gettext-runtime \
           git \
           glib2-devel \
           glibc-locale \
           glibc-static \
           glusterfs-devel \
           gtk3-devel \
           hostname \
           jemalloc-devel \
           libSDL2-devel \
           libSDL2_image-devel \
           libaio-devel \
           libasan6 \
           libattr-devel \
           libbpf-devel \
           libbz2-devel \
           libcacard-devel \
           libcap-ng-devel \
           libcmocka-devel \
           libcurl-devel \
           libdrm-devel \
           libepoxy-devel \
           libfdt-devel \
           libffi-devel \
           libgcrypt-devel \
           libgnutls-devel \
           libiscsi-devel \
           libjpeg8-devel \
           libjson-c-devel \
           libndctl-devel \
           libnettle-devel \
           libnfs-devel \
           libnuma-devel \
           libpixman-1-0-devel \
           libpmem-devel \
           libpng16-devel \
           libpulse-devel \
           librbd-devel \
           libseccomp-devel \
           libselinux-devel \
           libslirp-devel \
           libspice-server-devel \
           libssh-devel \
           libtasn1-devel \
           libubsan1 \
           libudev-devel \
           liburing-devel \
           libusb-1_0-devel \
           libzstd-devel \
           llvm \
           lttng-ust-devel \
           lzo-devel \
           make \
           mkisofs \
           ncat \
           ncurses-devel \
           ninja \
           openssh \
           pam-devel \
           pcre-devel-static \
           pkgconfig \
           python39-base \
           python39-pip \
           python39-setuptools \
           rdma-core-devel \
           rpm \
           sed \
           snappy-devel \
           sndio-devel \
           socat \
           sparse \
           spice-protocol-devel \
           systemd-devel \
           systemtap-sdt-devel \
           tar \
           tesseract-ocr \
           tesseract-ocr-traineddata-english \
           usbredir-devel \
           util-linux \
           virglrenderer-devel \
           vte-devel \
           which \
           xen-devel \
           xfsprogs-devel \
           zlib-devel \
           zlib-devel-static \
           zstd && \
    zypper clean --all && \
    rpm -qa | sort > /packages.txt && \
    mkdir -p /usr/libexec/ccache-wrappers && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/c++ && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc

RUN /usr/bin/pip3.9 install \
                    PyYAML \
                    meson==0.63.2 \
                    pillow \
                    sphinx \
                    sphinx-rtd-theme

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.9"
# 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
