qemu/.travis.yml
<<
>>
Prefs
   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: ccache
   9
  10
  11addons:
  12  apt:
  13    packages:
  14      # Build dependencies
  15      - libaio-dev
  16      - libattr1-dev
  17      - libbrlapi-dev
  18      - libcap-ng-dev
  19      - libgcc-4.8-dev
  20      - libgnutls-dev
  21      - libgtk-3-dev
  22      - libiscsi-dev
  23      - liblttng-ust-dev
  24      - libncurses5-dev
  25      - libnfs-dev
  26      - libnss3-dev
  27      - libpixman-1-dev
  28      - libpng12-dev
  29      - librados-dev
  30      - libsdl1.2-dev
  31      - libseccomp-dev
  32      - libspice-protocol-dev
  33      - libspice-server-dev
  34      - libssh2-1-dev
  35      - liburcu-dev
  36      - libusb-1.0-0-dev
  37      - libvte-2.91-dev
  38      - sparse
  39      - uuid-dev
  40      - gcovr
  41  homebrew:
  42    packages:
  43      - glib
  44      - pixman
  45
  46
  47# The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
  48# to prevent IRC notifications from forks. This was created using:
  49# $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu"
  50notifications:
  51  irc:
  52    channels:
  53      - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM="
  54    on_success: change
  55    on_failure: always
  56
  57
  58env:
  59  global:
  60    - SRC_DIR="."
  61    - BUILD_DIR="."
  62    - BASE_CONFIG="--disable-docs --disable-tools"
  63    - TEST_CMD="make check -j3 V=1"
  64    # This is broadly a list of "mainline" softmmu targets which have support across the major distros
  65    - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
  66
  67git:
  68  # we want to do this ourselves
  69  submodules: false
  70
  71
  72before_script:
  73  - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
  74  - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
  75script:
  76  - make -j3 && ${TEST_CMD}
  77
  78
  79matrix:
  80  include:
  81    - env:
  82        - CONFIG="--disable-system"
  83
  84
  85    # we split the system builds as it takes a while to build them all
  86    - env:
  87        - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
  88
  89
  90    - env:
  91        - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
  92
  93
  94    # Just build tools and run minimal unit and softfloat checks
  95    - env:
  96        - BASE_CONFIG="--enable-tools"
  97        - CONFIG="--disable-user --disable-system"
  98        - TEST_CMD="make check-unit check-softfloat -j3"
  99
 100    - env:
 101        - CONFIG="--enable-debug --enable-debug-tcg --disable-user"
 102
 103
 104    # TCG debug can be run just on it's own and is mostly agnostic to user/softmmu distinctions
 105    - env:
 106        - CONFIG="--enable-debug-tcg --disable-system"
 107
 108
 109    - env:
 110        - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}"
 111
 112
 113    # Module builds are mostly of interest to major distros
 114    - env:
 115        - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}"
 116
 117
 118    # Alternate coroutines implementations are only really of interest to KVM users
 119    # However we can't test against KVM on Travis so we can only run unit tests
 120    - env:
 121        - CONFIG="--with-coroutine=ucontext --disable-tcg"
 122        - TEST_CMD="make check-unit -j3 V=1"
 123
 124
 125    - env:
 126        - CONFIG="--with-coroutine=sigaltstack --disable-tcg"
 127        - TEST_CMD="make check-unit -j3 V=1"
 128
 129
 130    # Check we can build docs and tools (out of tree)
 131    - env:
 132        - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
 133        - BASE_CONFIG="--enable-tools --enable-docs"
 134        - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user"
 135      addons:
 136        apt:
 137          packages:
 138            - python-sphinx
 139            - texinfo
 140            - perl
 141
 142
 143    # Test with Clang for compile portability (Travis uses clang-5.0)
 144    - env:
 145        - CONFIG="--disable-system"
 146      compiler: clang
 147
 148
 149    - env:
 150        - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
 151      compiler: clang
 152
 153
 154    - env:
 155        - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
 156      compiler: clang
 157
 158
 159    # gprof/gcov are GCC features
 160    - env:
 161        - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}"
 162      after_success:
 163        - ${SRC_DIR}/scripts/travis/coverage-summary.sh
 164
 165
 166    # We manually include builds which we disable "make check" for
 167    - env:
 168        - CONFIG="--without-default-devices --disable-user"
 169        - TEST_CMD=""
 170
 171
 172    # We manually include builds which we disable "make check" for
 173    - env:
 174        - CONFIG="--enable-debug --enable-tcg-interpreter"
 175        - TEST_CMD=""
 176
 177
 178    # We don't need to exercise every backend with every front-end
 179    - env:
 180        - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system"
 181        - TEST_CMD=""
 182
 183
 184    - env:
 185        - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu"
 186        - TEST_CMD=""
 187
 188
 189    - env:
 190        - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu"
 191        - TEST_CMD=""
 192
 193
 194    # MacOSX builds
 195    - env:
 196        - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS}"
 197      os: osx
 198      osx_image: xcode9.4
 199      compiler: clang
 200
 201
 202    - env:
 203        - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu"
 204      os: osx
 205      osx_image: xcode10.2
 206      compiler: clang
 207
 208
 209    # Python builds
 210    - env:
 211        - CONFIG="--target-list=x86_64-softmmu"
 212      language: python
 213      python:
 214        - "3.4"
 215
 216
 217    - env:
 218        - CONFIG="--target-list=x86_64-softmmu"
 219      language: python
 220      python:
 221        - "3.6"
 222
 223
 224    # Acceptance (Functional) tests
 225    - env:
 226        - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu"
 227        - TEST_CMD="make AVOCADO_SHOW=app check-acceptance"
 228      addons:
 229        apt:
 230          packages:
 231            - python3-pip
 232            - python3.5-venv
 233    # Using newer GCC with sanitizers
 234    - addons:
 235        apt:
 236          update: true
 237          sources:
 238            # PPAs for newer toolchains
 239            - ubuntu-toolchain-r-test
 240          packages:
 241            # Extra toolchains
 242            - gcc-7
 243            - g++-7
 244            # Build dependencies
 245            - libaio-dev
 246            - libattr1-dev
 247            - libbrlapi-dev
 248            - libcap-ng-dev
 249            - libgnutls-dev
 250            - libgtk-3-dev
 251            - libiscsi-dev
 252            - liblttng-ust-dev
 253            - libnfs-dev
 254            - libncurses5-dev
 255            - libnss3-dev
 256            - libpixman-1-dev
 257            - libpng12-dev
 258            - librados-dev
 259            - libsdl1.2-dev
 260            - libseccomp-dev
 261            - libspice-protocol-dev
 262            - libspice-server-dev
 263            - libssh2-1-dev
 264            - liburcu-dev
 265            - libusb-1.0-0-dev
 266            - libvte-2.91-dev
 267            - sparse
 268            - uuid-dev
 269      language: generic
 270      compiler: none
 271      env:
 272        - COMPILER_NAME=gcc CXX=g++-7 CC=gcc-7
 273        - CONFIG="--cc=gcc-7 --cxx=g++-7 --disable-pie --disable-linux-user"
 274        - TEST_CMD=""
 275      before_script:
 276        - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; }
 277
 278
 279    # Run check-tcg against linux-user
 280    - env:
 281        - CONFIG="--disable-system"
 282        - TEST_CMD="make -j3 check-tcg V=1"
 283
 284    # Run check-tcg against softmmu targets
 285    - env:
 286        - CONFIG="--target-list=xtensa-softmmu,arm-softmmu"
 287        - TEST_CMD="make -j3 check-tcg V=1"
 288