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