xref: /qemu/.travis.yml (revision 5ef9c53c)
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:
9*5ef9c53cSPhilippe Mathieu-Daudé  # There is one cache per branch and compiler version.
10*5ef9c53cSPhilippe Mathieu-Daudé  # characteristics of each job are used to identify the cache:
11*5ef9c53cSPhilippe Mathieu-Daudé  # - OS name (currently, linux, osx, or windows)
12*5ef9c53cSPhilippe Mathieu-Daudé  # - OS distribution (for Linux, xenial, trusty, or precise)
13*5ef9c53cSPhilippe Mathieu-Daudé  # - macOS image name (e.g., xcode7.2)
14*5ef9c53cSPhilippe 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"
1234e6e7df6SAlex Bennée
1244e6e7df6SAlex Bennée
1254e6e7df6SAlex Bennée    # TCG debug can be run just on it's own and is mostly agnostic to user/softmmu distinctions
1264e6e7df6SAlex Bennée    - env:
1274e6e7df6SAlex Bennée        - CONFIG="--enable-debug-tcg --disable-system"
1283e094234SDaniel P. Berrangé
1293e094234SDaniel P. Berrangé
130c21d7efcSDaniel P. Berrangé    - env:
131aec2927dSAlex Bennée        - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}"
1323e094234SDaniel P. Berrangé
1333e094234SDaniel P. Berrangé
1342f6c2526SAlex Bennée    # Module builds are mostly of interest to major distros
135c21d7efcSDaniel P. Berrangé    - env:
1368c3daf97SAlex Bennée        - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}"
1373e094234SDaniel P. Berrangé
1383e094234SDaniel P. Berrangé
139f3908ff7SAlex Bennée    # Alternate coroutines implementations are only really of interest to KVM users
140f3908ff7SAlex Bennée    # However we can't test against KVM on Travis so we can only run unit tests
141c21d7efcSDaniel P. Berrangé    - env:
142f3908ff7SAlex Bennée        - CONFIG="--with-coroutine=ucontext --disable-tcg"
143f3908ff7SAlex Bennée        - TEST_CMD="make check-unit -j3 V=1"
1443e094234SDaniel P. Berrangé
1453e094234SDaniel P. Berrangé
146c21d7efcSDaniel P. Berrangé    - env:
147f3908ff7SAlex Bennée        - CONFIG="--with-coroutine=sigaltstack --disable-tcg"
148f3908ff7SAlex Bennée        - TEST_CMD="make check-unit -j3 V=1"
1493e094234SDaniel P. Berrangé
1503e094234SDaniel P. Berrangé
151956d4506SAlex Bennée    # Check we can build docs and tools (out of tree)
152570f3c77SAlex Bennée    - env:
153956d4506SAlex Bennée        - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
154570f3c77SAlex Bennée        - BASE_CONFIG="--enable-tools --enable-docs"
155570f3c77SAlex Bennée        - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user"
156570f3c77SAlex Bennée      addons:
157570f3c77SAlex Bennée        apt:
158570f3c77SAlex Bennée          packages:
159570f3c77SAlex Bennée            - python-sphinx
160570f3c77SAlex Bennée            - texinfo
161570f3c77SAlex Bennée            - perl
162570f3c77SAlex Bennée
163197be697SDaniel P. Berrangé
164ae6d692dSAlex Bennée    # Test with Clang for compile portability (Travis uses clang-5.0)
165c21d7efcSDaniel P. Berrangé    - env:
166c21d7efcSDaniel P. Berrangé        - CONFIG="--disable-system"
167ae6d692dSAlex Bennée      compiler: clang
168197be697SDaniel P. Berrangé
169197be697SDaniel P. Berrangé
170c21d7efcSDaniel P. Berrangé    - env:
1718c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
1728c3daf97SAlex Bennée      compiler: clang
1738c3daf97SAlex Bennée
1748c3daf97SAlex Bennée
1758c3daf97SAlex Bennée    - env:
1767831147eSAlex Bennée        - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} "
1777831147eSAlex Bennée      compiler: clang
1787831147eSAlex Bennée      before_script:
1797831147eSAlex Bennée        - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; }
1807831147eSAlex Bennée
1817831147eSAlex Bennée
1827831147eSAlex Bennée    - env:
1838c3daf97SAlex Bennée        - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
184d9a6b013SDaniel P. Berrange      compiler: clang
185197be697SDaniel P. Berrangé
186197be697SDaniel P. Berrangé
1876c933291SAlex Bennée    # gprof/gcov are GCC features
188c21d7efcSDaniel P. Berrangé    - env:
1898c3daf97SAlex Bennée        - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}"
1900708e647SAlex Bennée      after_success:
1910708e647SAlex Bennée        - ${SRC_DIR}/scripts/travis/coverage-summary.sh
192197be697SDaniel P. Berrangé
193197be697SDaniel P. Berrangé
1946c933291SAlex Bennée    # We manually include builds which we disable "make check" for
195c21d7efcSDaniel P. Berrangé    - env:
196386dc514SAlex Bennée        - CONFIG="--without-default-devices --disable-user"
19720885b5bSPaolo Bonzini        - TEST_CMD=""
19820885b5bSPaolo Bonzini
19920885b5bSPaolo Bonzini
20020885b5bSPaolo Bonzini    # We manually include builds which we disable "make check" for
20120885b5bSPaolo Bonzini    - env:
202c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-debug --enable-tcg-interpreter"
203c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
204197be697SDaniel P. Berrangé
205197be697SDaniel P. Berrangé
206f8309de9SAlex Bennée    # We don't need to exercise every backend with every front-end
207c21d7efcSDaniel P. Berrangé    - env:
208c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system"
209c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
210197be697SDaniel P. Berrangé
211197be697SDaniel P. Berrangé
212c21d7efcSDaniel P. Berrangé    - env:
213c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu"
214c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
215197be697SDaniel P. Berrangé
216197be697SDaniel P. Berrangé
217c21d7efcSDaniel P. Berrangé    - env:
218c21d7efcSDaniel P. Berrangé        - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu"
219c21d7efcSDaniel P. Berrangé        - TEST_CMD=""
220197be697SDaniel P. Berrangé
221197be697SDaniel P. Berrangé
222adcf9683SAlex Bennée    # MacOSX builds
223c21d7efcSDaniel P. Berrangé    - env:
2248c3daf97SAlex Bennée        - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS}"
2251d002037SAlex Bennée      os: osx
226adcf9683SAlex Bennée      osx_image: xcode9.4
227adcf9683SAlex Bennée      compiler: clang
228197be697SDaniel P. Berrangé
229197be697SDaniel P. Berrangé
230cd7507cbSPhilippe Mathieu-Daudé    - env:
231cd7507cbSPhilippe Mathieu-Daudé        - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu"
232cd7507cbSPhilippe Mathieu-Daudé      os: osx
233cd7507cbSPhilippe Mathieu-Daudé      osx_image: xcode10.2
234cd7507cbSPhilippe Mathieu-Daudé      compiler: clang
235cd7507cbSPhilippe Mathieu-Daudé
236cd7507cbSPhilippe Mathieu-Daudé
237ae6d692dSAlex Bennée    # Python builds
238c21d7efcSDaniel P. Berrangé    - env:
239c21d7efcSDaniel P. Berrangé        - CONFIG="--target-list=x86_64-softmmu"
24053fefde4SCleber Rosa      language: python
2418e73a3c5SDaniel P. Berrange      python:
24253fefde4SCleber Rosa        - "3.4"
243197be697SDaniel P. Berrangé
244197be697SDaniel P. Berrangé
245c21d7efcSDaniel P. Berrangé    - env:
246c21d7efcSDaniel P. Berrangé        - CONFIG="--target-list=x86_64-softmmu"
24753fefde4SCleber Rosa      language: python
2488e73a3c5SDaniel P. Berrange      python:
2498e73a3c5SDaniel P. Berrange        - "3.6"
250197be697SDaniel P. Berrangé
251197be697SDaniel P. Berrangé
252aa983ff6SCleber Rosa    # Acceptance (Functional) tests
253c21d7efcSDaniel P. Berrangé    - env:
25425311649SPhilippe 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"
2550b98c20aSEduardo Habkost        - TEST_CMD="make check-acceptance"
256c21f30ebSCleber Rosa      after_failure:
257c21f30ebSCleber Rosa        - cat tests/results/latest/job.log
258aa983ff6SCleber Rosa      addons:
259aa983ff6SCleber Rosa        apt:
260aa983ff6SCleber Rosa          packages:
26125311649SPhilippe Mathieu-Daudé            - python3-pil
262aa983ff6SCleber Rosa            - python3-pip
26395310576SAlex Bennée            - python3.5-venv
26425311649SPhilippe Mathieu-Daudé            - tesseract-ocr
26525311649SPhilippe Mathieu-Daudé            - tesseract-ocr-eng
26625311649SPhilippe Mathieu-Daudé
26725311649SPhilippe Mathieu-Daudé
26832265288SAlex Bennée    # Using newer GCC with sanitizers
26932265288SAlex Bennée    - addons:
27032265288SAlex Bennée        apt:
271ac07ffc6SAlex Bennée          update: true
27232265288SAlex Bennée          sources:
27332265288SAlex Bennée            # PPAs for newer toolchains
27432265288SAlex Bennée            - ubuntu-toolchain-r-test
27532265288SAlex Bennée          packages:
27632265288SAlex Bennée            # Extra toolchains
2773998c25eSAlex Bennée            - gcc-9
2783998c25eSAlex Bennée            - g++-9
27932265288SAlex Bennée            # Build dependencies
28032265288SAlex Bennée            - libaio-dev
28132265288SAlex Bennée            - libattr1-dev
28232265288SAlex Bennée            - libbrlapi-dev
28332265288SAlex Bennée            - libcap-ng-dev
28432265288SAlex Bennée            - libgnutls-dev
28532265288SAlex Bennée            - libgtk-3-dev
28632265288SAlex Bennée            - libiscsi-dev
28732265288SAlex Bennée            - liblttng-ust-dev
28832265288SAlex Bennée            - libnfs-dev
28932265288SAlex Bennée            - libncurses5-dev
29032265288SAlex Bennée            - libnss3-dev
29132265288SAlex Bennée            - libpixman-1-dev
29232265288SAlex Bennée            - libpng12-dev
29332265288SAlex Bennée            - librados-dev
29432265288SAlex Bennée            - libsdl1.2-dev
29532265288SAlex Bennée            - libseccomp-dev
29632265288SAlex Bennée            - libspice-protocol-dev
29732265288SAlex Bennée            - libspice-server-dev
298b10d49d7SPino Toscano            - libssh-dev
29932265288SAlex Bennée            - liburcu-dev
30032265288SAlex Bennée            - libusb-1.0-0-dev
30195310576SAlex Bennée            - libvte-2.91-dev
30232265288SAlex Bennée            - sparse
30332265288SAlex Bennée            - uuid-dev
30432265288SAlex Bennée      language: generic
30532265288SAlex Bennée      compiler: none
30632265288SAlex Bennée      env:
3073998c25eSAlex Bennée        - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9
3083998c25eSAlex Bennée        - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user"
30932265288SAlex Bennée        - TEST_CMD=""
31032265288SAlex Bennée      before_script:
3113998c25eSAlex Bennée        - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; }
312197be697SDaniel P. Berrangé
313197be697SDaniel P. Berrangé
314dab3a7c0SAlex Bennée    # Run check-tcg against linux-user
31565b26da4SAlex Bennée    - env:
316570f3c77SAlex Bennée        - CONFIG="--disable-system"
317e2576f9bSDaniel P. Berrangé        - TEST_CMD="make -j3 check-tcg V=1"
318dab3a7c0SAlex Bennée
319dab3a7c0SAlex Bennée    # Run check-tcg against softmmu targets
320dab3a7c0SAlex Bennée    - env:
321591ff1ffSAlex Bennée        - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
322dab3a7c0SAlex Bennée        - TEST_CMD="make -j3 check-tcg V=1"
323