mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-27 13:30:52 +00:00
fc4241827f
Even though the host machines that run the Travis CI jobs have quite a lot of CPUs (e.g. nproc in an aarch64 job reports 32), the containers on Travis are still limited to 2 vCPUs according to: https://docs.travis-ci.com/user/reference/overview/#approx-boot-time So we do not gain much when compiling with a job number based on the output of "getconf _NPROCESSORS_ONLN" - quite the contrary, the aarch64 containers are currently aborting quite often since they are running out of memory. Thus let's rather use a fixed number like 3 in the jobs here, so that e.g. two threads can actively run while a third one might be waiting for I/O operations to complete. This should hopefully fix the out-of-memory failures in the aarch64 CI jobs. Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20210217102531.1441557-1-thuth@redhat.com> [AJB: add comment] Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20210217121932.19986-6-alex.bennee@linaro.org> Signed-off-by: Thomas Huth <thuth@redhat.com>
331 lines
9.2 KiB
YAML
331 lines
9.2 KiB
YAML
# The current Travis default is a VM based 16.04 Xenial on GCE
|
|
# Additional builds with specific requirements for a full VM need to
|
|
# be added as additional matrix: entries later on
|
|
os: linux
|
|
dist: focal
|
|
language: c
|
|
compiler:
|
|
- gcc
|
|
cache:
|
|
# There is one cache per branch and compiler version.
|
|
# characteristics of each job are used to identify the cache:
|
|
# - OS name (currently only linux)
|
|
# - OS distribution (for Linux, bionic or focal)
|
|
# - Names and values of visible environment variables set in .travis.yml or Settings panel
|
|
timeout: 1200
|
|
ccache: true
|
|
pip: true
|
|
directories:
|
|
- $HOME/avocado/data/cache
|
|
|
|
|
|
addons:
|
|
apt:
|
|
packages:
|
|
# Build dependencies
|
|
- libaio-dev
|
|
- libattr1-dev
|
|
- libbrlapi-dev
|
|
- libcap-ng-dev
|
|
- libgcc-7-dev
|
|
- libgnutls28-dev
|
|
- libgtk-3-dev
|
|
- libiscsi-dev
|
|
- liblttng-ust-dev
|
|
- libncurses5-dev
|
|
- libnfs-dev
|
|
- libnss3-dev
|
|
- libpixman-1-dev
|
|
- libpng-dev
|
|
- librados-dev
|
|
- libsdl2-dev
|
|
- libsdl2-image-dev
|
|
- libseccomp-dev
|
|
- libspice-protocol-dev
|
|
- libspice-server-dev
|
|
- libssh-dev
|
|
- liburcu-dev
|
|
- libusb-1.0-0-dev
|
|
- libvdeplug-dev
|
|
- libvte-2.91-dev
|
|
- libzstd-dev
|
|
- ninja-build
|
|
- sparse
|
|
- uuid-dev
|
|
# Tests dependencies
|
|
- genisoimage
|
|
|
|
|
|
# The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
|
|
# to prevent IRC notifications from forks. This was created using:
|
|
# $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu"
|
|
notifications:
|
|
irc:
|
|
channels:
|
|
- secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM="
|
|
on_success: change
|
|
on_failure: always
|
|
|
|
|
|
env:
|
|
global:
|
|
- SRC_DIR=".."
|
|
- BUILD_DIR="build"
|
|
- BASE_CONFIG="--disable-docs --disable-tools"
|
|
- TEST_BUILD_CMD=""
|
|
- TEST_CMD="make check V=1"
|
|
# This is broadly a list of "mainline" softmmu targets which have support across the major distros
|
|
- MAIN_SOFTMMU_TARGETS="aarch64-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
|
|
- CCACHE_SLOPPINESS="include_file_ctime,include_file_mtime"
|
|
- CCACHE_MAXSIZE=1G
|
|
- G_MESSAGES_DEBUG=error
|
|
|
|
|
|
git:
|
|
# we want to do this ourselves
|
|
submodules: false
|
|
|
|
# Common first phase for all steps
|
|
# We no longer use nproc to calculate jobs:
|
|
# https://travis-ci.community/t/nproc-reports-32-cores-on-arm64/5851
|
|
before_install:
|
|
- if command -v ccache ; then ccache --zero-stats ; fi
|
|
- export JOBS=3
|
|
- echo "=== Using ${JOBS} simultaneous jobs ==="
|
|
|
|
# Configure step - may be overridden
|
|
before_script:
|
|
- mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
|
|
- ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log meson-logs/meson-log.txt && exit 1; }
|
|
|
|
# Main build & test - rarely overridden - controlled by TEST_CMD
|
|
script:
|
|
- BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
|
|
- |
|
|
if [ "$BUILD_RC" -eq 0 ] && [ -n "$TEST_BUILD_CMD" ]; then
|
|
${TEST_BUILD_CMD} || BUILD_RC=$?
|
|
else
|
|
$(exit $BUILD_RC);
|
|
fi
|
|
- |
|
|
if [ "$BUILD_RC" -eq 0 ] ; then
|
|
${TEST_CMD} ;
|
|
else
|
|
$(exit $BUILD_RC);
|
|
fi
|
|
after_script:
|
|
- df -h
|
|
- if command -v ccache ; then ccache --show-stats ; fi
|
|
|
|
|
|
jobs:
|
|
include:
|
|
|
|
- name: "[aarch64] GCC check-tcg"
|
|
arch: arm64
|
|
dist: focal
|
|
addons:
|
|
apt_packages:
|
|
- libaio-dev
|
|
- libattr1-dev
|
|
- libbrlapi-dev
|
|
- libcap-ng-dev
|
|
- libgcrypt20-dev
|
|
- libgnutls28-dev
|
|
- libgtk-3-dev
|
|
- libiscsi-dev
|
|
- liblttng-ust-dev
|
|
- libncurses5-dev
|
|
- libnfs-dev
|
|
- libnss3-dev
|
|
- libpixman-1-dev
|
|
- libpng-dev
|
|
- librados-dev
|
|
- libsdl2-dev
|
|
- libseccomp-dev
|
|
- liburcu-dev
|
|
- libusb-1.0-0-dev
|
|
- libvdeplug-dev
|
|
- libvte-2.91-dev
|
|
- ninja-build
|
|
# Tests dependencies
|
|
- genisoimage
|
|
env:
|
|
- TEST_CMD="make check check-tcg V=1"
|
|
- CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS} --cxx=/bin/false"
|
|
- UNRELIABLE=true
|
|
|
|
- name: "[ppc64] GCC check-tcg"
|
|
arch: ppc64le
|
|
dist: focal
|
|
addons:
|
|
apt_packages:
|
|
- libaio-dev
|
|
- libattr1-dev
|
|
- libbrlapi-dev
|
|
- libcap-ng-dev
|
|
- libgcrypt20-dev
|
|
- libgnutls28-dev
|
|
- libgtk-3-dev
|
|
- libiscsi-dev
|
|
- liblttng-ust-dev
|
|
- libncurses5-dev
|
|
- libnfs-dev
|
|
- libnss3-dev
|
|
- libpixman-1-dev
|
|
- libpng-dev
|
|
- librados-dev
|
|
- libsdl2-dev
|
|
- libseccomp-dev
|
|
- liburcu-dev
|
|
- libusb-1.0-0-dev
|
|
- libvdeplug-dev
|
|
- libvte-2.91-dev
|
|
- ninja-build
|
|
# Tests dependencies
|
|
- genisoimage
|
|
env:
|
|
- TEST_CMD="make check check-tcg V=1"
|
|
- CONFIG="--disable-containers --target-list=ppc64-softmmu,ppc64le-linux-user"
|
|
|
|
- name: "[s390x] GCC check-tcg"
|
|
arch: s390x
|
|
dist: bionic
|
|
addons:
|
|
apt_packages:
|
|
- libaio-dev
|
|
- libattr1-dev
|
|
- libbrlapi-dev
|
|
- libcap-ng-dev
|
|
- libgcrypt20-dev
|
|
- libgnutls28-dev
|
|
- libgtk-3-dev
|
|
- libiscsi-dev
|
|
- liblttng-ust-dev
|
|
- libncurses5-dev
|
|
- libnfs-dev
|
|
- libnss3-dev
|
|
- libpixman-1-dev
|
|
- libpng-dev
|
|
- librados-dev
|
|
- libsdl2-dev
|
|
- libseccomp-dev
|
|
- liburcu-dev
|
|
- libusb-1.0-0-dev
|
|
- libvdeplug-dev
|
|
- libvte-2.91-dev
|
|
- ninja-build
|
|
# Tests dependencies
|
|
- genisoimage
|
|
env:
|
|
- TEST_CMD="make check check-tcg V=1"
|
|
- CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user"
|
|
- UNRELIABLE=true
|
|
script:
|
|
- BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
|
|
- |
|
|
if [ "$BUILD_RC" -eq 0 ] ; then
|
|
mv pc-bios/s390-ccw/*.img pc-bios/ ;
|
|
${TEST_CMD} ;
|
|
else
|
|
$(exit $BUILD_RC);
|
|
fi
|
|
|
|
- name: "[s390x] GCC (other-softmmu)"
|
|
arch: s390x
|
|
dist: bionic
|
|
addons:
|
|
apt_packages:
|
|
- libaio-dev
|
|
- libattr1-dev
|
|
- libcap-ng-dev
|
|
- libgnutls28-dev
|
|
- libiscsi-dev
|
|
- liblttng-ust-dev
|
|
- liblzo2-dev
|
|
- libncurses-dev
|
|
- libnfs-dev
|
|
- libnss3-dev
|
|
- libpixman-1-dev
|
|
- libsdl2-dev
|
|
- libsdl2-image-dev
|
|
- libseccomp-dev
|
|
- libsnappy-dev
|
|
- libzstd-dev
|
|
- nettle-dev
|
|
- xfslibs-dev
|
|
- ninja-build
|
|
# Tests dependencies
|
|
- genisoimage
|
|
env:
|
|
- CONFIG="--disable-containers --audio-drv-list=sdl --disable-user
|
|
--target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
|
|
|
|
- name: "[s390x] GCC (user)"
|
|
arch: s390x
|
|
dist: bionic
|
|
addons:
|
|
apt_packages:
|
|
- libgcrypt20-dev
|
|
- libgnutls28-dev
|
|
- ninja-build
|
|
env:
|
|
- CONFIG="--disable-containers --disable-system"
|
|
|
|
- name: "[s390x] Clang (disable-tcg)"
|
|
arch: s390x
|
|
dist: bionic
|
|
compiler: clang
|
|
addons:
|
|
apt_packages:
|
|
- libaio-dev
|
|
- libattr1-dev
|
|
- libbrlapi-dev
|
|
- libcap-ng-dev
|
|
- libgcrypt20-dev
|
|
- libgnutls28-dev
|
|
- libgtk-3-dev
|
|
- libiscsi-dev
|
|
- liblttng-ust-dev
|
|
- libncurses5-dev
|
|
- libnfs-dev
|
|
- libnss3-dev
|
|
- libpixman-1-dev
|
|
- libpng-dev
|
|
- librados-dev
|
|
- libsdl2-dev
|
|
- libseccomp-dev
|
|
- liburcu-dev
|
|
- libusb-1.0-0-dev
|
|
- libvdeplug-dev
|
|
- libvte-2.91-dev
|
|
- ninja-build
|
|
env:
|
|
- TEST_CMD="make check-unit"
|
|
- CONFIG="--disable-containers --disable-tcg --enable-kvm
|
|
--disable-tools --host-cc=clang --cxx=clang++"
|
|
- UNRELIABLE=true
|
|
|
|
# Release builds
|
|
# The make-release script expect a QEMU version, so our tag must start with a 'v'.
|
|
# This is the case when release candidate tags are created.
|
|
- name: "Release tarball"
|
|
if: tag IS present AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/
|
|
env:
|
|
# We want to build from the release tarball
|
|
- BUILD_DIR="release/build/dir" SRC_DIR="../../.."
|
|
- BASE_CONFIG="--prefix=$PWD/dist"
|
|
- CONFIG="--target-list=x86_64-softmmu,aarch64-softmmu,armeb-linux-user,ppc-linux-user"
|
|
- TEST_CMD="make install -j${JOBS}"
|
|
- QEMU_VERSION="${TRAVIS_TAG:1}"
|
|
- CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
|
|
script:
|
|
- make -C ${SRC_DIR} qemu-${QEMU_VERSION}.tar.bz2
|
|
- ls -l ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2
|
|
- tar -xf ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION}
|
|
- mkdir -p release-build && cd release-build
|
|
- ../configure ${BASE_CONFIG} ${CONFIG} || { cat config.log meson-logs/meson-log.txt && exit 1; }
|
|
- make install
|
|
allow_failures:
|
|
- env: UNRELIABLE=true
|