19edfa358SPeter Maydell# syntax=docker/dockerfile:1.0.0-experimental
29edfa358SPeter Maydell#
39edfa358SPeter Maydell# Docker setup for running the "Coverity Scan" tools over the source
49edfa358SPeter Maydell# tree and uploading them to the website, as per
59edfa358SPeter Maydell# https://scan.coverity.com/projects/qemu/builds/new
69edfa358SPeter Maydell# We do this on a fixed config (currently Fedora 30 with a known
79edfa358SPeter Maydell# set of dependencies and a configure command that enables a specific
89edfa358SPeter Maydell# set of options) so that random changes don't result in our accidentally
99edfa358SPeter Maydell# dropping some files from the scan.
109edfa358SPeter Maydell#
119edfa358SPeter Maydell# We don't build on top of the fedora.docker file because we don't
129edfa358SPeter Maydell# want to accidentally change or break the scan config when that
139edfa358SPeter Maydell# is updated.
149edfa358SPeter Maydell
159edfa358SPeter Maydell# The work of actually doing the build is handled by the
169edfa358SPeter Maydell# run-coverity-scan script.
179edfa358SPeter Maydell
1832a9d735SPaolo BonziniFROM registry.fedoraproject.org/fedora:37
1932a9d735SPaolo Bonzini
2032a9d735SPaolo BonziniRUN dnf install -y nosync && \
2132a9d735SPaolo Bonzini    echo -e '#!/bin/sh\n\
2232a9d735SPaolo Bonziniif test -d /usr/lib64\n\
2332a9d735SPaolo Bonzinithen\n\
2432a9d735SPaolo Bonzini    export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
2532a9d735SPaolo Bonzinielse\n\
2632a9d735SPaolo Bonzini    export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
2732a9d735SPaolo Bonzinifi\n\
2832a9d735SPaolo Bonziniexec "$@"' > /usr/bin/nosync && \
2932a9d735SPaolo Bonzini    chmod +x /usr/bin/nosync && \
3032a9d735SPaolo Bonzini    nosync dnf update -y && \
3132a9d735SPaolo Bonzini    nosync dnf install -y \
3232a9d735SPaolo Bonzini               SDL2-devel \
3332a9d735SPaolo Bonzini               SDL2_image-devel \
349edfa358SPeter Maydell               alsa-lib-devel \
3532a9d735SPaolo Bonzini               bash \
369edfa358SPeter Maydell               bc \
3732a9d735SPaolo Bonzini               bison \
389edfa358SPeter Maydell               brlapi-devel \
399edfa358SPeter Maydell               bzip2 \
409edfa358SPeter Maydell               bzip2-devel \
4132a9d735SPaolo Bonzini               ca-certificates \
4232a9d735SPaolo Bonzini               capstone-devel \
439edfa358SPeter Maydell               ccache \
449edfa358SPeter Maydell               clang \
4532a9d735SPaolo Bonzini               ctags \
469edfa358SPeter Maydell               cyrus-sasl-devel \
4732a9d735SPaolo Bonzini               daxctl-devel \
489edfa358SPeter Maydell               dbus-daemon \
499edfa358SPeter Maydell               device-mapper-multipath-devel \
5032a9d735SPaolo Bonzini               diffutils \
519edfa358SPeter Maydell               findutils \
5232a9d735SPaolo Bonzini               flex \
5332a9d735SPaolo Bonzini               fuse3-devel \
549edfa358SPeter Maydell               gcc \
559edfa358SPeter Maydell               gcc-c++ \
5632a9d735SPaolo Bonzini               gcovr \
5732a9d735SPaolo Bonzini               genisoimage \
589edfa358SPeter Maydell               gettext \
599edfa358SPeter Maydell               git \
609edfa358SPeter Maydell               glib2-devel \
6132a9d735SPaolo Bonzini               glib2-static \
6232a9d735SPaolo Bonzini               glibc-langpack-en \
6332a9d735SPaolo Bonzini               glibc-static \
649edfa358SPeter Maydell               glusterfs-api-devel \
659edfa358SPeter Maydell               gnutls-devel \
669edfa358SPeter Maydell               gtk3-devel \
679edfa358SPeter Maydell               hostname \
6832a9d735SPaolo Bonzini               jemalloc-devel \
6932a9d735SPaolo Bonzini               json-c-devel \
709edfa358SPeter Maydell               libaio-devel \
719edfa358SPeter Maydell               libasan \
729edfa358SPeter Maydell               libattr-devel \
7332a9d735SPaolo Bonzini               libbpf-devel \
7432a9d735SPaolo Bonzini               libcacard-devel \
759edfa358SPeter Maydell               libcap-ng-devel \
7632a9d735SPaolo Bonzini               libcmocka-devel \
779edfa358SPeter Maydell               libcurl-devel \
7832a9d735SPaolo Bonzini               libdrm-devel \
799edfa358SPeter Maydell               libepoxy-devel \
809edfa358SPeter Maydell               libfdt-devel \
8132a9d735SPaolo Bonzini               libffi-devel \
8232a9d735SPaolo Bonzini               libgcrypt-devel \
839edfa358SPeter Maydell               libiscsi-devel \
849edfa358SPeter Maydell               libjpeg-devel \
859edfa358SPeter Maydell               libnfs-devel \
8632a9d735SPaolo Bonzini               libpmem-devel \
879edfa358SPeter Maydell               libpng-devel \
889edfa358SPeter Maydell               librbd-devel \
899edfa358SPeter Maydell               libseccomp-devel \
9032a9d735SPaolo Bonzini               libselinux-devel \
9132a9d735SPaolo Bonzini               libslirp-devel \
929edfa358SPeter Maydell               libssh-devel \
9332a9d735SPaolo Bonzini               libtasn1-devel \
949edfa358SPeter Maydell               libubsan \
9532a9d735SPaolo Bonzini               liburing-devel \
969edfa358SPeter Maydell               libusbx-devel \
979edfa358SPeter Maydell               libzstd-devel \
989edfa358SPeter Maydell               llvm \
9932a9d735SPaolo Bonzini               lttng-ust-devel \
1009edfa358SPeter Maydell               lzo-devel \
1019edfa358SPeter Maydell               make \
10232a9d735SPaolo Bonzini               mesa-libgbm-devel \
10332a9d735SPaolo Bonzini               meson \
1049edfa358SPeter Maydell               ncurses-devel \
1059edfa358SPeter Maydell               nettle-devel \
10632a9d735SPaolo Bonzini               ninja-build \
10732a9d735SPaolo Bonzini               nmap-ncat \
1089edfa358SPeter Maydell               numactl-devel \
10932a9d735SPaolo Bonzini               openssh-clients \
11032a9d735SPaolo Bonzini               pam-devel \
11132a9d735SPaolo Bonzini               pcre-static \
1129edfa358SPeter Maydell               pixman-devel \
11332a9d735SPaolo Bonzini               pkgconfig \
1149edfa358SPeter Maydell               pulseaudio-libs-devel \
1159edfa358SPeter Maydell               python3 \
11632a9d735SPaolo Bonzini               python3-PyYAML \
11732a9d735SPaolo Bonzini               python3-numpy \
11832a9d735SPaolo Bonzini               python3-opencv \
11932a9d735SPaolo Bonzini               python3-pillow \
12032a9d735SPaolo Bonzini               python3-pip \
1219edfa358SPeter Maydell               python3-sphinx \
12232a9d735SPaolo Bonzini               python3-sphinx_rtd_theme \
1239edfa358SPeter Maydell               rdma-core-devel \
12432a9d735SPaolo Bonzini               rpm \
12532a9d735SPaolo Bonzini               sed \
1269edfa358SPeter Maydell               snappy-devel \
12732a9d735SPaolo Bonzini               socat \
1289edfa358SPeter Maydell               sparse \
12932a9d735SPaolo Bonzini               spice-protocol \
1309edfa358SPeter Maydell               spice-server-devel \
1319edfa358SPeter Maydell               systemd-devel \
1329edfa358SPeter Maydell               systemtap-sdt-devel \
1339edfa358SPeter Maydell               tar \
13432a9d735SPaolo Bonzini               tesseract \
13532a9d735SPaolo Bonzini               tesseract-langpack-eng \
1369edfa358SPeter Maydell               usbredir-devel \
13732a9d735SPaolo Bonzini               util-linux \
1389edfa358SPeter Maydell               virglrenderer-devel \
1399edfa358SPeter Maydell               vte291-devel \
1409edfa358SPeter Maydell               which \
1419edfa358SPeter Maydell               xen-devel \
1429edfa358SPeter Maydell               xfsprogs-devel \
14332a9d735SPaolo Bonzini               zlib-devel \
14432a9d735SPaolo Bonzini               zlib-static \
14532a9d735SPaolo Bonzini               zstd && \
14632a9d735SPaolo Bonzini    nosync dnf autoremove -y && \
14732a9d735SPaolo Bonzini    nosync dnf clean all -y && \
14832a9d735SPaolo Bonzini    rpm -qa | sort > /packages.txt && \
14932a9d735SPaolo Bonzini    mkdir -p /usr/libexec/ccache-wrappers && \
15032a9d735SPaolo Bonzini    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/c++ && \
15132a9d735SPaolo Bonzini    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
15232a9d735SPaolo Bonzini    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
15332a9d735SPaolo Bonzini    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
15432a9d735SPaolo Bonzini    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
1559edfa358SPeter Maydell
15632a9d735SPaolo BonziniENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
15732a9d735SPaolo BonziniENV LANG "en_US.UTF-8"
15832a9d735SPaolo BonziniENV MAKE "/usr/bin/make"
15932a9d735SPaolo BonziniENV NINJA "/usr/bin/ninja"
16032a9d735SPaolo BonziniENV PYTHON "/usr/bin/python3"
16132a9d735SPaolo BonziniENV QEMU_CONFIGURE_OPTS --meson=internal
16232a9d735SPaolo Bonzini
16332a9d735SPaolo BonziniRUN dnf install -y curl wget
1649edfa358SPeter MaydellENV COVERITY_TOOL_BASE=/coverity-tools
1652e90470eSPaolo BonziniCOPY coverity_tool.tgz coverity_tool.tgz
1662e90470eSPaolo BonziniRUN mkdir -p /coverity-tools/coverity_tool && cd /coverity-tools/coverity_tool && tar xf /coverity_tool.tgz
1679edfa358SPeter MaydellCOPY run-coverity-scan run-coverity-scan
168