object: Improve documentation of interfaces
[qemu/ar7.git] / .travis.yml
blob6cb8af6fa59925eba88289e2a58550de90232598
1 # The current Travis default is a VM based 16.04 Xenial on GCE
2 # Additional builds with specific requirements for a full VM need to
3 # be added as additional matrix: entries later on
4 dist: xenial
5 language: c
6 compiler:
7   - gcc
8 cache:
9   # There is one cache per branch and compiler version.
10   # characteristics of each job are used to identify the cache:
11   # - OS name (currently, linux, osx, or windows)
12   # - OS distribution (for Linux, xenial, trusty, or precise)
13   # - macOS image name (e.g., xcode7.2)
14   # - Names and values of visible environment variables set in .travis.yml or Settings panel
15   timeout: 1200
16   ccache: true
17   pip: true
18   directories:
19   - $HOME/avocado/data/cache
22 addons:
23   apt:
24     packages:
25       # Build dependencies
26       - libaio-dev
27       - libattr1-dev
28       - libbrlapi-dev
29       - libcap-ng-dev
30       - libgcc-4.8-dev
31       - libgnutls28-dev
32       - libgtk-3-dev
33       - libiscsi-dev
34       - liblttng-ust-dev
35       - libncurses5-dev
36       - libnfs-dev
37       - libnss3-dev
38       - libpixman-1-dev
39       - libpng-dev
40       - librados-dev
41       - libsdl2-dev
42       - libsdl2-image-dev
43       - libseccomp-dev
44       - libspice-protocol-dev
45       - libspice-server-dev
46       - libssh-dev
47       - liburcu-dev
48       - libusb-1.0-0-dev
49       - libvdeplug-dev
50       - libvte-2.91-dev
51       - sparse
52       - uuid-dev
53       - gcovr
54   homebrew:
55     packages:
56       - ccache
57       - glib
58       - pixman
59       - gnu-sed
60     update: true
63 # The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
64 # to prevent IRC notifications from forks. This was created using:
65 # $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu"
66 notifications:
67   irc:
68     channels:
69       - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM="
70     on_success: change
71     on_failure: always
74 env:
75   global:
76     - SRC_DIR="."
77     - BUILD_DIR="."
78     - BASE_CONFIG="--disable-docs --disable-tools"
79     - TEST_CMD="make check V=1"
80     # This is broadly a list of "mainline" softmmu targets which have support across the major distros
81     - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
82     - CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime"
83     - CCACHE_MAXSIZE=1G
86 git:
87   # we want to do this ourselves
88   submodules: false
91 before_script:
92   - if [ "$TRAVIS_OS_NAME" == "osx" ] ; then export PATH="/usr/local/opt/ccache/libexec:$PATH" ; fi
93   - if command -v ccache ; then ccache --zero-stats ; fi
94   - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
95   - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
96 script:
97   - make -j3 && travis_retry ${TEST_CMD}
98 after_script:
99   - if command -v ccache ; then ccache --show-stats ; fi
102 matrix:
103   include:
104     - env:
105         - CONFIG="--disable-system --static"
106         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
109     # we split the system builds as it takes a while to build them all
110     - env:
111         - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
112         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
115     - env:
116         - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
117         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
120     # Just build tools and run minimal unit and softfloat checks
121     - env:
122         - BASE_CONFIG="--enable-tools"
123         - CONFIG="--disable-user --disable-system"
124         - TEST_CMD="make check-unit check-softfloat -j3"
125         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
128     # --enable-debug implies --enable-debug-tcg, also runs quite a bit slower
129     - env:
130         - CONFIG="--enable-debug --target-list=${MAIN_SOFTMMU_TARGETS}"
131         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug"
134     # TCG debug can be run just on its own and is mostly agnostic to user/softmmu distinctions
135     - env:
136         - CONFIG="--enable-debug-tcg --disable-system"
137         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
140     - env:
141         - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}"
144     # Module builds are mostly of interest to major distros
145     - env:
146         - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}"
147         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
150     # Alternate coroutines implementations are only really of interest to KVM users
151     # However we can't test against KVM on Travis so we can only run unit tests
152     - env:
153         - CONFIG="--with-coroutine=ucontext --disable-tcg"
154         - TEST_CMD="make check-unit -j3 V=1"
157     - env:
158         - CONFIG="--with-coroutine=sigaltstack --disable-tcg"
159         - TEST_CMD="make check-unit -j3 V=1"
162     # Check we can build docs and tools (out of tree)
163     - env:
164         - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
165         - BASE_CONFIG="--enable-tools --enable-docs"
166         - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user"
167         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
168       addons:
169         apt:
170           packages:
171             - python-sphinx
172             - texinfo
173             - perl
176     # Test with Clang for compile portability (Travis uses clang-5.0)
177     - env:
178         - CONFIG="--disable-system"
179         - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default"
180       compiler: clang
183     - env:
184         - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
185         - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default"
186       compiler: clang
189     - env:
190         - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} "
191         - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-sanitize"
192       compiler: clang
193       before_script:
194         - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; }
197     - env:
198         - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
199         - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default"
200       compiler: clang
203     # gprof/gcov are GCC features
204     - env:
205         - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}"
206       after_success:
207         - ${SRC_DIR}/scripts/travis/coverage-summary.sh
210     # We manually include builds which we disable "make check" for
211     - env:
212         - CONFIG="--without-default-devices --disable-user"
213         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
214         - TEST_CMD=""
217     # We manually include builds which we disable "make check" for
218     - env:
219         - CONFIG="--enable-debug --enable-tcg-interpreter"
220         - TEST_CMD=""
223     # We don't need to exercise every backend with every front-end
224     - env:
225         - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system"
226         - TEST_CMD=""
229     - env:
230         - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu"
231         - TEST_CMD=""
234     - env:
235         - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu"
236         - TEST_CMD=""
239     # MacOSX builds - cirrus.yml also tests some MacOS builds including latest Xcode
241     - env:
242         - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu"
243       os: osx
244       osx_image: xcode10.3
245       compiler: clang
248     # Python builds
249     - env:
250         - CONFIG="--target-list=x86_64-softmmu"
251         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
252       language: python
253       python:
254         - "3.4"
257     - env:
258         - CONFIG="--target-list=x86_64-softmmu"
259         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
260       language: python
261       python:
262         - "3.6"
265     # Acceptance (Functional) tests
266     - env:
267         - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,aarch64-softmmu,arm-softmmu,s390x-softmmu,alpha-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,sparc-softmmu"
268         - TEST_CMD="make check-acceptance"
269       after_failure:
270         - cat tests/results/latest/job.log
271       addons:
272         apt:
273           packages:
274             - python3-pil
275             - python3-pip
276             - python3.5-venv
277             - tesseract-ocr
278             - tesseract-ocr-eng
281     # Using newer GCC with sanitizers
282     - addons:
283         apt:
284           update: true
285           sources:
286             # PPAs for newer toolchains
287             - ubuntu-toolchain-r-test
288           packages:
289             # Extra toolchains
290             - gcc-9
291             - g++-9
292             # Build dependencies
293             - libaio-dev
294             - libattr1-dev
295             - libbrlapi-dev
296             - libcap-ng-dev
297             - libgnutls-dev
298             - libgtk-3-dev
299             - libiscsi-dev
300             - liblttng-ust-dev
301             - libnfs-dev
302             - libncurses5-dev
303             - libnss3-dev
304             - libpixman-1-dev
305             - libpng12-dev
306             - librados-dev
307             - libsdl2-dev
308             - libsdl2-image-dev
309             - libseccomp-dev
310             - libspice-protocol-dev
311             - libspice-server-dev
312             - libssh-dev
313             - liburcu-dev
314             - libusb-1.0-0-dev
315             - libvte-2.91-dev
316             - sparse
317             - uuid-dev
318       language: generic
319       compiler: none
320       env:
321         - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9
322         - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user"
323         - TEST_CMD=""
324       before_script:
325         - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; }
328     # Run check-tcg against linux-user
329     - env:
330         - CONFIG="--disable-system --enable-debug-tcg"
331         - TEST_CMD="make -j3 check-tcg V=1"
332         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
335     # Run check-tcg against linux-user (with plugins)
336     # we skip sparc64-linux-user until it has been fixed somewhat
337     - env:
338         - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user"
339         - TEST_CMD="make -j3 check-tcg V=1"
340         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
343     # Run check-tcg against softmmu targets
344     - env:
345         - CONFIG="--enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
346         - TEST_CMD="make -j3 check-tcg V=1"
347         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
350     # Run check-tcg against softmmu targets (with plugins)
351     - env:
352         - CONFIG="--enable-plugins --enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
353         - TEST_CMD="make -j3 check-tcg V=1"
354         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
357     # Release builds
358     # The make-release script expect a QEMU version, so our tag must start with a 'v'.
359     # This is the case when release candidate tags are created.
360     - if: tag IS present AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/
361       env:
362         # We want to build from the release tarball
363         - BUILD_DIR="release/build/dir" SRC_DIR="../../.."
364         - BASE_CONFIG="--prefix=$PWD/dist"
365         - CONFIG="--target-list=x86_64-softmmu,aarch64-softmmu,armeb-linux-user,ppc-linux-user"
366         - TEST_CMD="make install -j3"
367         - QEMU_VERSION="${TRAVIS_TAG:1}"
368         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
369       before_script:
370         - command -v ccache && ccache --zero-stats
371         - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
372       script:
373         - make -C ${SRC_DIR} qemu-${QEMU_VERSION}.tar.bz2
374         - ls -l ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2
375         - tar -xf ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION}
376         - ./configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
377         - make install