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