travis: don't clone git submodules upfront
[qemu/ericb.git] / .travis.yml
blobfa7042945964d8d1bf05fa7e12475a0bad00e74f
1 # The current Travis default is a container based 14.04 Trust on EC2
2 # Additional builds with specific requirements for a full VM need to
3 # be added as additional matrix: entries later on
5 sudo: false
6 dist: trusty
7 language: c
8 python:
9   - "2.6"
10 compiler:
11   - gcc
12 cache: ccache
15 addons:
16   apt:
17     packages:
18       # Build dependencies
19       - libaio-dev
20       - libattr1-dev
21       - libbrlapi-dev
22       - libcap-ng-dev
23       - libgcc-4.8-dev
24       - libgnutls-dev
25       - libgtk-3-dev
26       - libiscsi-dev
27       - liblttng-ust-dev
28       - libncurses5-dev
29       - libnfs-dev
30       - libnss3-dev
31       - libpixman-1-dev
32       - libpng12-dev
33       - librados-dev
34       - libsdl1.2-dev
35       - libseccomp-dev
36       - libspice-protocol-dev
37       - libspice-server-dev
38       - libssh2-1-dev
39       - liburcu-dev
40       - libusb-1.0-0-dev
41       - libvte-2.90-dev
42       - sparse
43       - uuid-dev
44       - gcovr
47 # The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
48 # to prevent IRC notifications from forks. This was created using:
49 # $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu"
50 notifications:
51   irc:
52     channels:
53       - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM="
54     on_success: change
55     on_failure: always
58 env:
59   global:
60     - SRC_DIR="."
61     - BUILD_DIR="."
62     - TEST_CMD="make check"
63     - MAKEFLAGS="-j3"
66 git:
67   # we want to do this ourselves
68   submodules: false
71 before_install:
72   - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update ; fi
73   - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install libffi gettext glib pixman ; fi
74 before_script:
75   - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
76   - ${SRC_DIR}/configure ${CONFIG} || { cat config.log && exit 1; }
77 script:
78   - make ${MAKEFLAGS} && ${TEST_CMD}
81 matrix:
82   include:
83     - env:
84         - CONFIG="--disable-system"
87     - env:
88         - CONFIG="--disable-user"
91     - env:
92         - CONFIG="--enable-debug --enable-debug-tcg"
95     - env:
96         - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-uuid --disable-libusb --disable-user"
99     - env:
100         - CONFIG="--enable-modules --disable-linux-user"
103     - env:
104         - CONFIG="--with-coroutine=ucontext --disable-linux-user"
107     - env:
108         - CONFIG="--with-coroutine=sigaltstack --disable-linux-user"
111     # Test out-of-tree builds
112     - env:
113         - CONFIG="--enable-debug --enable-debug-tcg"
114         - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
117     # Test with Clang for compile portability (Travis uses clang-5.0)
118     - env:
119         - CONFIG="--disable-system"
120       compiler: clang
123     - env:
124         - CONFIG="--disable-user"
125       compiler: clang
128     # gprof/gcov are GCC features
129     - env:
130         - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
131       after_success:
132         - ${SRC_DIR}/scripts/travis/coverage-summary.sh
133       compiler: gcc
136     # We manually include builds which we disable "make check" for
137     - env:
138         - CONFIG="--enable-debug --enable-tcg-interpreter"
139         - TEST_CMD=""
140       compiler: gcc
143     # We don't need to exercise every backend with every front-end
144     - env:
145         - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system"
146         - TEST_CMD=""
147       compiler: gcc
150     - env:
151         - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu"
152         - TEST_CMD=""
153       compiler: gcc
156     - env:
157         - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu"
158         - TEST_CMD=""
159       compiler: gcc
162     - env:
163         - CONFIG="--disable-tcg"
164         - TEST_CMD=""
165       compiler: gcc
168     # MacOSX builds
169     - env:
170         - CONFIG="--target-list=aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
171       os: osx
172       osx_image: xcode9.4
173       compiler: clang
176     - env:
177         - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu"
178       os: osx
179       osx_image: xcode10
180       compiler: clang
183     # Python builds
184     - env:
185         - CONFIG="--target-list=x86_64-softmmu"
186       python:
187         - "3.0"
190     - env:
191         - CONFIG="--target-list=x86_64-softmmu"
192       python:
193         - "3.6"
196     # Acceptance (Functional) tests
197     - env:
198         - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu"
199         - TEST_CMD="make AVOCADO_SHOW=app check-acceptance"
200       addons:
201         apt:
202           packages:
203             - python3-pip
204             - python3.4-venv
207     # Using newer GCC with sanitizers
208     - addons:
209         apt:
210           update: true
211           sources:
212             # PPAs for newer toolchains
213             - ubuntu-toolchain-r-test
214           packages:
215             # Extra toolchains
216             - gcc-7
217             - g++-7
218             # Build dependencies
219             - libaio-dev
220             - libattr1-dev
221             - libbrlapi-dev
222             - libcap-ng-dev
223             - libgnutls-dev
224             - libgtk-3-dev
225             - libiscsi-dev
226             - liblttng-ust-dev
227             - libnfs-dev
228             - libncurses5-dev
229             - libnss3-dev
230             - libpixman-1-dev
231             - libpng12-dev
232             - librados-dev
233             - libsdl1.2-dev
234             - libseccomp-dev
235             - libspice-protocol-dev
236             - libspice-server-dev
237             - libssh2-1-dev
238             - liburcu-dev
239             - libusb-1.0-0-dev
240             - libvte-2.90-dev
241             - sparse
242             - uuid-dev
243       language: generic
244       compiler: none
245       env:
246         - COMPILER_NAME=gcc CXX=g++-7 CC=gcc-7
247         - CONFIG="--cc=gcc-7 --cxx=g++-7 --disable-pie --disable-linux-user"
248         - TEST_CMD=""
249       before_script:
250         - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; }
253     - env:
254         - CONFIG="--disable-system --disable-docs"
255         - TEST_CMD="make check-tcg"
256       script:
257         - make ${MAKEFLAGS} && ${TEST_CMD} ${MAKEFLAGS}
258       sudo: required
259       dist: trusty
260       compiler: gcc