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