block: add bdrv_co_delete_file_noerr
[qemu.git] / .travis.yml
blobfc27fd63301f5088e3f2a467cfdcd73a9a397b1f
1 # The current Travis default is a VM based 16.04 Xenial on GCE
2 # Additional builds with specific requirements for a full VM need to
3 # be added as additional matrix: entries later on
4 os: linux
5 dist: focal
6 language: c
7 compiler:
8   - gcc
9 cache:
10   # There is one cache per branch and compiler version.
11   # characteristics of each job are used to identify the cache:
12   # - OS name (currently only linux)
13   # - OS distribution (for Linux, bionic or focal)
14   # - Names and values of visible environment variables set in .travis.yml or Settings panel
15   timeout: 1200
16   ccache: true
17   pip: true
18   directories:
19   - $HOME/avocado/data/cache
22 addons:
23   apt:
24     packages:
25       # Build dependencies
26       - libaio-dev
27       - libattr1-dev
28       - libbrlapi-dev
29       - libcap-ng-dev
30       - libgcc-7-dev
31       - libgnutls28-dev
32       - libgtk-3-dev
33       - libiscsi-dev
34       - liblttng-ust-dev
35       - libncurses5-dev
36       - libnfs-dev
37       - libnss3-dev
38       - libpixman-1-dev
39       - libpng-dev
40       - librados-dev
41       - libsdl2-dev
42       - libsdl2-image-dev
43       - libseccomp-dev
44       - libspice-protocol-dev
45       - libspice-server-dev
46       - libssh-dev
47       - liburcu-dev
48       - libusb-1.0-0-dev
49       - libvdeplug-dev
50       - libvte-2.91-dev
51       - libzstd-dev
52       - ninja-build
53       - sparse
54       - uuid-dev
55       # Tests dependencies
56       - genisoimage
59 # The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
60 # to prevent IRC notifications from forks. This was created using:
61 # $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu"
62 notifications:
63   irc:
64     channels:
65       - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM="
66     on_success: change
67     on_failure: always
70 env:
71   global:
72     - SRC_DIR=".."
73     - BUILD_DIR="build"
74     - BASE_CONFIG="--disable-docs --disable-tools"
75     - TEST_BUILD_CMD=""
76     - TEST_CMD="make check V=1"
77     # This is broadly a list of "mainline" softmmu targets which have support across the major distros
78     - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
79     - CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime"
80     - CCACHE_MAXSIZE=1G
81     - G_MESSAGES_DEBUG=error
84 git:
85   # we want to do this ourselves
86   submodules: false
88 # Common first phase for all steps
89 before_install:
90   - if command -v ccache ; then ccache --zero-stats ; fi
91   - export JOBS=$(($(getconf _NPROCESSORS_ONLN) + 1))
92   - echo "=== Using ${JOBS} simultaneous jobs ==="
94 # Configure step - may be overridden
95 before_script:
96   - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
97   - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log meson-logs/meson-log.txt && exit 1; }
99 # Main build & test - rarely overridden - controlled by TEST_CMD
100 script:
101   - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
102   - |
103     if [ "$BUILD_RC" -eq 0 ] && [ -n "$TEST_BUILD_CMD" ]; then
104         ${TEST_BUILD_CMD} || BUILD_RC=$?
105     else
106         $(exit $BUILD_RC);
107     fi
108   - |
109     if [ "$BUILD_RC" -eq 0 ] ; then
110         ${TEST_CMD} ;
111     else
112         $(exit $BUILD_RC);
113     fi
114 after_script:
115   - df -h
116   - if command -v ccache ; then ccache --show-stats ; fi
119 jobs:
120   include:
122     - name: "[aarch64] GCC check-tcg"
123       arch: arm64
124       dist: focal
125       addons:
126         apt_packages:
127           - libaio-dev
128           - libattr1-dev
129           - libbrlapi-dev
130           - libcap-ng-dev
131           - libgcrypt20-dev
132           - libgnutls28-dev
133           - libgtk-3-dev
134           - libiscsi-dev
135           - liblttng-ust-dev
136           - libncurses5-dev
137           - libnfs-dev
138           - libnss3-dev
139           - libpixman-1-dev
140           - libpng-dev
141           - librados-dev
142           - libsdl2-dev
143           - libseccomp-dev
144           - liburcu-dev
145           - libusb-1.0-0-dev
146           - libvdeplug-dev
147           - libvte-2.91-dev
148           - ninja-build
149           # Tests dependencies
150           - genisoimage
151       env:
152         - TEST_CMD="make check check-tcg V=1"
153         - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS} --cxx=/bin/false"
154         - UNRELIABLE=true
156     - name: "[ppc64] GCC check-tcg"
157       arch: ppc64le
158       dist: focal
159       addons:
160         apt_packages:
161           - libaio-dev
162           - libattr1-dev
163           - libbrlapi-dev
164           - libcap-ng-dev
165           - libgcrypt20-dev
166           - libgnutls28-dev
167           - libgtk-3-dev
168           - libiscsi-dev
169           - liblttng-ust-dev
170           - libncurses5-dev
171           - libnfs-dev
172           - libnss3-dev
173           - libpixman-1-dev
174           - libpng-dev
175           - librados-dev
176           - libsdl2-dev
177           - libseccomp-dev
178           - liburcu-dev
179           - libusb-1.0-0-dev
180           - libvdeplug-dev
181           - libvte-2.91-dev
182           - ninja-build
183           # Tests dependencies
184           - genisoimage
185       env:
186         - TEST_CMD="make check check-tcg V=1"
187         - CONFIG="--disable-containers --target-list=ppc64-softmmu,ppc64le-linux-user"
189     - name: "[s390x] GCC check-tcg"
190       arch: s390x
191       dist: bionic
192       addons:
193         apt_packages:
194           - libaio-dev
195           - libattr1-dev
196           - libbrlapi-dev
197           - libcap-ng-dev
198           - libgcrypt20-dev
199           - libgnutls28-dev
200           - libgtk-3-dev
201           - libiscsi-dev
202           - liblttng-ust-dev
203           - libncurses5-dev
204           - libnfs-dev
205           - libnss3-dev
206           - libpixman-1-dev
207           - libpng-dev
208           - librados-dev
209           - libsdl2-dev
210           - libseccomp-dev
211           - liburcu-dev
212           - libusb-1.0-0-dev
213           - libvdeplug-dev
214           - libvte-2.91-dev
215           - ninja-build
216           # Tests dependencies
217           - genisoimage
218       env:
219         - TEST_CMD="make check check-tcg V=1"
220         - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user"
221         - UNRELIABLE=true
222       script:
223         - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
224         - |
225           if [ "$BUILD_RC" -eq 0 ] ; then
226               mv pc-bios/s390-ccw/*.img pc-bios/ ;
227               ${TEST_CMD} ;
228           else
229               $(exit $BUILD_RC);
230           fi
232     - name: "[s390x] GCC (other-softmmu)"
233       arch: s390x
234       dist: bionic
235       addons:
236         apt_packages:
237           - libaio-dev
238           - libattr1-dev
239           - libcap-ng-dev
240           - libgnutls28-dev
241           - libiscsi-dev
242           - liblttng-ust-dev
243           - liblzo2-dev
244           - libncurses-dev
245           - libnfs-dev
246           - libnss3-dev
247           - libpixman-1-dev
248           - libsdl2-dev
249           - libsdl2-image-dev
250           - libseccomp-dev
251           - libsnappy-dev
252           - libzstd-dev
253           - nettle-dev
254           - xfslibs-dev
255           - ninja-build
256           # Tests dependencies
257           - genisoimage
258       env:
259         - CONFIG="--disable-containers --audio-drv-list=sdl --disable-user
260                   --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
262     - name: "[s390x] GCC (user)"
263       arch: s390x
264       dist: bionic
265       addons:
266         apt_packages:
267           - libgcrypt20-dev
268           - libgnutls28-dev
269           - ninja-build
270       env:
271         - CONFIG="--disable-containers --disable-system"
273     - name: "[s390x] Clang (disable-tcg)"
274       arch: s390x
275       dist: bionic
276       compiler: clang
277       addons:
278         apt_packages:
279           - libaio-dev
280           - libattr1-dev
281           - libbrlapi-dev
282           - libcap-ng-dev
283           - libgcrypt20-dev
284           - libgnutls28-dev
285           - libgtk-3-dev
286           - libiscsi-dev
287           - liblttng-ust-dev
288           - libncurses5-dev
289           - libnfs-dev
290           - libnss3-dev
291           - libpixman-1-dev
292           - libpng-dev
293           - librados-dev
294           - libsdl2-dev
295           - libseccomp-dev
296           - liburcu-dev
297           - libusb-1.0-0-dev
298           - libvdeplug-dev
299           - libvte-2.91-dev
300           - ninja-build
301       env:
302         - TEST_CMD="make check-unit"
303         - CONFIG="--disable-containers --disable-tcg --enable-kvm
304                   --disable-tools --host-cc=clang --cxx=clang++"
305         - UNRELIABLE=true
307     # Release builds
308     # The make-release script expect a QEMU version, so our tag must start with a 'v'.
309     # This is the case when release candidate tags are created.
310     - name: "Release tarball"
311       if: tag IS present AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/
312       env:
313         # We want to build from the release tarball
314         - BUILD_DIR="release/build/dir" SRC_DIR="../../.."
315         - BASE_CONFIG="--prefix=$PWD/dist"
316         - CONFIG="--target-list=x86_64-softmmu,aarch64-softmmu,armeb-linux-user,ppc-linux-user"
317         - TEST_CMD="make install -j${JOBS}"
318         - QEMU_VERSION="${TRAVIS_TAG:1}"
319         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
320       script:
321         - make -C ${SRC_DIR} qemu-${QEMU_VERSION}.tar.bz2
322         - ls -l ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2
323         - tar -xf ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION}
324         - mkdir -p release-build && cd release-build
325         - ../configure ${BASE_CONFIG} ${CONFIG} || { cat config.log meson-logs/meson-log.txt && exit 1; }
326         - make install
327   allow_failures:
328     - env: UNRELIABLE=true