xref: /openbmc/qemu/.travis.yml (revision 8fb90e3d)
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:
95ef9c53cSPhilippe Mathieu-Daudé  # There is one cache per branch and compiler version.
105ef9c53cSPhilippe Mathieu-Daudé  # characteristics of each job are used to identify the cache:
115ef9c53cSPhilippe Mathieu-Daudé  # - OS name (currently, linux, osx, or windows)
125ef9c53cSPhilippe Mathieu-Daudé  # - OS distribution (for Linux, xenial, trusty, or precise)
135ef9c53cSPhilippe Mathieu-Daudé  # - macOS image name (e.g., xcode7.2)
145ef9c53cSPhilippe Mathieu-Daudé  # - Names and values of visible environment variables set in .travis.yml or Settings panel
15731cbb64SPhilippe Mathieu-Daudé  timeout: 1200
164bc629b2SPhilippe Mathieu-Daudé  ccache: true
176e189d78SPhilippe Mathieu-Daudé  pip: true
18c1073e44SPhilippe Mathieu-Daudé  directories:
19c1073e44SPhilippe Mathieu-Daudé  - $HOME/avocado/data/cache
20197be697SDaniel P. Berrangé
21197be697SDaniel P. Berrangé
22692d162cSAlex Bennéeaddons:
23692d162cSAlex Bennée  apt:
24692d162cSAlex Bennée    packages:
2532265288SAlex Bennée      # Build dependencies
26692d162cSAlex Bennée      - libaio-dev
27692d162cSAlex Bennée      - libattr1-dev
28692d162cSAlex Bennée      - libbrlapi-dev
29692d162cSAlex Bennée      - libcap-ng-dev
307524a39dSPhilippe Mathieu-Daudé      - libgcc-4.8-dev
31692d162cSAlex Bennée      - libgnutls-dev
32692d162cSAlex Bennée      - libgtk-3-dev
33692d162cSAlex Bennée      - libiscsi-dev
34692d162cSAlex Bennée      - liblttng-ust-dev
35692d162cSAlex Bennée      - libncurses5-dev
36d83414e1SMarc-André Lureau      - libnfs-dev
37692d162cSAlex Bennée      - libnss3-dev
38692d162cSAlex Bennée      - libpixman-1-dev
39692d162cSAlex Bennée      - libpng12-dev
40692d162cSAlex Bennée      - librados-dev
41692d162cSAlex Bennée      - libsdl1.2-dev
42692d162cSAlex Bennée      - libseccomp-dev
43692d162cSAlex Bennée      - libspice-protocol-dev
44692d162cSAlex Bennée      - libspice-server-dev
45b10d49d7SPino Toscano      - libssh-dev
46692d162cSAlex Bennée      - liburcu-dev
47692d162cSAlex Bennée      - libusb-1.0-0-dev
4895310576SAlex Bennée      - libvte-2.91-dev
49692d162cSAlex Bennée      - sparse
50692d162cSAlex Bennée      - uuid-dev
510708e647SAlex Bennée      - gcovr
5291fa7dd1SAlex Bennée  homebrew:
5391fa7dd1SAlex Bennée    packages:
540d8773c2SPhilippe Mathieu-Daudé      - ccache
5591fa7dd1SAlex Bennée      - glib
5691fa7dd1SAlex Bennée      - pixman
57db2b95d5SThomas Huth      - gnu-sed
5871451cffSAlex Bennée    update: true
59692d162cSAlex Bennée
60197be697SDaniel P. Berrangé
61cb4c2536SPranith Kumar# The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
62cb4c2536SPranith Kumar# to prevent IRC notifications from forks. This was created using:
63cb4c2536SPranith Kumar# $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu"
6439d16d29SAlex Bennéenotifications:
6539d16d29SAlex Bennée  irc:
6639d16d29SAlex Bennée    channels:
67cb4c2536SPranith Kumar      - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM="
6839d16d29SAlex Bennée    on_success: change
6939d16d29SAlex Bennée    on_failure: always
70197be697SDaniel P. Berrangé
71197be697SDaniel P. Berrangé
72fe863ab9SAlex Bennéeenv:
73fe863ab9SAlex Bennée  global:
74ebf2ff65SPhilippe Mathieu-Daudé    - SRC_DIR="."
75ebf2ff65SPhilippe Mathieu-Daudé    - BUILD_DIR="."
76570f3c77SAlex Bennée    - BASE_CONFIG="--disable-docs --disable-tools"
77e2576f9bSDaniel P. Berrangé    - TEST_CMD="make check -j3 V=1"
788c3daf97SAlex Bennée    # This is broadly a list of "mainline" softmmu targets which have support across the major distros
798c3daf97SAlex Bennée    - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
80bcfbf0d5SPhilippe Mathieu-Daudé    - CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime"
81bcfbf0d5SPhilippe Mathieu-Daudé    - CCACHE_MAXSIZE=1G
82bcfbf0d5SPhilippe Mathieu-Daudé
83197be697SDaniel P. Berrangé
84cb021cfeSAlex Bennéegit:
85cb021cfeSAlex Bennée  # we want to do this ourselves
86cb021cfeSAlex Bennée  submodules: false
87197be697SDaniel P. Berrangé
88197be697SDaniel P. Berrangé
89eebf2940SAlex Bennéebefore_script:
900d8773c2SPhilippe Mathieu-Daudé  - if [ "$TRAVIS_OS_NAME" == "osx" ] ; then export PATH="/usr/local/opt/ccache/libexec:$PATH" ; fi
91bcfbf0d5SPhilippe Mathieu-Daudé  - command -v ccache && ccache --zero-stats
92ebf2ff65SPhilippe Mathieu-Daudé  - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
93570f3c77SAlex Bennée  - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
94eebf2940SAlex Bennéescript:
953a37c13fSAlex Bennée  - make -j3 && travis_retry ${TEST_CMD}
96bcfbf0d5SPhilippe Mathieu-Daudéafter_script:
97bcfbf0d5SPhilippe Mathieu-Daudé  - command -v ccache && ccache --show-stats
98197be697SDaniel P. Berrangé
99197be697SDaniel P. Berrangé
100fe863ab9SAlex Bennéematrix:
101fe863ab9SAlex Bennée  include:
102c21d7efcSDaniel P. Berrangé    - env:
103c3c1874aSAlex Bennée        - CONFIG="--disable-system --static"
1043e094234SDaniel P. Berrangé
1053e094234SDaniel P. Berrangé
1068c3daf97SAlex Bennée    # we split the system builds as it takes a while to build them all
107c21d7efcSDaniel P. Berrangé    - env:
1088c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
1098c3daf97SAlex Bennée
1108c3daf97SAlex Bennée
1118c3daf97SAlex Bennée    - env:
1128c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
1133e094234SDaniel P. Berrangé
1143e094234SDaniel P. Berrangé
115df2bb38eSAlex Bennée    # Just build tools and run minimal unit and softfloat checks
116df2bb38eSAlex Bennée    - env:
117df2bb38eSAlex Bennée        - BASE_CONFIG="--enable-tools"
118df2bb38eSAlex Bennée        - CONFIG="--disable-user --disable-system"
119df2bb38eSAlex Bennée        - TEST_CMD="make check-unit check-softfloat -j3"
120df2bb38eSAlex Bennée
121c21d7efcSDaniel P. Berrangé    - env:
1224e6e7df6SAlex Bennée        - CONFIG="--enable-debug --enable-debug-tcg --disable-user"
123*8fb90e3dSPhilippe Mathieu-Daudé        - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug"
1244e6e7df6SAlex Bennée
1254e6e7df6SAlex Bennée
1264e6e7df6SAlex Bennée    # TCG debug can be run just on it's own and is mostly agnostic to user/softmmu distinctions
1274e6e7df6SAlex Bennée    - env:
1284e6e7df6SAlex Bennée        - CONFIG="--enable-debug-tcg --disable-system"
129*8fb90e3dSPhilippe Mathieu-Daudé        - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug"
1303e094234SDaniel P. Berrangé
1313e094234SDaniel P. Berrangé
132c21d7efcSDaniel P. Berrangé    - env:
133aec2927dSAlex Bennée        - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}"
1343e094234SDaniel P. Berrangé
1353e094234SDaniel P. Berrangé
1362f6c2526SAlex Bennée    # Module builds are mostly of interest to major distros
137c21d7efcSDaniel P. Berrangé    - env:
1388c3daf97SAlex Bennée        - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}"
1393e094234SDaniel P. Berrangé
1403e094234SDaniel P. Berrangé
141f3908ff7SAlex Bennée    # Alternate coroutines implementations are only really of interest to KVM users
142f3908ff7SAlex Bennée    # However we can't test against KVM on Travis so we can only run unit tests
143c21d7efcSDaniel P. Berrangé    - env:
144f3908ff7SAlex Bennée        - CONFIG="--with-coroutine=ucontext --disable-tcg"
145f3908ff7SAlex Bennée        - TEST_CMD="make check-unit -j3 V=1"
1463e094234SDaniel P. Berrangé
1473e094234SDaniel P. Berrangé
148c21d7efcSDaniel P. Berrangé    - env:
149f3908ff7SAlex Bennée        - CONFIG="--with-coroutine=sigaltstack --disable-tcg"
150f3908ff7SAlex Bennée        - TEST_CMD="make check-unit -j3 V=1"
1513e094234SDaniel P. Berrangé
1523e094234SDaniel P. Berrangé
153956d4506SAlex Bennée    # Check we can build docs and tools (out of tree)
154570f3c77SAlex Bennée    - env:
155956d4506SAlex Bennée        - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
156570f3c77SAlex Bennée        - BASE_CONFIG="--enable-tools --enable-docs"
157570f3c77SAlex Bennée        - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user"
158570f3c77SAlex Bennée      addons:
159570f3c77SAlex Bennée        apt:
160570f3c77SAlex Bennée          packages:
161570f3c77SAlex Bennée            - python-sphinx
162570f3c77SAlex Bennée            - texinfo
163570f3c77SAlex Bennée            - perl
164570f3c77SAlex Bennée
165197be697SDaniel P. Berrangé
166ae6d692dSAlex Bennée    # Test with Clang for compile portability (Travis uses clang-5.0)
167c21d7efcSDaniel P. Berrangé    - env:
168c21d7efcSDaniel P. Berrangé        - CONFIG="--disable-system"
169ae6d692dSAlex Bennée      compiler: clang
170197be697SDaniel P. Berrangé
171197be697SDaniel P. Berrangé
172c21d7efcSDaniel P. Berrangé    - env:
1738c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
1748c3daf97SAlex Bennée      compiler: clang
1758c3daf97SAlex Bennée
1768c3daf97SAlex Bennée
1778c3daf97SAlex Bennée    - env:
1787831147eSAlex Bennée        - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} "
1797831147eSAlex Bennée      compiler: clang
1807831147eSAlex Bennée      before_script:
1817831147eSAlex Bennée        - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; }
1827831147eSAlex Bennée
1837831147eSAlex Bennée
1847831147eSAlex Bennée    - env:
1858c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
186d9a6b013SDaniel P. Berrange      compiler: clang
187197be697SDaniel P. Berrangé
188197be697SDaniel P. Berrangé
1896c933291SAlex Bennée    # gprof/gcov are GCC features
190c21d7efcSDaniel P. Berrangé    - env:
1918c3daf97SAlex Bennée        - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}"
1920708e647SAlex Bennée      after_success:
1930708e647SAlex Bennée        - ${SRC_DIR}/scripts/travis/coverage-summary.sh
194197be697SDaniel P. Berrangé
195197be697SDaniel P. Berrangé
1966c933291SAlex Bennée    # We manually include builds which we disable "make check" for
197c21d7efcSDaniel P. Berrangé    - env:
198386dc514SAlex Bennée        - CONFIG="--without-default-devices --disable-user"
19920885b5bSPaolo Bonzini        - TEST_CMD=""
20020885b5bSPaolo Bonzini
20120885b5bSPaolo Bonzini
20220885b5bSPaolo Bonzini    # We manually include builds which we disable "make check" for
20320885b5bSPaolo Bonzini    - env:
204c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-debug --enable-tcg-interpreter"
205c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
206197be697SDaniel P. Berrangé
207197be697SDaniel P. Berrangé
208f8309de9SAlex Bennée    # We don't need to exercise every backend with every front-end
209c21d7efcSDaniel P. Berrangé    - env:
210c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system"
211c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
212197be697SDaniel P. Berrangé
213197be697SDaniel P. Berrangé
214c21d7efcSDaniel P. Berrangé    - env:
215c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu"
216c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
217197be697SDaniel P. Berrangé
218197be697SDaniel P. Berrangé
219c21d7efcSDaniel P. Berrangé    - env:
220c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu"
221c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
222197be697SDaniel P. Berrangé
223197be697SDaniel P. Berrangé
224adcf9683SAlex Bennée    # MacOSX builds
225c21d7efcSDaniel P. Berrangé    - env:
2268c3daf97SAlex Bennée        - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS}"
2271d002037SAlex Bennée      os: osx
228adcf9683SAlex Bennée      osx_image: xcode9.4
229adcf9683SAlex Bennée      compiler: clang
230197be697SDaniel P. Berrangé
231197be697SDaniel P. Berrangé
232cd7507cbSPhilippe Mathieu-Daudé    - env:
233cd7507cbSPhilippe Mathieu-Daudé        - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu"
234cd7507cbSPhilippe Mathieu-Daudé      os: osx
235cd7507cbSPhilippe Mathieu-Daudé      osx_image: xcode10.2
236cd7507cbSPhilippe Mathieu-Daudé      compiler: clang
237cd7507cbSPhilippe Mathieu-Daudé
238cd7507cbSPhilippe Mathieu-Daudé
239ae6d692dSAlex Bennée    # Python builds
240c21d7efcSDaniel P. Berrangé    - env:
241c21d7efcSDaniel P. Berrangé        - CONFIG="--target-list=x86_64-softmmu"
24253fefde4SCleber Rosa      language: python
2438e73a3c5SDaniel P. Berrange      python:
24453fefde4SCleber Rosa        - "3.4"
245197be697SDaniel P. Berrangé
246197be697SDaniel P. Berrangé
247c21d7efcSDaniel P. Berrangé    - env:
248c21d7efcSDaniel P. Berrangé        - CONFIG="--target-list=x86_64-softmmu"
24953fefde4SCleber Rosa      language: python
2508e73a3c5SDaniel P. Berrange      python:
2518e73a3c5SDaniel P. Berrange        - "3.6"
252197be697SDaniel P. Berrangé
253197be697SDaniel P. Berrangé
254aa983ff6SCleber Rosa    # Acceptance (Functional) tests
255c21d7efcSDaniel P. Berrangé    - env:
25625311649SPhilippe 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"
2570b98c20aSEduardo Habkost        - TEST_CMD="make check-acceptance"
258c21f30ebSCleber Rosa      after_failure:
259c21f30ebSCleber Rosa        - cat tests/results/latest/job.log
260aa983ff6SCleber Rosa      addons:
261aa983ff6SCleber Rosa        apt:
262aa983ff6SCleber Rosa          packages:
26325311649SPhilippe Mathieu-Daudé            - python3-pil
264aa983ff6SCleber Rosa            - python3-pip
26595310576SAlex Bennée            - python3.5-venv
26625311649SPhilippe Mathieu-Daudé            - tesseract-ocr
26725311649SPhilippe Mathieu-Daudé            - tesseract-ocr-eng
26825311649SPhilippe Mathieu-Daudé
26925311649SPhilippe Mathieu-Daudé
27032265288SAlex Bennée    # Using newer GCC with sanitizers
27132265288SAlex Bennée    - addons:
27232265288SAlex Bennée        apt:
273ac07ffc6SAlex Bennée          update: true
27432265288SAlex Bennée          sources:
27532265288SAlex Bennée            # PPAs for newer toolchains
27632265288SAlex Bennée            - ubuntu-toolchain-r-test
27732265288SAlex Bennée          packages:
27832265288SAlex Bennée            # Extra toolchains
2793998c25eSAlex Bennée            - gcc-9
2803998c25eSAlex Bennée            - g++-9
28132265288SAlex Bennée            # Build dependencies
28232265288SAlex Bennée            - libaio-dev
28332265288SAlex Bennée            - libattr1-dev
28432265288SAlex Bennée            - libbrlapi-dev
28532265288SAlex Bennée            - libcap-ng-dev
28632265288SAlex Bennée            - libgnutls-dev
28732265288SAlex Bennée            - libgtk-3-dev
28832265288SAlex Bennée            - libiscsi-dev
28932265288SAlex Bennée            - liblttng-ust-dev
29032265288SAlex Bennée            - libnfs-dev
29132265288SAlex Bennée            - libncurses5-dev
29232265288SAlex Bennée            - libnss3-dev
29332265288SAlex Bennée            - libpixman-1-dev
29432265288SAlex Bennée            - libpng12-dev
29532265288SAlex Bennée            - librados-dev
29632265288SAlex Bennée            - libsdl1.2-dev
29732265288SAlex Bennée            - libseccomp-dev
29832265288SAlex Bennée            - libspice-protocol-dev
29932265288SAlex Bennée            - libspice-server-dev
300b10d49d7SPino Toscano            - libssh-dev
30132265288SAlex Bennée            - liburcu-dev
30232265288SAlex Bennée            - libusb-1.0-0-dev
30395310576SAlex Bennée            - libvte-2.91-dev
30432265288SAlex Bennée            - sparse
30532265288SAlex Bennée            - uuid-dev
30632265288SAlex Bennée      language: generic
30732265288SAlex Bennée      compiler: none
30832265288SAlex Bennée      env:
3093998c25eSAlex Bennée        - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9
3103998c25eSAlex Bennée        - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user"
31132265288SAlex Bennée        - TEST_CMD=""
31232265288SAlex Bennée      before_script:
3133998c25eSAlex Bennée        - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; }
314197be697SDaniel P. Berrangé
315197be697SDaniel P. Berrangé
316dab3a7c0SAlex Bennée    # Run check-tcg against linux-user
31765b26da4SAlex Bennée    - env:
318570f3c77SAlex Bennée        - CONFIG="--disable-system"
319e2576f9bSDaniel P. Berrangé        - TEST_CMD="make -j3 check-tcg V=1"
320dab3a7c0SAlex Bennée
321dab3a7c0SAlex Bennée    # Run check-tcg against softmmu targets
322dab3a7c0SAlex Bennée    - env:
323591ff1ffSAlex Bennée        - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
324dab3a7c0SAlex Bennée        - TEST_CMD="make -j3 check-tcg V=1"
325