diff --git a/.travis.yml b/.travis.yml index 0470f86cf1..2e06aee9d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,22 +1,17 @@ -sudo: false - +# The current Travis default is a VM based 16.04 Xenial on GCE +# Additional builds with specific requirements for a full VM need to +# be added as additional matrix: entries later on dist: xenial - language: c - -os: - - linux - - osx - -python: - - "3.7" - compiler: - gcc +cache: ccache + addons: apt: packages: + # Build dependencies - libaio-dev - libattr1-dev - libbrlapi-dev @@ -36,31 +31,257 @@ addons: - libseccomp-dev - libspice-protocol-dev - libspice-server-dev - - libssh-dev + - libssh2-1-dev - liburcu-dev - libusb-1.0-0-dev - libvte-2.91-dev - sparse - uuid-dev - gcovr - - libsdl2-dev - - libepoxy-dev homebrew: - update: true packages: - glib - pixman - - sdl2 - - libepoxy - - coreutils + + +# The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu +# to prevent IRC notifications from forks. This was created using: +# $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu" +notifications: + irc: + channels: + - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM=" + on_success: change + on_failure: always + + +env: + global: + - SRC_DIR="." + - BUILD_DIR="." + - BASE_CONFIG="--disable-docs --disable-tools" + - TEST_CMD="make check -j3 V=1" + # This is broadly a list of "mainline" softmmu targets which have support across the major distros + - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu" git: # we want to do this ourselves submodules: false -env: - - CONFIG="" - - CONFIG="--release" +before_script: + - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} + - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; } script: - - ./build.sh ${CONFIG} + - make -j3 && ${TEST_CMD} + + +matrix: + include: + - env: + - CONFIG="--disable-system" + + + # we split the system builds as it takes a while to build them all + - env: + - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}" + + + - env: + - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" + + + # Just build tools and run minimal unit and softfloat checks + - env: + - BASE_CONFIG="--enable-tools" + - CONFIG="--disable-user --disable-system" + - TEST_CMD="make check-unit check-softfloat -j3" + + - env: + - CONFIG="--enable-debug --enable-debug-tcg --disable-user" + + + # TCG debug can be run just on it's own and is mostly agnostic to user/softmmu distinctions + - env: + - CONFIG="--enable-debug-tcg --disable-system" + + + - env: + - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}" + + + # Module builds are mostly of interest to major distros + - env: + - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}" + + + # Alternate coroutines implementations are only really of interest to KVM users + # However we can't test against KVM on Travis so we can only run unit tests + - env: + - CONFIG="--with-coroutine=ucontext --disable-tcg" + - TEST_CMD="make check-unit -j3 V=1" + + + - env: + - CONFIG="--with-coroutine=sigaltstack --disable-tcg" + - TEST_CMD="make check-unit -j3 V=1" + + + # Check we can build docs and tools (out of tree) + - env: + - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.." + - BASE_CONFIG="--enable-tools --enable-docs" + - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user" + addons: + apt: + packages: + - python-sphinx + - texinfo + - perl + + + # Test with Clang for compile portability (Travis uses clang-5.0) + - env: + - CONFIG="--disable-system" + compiler: clang + + + - env: + - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}" + compiler: clang + + + - env: + - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" + compiler: clang + + + # gprof/gcov are GCC features + - env: + - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}" + after_success: + - ${SRC_DIR}/scripts/travis/coverage-summary.sh + + + # We manually include builds which we disable "make check" for + - env: + - CONFIG="--without-default-devices --disable-user" + - TEST_CMD="" + + + # We manually include builds which we disable "make check" for + - env: + - CONFIG="--enable-debug --enable-tcg-interpreter" + - TEST_CMD="" + + + # We don't need to exercise every backend with every front-end + - env: + - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system" + - TEST_CMD="" + + + - env: + - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu" + - TEST_CMD="" + + + - env: + - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu" + - TEST_CMD="" + + + # MacOSX builds + - env: + - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS}" + os: osx + osx_image: xcode9.4 + compiler: clang + + + - env: + - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu" + os: osx + osx_image: xcode10.2 + compiler: clang + + + # Python builds + - env: + - CONFIG="--target-list=x86_64-softmmu" + language: python + python: + - "3.4" + + + - env: + - CONFIG="--target-list=x86_64-softmmu" + language: python + python: + - "3.6" + + + # Acceptance (Functional) tests + - env: + - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu" + - TEST_CMD="make AVOCADO_SHOW=app check-acceptance" + addons: + apt: + packages: + - python3-pip + - python3.5-venv + # Using newer GCC with sanitizers + - addons: + apt: + update: true + sources: + # PPAs for newer toolchains + - ubuntu-toolchain-r-test + packages: + # Extra toolchains + - gcc-7 + - g++-7 + # Build dependencies + - libaio-dev + - libattr1-dev + - libbrlapi-dev + - libcap-ng-dev + - libgnutls-dev + - libgtk-3-dev + - libiscsi-dev + - liblttng-ust-dev + - libnfs-dev + - libncurses5-dev + - libnss3-dev + - libpixman-1-dev + - libpng12-dev + - librados-dev + - libsdl1.2-dev + - libseccomp-dev + - libspice-protocol-dev + - libspice-server-dev + - libssh2-1-dev + - liburcu-dev + - libusb-1.0-0-dev + - libvte-2.91-dev + - sparse + - uuid-dev + language: generic + compiler: none + env: + - COMPILER_NAME=gcc CXX=g++-7 CC=gcc-7 + - CONFIG="--cc=gcc-7 --cxx=g++-7 --disable-pie --disable-linux-user" + - TEST_CMD="" + before_script: + - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; } + + + # Run check-tcg against linux-user + - env: + - CONFIG="--disable-system" + - TEST_CMD="make -j3 check-tcg V=1" + + # Run check-tcg against softmmu targets + - env: + - CONFIG="--target-list=xtensa-softmmu,arm-softmmu" + - TEST_CMD="make -j3 check-tcg V=1"