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    libzstd-devel \
63    llvm \
64    lzo-devel \
65    make \
66    mingw32-bzip2 \
67    mingw32-curl \
68    mingw32-glib2 \
69    mingw32-gmp \
70    mingw32-gnutls \
71    mingw32-gtk3 \
72    mingw32-libjpeg-turbo \
73    mingw32-libpng \
74    mingw32-libtasn1 \
75    mingw32-nettle \
76    mingw32-nsis \
77    mingw32-pixman \
78    mingw32-pkg-config \
79    mingw32-SDL2 \
80    mingw64-bzip2 \
81    mingw64-curl \
82    mingw64-glib2 \
83    mingw64-gmp \
84    mingw64-gnutls \
85    mingw64-gtk3 \
86    mingw64-libjpeg-turbo \
87    mingw64-libpng \
88    mingw64-libtasn1 \
89    mingw64-nettle \
90    mingw64-pixman \
91    mingw64-pkg-config \
92    mingw64-SDL2 \
93    ncurses-devel \
94    nettle-devel \
95    numactl-devel \
96    perl \
97    perl-Test-Harness \
98    pixman-devel \
99    pulseaudio-libs-devel \
100    python3 \
101    python3-sphinx \
102    PyYAML \
103    rdma-core-devel \
104    SDL2-devel \
105    snappy-devel \
106    sparse \
107    spice-server-devel \
108    systemd-devel \
109    systemtap-sdt-devel \
110    tar \
111    usbredir-devel \
112    virglrenderer-devel \
113    vte291-devel \
114    wget \
115    which \
116    xen-devel \
117    xfsprogs-devel \
118    zlib-devel
119ENV QEMU_CONFIGURE_OPTS --python=/usr/bin/python3
120
121RUN dnf install -y $PACKAGES
122RUN rpm -q $PACKAGES | sort > /packages.txt
123ENV PATH $PATH:/usr/libexec/python3-sphinx/
124ENV COVERITY_TOOL_BASE=/coverity-tools
125COPY coverity_tool.tgz coverity_tool.tgz
126RUN mkdir -p /coverity-tools/coverity_tool && cd /coverity-tools/coverity_tool && tar xf /coverity_tool.tgz
127COPY run-coverity-scan run-coverity-scan
128