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-softfloat (user)" 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 163 - name: "GCC some libs disabled (main-softmmu)" 164 env: 165 - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}" 166 167 168 # Module builds are mostly of interest to major distros 169 - name: "GCC modules (main-softmmu)" 170 env: 171 - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}" 172 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 173 174 175 # Alternate coroutines implementations are only really of interest to KVM users 176 # However we can't test against KVM on Travis so we can only run unit tests 177 - name: "check-unit coroutine=ucontext" 178 env: 179 - CONFIG="--with-coroutine=ucontext --disable-tcg" 180 - TEST_CMD="make check-unit -j${JOBS} V=1" 181 182 183 - name: "check-unit coroutine=sigaltstack" 184 env: 185 - CONFIG="--with-coroutine=sigaltstack --disable-tcg" 186 - TEST_CMD="make check-unit -j${JOBS} V=1" 187 188 189 # Check we can build docs and tools (out of tree) 190 - name: "tools and docs (bionic)" 191 dist: bionic 192 env: 193 - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.." 194 - BASE_CONFIG="--enable-tools --enable-docs" 195 - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user" 196 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 197 addons: 198 apt: 199 packages: 200 - python3-sphinx 201 - texinfo 202 - perl 203 204 205 # Test with Clang for compile portability (Travis uses clang-5.0) 206 - name: "Clang (user)" 207 env: 208 - CONFIG="--disable-system --host-cc=clang --cxx=clang++" 209 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default" 210 compiler: clang 211 212 213 - name: "Clang (main-softmmu)" 214 env: 215 - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} 216 --host-cc=clang --cxx=clang++" 217 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-sanitize" 218 compiler: clang 219 before_script: 220 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} 221 - ${SRC_DIR}/configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; } 222 223 224 - name: "Clang (other-softmmu)" 225 env: 226 - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS} 227 --host-cc=clang --cxx=clang++" 228 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default" 229 compiler: clang 230 231 232 # gprof/gcov are GCC features 233 - name: "GCC gprof/gcov" 234 env: 235 - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}" 236 after_success: 237 - ${SRC_DIR}/scripts/travis/coverage-summary.sh 238 239 240 # We manually include builds which we disable "make check" for 241 - name: "GCC without-default-devices (softmmu)" 242 env: 243 - CONFIG="--without-default-devices --disable-user" 244 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 245 - TEST_CMD="" 246 247 248 # Check the TCG interpreter (TCI) 249 - name: "GCC TCI" 250 env: 251 - CONFIG="--enable-debug-tcg --enable-tcg-interpreter --disable-kvm --disable-containers 252 --target-list=alpha-softmmu,arm-softmmu,hppa-softmmu,m68k-softmmu,microblaze-softmmu,moxie-softmmu,ppc-softmmu,s390x-softmmu,x86_64-softmmu" 253 - TEST_CMD="make check-qtest check-tcg V=1" 254 255 256 # We don't need to exercise every backend with every front-end 257 - name: "GCC trace log,simple,syslog (user)" 258 env: 259 - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system" 260 - TEST_CMD="" 261 262 263 - name: "GCC trace ftrace (x86_64-softmmu)" 264 env: 265 - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu" 266 - TEST_CMD="" 267 268 269 - name: "GCC trace ust (x86_64-softmmu)" 270 env: 271 - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu" 272 - TEST_CMD="" 273 274 275 # Python builds 276 - name: "GCC Python 3.5 (x86_64-softmmu)" 277 env: 278 - CONFIG="--target-list=x86_64-softmmu" 279 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 280 language: python 281 python: 3.5 282 283 284 - name: "GCC Python 3.6 (x86_64-softmmu)" 285 env: 286 - CONFIG="--target-list=x86_64-softmmu" 287 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 288 language: python 289 python: 3.6 290 291 292 # Using newer GCC with sanitizers 293 - name: "GCC9 with sanitizers (softmmu)" 294 addons: 295 apt: 296 update: true 297 sources: 298 # PPAs for newer toolchains 299 - ubuntu-toolchain-r-test 300 packages: 301 # Extra toolchains 302 - gcc-9 303 - g++-9 304 # Build dependencies 305 - libaio-dev 306 - libattr1-dev 307 - libbrlapi-dev 308 - libcap-ng-dev 309 - libgnutls-dev 310 - libgtk-3-dev 311 - libiscsi-dev 312 - liblttng-ust-dev 313 - libnfs-dev 314 - libncurses5-dev 315 - libnss3-dev 316 - libpixman-1-dev 317 - libpng12-dev 318 - librados-dev 319 - libsdl2-dev 320 - libsdl2-image-dev 321 - libseccomp-dev 322 - libspice-protocol-dev 323 - libspice-server-dev 324 - libssh-dev 325 - liburcu-dev 326 - libusb-1.0-0-dev 327 - libvte-2.91-dev 328 - sparse 329 - uuid-dev 330 language: generic 331 compiler: none 332 env: 333 - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9 334 - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user" 335 - TEST_CMD="" 336 before_script: 337 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} 338 - ${SRC_DIR}/configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread" --extra-ldflags="-fuse-ld=gold" || { cat config.log && exit 1; } 339 340 341 # Run check-tcg against linux-user 342 - name: "GCC check-tcg (user)" 343 env: 344 - CONFIG="--disable-system --enable-debug-tcg" 345 - TEST_BUILD_CMD="make build-tcg" 346 - TEST_CMD="make check-tcg" 347 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 348 349 350 # Run check-tcg against linux-user (with plugins) 351 # we skip sparc64-linux-user until it has been fixed somewhat 352 # we skip cris-linux-user as it doesn't use the common run loop 353 # we skip ppc64abi32-linux-user as it seems to have a broken libc 354 - name: "GCC plugins check-tcg (user)" 355 env: 356 - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user,ppc64abi32-linux-user" 357 - TEST_BUILD_CMD="make build-tcg" 358 - TEST_CMD="make check-tcg" 359 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 360 361 362 # Run check-tcg against softmmu targets 363 - name: "GCC check-tcg (some-softmmu)" 364 env: 365 - CONFIG="--enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" 366 - TEST_BUILD_CMD="make build-tcg" 367 - TEST_CMD="make check-tcg" 368 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 369 370 371 # Run check-tcg against softmmu targets (with plugins) 372 - name: "GCC plugins check-tcg (some-softmmu)" 373 env: 374 - CONFIG="--enable-plugins --enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" 375 - TEST_BUILD_CMD="make build-tcg" 376 - TEST_CMD="make check-tcg" 377 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" 378 379 - name: "[aarch64] GCC check-tcg" 380 arch: arm64 381 dist: xenial 382 addons: 383 apt_packages: 384 - libaio-dev 385 - libattr1-dev 386 - libbrlapi-dev 387 - libcap-ng-dev 388 - libgcrypt20-dev 389 - libgnutls28-dev 390 - libgtk-3-dev 391 - libiscsi-dev 392 - liblttng-ust-dev 393 - libncurses5-dev 394 - libnfs-dev 395 - libnss3-dev 396 - libpixman-1-dev 397 - libpng-dev 398 - librados-dev 399 - libsdl2-dev 400 - libseccomp-dev 401 - liburcu-dev 402 - libusb-1.0-0-dev 403 - libvdeplug-dev 404 - libvte-2.91-dev 405 # Tests dependencies 406 - genisoimage 407 env: 408 - TEST_CMD="make check check-tcg V=1" 409 - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS}" 410 - UNRELIABLE=true 411 412 - name: "[ppc64] GCC check-tcg" 413 arch: ppc64le 414 dist: xenial 415 addons: 416 apt_packages: 417 - libaio-dev 418 - libattr1-dev 419 - libbrlapi-dev 420 - libcap-ng-dev 421 - libgcrypt20-dev 422 - libgnutls28-dev 423 - libgtk-3-dev 424 - libiscsi-dev 425 - liblttng-ust-dev 426 - libncurses5-dev 427 - libnfs-dev 428 - libnss3-dev 429 - libpixman-1-dev 430 - libpng-dev 431 - librados-dev 432 - libsdl2-dev 433 - libseccomp-dev 434 - liburcu-dev 435 - libusb-1.0-0-dev 436 - libvdeplug-dev 437 - libvte-2.91-dev 438 # Tests dependencies 439 - genisoimage 440 env: 441 - TEST_CMD="make check check-tcg V=1" 442 - CONFIG="--disable-containers --target-list=ppc64-softmmu,ppc64le-linux-user" 443 444 - name: "[s390x] GCC check-tcg" 445 arch: s390x 446 dist: bionic 447 addons: 448 apt_packages: 449 - libaio-dev 450 - libattr1-dev 451 - libbrlapi-dev 452 - libcap-ng-dev 453 - libgcrypt20-dev 454 - libgnutls28-dev 455 - libgtk-3-dev 456 - libiscsi-dev 457 - liblttng-ust-dev 458 - libncurses5-dev 459 - libnfs-dev 460 - libnss3-dev 461 - libpixman-1-dev 462 - libpng-dev 463 - librados-dev 464 - libsdl2-dev 465 - libseccomp-dev 466 - liburcu-dev 467 - libusb-1.0-0-dev 468 - libvdeplug-dev 469 - libvte-2.91-dev 470 # Tests dependencies 471 - genisoimage 472 env: 473 - TEST_CMD="make check check-tcg V=1" 474 - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user" 475 - UNRELIABLE=true 476 script: 477 - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$? 478 - | 479 if [ "$BUILD_RC" -eq 0 ] ; then 480 mv pc-bios/s390-ccw/*.img pc-bios/ ; 481 ${TEST_CMD} ; 482 else 483 $(exit $BUILD_RC); 484 fi 485 486 - name: "[s390x] GCC (other-softmmu)" 487 arch: s390x 488 dist: bionic 489 addons: 490 apt_packages: 491 - libaio-dev 492 - libattr1-dev 493 - libcap-ng-dev 494 - libgnutls28-dev 495 - libiscsi-dev 496 - liblttng-ust-dev 497 - liblzo2-dev 498 - libncurses-dev 499 - libnfs-dev 500 - libnss3-dev 501 - libpixman-1-dev 502 - libsdl2-dev 503 - libsdl2-image-dev 504 - libseccomp-dev 505 - libsnappy-dev 506 - libzstd-dev 507 - nettle-dev 508 - xfslibs-dev 509 # Tests dependencies 510 - genisoimage 511 env: 512 - CONFIG="--disable-containers --audio-drv-list=sdl --disable-user 513 --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" 514 515 - name: "[s390x] GCC (user)" 516 arch: s390x 517 dist: bionic 518 addons: 519 apt_packages: 520 - libgcrypt20-dev 521 - libgnutls28-dev 522 env: 523 - CONFIG="--disable-containers --disable-system" 524 525 - name: "[s390x] Clang (disable-tcg)" 526 arch: s390x 527 dist: bionic 528 compiler: clang 529 addons: 530 apt_packages: 531 - libaio-dev 532 - libattr1-dev 533 - libbrlapi-dev 534 - libcap-ng-dev 535 - libgcrypt20-dev 536 - libgnutls28-dev 537 - libgtk-3-dev 538 - libiscsi-dev 539 - liblttng-ust-dev 540 - libncurses5-dev 541 - libnfs-dev 542 - libnss3-dev 543 - libpixman-1-dev 544 - libpng-dev 545 - librados-dev 546 - libsdl2-dev 547 - libseccomp-dev 548 - liburcu-dev 549 - libusb-1.0-0-dev 550 - libvdeplug-dev 551 - libvte-2.91-dev 552 env: 553 - TEST_CMD="make check-unit" 554 - CONFIG="--disable-containers --disable-tcg --enable-kvm 555 --disable-tools --host-cc=clang --cxx=clang++" 556 - UNRELIABLE=true 557 558 # Release builds 559 # The make-release script expect a QEMU version, so our tag must start with a 'v'. 560 # This is the case when release candidate tags are created. 561 - name: "Release tarball" 562 if: tag IS present AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/ 563 env: 564 # We want to build from the release tarball 565 - BUILD_DIR="release/build/dir" SRC_DIR="../../.." 566 - BASE_CONFIG="--prefix=$PWD/dist" 567 - CONFIG="--target-list=x86_64-softmmu,aarch64-softmmu,armeb-linux-user,ppc-linux-user" 568 - TEST_CMD="make install -j${JOBS}" 569 - QEMU_VERSION="${TRAVIS_TAG:1}" 570 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 571 script: 572 - make -C ${SRC_DIR} qemu-${QEMU_VERSION}.tar.bz2 573 - ls -l ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 574 - tar -xf ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION} 575 - mkdir -p release-build && cd release-build 576 - ../configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; } 577 - make install 578 allow_failures: 579 - env: UNRELIABLE=true 580