virtio-blk: Add blk_drain() to virtio_blk_device_unrealize()
[qemu.git] / .travis.yml
blobd0b9e099b9cc7e45dc09611e6f48466db0eebded
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 dist: xenial
5 language: c
6 compiler:
7   - gcc
8 cache:
9   # There is one cache per branch and compiler version.
10   # characteristics of each job are used to identify the cache:
11   # - OS name (currently, linux, osx, or windows)
12   # - OS distribution (for Linux, xenial, trusty, or precise)
13   # - macOS image name (e.g., xcode7.2)
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-dev
30       - libcap-ng-dev
31       - libgcc-4.8-dev
32       - libgnutls-dev
33       - libgtk-3-dev
34       - libiscsi-dev
35       - liblttng-ust-dev
36       - libncurses5-dev
37       - libnfs-dev
38       - libnss3-dev
39       - libpixman-1-dev
40       - libpng12-dev
41       - librados-dev
42       - libsdl1.2-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       - libvte-2.91-dev
50       - sparse
51       - uuid-dev
52       - gcovr
53   homebrew:
54     packages:
55       - ccache
56       - glib
57       - pixman
58       - gnu-sed
59     update: true
62 # The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
63 # to prevent IRC notifications from forks. This was created using:
64 # $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu"
65 notifications:
66   irc:
67     channels:
68       - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM="
69     on_success: change
70     on_failure: always
73 env:
74   global:
75     - SRC_DIR="."
76     - BUILD_DIR="."
77     - BASE_CONFIG="--disable-docs --disable-tools"
78     - TEST_CMD="make check -j3 V=1"
79     # This is broadly a list of "mainline" softmmu targets which have support across the major distros
80     - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
81     - CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime"
82     - CCACHE_MAXSIZE=1G
85 git:
86   # we want to do this ourselves
87   submodules: false
90 before_script:
91   - if [ "$TRAVIS_OS_NAME" == "osx" ] ; then export PATH="/usr/local/opt/ccache/libexec:$PATH" ; fi
92   - command -v ccache && ccache --zero-stats
93   - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
94   - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
95 script:
96   - make -j3 && travis_retry ${TEST_CMD}
97 after_script:
98   - command -v ccache && ccache --show-stats
101 matrix:
102   include:
103     - env:
104         - CONFIG="--disable-system --static"
105         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
108     # we split the system builds as it takes a while to build them all
109     - env:
110         - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
111         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
114     - env:
115         - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
116         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
119     # Just build tools and run minimal unit and softfloat checks
120     - env:
121         - BASE_CONFIG="--enable-tools"
122         - CONFIG="--disable-user --disable-system"
123         - TEST_CMD="make check-unit check-softfloat -j3"
124         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
127     - env:
128         - CONFIG="--enable-debug --enable-debug-tcg --disable-user"
129         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug"
132     # TCG debug can be run just on it's own and is mostly agnostic to user/softmmu distinctions
133     - env:
134         - CONFIG="--enable-debug-tcg --disable-system"
135         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug"
138     - env:
139         - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}"
142     # Module builds are mostly of interest to major distros
143     - env:
144         - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}"
145         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
148     # Alternate coroutines implementations are only really of interest to KVM users
149     # However we can't test against KVM on Travis so we can only run unit tests
150     - env:
151         - CONFIG="--with-coroutine=ucontext --disable-tcg"
152         - TEST_CMD="make check-unit -j3 V=1"
155     - env:
156         - CONFIG="--with-coroutine=sigaltstack --disable-tcg"
157         - TEST_CMD="make check-unit -j3 V=1"
160     # Check we can build docs and tools (out of tree)
161     - env:
162         - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
163         - BASE_CONFIG="--enable-tools --enable-docs"
164         - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user"
165         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
166       addons:
167         apt:
168           packages:
169             - python-sphinx
170             - texinfo
171             - perl
174     # Test with Clang for compile portability (Travis uses clang-5.0)
175     - env:
176         - CONFIG="--disable-system"
177         - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default"
178       compiler: clang
181     - env:
182         - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
183         - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default"
184       compiler: clang
187     - env:
188         - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} "
189       compiler: clang
190       before_script:
191         - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; }
194     - env:
195         - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
196         - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default"
197       compiler: clang
200     # gprof/gcov are GCC features
201     - env:
202         - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}"
203       after_success:
204         - ${SRC_DIR}/scripts/travis/coverage-summary.sh
207     # We manually include builds which we disable "make check" for
208     - env:
209         - CONFIG="--without-default-devices --disable-user"
210         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
211         - TEST_CMD=""
214     # We manually include builds which we disable "make check" for
215     - env:
216         - CONFIG="--enable-debug --enable-tcg-interpreter"
217         - TEST_CMD=""
220     # We don't need to exercise every backend with every front-end
221     - env:
222         - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system"
223         - TEST_CMD=""
226     - env:
227         - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu"
228         - TEST_CMD=""
231     - env:
232         - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu"
233         - TEST_CMD=""
236     # MacOSX builds
237     - env:
238         - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS}"
239       os: osx
240       osx_image: xcode9.4
241       compiler: clang
244     - env:
245         - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu"
246       os: osx
247       osx_image: xcode10.2
248       compiler: clang
251     # Python builds
252     - env:
253         - CONFIG="--target-list=x86_64-softmmu"
254         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
255       language: python
256       python:
257         - "3.4"
260     - env:
261         - CONFIG="--target-list=x86_64-softmmu"
262         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
263       language: python
264       python:
265         - "3.6"
268     # Acceptance (Functional) tests
269     - env:
270         - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,aarch64-softmmu,arm-softmmu,s390x-softmmu,alpha-softmmu,ppc64-softmmu,m68k-softmmu"
271         - TEST_CMD="make check-acceptance"
272       after_failure:
273         - cat tests/results/latest/job.log
274       addons:
275         apt:
276           packages:
277             - python3-pil
278             - python3-pip
279             - python3.5-venv
280             - tesseract-ocr
281             - tesseract-ocr-eng
284     # Using newer GCC with sanitizers
285     - addons:
286         apt:
287           update: true
288           sources:
289             # PPAs for newer toolchains
290             - ubuntu-toolchain-r-test
291           packages:
292             # Extra toolchains
293             - gcc-9
294             - g++-9
295             # Build dependencies
296             - libaio-dev
297             - libattr1-dev
298             - libbrlapi-dev
299             - libcap-ng-dev
300             - libgnutls-dev
301             - libgtk-3-dev
302             - libiscsi-dev
303             - liblttng-ust-dev
304             - libnfs-dev
305             - libncurses5-dev
306             - libnss3-dev
307             - libpixman-1-dev
308             - libpng12-dev
309             - librados-dev
310             - libsdl1.2-dev
311             - libseccomp-dev
312             - libspice-protocol-dev
313             - libspice-server-dev
314             - libssh-dev
315             - liburcu-dev
316             - libusb-1.0-0-dev
317             - libvte-2.91-dev
318             - sparse
319             - uuid-dev
320       language: generic
321       compiler: none
322       env:
323         - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9
324         - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user"
325         - TEST_CMD=""
326       before_script:
327         - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; }
330     # Run check-tcg against linux-user
331     - env:
332         - CONFIG="--disable-system"
333         - TEST_CMD="make -j3 check-tcg V=1"
334         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
337     # Run check-tcg against softmmu targets
338     - env:
339         - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
340         - TEST_CMD="make -j3 check-tcg V=1"
341         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"