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 4os: linux 5dist: xenial 6language: c 7compiler: 8 - gcc 9cache: 10 # There is one cache per branch and compiler version. 11 # characteristics of each job are used to identify the cache: 12 # - OS name (currently only linux) 13 # - OS distribution (for Linux, xenial, trusty, or precise) 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 - libzstd-dev 52 - sparse 53 - uuid-dev 54 - gcovr 55 # Tests dependencies 56 - genisoimage 57 58 59# The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu 60# to prevent IRC notifications from forks. This was created using: 61# $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu" 62notifications: 63 irc: 64 channels: 65 - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM=" 66 on_success: change 67 on_failure: always 68 69 70env: 71 global: 72 - SRC_DIR=".." 73 - BUILD_DIR="build" 74 - BASE_CONFIG="--disable-docs --disable-tools" 75 - TEST_BUILD_CMD="" 76 - TEST_CMD="make check V=1" 77 # This is broadly a list of "mainline" softmmu targets which have support across the major distros 78 - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu" 79 - CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime" 80 - CCACHE_MAXSIZE=1G 81 - G_MESSAGES_DEBUG=error 82 83 84git: 85 # we want to do this ourselves 86 submodules: false 87 88# Common first phase for all steps 89before_install: 90 - if command -v ccache ; then ccache --zero-stats ; fi 91 - export JOBS=$(($(getconf _NPROCESSORS_ONLN) + 1)) 92 - echo "=== Using ${JOBS} simultaneous jobs ===" 93 94# Configure step - may be overridden 95before_script: 96 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} 97 - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; } 98 99# Main build & test - rarely overridden - controlled by TEST_CMD 100script: 101 - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$? 102 - | 103 if [ "$BUILD_RC" -eq 0 ] && [ -n "$TEST_BUILD_CMD" ]; then 104 ${TEST_BUILD_CMD} || BUILD_RC=$? 105 else 106 $(exit $BUILD_RC); 107 fi 108 - | 109 if [ "$BUILD_RC" -eq 0 ] ; then 110 ${TEST_CMD} ; 111 else 112 $(exit $BUILD_RC); 113 fi 114after_script: 115 - df -h 116 - if command -v ccache ; then ccache --show-stats ; fi 117 118 119jobs: 120 include: 121 - name: "GCC static (user)" 122 env: 123 - CONFIG="--disable-system --static" 124 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 125 126 127 # we split the system builds as it takes a while to build them all 128 - name: "GCC (main-softmmu)" 129 env: 130 - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}" 131 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 132 133 134 - name: "GCC (other-softmmu)" 135 env: 136 - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" 137 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 138 139 140 # Just build tools and run minimal unit and softfloat checks 141 - name: "GCC check-unit and check-softfloat" 142 env: 143 - BASE_CONFIG="--enable-tools" 144 - CONFIG="--disable-user --disable-system" 145 - TEST_CMD="make check-unit check-softfloat -j${JOBS}" 146 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 147 148 149 # --enable-debug implies --enable-debug-tcg, also runs quite a bit slower 150 - name: "GCC debug (main-softmmu)" 151 env: 152 - CONFIG="--enable-debug --target-list=${MAIN_SOFTMMU_TARGETS}" 153 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug" 154 155 156 # TCG debug can be run just on its own and is mostly agnostic to user/softmmu distinctions 157 - name: "GCC debug (user)" 158 env: 159 - CONFIG="--enable-debug-tcg --disable-system" 160 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 161 162 # Module builds are mostly of interest to major distros 163 - name: "GCC modules (main-softmmu)" 164 env: 165 - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}" 166 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 167 168 169 # Alternate coroutines implementations are only really of interest to KVM users 170 # However we can't test against KVM on Travis so we can only run unit tests 171 - name: "check-unit coroutine=ucontext" 172 env: 173 - CONFIG="--with-coroutine=ucontext --disable-tcg" 174 - TEST_CMD="make check-unit -j${JOBS} V=1" 175 176 177 - name: "check-unit coroutine=sigaltstack" 178 env: 179 - CONFIG="--with-coroutine=sigaltstack --disable-tcg" 180 - TEST_CMD="make check-unit -j${JOBS} V=1" 181 182 183 # Check we can build docs and tools (out of tree) 184 - name: "tools and docs (bionic)" 185 dist: bionic 186 env: 187 - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.." 188 - BASE_CONFIG="--enable-tools --enable-docs" 189 - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user" 190 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 191 addons: 192 apt: 193 packages: 194 - python3-sphinx 195 - texinfo 196 - perl 197 198 199 # Test with Clang for compile portability (Travis uses clang-5.0) 200 - name: "Clang (user)" 201 env: 202 - CONFIG="--disable-system --host-cc=clang --cxx=clang++" 203 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default" 204 compiler: clang 205 206 207 - name: "Clang (main-softmmu)" 208 env: 209 - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} 210 --host-cc=clang --cxx=clang++" 211 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-sanitize" 212 compiler: clang 213 before_script: 214 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} 215 - ${SRC_DIR}/configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; } 216 217 218 - name: "Clang (other-softmmu)" 219 env: 220 - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS} 221 --host-cc=clang --cxx=clang++" 222 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default" 223 compiler: clang 224 225 226 # gprof/gcov are GCC features 227 - name: "GCC gprof/gcov" 228 env: 229 - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}" 230 after_success: 231 - ${SRC_DIR}/scripts/travis/coverage-summary.sh 232 233 234 # We manually include builds which we disable "make check" for 235 - name: "GCC without-default-devices (softmmu)" 236 env: 237 - CONFIG="--without-default-devices --disable-user" 238 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 239 - TEST_CMD="" 240 241 242 # Check the TCG interpreter (TCI) 243 - name: "GCC TCI" 244 env: 245 - CONFIG="--enable-debug-tcg --enable-tcg-interpreter --disable-kvm --disable-containers 246 --target-list=alpha-softmmu,arm-softmmu,hppa-softmmu,m68k-softmmu,microblaze-softmmu,moxie-softmmu,ppc-softmmu,s390x-softmmu,x86_64-softmmu" 247 - TEST_CMD="make check-qtest check-tcg V=1" 248 249 250 # We don't need to exercise every backend with every front-end 251 - name: "GCC trace log,simple,syslog (user)" 252 env: 253 - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system" 254 - TEST_CMD="" 255 256 257 - name: "GCC trace ftrace (x86_64-softmmu)" 258 env: 259 - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu" 260 - TEST_CMD="" 261 262 263 - name: "GCC trace ust (x86_64-softmmu)" 264 env: 265 - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu" 266 - TEST_CMD="" 267 268 269 # Python builds 270 - name: "GCC Python 3.5 (x86_64-softmmu)" 271 env: 272 - CONFIG="--target-list=x86_64-softmmu" 273 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 274 language: python 275 python: 3.5 276 277 278 - name: "GCC Python 3.6 (x86_64-softmmu)" 279 env: 280 - CONFIG="--target-list=x86_64-softmmu" 281 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 282 language: python 283 python: 3.6 284 285 286 # Using newer GCC with sanitizers 287 - name: "GCC9 with sanitizers (softmmu)" 288 addons: 289 apt: 290 update: true 291 sources: 292 # PPAs for newer toolchains 293 - ubuntu-toolchain-r-test 294 packages: 295 # Extra toolchains 296 - gcc-9 297 - g++-9 298 # Build dependencies 299 - libaio-dev 300 - libattr1-dev 301 - libbrlapi-dev 302 - libcap-ng-dev 303 - libgnutls-dev 304 - libgtk-3-dev 305 - libiscsi-dev 306 - liblttng-ust-dev 307 - libnfs-dev 308 - libncurses5-dev 309 - libnss3-dev 310 - libpixman-1-dev 311 - libpng12-dev 312 - librados-dev 313 - libsdl2-dev 314 - libsdl2-image-dev 315 - libseccomp-dev 316 - libspice-protocol-dev 317 - libspice-server-dev 318 - libssh-dev 319 - liburcu-dev 320 - libusb-1.0-0-dev 321 - libvte-2.91-dev 322 - sparse 323 - uuid-dev 324 language: generic 325 compiler: none 326 env: 327 - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9 328 - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user" 329 - TEST_CMD="" 330 before_script: 331 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} 332 - ${SRC_DIR}/configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread" --extra-ldflags="-fuse-ld=gold" || { cat config.log && exit 1; } 333 334 335 # Run check-tcg against linux-user 336 - name: "GCC check-tcg (user)" 337 env: 338 - CONFIG="--disable-system --enable-debug-tcg" 339 - TEST_BUILD_CMD="make build-tcg" 340 - TEST_CMD="make check-tcg" 341 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 342 343 344 # Run check-tcg against linux-user (with plugins) 345 # we skip sparc64-linux-user until it has been fixed somewhat 346 # we skip cris-linux-user as it doesn't use the common run loop 347 # we skip ppc64abi32-linux-user as it seems to have a broken libc 348 - name: "GCC plugins check-tcg (user)" 349 env: 350 - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user,ppc64abi32-linux-user" 351 - TEST_BUILD_CMD="make build-tcg" 352 - TEST_CMD="make check-tcg" 353 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 354 355 356 # Run check-tcg against softmmu targets 357 - name: "GCC check-tcg (some-softmmu)" 358 env: 359 - CONFIG="--enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" 360 - TEST_BUILD_CMD="make build-tcg" 361 - TEST_CMD="make check-tcg" 362 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 363 364 365 # Run check-tcg against softmmu targets (with plugins) 366 - name: "GCC plugins check-tcg (some-softmmu)" 367 env: 368 - CONFIG="--enable-plugins --enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" 369 - TEST_BUILD_CMD="make build-tcg" 370 - TEST_CMD="make check-tcg" 371 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 372 373 - name: "[aarch64] GCC check-tcg" 374 arch: arm64 375 dist: xenial 376 addons: 377 apt_packages: 378 - libaio-dev 379 - libattr1-dev 380 - libbrlapi-dev 381 - libcap-ng-dev 382 - libgcrypt20-dev 383 - libgnutls28-dev 384 - libgtk-3-dev 385 - libiscsi-dev 386 - liblttng-ust-dev 387 - libncurses5-dev 388 - libnfs-dev 389 - libnss3-dev 390 - libpixman-1-dev 391 - libpng-dev 392 - librados-dev 393 - libsdl2-dev 394 - libseccomp-dev 395 - liburcu-dev 396 - libusb-1.0-0-dev 397 - libvdeplug-dev 398 - libvte-2.91-dev 399 # Tests dependencies 400 - genisoimage 401 env: 402 - TEST_CMD="make check check-tcg V=1" 403 - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS}" 404 - UNRELIABLE=true 405 406 - name: "[ppc64] GCC check-tcg" 407 arch: ppc64le 408 dist: xenial 409 addons: 410 apt_packages: 411 - libaio-dev 412 - libattr1-dev 413 - libbrlapi-dev 414 - libcap-ng-dev 415 - libgcrypt20-dev 416 - libgnutls28-dev 417 - libgtk-3-dev 418 - libiscsi-dev 419 - liblttng-ust-dev 420 - libncurses5-dev 421 - libnfs-dev 422 - libnss3-dev 423 - libpixman-1-dev 424 - libpng-dev 425 - librados-dev 426 - libsdl2-dev 427 - libseccomp-dev 428 - liburcu-dev 429 - libusb-1.0-0-dev 430 - libvdeplug-dev 431 - libvte-2.91-dev 432 # Tests dependencies 433 - genisoimage 434 env: 435 - TEST_CMD="make check check-tcg V=1" 436 - CONFIG="--disable-containers --target-list=ppc64-softmmu,ppc64le-linux-user" 437 438 - name: "[s390x] GCC check-tcg" 439 arch: s390x 440 dist: bionic 441 addons: 442 apt_packages: 443 - libaio-dev 444 - libattr1-dev 445 - libbrlapi-dev 446 - libcap-ng-dev 447 - libgcrypt20-dev 448 - libgnutls28-dev 449 - libgtk-3-dev 450 - libiscsi-dev 451 - liblttng-ust-dev 452 - libncurses5-dev 453 - libnfs-dev 454 - libnss3-dev 455 - libpixman-1-dev 456 - libpng-dev 457 - librados-dev 458 - libsdl2-dev 459 - libseccomp-dev 460 - liburcu-dev 461 - libusb-1.0-0-dev 462 - libvdeplug-dev 463 - libvte-2.91-dev 464 # Tests dependencies 465 - genisoimage 466 env: 467 - TEST_CMD="make check check-tcg V=1" 468 - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user" 469 - UNRELIABLE=true 470 script: 471 - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$? 472 - | 473 if [ "$BUILD_RC" -eq 0 ] ; then 474 mv pc-bios/s390-ccw/*.img pc-bios/ ; 475 ${TEST_CMD} ; 476 else 477 $(exit $BUILD_RC); 478 fi 479 480 - name: "[s390x] GCC (other-softmmu)" 481 arch: s390x 482 dist: bionic 483 addons: 484 apt_packages: 485 - libaio-dev 486 - libattr1-dev 487 - libcap-ng-dev 488 - libgnutls28-dev 489 - libiscsi-dev 490 - liblttng-ust-dev 491 - liblzo2-dev 492 - libncurses-dev 493 - libnfs-dev 494 - libnss3-dev 495 - libpixman-1-dev 496 - libsdl2-dev 497 - libsdl2-image-dev 498 - libseccomp-dev 499 - libsnappy-dev 500 - libzstd-dev 501 - nettle-dev 502 - xfslibs-dev 503 # Tests dependencies 504 - genisoimage 505 env: 506 - CONFIG="--disable-containers --audio-drv-list=sdl --disable-user 507 --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" 508 509 - name: "[s390x] GCC (user)" 510 arch: s390x 511 dist: bionic 512 addons: 513 apt_packages: 514 - libgcrypt20-dev 515 - libgnutls28-dev 516 env: 517 - CONFIG="--disable-containers --disable-system" 518 519 - name: "[s390x] Clang (disable-tcg)" 520 arch: s390x 521 dist: bionic 522 compiler: clang 523 addons: 524 apt_packages: 525 - libaio-dev 526 - libattr1-dev 527 - libbrlapi-dev 528 - libcap-ng-dev 529 - libgcrypt20-dev 530 - libgnutls28-dev 531 - libgtk-3-dev 532 - libiscsi-dev 533 - liblttng-ust-dev 534 - libncurses5-dev 535 - libnfs-dev 536 - libnss3-dev 537 - libpixman-1-dev 538 - libpng-dev 539 - librados-dev 540 - libsdl2-dev 541 - libseccomp-dev 542 - liburcu-dev 543 - libusb-1.0-0-dev 544 - libvdeplug-dev 545 - libvte-2.91-dev 546 env: 547 - TEST_CMD="make check-unit" 548 - CONFIG="--disable-containers --disable-tcg --enable-kvm 549 --disable-tools --host-cc=clang --cxx=clang++" 550 - UNRELIABLE=true 551 552 # Release builds 553 # The make-release script expect a QEMU version, so our tag must start with a 'v'. 554 # This is the case when release candidate tags are created. 555 - name: "Release tarball" 556 if: tag IS present AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/ 557 env: 558 # We want to build from the release tarball 559 - BUILD_DIR="release/build/dir" SRC_DIR="../../.." 560 - BASE_CONFIG="--prefix=$PWD/dist" 561 - CONFIG="--target-list=x86_64-softmmu,aarch64-softmmu,armeb-linux-user,ppc-linux-user" 562 - TEST_CMD="make install -j${JOBS}" 563 - QEMU_VERSION="${TRAVIS_TAG:1}" 564 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 565 script: 566 - make -C ${SRC_DIR} qemu-${QEMU_VERSION}.tar.bz2 567 - ls -l ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 568 - tar -xf ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION} 569 - mkdir -p release-build && cd release-build 570 - ../configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; } 571 - make install 572 allow_failures: 573 - env: UNRELIABLE=true 574