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="--target-list=${MAIN_SOFTMMU_TARGETS} " 157 compiler: clang 158 before_script: 159 - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; } 160 161 162 - env: 163 - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" 164 compiler: clang 165 166 167 # gprof/gcov are GCC features 168 - env: 169 - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}" 170 after_success: 171 - ${SRC_DIR}/scripts/travis/coverage-summary.sh 172 173 174 # We manually include builds which we disable "make check" for 175 - env: 176 - CONFIG="--without-default-devices --disable-user" 177 - TEST_CMD="" 178 179 180 # We manually include builds which we disable "make check" for 181 - env: 182 - CONFIG="--enable-debug --enable-tcg-interpreter" 183 - TEST_CMD="" 184 185 186 # We don't need to exercise every backend with every front-end 187 - env: 188 - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system" 189 - TEST_CMD="" 190 191 192 - env: 193 - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu" 194 - TEST_CMD="" 195 196 197 - env: 198 - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu" 199 - TEST_CMD="" 200 201 202 # MacOSX builds 203 - env: 204 - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS}" 205 os: osx 206 osx_image: xcode9.4 207 compiler: clang 208 209 210 - env: 211 - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu" 212 os: osx 213 osx_image: xcode10.2 214 compiler: clang 215 216 217 # Python builds 218 - env: 219 - CONFIG="--target-list=x86_64-softmmu" 220 language: python 221 python: 222 - "3.4" 223 224 225 - env: 226 - CONFIG="--target-list=x86_64-softmmu" 227 language: python 228 python: 229 - "3.6" 230 231 232 # Acceptance (Functional) tests 233 - env: 234 - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,aarch64-softmmu,arm-softmmu,s390x-softmmu,alpha-softmmu" 235 - TEST_CMD="make AVOCADO_SHOW=test check-acceptance" 236 addons: 237 apt: 238 packages: 239 - python3-pip 240 - python3.5-venv 241 # Using newer GCC with sanitizers 242 - addons: 243 apt: 244 update: true 245 sources: 246 # PPAs for newer toolchains 247 - ubuntu-toolchain-r-test 248 packages: 249 # Extra toolchains 250 - gcc-9 251 - g++-9 252 # Build dependencies 253 - libaio-dev 254 - libattr1-dev 255 - libbrlapi-dev 256 - libcap-ng-dev 257 - libgnutls-dev 258 - libgtk-3-dev 259 - libiscsi-dev 260 - liblttng-ust-dev 261 - libnfs-dev 262 - libncurses5-dev 263 - libnss3-dev 264 - libpixman-1-dev 265 - libpng12-dev 266 - librados-dev 267 - libsdl1.2-dev 268 - libseccomp-dev 269 - libspice-protocol-dev 270 - libspice-server-dev 271 - libssh2-1-dev 272 - liburcu-dev 273 - libusb-1.0-0-dev 274 - libvte-2.91-dev 275 - sparse 276 - uuid-dev 277 language: generic 278 compiler: none 279 env: 280 - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9 281 - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user" 282 - TEST_CMD="" 283 before_script: 284 - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; } 285 286 287 # Run check-tcg against linux-user 288 - env: 289 - CONFIG="--disable-system" 290 - TEST_CMD="make -j3 check-tcg V=1" 291 292 # Run check-tcg against softmmu targets 293 - env: 294 - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" 295 - TEST_CMD="make -j3 check-tcg V=1" 296