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 - libgnutls-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 - libpng12-dev 41 - librados-dev 42 - libsdl1.2-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 - libvte-2.91-dev 50 - sparse 51 - uuid-dev 52 - gcovr 53 homebrew: 54 packages: 55 - ccache 56 - glib 57 - pixman 58 - gnu-sed 59 update: true 60 61 62# The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu 63# to prevent IRC notifications from forks. This was created using: 64# $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu" 65notifications: 66 irc: 67 channels: 68 - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM=" 69 on_success: change 70 on_failure: always 71 72 73env: 74 global: 75 - SRC_DIR="." 76 - BUILD_DIR="." 77 - BASE_CONFIG="--disable-docs --disable-tools" 78 - TEST_CMD="make check -j3 V=1" 79 # This is broadly a list of "mainline" softmmu targets which have support across the major distros 80 - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu" 81 - CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime" 82 - CCACHE_MAXSIZE=1G 83 84 85git: 86 # we want to do this ourselves 87 submodules: false 88 89 90before_script: 91 - if [ "$TRAVIS_OS_NAME" == "osx" ] ; then export PATH="/usr/local/opt/ccache/libexec:$PATH" ; fi 92 - command -v ccache && ccache --zero-stats 93 - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} 94 - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; } 95script: 96 - make -j3 && travis_retry ${TEST_CMD} 97after_script: 98 - command -v ccache && ccache --show-stats 99 100 101matrix: 102 include: 103 - env: 104 - CONFIG="--disable-system --static" 105 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 106 107 108 # we split the system builds as it takes a while to build them all 109 - env: 110 - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}" 111 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 112 113 114 - env: 115 - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" 116 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 117 118 119 # Just build tools and run minimal unit and softfloat checks 120 - env: 121 - BASE_CONFIG="--enable-tools" 122 - CONFIG="--disable-user --disable-system" 123 - TEST_CMD="make check-unit check-softfloat -j3" 124 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 125 126 127 - env: 128 - CONFIG="--enable-debug --enable-debug-tcg --disable-user" 129 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug" 130 131 132 # TCG debug can be run just on it's own and is mostly agnostic to user/softmmu distinctions 133 - env: 134 - CONFIG="--enable-debug-tcg --disable-system" 135 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug" 136 137 138 - env: 139 - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}" 140 141 142 # Module builds are mostly of interest to major distros 143 - env: 144 - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}" 145 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 146 147 148 # Alternate coroutines implementations are only really of interest to KVM users 149 # However we can't test against KVM on Travis so we can only run unit tests 150 - env: 151 - CONFIG="--with-coroutine=ucontext --disable-tcg" 152 - TEST_CMD="make check-unit -j3 V=1" 153 154 155 - env: 156 - CONFIG="--with-coroutine=sigaltstack --disable-tcg" 157 - TEST_CMD="make check-unit -j3 V=1" 158 159 160 # Check we can build docs and tools (out of tree) 161 - env: 162 - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.." 163 - BASE_CONFIG="--enable-tools --enable-docs" 164 - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user" 165 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 166 addons: 167 apt: 168 packages: 169 - python-sphinx 170 - texinfo 171 - perl 172 173 174 # Test with Clang for compile portability (Travis uses clang-5.0) 175 - env: 176 - CONFIG="--disable-system" 177 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default" 178 compiler: clang 179 180 181 - env: 182 - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}" 183 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default" 184 compiler: clang 185 186 187 - env: 188 - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} " 189 compiler: clang 190 before_script: 191 - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; } 192 193 194 - env: 195 - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" 196 - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default" 197 compiler: clang 198 199 200 # gprof/gcov are GCC features 201 - env: 202 - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}" 203 after_success: 204 - ${SRC_DIR}/scripts/travis/coverage-summary.sh 205 206 207 # We manually include builds which we disable "make check" for 208 - env: 209 - CONFIG="--without-default-devices --disable-user" 210 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 211 - TEST_CMD="" 212 213 214 # We manually include builds which we disable "make check" for 215 - env: 216 - CONFIG="--enable-debug --enable-tcg-interpreter" 217 - TEST_CMD="" 218 219 220 # We don't need to exercise every backend with every front-end 221 - env: 222 - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system" 223 - TEST_CMD="" 224 225 226 - env: 227 - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu" 228 - TEST_CMD="" 229 230 231 - env: 232 - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu" 233 - TEST_CMD="" 234 235 236 # MacOSX builds 237 - env: 238 - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS}" 239 os: osx 240 osx_image: xcode9.4 241 compiler: clang 242 243 244 - env: 245 - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu" 246 os: osx 247 osx_image: xcode10.2 248 compiler: clang 249 250 251 # Python builds 252 - env: 253 - CONFIG="--target-list=x86_64-softmmu" 254 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 255 language: python 256 python: 257 - "3.4" 258 259 260 - env: 261 - CONFIG="--target-list=x86_64-softmmu" 262 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 263 language: python 264 python: 265 - "3.6" 266 267 268 # Acceptance (Functional) tests 269 - env: 270 - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,aarch64-softmmu,arm-softmmu,s390x-softmmu,alpha-softmmu,ppc64-softmmu,m68k-softmmu" 271 - TEST_CMD="make check-acceptance" 272 after_failure: 273 - cat tests/results/latest/job.log 274 addons: 275 apt: 276 packages: 277 - python3-pil 278 - python3-pip 279 - python3.5-venv 280 - tesseract-ocr 281 - tesseract-ocr-eng 282 283 284 # Using newer GCC with sanitizers 285 - addons: 286 apt: 287 update: true 288 sources: 289 # PPAs for newer toolchains 290 - ubuntu-toolchain-r-test 291 packages: 292 # Extra toolchains 293 - gcc-9 294 - g++-9 295 # Build dependencies 296 - libaio-dev 297 - libattr1-dev 298 - libbrlapi-dev 299 - libcap-ng-dev 300 - libgnutls-dev 301 - libgtk-3-dev 302 - libiscsi-dev 303 - liblttng-ust-dev 304 - libnfs-dev 305 - libncurses5-dev 306 - libnss3-dev 307 - libpixman-1-dev 308 - libpng12-dev 309 - librados-dev 310 - libsdl1.2-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 - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; } 328 329 330 # Run check-tcg against linux-user 331 - env: 332 - CONFIG="--disable-system" 333 - TEST_CMD="make -j3 check-tcg V=1" 334 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 335 336 337 # Run check-tcg against softmmu targets 338 - env: 339 - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" 340 - TEST_CMD="make -j3 check-tcg V=1" 341 - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" 342