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