]> git.proxmox.com Git - mirror_qemu.git/blob - .travis.yml
.travis.yml: Enable multiple caching features
[mirror_qemu.git] / .travis.yml
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 ccache: true
10
11
12 addons:
13 apt:
14 packages:
15 # Build dependencies
16 - libaio-dev
17 - libattr1-dev
18 - libbrlapi-dev
19 - libcap-ng-dev
20 - libgcc-4.8-dev
21 - libgnutls-dev
22 - libgtk-3-dev
23 - libiscsi-dev
24 - liblttng-ust-dev
25 - libncurses5-dev
26 - libnfs-dev
27 - libnss3-dev
28 - libpixman-1-dev
29 - libpng12-dev
30 - librados-dev
31 - libsdl1.2-dev
32 - libseccomp-dev
33 - libspice-protocol-dev
34 - libspice-server-dev
35 - libssh-dev
36 - liburcu-dev
37 - libusb-1.0-0-dev
38 - libvte-2.91-dev
39 - sparse
40 - uuid-dev
41 - gcovr
42 homebrew:
43 packages:
44 - glib
45 - pixman
46 - gnu-sed
47 update: true
48
49
50 # The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
51 # to prevent IRC notifications from forks. This was created using:
52 # $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu"
53 notifications:
54 irc:
55 channels:
56 - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM="
57 on_success: change
58 on_failure: always
59
60
61 env:
62 global:
63 - SRC_DIR="."
64 - BUILD_DIR="."
65 - BASE_CONFIG="--disable-docs --disable-tools"
66 - TEST_CMD="make check -j3 V=1"
67 # This is broadly a list of "mainline" softmmu targets which have support across the major distros
68 - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
69
70 git:
71 # we want to do this ourselves
72 submodules: false
73
74
75 before_script:
76 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
77 - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
78 script:
79 - make -j3 && travis_retry ${TEST_CMD}
80
81
82 matrix:
83 include:
84 - env:
85 - CONFIG="--disable-system --static"
86
87
88 # we split the system builds as it takes a while to build them all
89 - env:
90 - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
91
92
93 - env:
94 - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
95
96
97 # Just build tools and run minimal unit and softfloat checks
98 - env:
99 - BASE_CONFIG="--enable-tools"
100 - CONFIG="--disable-user --disable-system"
101 - TEST_CMD="make check-unit check-softfloat -j3"
102
103 - env:
104 - CONFIG="--enable-debug --enable-debug-tcg --disable-user"
105
106
107 # TCG debug can be run just on it's own and is mostly agnostic to user/softmmu distinctions
108 - env:
109 - CONFIG="--enable-debug-tcg --disable-system"
110
111
112 - env:
113 - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}"
114
115
116 # Module builds are mostly of interest to major distros
117 - env:
118 - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}"
119
120
121 # Alternate coroutines implementations are only really of interest to KVM users
122 # However we can't test against KVM on Travis so we can only run unit tests
123 - env:
124 - CONFIG="--with-coroutine=ucontext --disable-tcg"
125 - TEST_CMD="make check-unit -j3 V=1"
126
127
128 - env:
129 - CONFIG="--with-coroutine=sigaltstack --disable-tcg"
130 - TEST_CMD="make check-unit -j3 V=1"
131
132
133 # Check we can build docs and tools (out of tree)
134 - env:
135 - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
136 - BASE_CONFIG="--enable-tools --enable-docs"
137 - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user"
138 addons:
139 apt:
140 packages:
141 - python-sphinx
142 - texinfo
143 - perl
144
145
146 # Test with Clang for compile portability (Travis uses clang-5.0)
147 - env:
148 - CONFIG="--disable-system"
149 compiler: clang
150
151
152 - env:
153 - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
154 compiler: clang
155
156
157 - env:
158 - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} "
159 compiler: clang
160 before_script:
161 - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; }
162
163
164 - env:
165 - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
166 compiler: clang
167
168
169 # gprof/gcov are GCC features
170 - env:
171 - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}"
172 after_success:
173 - ${SRC_DIR}/scripts/travis/coverage-summary.sh
174
175
176 # We manually include builds which we disable "make check" for
177 - env:
178 - CONFIG="--without-default-devices --disable-user"
179 - TEST_CMD=""
180
181
182 # We manually include builds which we disable "make check" for
183 - env:
184 - CONFIG="--enable-debug --enable-tcg-interpreter"
185 - TEST_CMD=""
186
187
188 # We don't need to exercise every backend with every front-end
189 - env:
190 - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system"
191 - TEST_CMD=""
192
193
194 - env:
195 - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu"
196 - TEST_CMD=""
197
198
199 - env:
200 - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu"
201 - TEST_CMD=""
202
203
204 # MacOSX builds
205 - env:
206 - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS}"
207 os: osx
208 osx_image: xcode9.4
209 compiler: clang
210
211
212 - env:
213 - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu"
214 os: osx
215 osx_image: xcode10.2
216 compiler: clang
217
218
219 # Python builds
220 - env:
221 - CONFIG="--target-list=x86_64-softmmu"
222 language: python
223 python:
224 - "3.4"
225
226
227 - env:
228 - CONFIG="--target-list=x86_64-softmmu"
229 language: python
230 python:
231 - "3.6"
232
233
234 # Acceptance (Functional) tests
235 - env:
236 - 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"
237 - TEST_CMD="make check-acceptance"
238 after_failure:
239 - cat tests/results/latest/job.log
240 addons:
241 apt:
242 packages:
243 - python3-pil
244 - python3-pip
245 - python3.5-venv
246 - tesseract-ocr
247 - tesseract-ocr-eng
248
249
250 # Using newer GCC with sanitizers
251 - addons:
252 apt:
253 update: true
254 sources:
255 # PPAs for newer toolchains
256 - ubuntu-toolchain-r-test
257 packages:
258 # Extra toolchains
259 - gcc-9
260 - g++-9
261 # Build dependencies
262 - libaio-dev
263 - libattr1-dev
264 - libbrlapi-dev
265 - libcap-ng-dev
266 - libgnutls-dev
267 - libgtk-3-dev
268 - libiscsi-dev
269 - liblttng-ust-dev
270 - libnfs-dev
271 - libncurses5-dev
272 - libnss3-dev
273 - libpixman-1-dev
274 - libpng12-dev
275 - librados-dev
276 - libsdl1.2-dev
277 - libseccomp-dev
278 - libspice-protocol-dev
279 - libspice-server-dev
280 - libssh-dev
281 - liburcu-dev
282 - libusb-1.0-0-dev
283 - libvte-2.91-dev
284 - sparse
285 - uuid-dev
286 language: generic
287 compiler: none
288 env:
289 - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9
290 - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user"
291 - TEST_CMD=""
292 before_script:
293 - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; }
294
295
296 # Run check-tcg against linux-user
297 - env:
298 - CONFIG="--disable-system"
299 - TEST_CMD="make -j3 check-tcg V=1"
300
301 # Run check-tcg against softmmu targets
302 - env:
303 - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
304 - TEST_CMD="make -j3 check-tcg V=1"