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    nss-devel \
97    numactl-devel \
98    perl \
99    perl-Test-Harness \
100    pixman-devel \
101    pulseaudio-libs-devel \
102    python3 \
103    python3-sphinx \
104    PyYAML \
105    rdma-core-devel \
106    SDL2-devel \
107    snappy-devel \
108    sparse \
109    spice-server-devel \
110    systemd-devel \
111    systemtap-sdt-devel \
112    tar \
113    texinfo \
114    usbredir-devel \
115    virglrenderer-devel \
116    vte291-devel \
117    wget \
118    which \
119    xen-devel \
120    xfsprogs-devel \
121    zlib-devel
122ENV QEMU_CONFIGURE_OPTS --python=/usr/bin/python3
123
124RUN dnf install -y $PACKAGES
125RUN rpm -q $PACKAGES | sort > /packages.txt
126ENV PATH $PATH:/usr/libexec/python3-sphinx/
127ENV COVERITY_TOOL_BASE=/coverity-tools
128COPY coverity_tool.tgz coverity_tool.tgz
129RUN mkdir -p /coverity-tools/coverity_tool && cd /coverity-tools/coverity_tool && tar xf /coverity_tool.tgz
130COPY run-coverity-scan run-coverity-scan
131