xref: /openbmc/qemu/.travis.yml (revision 25311649)
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
84c33d42dSAlex Bennéecache: ccache
9197be697SDaniel P. Berrangé
10197be697SDaniel P. Berrangé
11692d162cSAlex Bennéeaddons:
12692d162cSAlex Bennée  apt:
13692d162cSAlex Bennée    packages:
1432265288SAlex Bennée      # Build dependencies
15692d162cSAlex Bennée      - libaio-dev
16692d162cSAlex Bennée      - libattr1-dev
17692d162cSAlex Bennée      - libbrlapi-dev
18692d162cSAlex Bennée      - libcap-ng-dev
197524a39dSPhilippe Mathieu-Daudé      - libgcc-4.8-dev
20692d162cSAlex Bennée      - libgnutls-dev
21692d162cSAlex Bennée      - libgtk-3-dev
22692d162cSAlex Bennée      - libiscsi-dev
23692d162cSAlex Bennée      - liblttng-ust-dev
24692d162cSAlex Bennée      - libncurses5-dev
25d83414e1SMarc-André Lureau      - libnfs-dev
26692d162cSAlex Bennée      - libnss3-dev
27692d162cSAlex Bennée      - libpixman-1-dev
28692d162cSAlex Bennée      - libpng12-dev
29692d162cSAlex Bennée      - librados-dev
30692d162cSAlex Bennée      - libsdl1.2-dev
31692d162cSAlex Bennée      - libseccomp-dev
32692d162cSAlex Bennée      - libspice-protocol-dev
33692d162cSAlex Bennée      - libspice-server-dev
34b10d49d7SPino Toscano      - libssh-dev
35692d162cSAlex Bennée      - liburcu-dev
36692d162cSAlex Bennée      - libusb-1.0-0-dev
3795310576SAlex Bennée      - libvte-2.91-dev
38692d162cSAlex Bennée      - sparse
39692d162cSAlex Bennée      - uuid-dev
400708e647SAlex Bennée      - gcovr
4191fa7dd1SAlex Bennée  homebrew:
4291fa7dd1SAlex Bennée    packages:
4391fa7dd1SAlex Bennée      - glib
4491fa7dd1SAlex Bennée      - pixman
45db2b95d5SThomas Huth      - gnu-sed
4671451cffSAlex Bennée    update: true
47692d162cSAlex Bennée
48197be697SDaniel P. Berrangé
49cb4c2536SPranith Kumar# The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
50cb4c2536SPranith Kumar# to prevent IRC notifications from forks. This was created using:
51cb4c2536SPranith Kumar# $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu"
5239d16d29SAlex Bennéenotifications:
5339d16d29SAlex Bennée  irc:
5439d16d29SAlex Bennée    channels:
55cb4c2536SPranith Kumar      - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM="
5639d16d29SAlex Bennée    on_success: change
5739d16d29SAlex Bennée    on_failure: always
58197be697SDaniel P. Berrangé
59197be697SDaniel P. Berrangé
60fe863ab9SAlex Bennéeenv:
61fe863ab9SAlex Bennée  global:
62ebf2ff65SPhilippe Mathieu-Daudé    - SRC_DIR="."
63ebf2ff65SPhilippe Mathieu-Daudé    - BUILD_DIR="."
64570f3c77SAlex Bennée    - BASE_CONFIG="--disable-docs --disable-tools"
65e2576f9bSDaniel P. Berrangé    - TEST_CMD="make check -j3 V=1"
668c3daf97SAlex Bennée    # This is broadly a list of "mainline" softmmu targets which have support across the major distros
678c3daf97SAlex Bennée    - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
68197be697SDaniel P. Berrangé
69cb021cfeSAlex Bennéegit:
70cb021cfeSAlex Bennée  # we want to do this ourselves
71cb021cfeSAlex Bennée  submodules: false
72197be697SDaniel P. Berrangé
73197be697SDaniel P. Berrangé
74eebf2940SAlex Bennéebefore_script:
75ebf2ff65SPhilippe Mathieu-Daudé  - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
76570f3c77SAlex Bennée  - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
77eebf2940SAlex Bennéescript:
783a37c13fSAlex Bennée  - make -j3 && travis_retry ${TEST_CMD}
79197be697SDaniel P. Berrangé
80197be697SDaniel P. Berrangé
81fe863ab9SAlex Bennéematrix:
82fe863ab9SAlex Bennée  include:
83c21d7efcSDaniel P. Berrangé    - env:
84c3c1874aSAlex Bennée        - CONFIG="--disable-system --static"
853e094234SDaniel P. Berrangé
863e094234SDaniel P. Berrangé
878c3daf97SAlex Bennée    # we split the system builds as it takes a while to build them all
88c21d7efcSDaniel P. Berrangé    - env:
898c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
908c3daf97SAlex Bennée
918c3daf97SAlex Bennée
928c3daf97SAlex Bennée    - env:
938c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
943e094234SDaniel P. Berrangé
953e094234SDaniel P. Berrangé
96df2bb38eSAlex Bennée    # Just build tools and run minimal unit and softfloat checks
97df2bb38eSAlex Bennée    - env:
98df2bb38eSAlex Bennée        - BASE_CONFIG="--enable-tools"
99df2bb38eSAlex Bennée        - CONFIG="--disable-user --disable-system"
100df2bb38eSAlex Bennée        - TEST_CMD="make check-unit check-softfloat -j3"
101df2bb38eSAlex Bennée
102c21d7efcSDaniel P. Berrangé    - env:
1034e6e7df6SAlex Bennée        - CONFIG="--enable-debug --enable-debug-tcg --disable-user"
1044e6e7df6SAlex Bennée
1054e6e7df6SAlex Bennée
1064e6e7df6SAlex Bennée    # TCG debug can be run just on it's own and is mostly agnostic to user/softmmu distinctions
1074e6e7df6SAlex Bennée    - env:
1084e6e7df6SAlex Bennée        - CONFIG="--enable-debug-tcg --disable-system"
1093e094234SDaniel P. Berrangé
1103e094234SDaniel P. Berrangé
111c21d7efcSDaniel P. Berrangé    - env:
112aec2927dSAlex Bennée        - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}"
1133e094234SDaniel P. Berrangé
1143e094234SDaniel P. Berrangé
1152f6c2526SAlex Bennée    # Module builds are mostly of interest to major distros
116c21d7efcSDaniel P. Berrangé    - env:
1178c3daf97SAlex Bennée        - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}"
1183e094234SDaniel P. Berrangé
1193e094234SDaniel P. Berrangé
120f3908ff7SAlex Bennée    # Alternate coroutines implementations are only really of interest to KVM users
121f3908ff7SAlex Bennée    # However we can't test against KVM on Travis so we can only run unit tests
122c21d7efcSDaniel P. Berrangé    - env:
123f3908ff7SAlex Bennée        - CONFIG="--with-coroutine=ucontext --disable-tcg"
124f3908ff7SAlex Bennée        - TEST_CMD="make check-unit -j3 V=1"
1253e094234SDaniel P. Berrangé
1263e094234SDaniel P. Berrangé
127c21d7efcSDaniel P. Berrangé    - env:
128f3908ff7SAlex Bennée        - CONFIG="--with-coroutine=sigaltstack --disable-tcg"
129f3908ff7SAlex Bennée        - TEST_CMD="make check-unit -j3 V=1"
1303e094234SDaniel P. Berrangé
1313e094234SDaniel P. Berrangé
132956d4506SAlex Bennée    # Check we can build docs and tools (out of tree)
133570f3c77SAlex Bennée    - env:
134956d4506SAlex Bennée        - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
135570f3c77SAlex Bennée        - BASE_CONFIG="--enable-tools --enable-docs"
136570f3c77SAlex Bennée        - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user"
137570f3c77SAlex Bennée      addons:
138570f3c77SAlex Bennée        apt:
139570f3c77SAlex Bennée          packages:
140570f3c77SAlex Bennée            - python-sphinx
141570f3c77SAlex Bennée            - texinfo
142570f3c77SAlex Bennée            - perl
143570f3c77SAlex Bennée
144197be697SDaniel P. Berrangé
145ae6d692dSAlex Bennée    # Test with Clang for compile portability (Travis uses clang-5.0)
146c21d7efcSDaniel P. Berrangé    - env:
147c21d7efcSDaniel P. Berrangé        - CONFIG="--disable-system"
148ae6d692dSAlex Bennée      compiler: clang
149197be697SDaniel P. Berrangé
150197be697SDaniel P. Berrangé
151c21d7efcSDaniel P. Berrangé    - env:
1528c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
1538c3daf97SAlex Bennée      compiler: clang
1548c3daf97SAlex Bennée
1558c3daf97SAlex Bennée
1568c3daf97SAlex Bennée    - env:
1577831147eSAlex Bennée        - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} "
1587831147eSAlex Bennée      compiler: clang
1597831147eSAlex Bennée      before_script:
1607831147eSAlex Bennée        - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; }
1617831147eSAlex Bennée
1627831147eSAlex Bennée
1637831147eSAlex Bennée    - env:
1648c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
165d9a6b013SDaniel P. Berrange      compiler: clang
166197be697SDaniel P. Berrangé
167197be697SDaniel P. Berrangé
1686c933291SAlex Bennée    # gprof/gcov are GCC features
169c21d7efcSDaniel P. Berrangé    - env:
1708c3daf97SAlex Bennée        - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}"
1710708e647SAlex Bennée      after_success:
1720708e647SAlex Bennée        - ${SRC_DIR}/scripts/travis/coverage-summary.sh
173197be697SDaniel P. Berrangé
174197be697SDaniel P. Berrangé
1756c933291SAlex Bennée    # We manually include builds which we disable "make check" for
176c21d7efcSDaniel P. Berrangé    - env:
177386dc514SAlex Bennée        - CONFIG="--without-default-devices --disable-user"
17820885b5bSPaolo Bonzini        - TEST_CMD=""
17920885b5bSPaolo Bonzini
18020885b5bSPaolo Bonzini
18120885b5bSPaolo Bonzini    # We manually include builds which we disable "make check" for
18220885b5bSPaolo Bonzini    - env:
183c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-debug --enable-tcg-interpreter"
184c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
185197be697SDaniel P. Berrangé
186197be697SDaniel P. Berrangé
187f8309de9SAlex Bennée    # We don't need to exercise every backend with every front-end
188c21d7efcSDaniel P. Berrangé    - env:
189c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system"
190c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
191197be697SDaniel P. Berrangé
192197be697SDaniel P. Berrangé
193c21d7efcSDaniel P. Berrangé    - env:
194c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu"
195c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
196197be697SDaniel P. Berrangé
197197be697SDaniel P. Berrangé
198c21d7efcSDaniel P. Berrangé    - env:
199c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu"
200c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
201197be697SDaniel P. Berrangé
202197be697SDaniel P. Berrangé
203adcf9683SAlex Bennée    # MacOSX builds
204c21d7efcSDaniel P. Berrangé    - env:
2058c3daf97SAlex Bennée        - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS}"
2061d002037SAlex Bennée      os: osx
207adcf9683SAlex Bennée      osx_image: xcode9.4
208adcf9683SAlex Bennée      compiler: clang
209197be697SDaniel P. Berrangé
210197be697SDaniel P. Berrangé
211cd7507cbSPhilippe Mathieu-Daudé    - env:
212cd7507cbSPhilippe Mathieu-Daudé        - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu"
213cd7507cbSPhilippe Mathieu-Daudé      os: osx
214cd7507cbSPhilippe Mathieu-Daudé      osx_image: xcode10.2
215cd7507cbSPhilippe Mathieu-Daudé      compiler: clang
216cd7507cbSPhilippe Mathieu-Daudé
217cd7507cbSPhilippe Mathieu-Daudé
218ae6d692dSAlex Bennée    # Python builds
219c21d7efcSDaniel P. Berrangé    - env:
220c21d7efcSDaniel P. Berrangé        - CONFIG="--target-list=x86_64-softmmu"
22153fefde4SCleber Rosa      language: python
2228e73a3c5SDaniel P. Berrange      python:
22353fefde4SCleber Rosa        - "3.4"
224197be697SDaniel P. Berrangé
225197be697SDaniel P. Berrangé
226c21d7efcSDaniel P. Berrangé    - env:
227c21d7efcSDaniel P. Berrangé        - CONFIG="--target-list=x86_64-softmmu"
22853fefde4SCleber Rosa      language: python
2298e73a3c5SDaniel P. Berrange      python:
2308e73a3c5SDaniel P. Berrange        - "3.6"
231197be697SDaniel P. Berrangé
232197be697SDaniel P. Berrangé
233aa983ff6SCleber Rosa    # Acceptance (Functional) tests
234c21d7efcSDaniel P. Berrangé    - env:
235*25311649SPhilippe 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"
2360b98c20aSEduardo Habkost        - TEST_CMD="make check-acceptance"
237c21f30ebSCleber Rosa      after_failure:
238c21f30ebSCleber Rosa        - cat tests/results/latest/job.log
239aa983ff6SCleber Rosa      addons:
240aa983ff6SCleber Rosa        apt:
241aa983ff6SCleber Rosa          packages:
242*25311649SPhilippe Mathieu-Daudé            - python3-pil
243aa983ff6SCleber Rosa            - python3-pip
24495310576SAlex Bennée            - python3.5-venv
245*25311649SPhilippe Mathieu-Daudé            - tesseract-ocr
246*25311649SPhilippe Mathieu-Daudé            - tesseract-ocr-eng
247*25311649SPhilippe Mathieu-Daudé
248*25311649SPhilippe Mathieu-Daudé
24932265288SAlex Bennée    # Using newer GCC with sanitizers
25032265288SAlex Bennée    - addons:
25132265288SAlex Bennée        apt:
252ac07ffc6SAlex Bennée          update: true
25332265288SAlex Bennée          sources:
25432265288SAlex Bennée            # PPAs for newer toolchains
25532265288SAlex Bennée            - ubuntu-toolchain-r-test
25632265288SAlex Bennée          packages:
25732265288SAlex Bennée            # Extra toolchains
2583998c25eSAlex Bennée            - gcc-9
2593998c25eSAlex Bennée            - g++-9
26032265288SAlex Bennée            # Build dependencies
26132265288SAlex Bennée            - libaio-dev
26232265288SAlex Bennée            - libattr1-dev
26332265288SAlex Bennée            - libbrlapi-dev
26432265288SAlex Bennée            - libcap-ng-dev
26532265288SAlex Bennée            - libgnutls-dev
26632265288SAlex Bennée            - libgtk-3-dev
26732265288SAlex Bennée            - libiscsi-dev
26832265288SAlex Bennée            - liblttng-ust-dev
26932265288SAlex Bennée            - libnfs-dev
27032265288SAlex Bennée            - libncurses5-dev
27132265288SAlex Bennée            - libnss3-dev
27232265288SAlex Bennée            - libpixman-1-dev
27332265288SAlex Bennée            - libpng12-dev
27432265288SAlex Bennée            - librados-dev
27532265288SAlex Bennée            - libsdl1.2-dev
27632265288SAlex Bennée            - libseccomp-dev
27732265288SAlex Bennée            - libspice-protocol-dev
27832265288SAlex Bennée            - libspice-server-dev
279b10d49d7SPino Toscano            - libssh-dev
28032265288SAlex Bennée            - liburcu-dev
28132265288SAlex Bennée            - libusb-1.0-0-dev
28295310576SAlex Bennée            - libvte-2.91-dev
28332265288SAlex Bennée            - sparse
28432265288SAlex Bennée            - uuid-dev
28532265288SAlex Bennée      language: generic
28632265288SAlex Bennée      compiler: none
28732265288SAlex Bennée      env:
2883998c25eSAlex Bennée        - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9
2893998c25eSAlex Bennée        - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user"
29032265288SAlex Bennée        - TEST_CMD=""
29132265288SAlex Bennée      before_script:
2923998c25eSAlex Bennée        - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; }
293197be697SDaniel P. Berrangé
294197be697SDaniel P. Berrangé
295dab3a7c0SAlex Bennée    # Run check-tcg against linux-user
29665b26da4SAlex Bennée    - env:
297570f3c77SAlex Bennée        - CONFIG="--disable-system"
298e2576f9bSDaniel P. Berrangé        - TEST_CMD="make -j3 check-tcg V=1"
299dab3a7c0SAlex Bennée
300dab3a7c0SAlex Bennée    # Run check-tcg against softmmu targets
301dab3a7c0SAlex Bennée    - env:
302591ff1ffSAlex Bennée        - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
303dab3a7c0SAlex Bennée        - TEST_CMD="make -j3 check-tcg V=1"
304