1# syntax=docker/dockerfile:1.0.0-experimental
2#
3# Docker setup for running the "Coverity Scan" tools over the source
4# tree and uploading them to the website, as per
5# https://scan.coverity.com/projects/qemu/builds/new
6# We do this on a fixed config (currently Fedora 30 with a known
7# set of dependencies and a configure command that enables a specific
8# set of options) so that random changes don't result in our accidentally
9# dropping some files from the scan.
10#
11# We don't build on top of the fedora.docker file because we don't
12# want to accidentally change or break the scan config when that
13# is updated.
14
15# The work of actually doing the build is handled by the
16# run-coverity-scan script.
17
18FROM fedora:30
19ENV PACKAGES \
20    alsa-lib-devel \
21    bc \
22    brlapi-devel \
23    bzip2 \
24    bzip2-devel \
25    ccache \
26    clang \
27    curl \
28    cyrus-sasl-devel \
29    dbus-daemon \
30    device-mapper-multipath-devel \
31    findutils \
32    gcc \
33    gcc-c++ \
34    gettext \
35    git \
36    glib2-devel \
37    glusterfs-api-devel \
38    gnutls-devel \
39    gtk3-devel \
40    hostname \
41    libaio-devel \
42    libasan \
43    libattr-devel \
44    libblockdev-mpath-devel \
45    libcap-devel \
46    libcap-ng-devel \
47    libcurl-devel \
48    libepoxy-devel \
49    libfdt-devel \
50    libgbm-devel \
51    libiscsi-devel \
52    libjpeg-devel \
53    libpmem-devel \
54    libnfs-devel \
55    libpng-devel \
56    librbd-devel \
57    libseccomp-devel \
58    libssh-devel \
59    libubsan \
60    libudev-devel \
61    libusbx-devel \
62    libxml2-devel \
63    libzstd-devel \
64    llvm \
65    lzo-devel \
66    make \
67    mingw32-bzip2 \
68    mingw32-curl \
69    mingw32-glib2 \
70    mingw32-gmp \
71    mingw32-gnutls \
72    mingw32-gtk3 \
73    mingw32-libjpeg-turbo \
74    mingw32-libpng \
75    mingw32-libtasn1 \
76    mingw32-nettle \
77    mingw32-nsis \
78    mingw32-pixman \
79    mingw32-pkg-config \
80    mingw32-SDL2 \
81    mingw64-bzip2 \
82    mingw64-curl \
83    mingw64-glib2 \
84    mingw64-gmp \
85    mingw64-gnutls \
86    mingw64-gtk3 \
87    mingw64-libjpeg-turbo \
88    mingw64-libpng \
89    mingw64-libtasn1 \
90    mingw64-nettle \
91    mingw64-pixman \
92    mingw64-pkg-config \
93    mingw64-SDL2 \
94    ncurses-devel \
95    nettle-devel \
96    numactl-devel \
97    perl \
98    perl-Test-Harness \
99    pixman-devel \
100    pulseaudio-libs-devel \
101    python3 \
102    python3-sphinx \
103    PyYAML \
104    rdma-core-devel \
105    SDL2-devel \
106    snappy-devel \
107    sparse \
108    spice-server-devel \
109    systemd-devel \
110    systemtap-sdt-devel \
111    tar \
112    usbredir-devel \
113    virglrenderer-devel \
114    vte291-devel \
115    wget \
116    which \
117    xen-devel \
118    xfsprogs-devel \
119    zlib-devel
120ENV QEMU_CONFIGURE_OPTS --python=/usr/bin/python3
121
122RUN dnf install -y $PACKAGES
123RUN rpm -q $PACKAGES | sort > /packages.txt
124ENV PATH $PATH:/usr/libexec/python3-sphinx/
125ENV COVERITY_TOOL_BASE=/coverity-tools
126COPY coverity_tool.tgz coverity_tool.tgz
127RUN mkdir -p /coverity-tools/coverity_tool && cd /coverity-tools/coverity_tool && tar xf /coverity_tool.tgz
128COPY run-coverity-scan run-coverity-scan
129