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