xref: /openbmc/qemu/.travis.yml (revision 0d8773c2)
195310576SAlex Bennée# The current Travis default is a VM based 16.04 Xenial on GCE
295310576SAlex Bennée# Additional builds with specific requirements for a full VM need to
395310576SAlex Bennée# be added as additional matrix: entries later on
495310576SAlex Bennéedist: xenial
5fe863ab9SAlex Bennéelanguage: c
6fe863ab9SAlex Bennéecompiler:
7fe863ab9SAlex Bennée  - gcc
84bc629b2SPhilippe Mathieu-Daudécache:
9731cbb64SPhilippe Mathieu-Daudé  timeout: 1200
104bc629b2SPhilippe Mathieu-Daudé  ccache: true
116e189d78SPhilippe Mathieu-Daudé  pip: true
12c1073e44SPhilippe Mathieu-Daudé  directories:
13c1073e44SPhilippe Mathieu-Daudé  - $HOME/avocado/data/cache
14197be697SDaniel P. Berrangé
15197be697SDaniel P. Berrangé
16692d162cSAlex Bennéeaddons:
17692d162cSAlex Bennée  apt:
18692d162cSAlex Bennée    packages:
1932265288SAlex Bennée      # Build dependencies
20692d162cSAlex Bennée      - libaio-dev
21692d162cSAlex Bennée      - libattr1-dev
22692d162cSAlex Bennée      - libbrlapi-dev
23692d162cSAlex Bennée      - libcap-ng-dev
247524a39dSPhilippe Mathieu-Daudé      - libgcc-4.8-dev
25692d162cSAlex Bennée      - libgnutls-dev
26692d162cSAlex Bennée      - libgtk-3-dev
27692d162cSAlex Bennée      - libiscsi-dev
28692d162cSAlex Bennée      - liblttng-ust-dev
29692d162cSAlex Bennée      - libncurses5-dev
30d83414e1SMarc-André Lureau      - libnfs-dev
31692d162cSAlex Bennée      - libnss3-dev
32692d162cSAlex Bennée      - libpixman-1-dev
33692d162cSAlex Bennée      - libpng12-dev
34692d162cSAlex Bennée      - librados-dev
35692d162cSAlex Bennée      - libsdl1.2-dev
36692d162cSAlex Bennée      - libseccomp-dev
37692d162cSAlex Bennée      - libspice-protocol-dev
38692d162cSAlex Bennée      - libspice-server-dev
39b10d49d7SPino Toscano      - libssh-dev
40692d162cSAlex Bennée      - liburcu-dev
41692d162cSAlex Bennée      - libusb-1.0-0-dev
4295310576SAlex Bennée      - libvte-2.91-dev
43692d162cSAlex Bennée      - sparse
44692d162cSAlex Bennée      - uuid-dev
450708e647SAlex Bennée      - gcovr
4691fa7dd1SAlex Bennée  homebrew:
4791fa7dd1SAlex Bennée    packages:
48*0d8773c2SPhilippe Mathieu-Daudé      - ccache
4991fa7dd1SAlex Bennée      - glib
5091fa7dd1SAlex Bennée      - pixman
51db2b95d5SThomas Huth      - gnu-sed
5271451cffSAlex Bennée    update: true
53692d162cSAlex Bennée
54197be697SDaniel P. Berrangé
55cb4c2536SPranith Kumar# The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
56cb4c2536SPranith Kumar# to prevent IRC notifications from forks. This was created using:
57cb4c2536SPranith Kumar# $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu"
5839d16d29SAlex Bennéenotifications:
5939d16d29SAlex Bennée  irc:
6039d16d29SAlex Bennée    channels:
61cb4c2536SPranith Kumar      - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM="
6239d16d29SAlex Bennée    on_success: change
6339d16d29SAlex Bennée    on_failure: always
64197be697SDaniel P. Berrangé
65197be697SDaniel P. Berrangé
66fe863ab9SAlex Bennéeenv:
67fe863ab9SAlex Bennée  global:
68ebf2ff65SPhilippe Mathieu-Daudé    - SRC_DIR="."
69ebf2ff65SPhilippe Mathieu-Daudé    - BUILD_DIR="."
70570f3c77SAlex Bennée    - BASE_CONFIG="--disable-docs --disable-tools"
71e2576f9bSDaniel P. Berrangé    - TEST_CMD="make check -j3 V=1"
728c3daf97SAlex Bennée    # This is broadly a list of "mainline" softmmu targets which have support across the major distros
738c3daf97SAlex Bennée    - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
74bcfbf0d5SPhilippe Mathieu-Daudé    - CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime"
75bcfbf0d5SPhilippe Mathieu-Daudé    - CCACHE_MAXSIZE=1G
76bcfbf0d5SPhilippe Mathieu-Daudé
77197be697SDaniel P. Berrangé
78cb021cfeSAlex Bennéegit:
79cb021cfeSAlex Bennée  # we want to do this ourselves
80cb021cfeSAlex Bennée  submodules: false
81197be697SDaniel P. Berrangé
82197be697SDaniel P. Berrangé
83eebf2940SAlex Bennéebefore_script:
84*0d8773c2SPhilippe Mathieu-Daudé  - if [ "$TRAVIS_OS_NAME" == "osx" ] ; then export PATH="/usr/local/opt/ccache/libexec:$PATH" ; fi
85bcfbf0d5SPhilippe Mathieu-Daudé  - command -v ccache && ccache --zero-stats
86ebf2ff65SPhilippe Mathieu-Daudé  - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
87570f3c77SAlex Bennée  - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
88eebf2940SAlex Bennéescript:
893a37c13fSAlex Bennée  - make -j3 && travis_retry ${TEST_CMD}
90bcfbf0d5SPhilippe Mathieu-Daudéafter_script:
91bcfbf0d5SPhilippe Mathieu-Daudé  - command -v ccache && ccache --show-stats
92197be697SDaniel P. Berrangé
93197be697SDaniel P. Berrangé
94fe863ab9SAlex Bennéematrix:
95fe863ab9SAlex Bennée  include:
96c21d7efcSDaniel P. Berrangé    - env:
97c3c1874aSAlex Bennée        - CONFIG="--disable-system --static"
983e094234SDaniel P. Berrangé
993e094234SDaniel P. Berrangé
1008c3daf97SAlex Bennée    # we split the system builds as it takes a while to build them all
101c21d7efcSDaniel P. Berrangé    - env:
1028c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
1038c3daf97SAlex Bennée
1048c3daf97SAlex Bennée
1058c3daf97SAlex Bennée    - env:
1068c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
1073e094234SDaniel P. Berrangé
1083e094234SDaniel P. Berrangé
109df2bb38eSAlex Bennée    # Just build tools and run minimal unit and softfloat checks
110df2bb38eSAlex Bennée    - env:
111df2bb38eSAlex Bennée        - BASE_CONFIG="--enable-tools"
112df2bb38eSAlex Bennée        - CONFIG="--disable-user --disable-system"
113df2bb38eSAlex Bennée        - TEST_CMD="make check-unit check-softfloat -j3"
114df2bb38eSAlex Bennée
115c21d7efcSDaniel P. Berrangé    - env:
1164e6e7df6SAlex Bennée        - CONFIG="--enable-debug --enable-debug-tcg --disable-user"
1174e6e7df6SAlex Bennée
1184e6e7df6SAlex Bennée
1194e6e7df6SAlex Bennée    # TCG debug can be run just on it's own and is mostly agnostic to user/softmmu distinctions
1204e6e7df6SAlex Bennée    - env:
1214e6e7df6SAlex Bennée        - CONFIG="--enable-debug-tcg --disable-system"
1223e094234SDaniel P. Berrangé
1233e094234SDaniel P. Berrangé
124c21d7efcSDaniel P. Berrangé    - env:
125aec2927dSAlex Bennée        - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}"
1263e094234SDaniel P. Berrangé
1273e094234SDaniel P. Berrangé
1282f6c2526SAlex Bennée    # Module builds are mostly of interest to major distros
129c21d7efcSDaniel P. Berrangé    - env:
1308c3daf97SAlex Bennée        - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}"
1313e094234SDaniel P. Berrangé
1323e094234SDaniel P. Berrangé
133f3908ff7SAlex Bennée    # Alternate coroutines implementations are only really of interest to KVM users
134f3908ff7SAlex Bennée    # However we can't test against KVM on Travis so we can only run unit tests
135c21d7efcSDaniel P. Berrangé    - env:
136f3908ff7SAlex Bennée        - CONFIG="--with-coroutine=ucontext --disable-tcg"
137f3908ff7SAlex Bennée        - TEST_CMD="make check-unit -j3 V=1"
1383e094234SDaniel P. Berrangé
1393e094234SDaniel P. Berrangé
140c21d7efcSDaniel P. Berrangé    - env:
141f3908ff7SAlex Bennée        - CONFIG="--with-coroutine=sigaltstack --disable-tcg"
142f3908ff7SAlex Bennée        - TEST_CMD="make check-unit -j3 V=1"
1433e094234SDaniel P. Berrangé
1443e094234SDaniel P. Berrangé
145956d4506SAlex Bennée    # Check we can build docs and tools (out of tree)
146570f3c77SAlex Bennée    - env:
147956d4506SAlex Bennée        - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
148570f3c77SAlex Bennée        - BASE_CONFIG="--enable-tools --enable-docs"
149570f3c77SAlex Bennée        - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user"
150570f3c77SAlex Bennée      addons:
151570f3c77SAlex Bennée        apt:
152570f3c77SAlex Bennée          packages:
153570f3c77SAlex Bennée            - python-sphinx
154570f3c77SAlex Bennée            - texinfo
155570f3c77SAlex Bennée            - perl
156570f3c77SAlex Bennée
157197be697SDaniel P. Berrangé
158ae6d692dSAlex Bennée    # Test with Clang for compile portability (Travis uses clang-5.0)
159c21d7efcSDaniel P. Berrangé    - env:
160c21d7efcSDaniel P. Berrangé        - CONFIG="--disable-system"
161ae6d692dSAlex Bennée      compiler: clang
162197be697SDaniel P. Berrangé
163197be697SDaniel P. Berrangé
164c21d7efcSDaniel P. Berrangé    - env:
1658c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
1668c3daf97SAlex Bennée      compiler: clang
1678c3daf97SAlex Bennée
1688c3daf97SAlex Bennée
1698c3daf97SAlex Bennée    - env:
1707831147eSAlex Bennée        - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} "
1717831147eSAlex Bennée      compiler: clang
1727831147eSAlex Bennée      before_script:
1737831147eSAlex Bennée        - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; }
1747831147eSAlex Bennée
1757831147eSAlex Bennée
1767831147eSAlex Bennée    - env:
1778c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
178d9a6b013SDaniel P. Berrange      compiler: clang
179197be697SDaniel P. Berrangé
180197be697SDaniel P. Berrangé
1816c933291SAlex Bennée    # gprof/gcov are GCC features
182c21d7efcSDaniel P. Berrangé    - env:
1838c3daf97SAlex Bennée        - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}"
1840708e647SAlex Bennée      after_success:
1850708e647SAlex Bennée        - ${SRC_DIR}/scripts/travis/coverage-summary.sh
186197be697SDaniel P. Berrangé
187197be697SDaniel P. Berrangé
1886c933291SAlex Bennée    # We manually include builds which we disable "make check" for
189c21d7efcSDaniel P. Berrangé    - env:
190386dc514SAlex Bennée        - CONFIG="--without-default-devices --disable-user"
19120885b5bSPaolo Bonzini        - TEST_CMD=""
19220885b5bSPaolo Bonzini
19320885b5bSPaolo Bonzini
19420885b5bSPaolo Bonzini    # We manually include builds which we disable "make check" for
19520885b5bSPaolo Bonzini    - env:
196c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-debug --enable-tcg-interpreter"
197c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
198197be697SDaniel P. Berrangé
199197be697SDaniel P. Berrangé
200f8309de9SAlex Bennée    # We don't need to exercise every backend with every front-end
201c21d7efcSDaniel P. Berrangé    - env:
202c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system"
203c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
204197be697SDaniel P. Berrangé
205197be697SDaniel P. Berrangé
206c21d7efcSDaniel P. Berrangé    - env:
207c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu"
208c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
209197be697SDaniel P. Berrangé
210197be697SDaniel P. Berrangé
211c21d7efcSDaniel P. Berrangé    - env:
212c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu"
213c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
214197be697SDaniel P. Berrangé
215197be697SDaniel P. Berrangé
216adcf9683SAlex Bennée    # MacOSX builds
217c21d7efcSDaniel P. Berrangé    - env:
2188c3daf97SAlex Bennée        - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS}"
2191d002037SAlex Bennée      os: osx
220adcf9683SAlex Bennée      osx_image: xcode9.4
221adcf9683SAlex Bennée      compiler: clang
222197be697SDaniel P. Berrangé
223197be697SDaniel P. Berrangé
224cd7507cbSPhilippe Mathieu-Daudé    - env:
225cd7507cbSPhilippe Mathieu-Daudé        - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu"
226cd7507cbSPhilippe Mathieu-Daudé      os: osx
227cd7507cbSPhilippe Mathieu-Daudé      osx_image: xcode10.2
228cd7507cbSPhilippe Mathieu-Daudé      compiler: clang
229cd7507cbSPhilippe Mathieu-Daudé
230cd7507cbSPhilippe Mathieu-Daudé
231ae6d692dSAlex Bennée    # Python builds
232c21d7efcSDaniel P. Berrangé    - env:
233c21d7efcSDaniel P. Berrangé        - CONFIG="--target-list=x86_64-softmmu"
23453fefde4SCleber Rosa      language: python
2358e73a3c5SDaniel P. Berrange      python:
23653fefde4SCleber Rosa        - "3.4"
237197be697SDaniel P. Berrangé
238197be697SDaniel P. Berrangé
239c21d7efcSDaniel P. Berrangé    - env:
240c21d7efcSDaniel P. Berrangé        - CONFIG="--target-list=x86_64-softmmu"
24153fefde4SCleber Rosa      language: python
2428e73a3c5SDaniel P. Berrange      python:
2438e73a3c5SDaniel P. Berrange        - "3.6"
244197be697SDaniel P. Berrangé
245197be697SDaniel P. Berrangé
246aa983ff6SCleber Rosa    # Acceptance (Functional) tests
247c21d7efcSDaniel P. Berrangé    - env:
24825311649SPhilippe Mathieu-Daudé        - 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"
2490b98c20aSEduardo Habkost        - TEST_CMD="make check-acceptance"
250c21f30ebSCleber Rosa      after_failure:
251c21f30ebSCleber Rosa        - cat tests/results/latest/job.log
252aa983ff6SCleber Rosa      addons:
253aa983ff6SCleber Rosa        apt:
254aa983ff6SCleber Rosa          packages:
25525311649SPhilippe Mathieu-Daudé            - python3-pil
256aa983ff6SCleber Rosa            - python3-pip
25795310576SAlex Bennée            - python3.5-venv
25825311649SPhilippe Mathieu-Daudé            - tesseract-ocr
25925311649SPhilippe Mathieu-Daudé            - tesseract-ocr-eng
26025311649SPhilippe Mathieu-Daudé
26125311649SPhilippe Mathieu-Daudé
26232265288SAlex Bennée    # Using newer GCC with sanitizers
26332265288SAlex Bennée    - addons:
26432265288SAlex Bennée        apt:
265ac07ffc6SAlex Bennée          update: true
26632265288SAlex Bennée          sources:
26732265288SAlex Bennée            # PPAs for newer toolchains
26832265288SAlex Bennée            - ubuntu-toolchain-r-test
26932265288SAlex Bennée          packages:
27032265288SAlex Bennée            # Extra toolchains
2713998c25eSAlex Bennée            - gcc-9
2723998c25eSAlex Bennée            - g++-9
27332265288SAlex Bennée            # Build dependencies
27432265288SAlex Bennée            - libaio-dev
27532265288SAlex Bennée            - libattr1-dev
27632265288SAlex Bennée            - libbrlapi-dev
27732265288SAlex Bennée            - libcap-ng-dev
27832265288SAlex Bennée            - libgnutls-dev
27932265288SAlex Bennée            - libgtk-3-dev
28032265288SAlex Bennée            - libiscsi-dev
28132265288SAlex Bennée            - liblttng-ust-dev
28232265288SAlex Bennée            - libnfs-dev
28332265288SAlex Bennée            - libncurses5-dev
28432265288SAlex Bennée            - libnss3-dev
28532265288SAlex Bennée            - libpixman-1-dev
28632265288SAlex Bennée            - libpng12-dev
28732265288SAlex Bennée            - librados-dev
28832265288SAlex Bennée            - libsdl1.2-dev
28932265288SAlex Bennée            - libseccomp-dev
29032265288SAlex Bennée            - libspice-protocol-dev
29132265288SAlex Bennée            - libspice-server-dev
292b10d49d7SPino Toscano            - libssh-dev
29332265288SAlex Bennée            - liburcu-dev
29432265288SAlex Bennée            - libusb-1.0-0-dev
29595310576SAlex Bennée            - libvte-2.91-dev
29632265288SAlex Bennée            - sparse
29732265288SAlex Bennée            - uuid-dev
29832265288SAlex Bennée      language: generic
29932265288SAlex Bennée      compiler: none
30032265288SAlex Bennée      env:
3013998c25eSAlex Bennée        - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9
3023998c25eSAlex Bennée        - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user"
30332265288SAlex Bennée        - TEST_CMD=""
30432265288SAlex Bennée      before_script:
3053998c25eSAlex Bennée        - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; }
306197be697SDaniel P. Berrangé
307197be697SDaniel P. Berrangé
308dab3a7c0SAlex Bennée    # Run check-tcg against linux-user
30965b26da4SAlex Bennée    - env:
310570f3c77SAlex Bennée        - CONFIG="--disable-system"
311e2576f9bSDaniel P. Berrangé        - TEST_CMD="make -j3 check-tcg V=1"
312dab3a7c0SAlex Bennée
313dab3a7c0SAlex Bennée    # Run check-tcg against softmmu targets
314dab3a7c0SAlex Bennée    - env:
315591ff1ffSAlex Bennée        - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
316dab3a7c0SAlex Bennée        - TEST_CMD="make -j3 check-tcg V=1"
317