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