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: 9 # There is one cache per branch and compiler version. 10 # characteristics of each job are used to identify the cache: 11 # - OS name (currently, linux, osx, or windows) 12 # - OS distribution (for Linux, xenial, trusty, or precise) 13 # - macOS image name (e.g., xcode7.2) 14 # - Names and values of visible environment variables set in .travis.yml or Settings panel 15 timeout: 1200 16 ccache: true 17 pip: true 18 directories: 19 - $HOME/avocado/data/cache 20 21 22addons: 23 apt: 24 packages: 25 # Build dependencies 26 - libaio-dev 27 - libattr1-dev 28 - libbrlapi-dev 29 - libcap-ng-dev 30 - libgcc-4.8-dev 31 - libgnutls28-dev 32 - libgtk-3-dev 33 - libiscsi-dev 34 - liblttng-ust-dev 35 - libncurses5-dev 36 - libnfs-dev 37 - libnss3-dev 38 - libpixman-1-dev 39 - libpng-dev 40 - librados-dev 41 - libsdl2-dev 42 - libsdl2-image-dev 43 - libseccomp-dev 44 - libspice-protocol-dev 45 - libspice-server-dev 46 - libssh-dev 47 - liburcu-dev 48 - libusb-1.0-0-dev 49 - libvdeplug-dev 50 - libvte-2.91-dev 51 - sparse 52 - uuid-dev 53 - gcovr 54 55 56# The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu 57# to prevent IRC notifications from forks. This was created using: 58# $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu" 59notifications: 60 irc: 61 channels: 62 - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM=" 63 on_success: change 64 on_failure: always 65 66 67env: 68 global: 69 - SRC_DIR=".." 70 - BUILD_DIR="build" 71 - BASE_CONFIG="--disable-docs --disable-tools" 72 - TEST_CMD="make check V=1" 73 # This is broadly a list of "mainline" softmmu targets which have support across the major distros 74 - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu" 75 - CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime" 76 - CCACHE_MAXSIZE=1G 77 78 79git: 80 # we want to do this ourselves 81 submodules: false 82 83 84before_script: 85 - if command -v ccache ; then ccache --zero-stats ; fi 86 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} 87 - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; } 88script: 89 - BUILD_RC=0 && make -j3 || BUILD_RC=$? 90 - if [ "$BUILD_RC" -eq 0 ] ; then travis_retry ${TEST_CMD} ; else $(exit $BUILD_RC); fi 91after_script: 92 - if command -v ccache ; then ccache --show-stats ; fi 93 94 95matrix: 96 include: 97 - env: 98 - CONFIG="--disable-system --static" 99 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 100 101 102 # we split the system builds as it takes a while to build them all 103 - env: 104 - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}" 105 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 106 107 108 - env: 109 - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" 110 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 111 112 113 # Just build tools and run minimal unit and softfloat checks 114 - env: 115 - BASE_CONFIG="--enable-tools" 116 - CONFIG="--disable-user --disable-system" 117 - TEST_CMD="make check-unit check-softfloat -j3" 118 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 119 120 121 # --enable-debug implies --enable-debug-tcg, also runs quite a bit slower 122 - env: 123 - CONFIG="--enable-debug --target-list=${MAIN_SOFTMMU_TARGETS}" 124 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug" 125 126 127 # TCG debug can be run just on its own and is mostly agnostic to user/softmmu distinctions 128 - env: 129 - CONFIG="--enable-debug-tcg --disable-system" 130 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 131 132 133 - env: 134 - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}" 135 136 137 # Module builds are mostly of interest to major distros 138 - env: 139 - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}" 140 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 141 142 143 # Alternate coroutines implementations are only really of interest to KVM users 144 # However we can't test against KVM on Travis so we can only run unit tests 145 - env: 146 - CONFIG="--with-coroutine=ucontext --disable-tcg" 147 - TEST_CMD="make check-unit -j3 V=1" 148 149 150 - env: 151 - CONFIG="--with-coroutine=sigaltstack --disable-tcg" 152 - TEST_CMD="make check-unit -j3 V=1" 153 154 155 # Check we can build docs and tools (out of tree) 156 - env: 157 - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.." 158 - BASE_CONFIG="--enable-tools --enable-docs" 159 - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user" 160 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 161 addons: 162 apt: 163 packages: 164 - python-sphinx 165 - texinfo 166 - perl 167 168 169 # Test with Clang for compile portability (Travis uses clang-5.0) 170 - env: 171 - CONFIG="--disable-system" 172 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default" 173 compiler: clang 174 175 176 - env: 177 - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} " 178 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-sanitize" 179 compiler: clang 180 before_script: 181 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} 182 - ${SRC_DIR}/configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; } 183 184 185 - env: 186 - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" 187 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default" 188 compiler: clang 189 190 191 # gprof/gcov are GCC features 192 - env: 193 - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}" 194 after_success: 195 - ${SRC_DIR}/scripts/travis/coverage-summary.sh 196 197 198 # We manually include builds which we disable "make check" for 199 - env: 200 - CONFIG="--without-default-devices --disable-user" 201 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 202 - TEST_CMD="" 203 204 205 # Check the TCG interpreter (TCI) 206 - env: 207 - CONFIG="--enable-debug-tcg --enable-tcg-interpreter --disable-kvm --disable-containers 208 --target-list=alpha-softmmu,arm-softmmu,hppa-softmmu,m68k-softmmu,microblaze-softmmu,moxie-softmmu,ppc-softmmu,s390x-softmmu,x86_64-softmmu" 209 - TEST_CMD="make check-qtest check-tcg V=1" 210 211 212 # We don't need to exercise every backend with every front-end 213 - env: 214 - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system" 215 - TEST_CMD="" 216 217 218 - env: 219 - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu" 220 - TEST_CMD="" 221 222 223 - env: 224 - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu" 225 - TEST_CMD="" 226 227 228 # MacOSX builds - cirrus.yml also tests some MacOS builds including latest Xcode 229 230 - env: 231 - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu" 232 os: osx 233 osx_image: xcode10.3 234 compiler: clang 235 addons: 236 homebrew: 237 packages: 238 - ccache 239 - glib 240 - pixman 241 - gnu-sed 242 - python 243 update: true 244 before_script: 245 - brew link --overwrite python 246 - export PATH="/usr/local/opt/ccache/libexec:$PATH" 247 - if command -v ccache ; then ccache --zero-stats ; fi 248 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} 249 - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; } 250 251 252 # Python builds 253 - env: 254 - CONFIG="--target-list=x86_64-softmmu" 255 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 256 language: python 257 python: 258 - "3.5" 259 260 261 - env: 262 - CONFIG="--target-list=x86_64-softmmu" 263 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 264 language: python 265 python: 266 - "3.6" 267 268 269 # Acceptance (Functional) tests 270 - env: 271 - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,aarch64-softmmu,arm-softmmu,s390x-softmmu,alpha-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,sparc-softmmu" 272 - TEST_CMD="make check-acceptance" 273 after_script: 274 - python3 -c 'import json; r = json.load(open("tests/results/latest/results.json")); [print(t["logfile"]) for t in r["tests"] if t["status"] not in ("PASS", "SKIP")]' | xargs cat 275 addons: 276 apt: 277 packages: 278 - python3-pil 279 - python3-pip 280 - python3.5-venv 281 - tesseract-ocr 282 - tesseract-ocr-eng 283 284 285 # Using newer GCC with sanitizers 286 - addons: 287 apt: 288 update: true 289 sources: 290 # PPAs for newer toolchains 291 - ubuntu-toolchain-r-test 292 packages: 293 # Extra toolchains 294 - gcc-9 295 - g++-9 296 # Build dependencies 297 - libaio-dev 298 - libattr1-dev 299 - libbrlapi-dev 300 - libcap-ng-dev 301 - libgnutls-dev 302 - libgtk-3-dev 303 - libiscsi-dev 304 - liblttng-ust-dev 305 - libnfs-dev 306 - libncurses5-dev 307 - libnss3-dev 308 - libpixman-1-dev 309 - libpng12-dev 310 - librados-dev 311 - libsdl2-dev 312 - libsdl2-image-dev 313 - libseccomp-dev 314 - libspice-protocol-dev 315 - libspice-server-dev 316 - libssh-dev 317 - liburcu-dev 318 - libusb-1.0-0-dev 319 - libvte-2.91-dev 320 - sparse 321 - uuid-dev 322 language: generic 323 compiler: none 324 env: 325 - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9 326 - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user" 327 - TEST_CMD="" 328 before_script: 329 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} 330 - ${SRC_DIR}/configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; } 331 332 333 # Run check-tcg against linux-user 334 - env: 335 - CONFIG="--disable-system --enable-debug-tcg" 336 - TEST_CMD="make -j3 check-tcg V=1" 337 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 338 339 340 # Run check-tcg against linux-user (with plugins) 341 # we skip sparc64-linux-user until it has been fixed somewhat 342 - env: 343 - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user" 344 - TEST_CMD="make -j3 check-tcg V=1" 345 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 346 347 348 # Run check-tcg against softmmu targets 349 - env: 350 - CONFIG="--enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" 351 - TEST_CMD="make -j3 check-tcg V=1" 352 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 353 354 355 # Run check-tcg against softmmu targets (with plugins) 356 - env: 357 - CONFIG="--enable-plugins --enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" 358 - TEST_CMD="make -j3 check-tcg V=1" 359 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 360 361 - arch: arm64 362 dist: xenial 363 addons: 364 apt_packages: 365 - libaio-dev 366 - libattr1-dev 367 - libbrlapi-dev 368 - libcap-ng-dev 369 - libgcrypt20-dev 370 - libgnutls28-dev 371 - libgtk-3-dev 372 - libiscsi-dev 373 - liblttng-ust-dev 374 - libncurses5-dev 375 - libnfs-dev 376 - libnss3-dev 377 - libpixman-1-dev 378 - libpng-dev 379 - librados-dev 380 - libsdl2-dev 381 - libseccomp-dev 382 - liburcu-dev 383 - libusb-1.0-0-dev 384 - libvdeplug-dev 385 - libvte-2.91-dev 386 env: 387 - TEST_CMD="make check check-tcg V=1" 388 - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS}" 389 390 - arch: ppc64le 391 dist: xenial 392 addons: 393 apt_packages: 394 - libaio-dev 395 - libattr1-dev 396 - libbrlapi-dev 397 - libcap-ng-dev 398 - libgcrypt20-dev 399 - libgnutls28-dev 400 - libgtk-3-dev 401 - libiscsi-dev 402 - liblttng-ust-dev 403 - libncurses5-dev 404 - libnfs-dev 405 - libnss3-dev 406 - libpixman-1-dev 407 - libpng-dev 408 - librados-dev 409 - libsdl2-dev 410 - libseccomp-dev 411 - liburcu-dev 412 - libusb-1.0-0-dev 413 - libvdeplug-dev 414 - libvte-2.91-dev 415 env: 416 - TEST_CMD="make check check-tcg V=1" 417 - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},ppc64le-linux-user" 418 419 - arch: s390x 420 dist: bionic 421 addons: 422 apt_packages: 423 - libaio-dev 424 - libattr1-dev 425 - libbrlapi-dev 426 - libcap-ng-dev 427 - libgcrypt20-dev 428 - libgnutls28-dev 429 - libgtk-3-dev 430 - libiscsi-dev 431 - liblttng-ust-dev 432 - libncurses5-dev 433 - libnfs-dev 434 - libnss3-dev 435 - libpixman-1-dev 436 - libpng-dev 437 - librados-dev 438 - libsdl2-dev 439 - libseccomp-dev 440 - liburcu-dev 441 - libusb-1.0-0-dev 442 - libvdeplug-dev 443 - libvte-2.91-dev 444 env: 445 - TEST_CMD="make check check-tcg V=1" 446 - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user" 447 448 # Release builds 449 # The make-release script expect a QEMU version, so our tag must start with a 'v'. 450 # This is the case when release candidate tags are created. 451 - if: tag IS present AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/ 452 env: 453 # We want to build from the release tarball 454 - BUILD_DIR="release/build/dir" SRC_DIR="../../.." 455 - BASE_CONFIG="--prefix=$PWD/dist" 456 - CONFIG="--target-list=x86_64-softmmu,aarch64-softmmu,armeb-linux-user,ppc-linux-user" 457 - TEST_CMD="make install -j3" 458 - QEMU_VERSION="${TRAVIS_TAG:1}" 459 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 460 before_script: 461 - command -v ccache && ccache --zero-stats 462 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} 463 script: 464 - make -C ${SRC_DIR} qemu-${QEMU_VERSION}.tar.bz2 465 - ls -l ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 466 - tar -xf ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION} 467 - mkdir -p release-build && cd release-build 468 - ../configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; } 469 - make install 470