.shippable.yml | 2 +- .travis.yml | 166 ++++++++++++++------- tests/docker/Makefile.include | 16 +- tests/docker/docker.py | 16 +- tests/docker/dockerfiles/debian-amd64.docker | 2 +- tests/docker/dockerfiles/debian-armel-cross.docker | 2 +- tests/docker/dockerfiles/debian-armhf-cross.docker | 2 +- .../dockerfiles/debian-mips64el-cross.docker | 2 +- .../docker/dockerfiles/debian-mipsel-cross.docker | 2 +- .../docker/dockerfiles/debian-ppc64el-cross.docker | 2 +- tests/docker/dockerfiles/debian-s390x-cross.docker | 2 +- tests/tcg/aarch64/Makefile.softmmu-target | 12 +- tests/tcg/aarch64/Makefile.target | 2 + tests/tcg/configure.sh | 18 +++ 14 files changed, 168 insertions(+), 78 deletions(-)
The following changes since commit 7bd9d0a9e26c7a3c67c0f174f0009ba19969b158: Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2020-02-04' into staging (2020-02-04 16:12:31 +0000) are available in the Git repository at: https://github.com/stsquad/qemu.git tags/pull-testing-040220-1 for you to fetch changes up to 68e5b85e41fe7684e58cd077772b7d1e8bc092c7: .travis.yml: ensure python3-sphinx installed for docs (2020-02-04 17:13:29 +0000) ---------------------------------------------------------------- Testing updates and build fixes: - move more cross compilers to buster - fix build breakage (hppa Kconfig) - disable docs on shippable - build docs under bionic with python3 - travis.yml re-factoring - check capabilities of non-docker compilers - smarter make -j parallelism ---------------------------------------------------------------- Alex Bennée (13): tests/docker: move most cross compilers to buster base tests/docker: better handle symlinked libs .shippable: --disable-docs for cross-compile tests .travis.yml: build documents under bionic .travis.yml: move cache flushing to early common phase .travis.yml: probe for number of available processors tests/tcg: add a configure compiler check for ARMv8.1 and SVE tests/tcg: gate pauth-% tests on having compiler support .travis.yml: introduce TEST_BUILD_CMD and use it for check-tcg .travis.yml: drop the travis_retry from tests .travis.yml: drop cris-linux-user from the plugins test .travis.yml: single thread build-tcg .travis.yml: ensure python3-sphinx installed for docs Philippe Mathieu-Daudé (2): .travis.yml: Drop superfluous use of --python=python3 parameter .travis.yml: Add description to each job Wainer dos Santos Moschetta (1): travis.yml: Install genisoimage package .shippable.yml | 2 +- .travis.yml | 166 ++++++++++++++------- tests/docker/Makefile.include | 16 +- tests/docker/docker.py | 16 +- tests/docker/dockerfiles/debian-amd64.docker | 2 +- tests/docker/dockerfiles/debian-armel-cross.docker | 2 +- tests/docker/dockerfiles/debian-armhf-cross.docker | 2 +- .../dockerfiles/debian-mips64el-cross.docker | 2 +- .../docker/dockerfiles/debian-mipsel-cross.docker | 2 +- .../docker/dockerfiles/debian-ppc64el-cross.docker | 2 +- tests/docker/dockerfiles/debian-s390x-cross.docker | 2 +- tests/tcg/aarch64/Makefile.softmmu-target | 12 +- tests/tcg/aarch64/Makefile.target | 2 + tests/tcg/configure.sh | 18 +++ 14 files changed, 168 insertions(+), 78 deletions(-) -- 2.20.1
On Tue, 4 Feb 2020 at 18:40, Alex Bennée <alex.bennee@linaro.org> wrote: > > The following changes since commit 7bd9d0a9e26c7a3c67c0f174f0009ba19969b158: > > Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2020-02-04' into staging (2020-02-04 16:12:31 +0000) > > are available in the Git repository at: > > https://github.com/stsquad/qemu.git tags/pull-testing-040220-1 > > for you to fetch changes up to 68e5b85e41fe7684e58cd077772b7d1e8bc092c7: > > .travis.yml: ensure python3-sphinx installed for docs (2020-02-04 17:13:29 +0000) > > ---------------------------------------------------------------- > Testing updates and build fixes: > > - move more cross compilers to buster > - fix build breakage (hppa Kconfig) > - disable docs on shippable > - build docs under bionic with python3 > - travis.yml re-factoring > - check capabilities of non-docker compilers > - smarter make -j parallelism Applied, thanks. Please update the changelog at https://wiki.qemu.org/ChangeLog/5.0 for any user-visible changes. -- PMM
When we are copying we want to ensure we grab the first resolution (the found in path section). However even that binary might be a symlink so lets make sure we chase the symlinks to copy the right binary to where it can be found. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Robert Foley <robert.foley@linaro.org> Message-Id: <20200203090932.19147-3-alex.bennee@linaro.org> diff --git a/tests/docker/docker.py b/tests/docker/docker.py index 31d8adf836e..d8268c11117 100755 --- a/tests/docker/docker.py +++ b/tests/docker/docker.py @@ -106,18 +106,19 @@ def _get_so_libs(executable): """Return a list of libraries associated with an executable. The paths may be symbolic links which would need to be resolved to - ensure theright data is copied.""" + ensure the right data is copied.""" libs = [] - ldd_re = re.compile(r"(/.*/)(\S*)") + ldd_re = re.compile(r"(?:\S+ => )?(\S*) \(:?0x[0-9a-f]+\)") try: ldd_output = subprocess.check_output(["ldd", executable]).decode('utf-8') for line in ldd_output.split("\n"): search = ldd_re.search(line) - if search and len(search.groups()) == 2: - so_path = search.groups()[0] - so_lib = search.groups()[1] - libs.append("%s/%s" % (so_path, so_lib)) + if search: + try: + libs.append(s.group(1)) + except IndexError: + pass except subprocess.CalledProcessError: print("%s had no associated libraries (static build?)" % (executable)) @@ -145,7 +146,8 @@ def _copy_binary_with_libs(src, bin_dest, dest_dir): if libs: for l in libs: so_path = os.path.dirname(l) - _copy_with_mkdir(l, dest_dir, so_path) + real_l = os.path.realpath(l) + _copy_with_mkdir(real_l, dest_dir, so_path) def _check_binfmt_misc(executable): -- 2.20.1
From: Wainer dos Santos Moschetta <wainersm@redhat.com> The genisoimage program is required for tests/cdrom-test tests, otherwise they are skipped. The current Travis environments do not provide it by default, so let's explicitly require the genisoimage package. Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20200110191254.11303-2-wainersm@redhat.com> Message-Id: <20200203090932.19147-5-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index 1ae645e9fce..e75c979b6c5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -51,6 +51,8 @@ addons: - sparse - uuid-dev - gcovr + # Tests dependencies + - genisoimage # The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu @@ -383,6 +385,8 @@ matrix: - libusb-1.0-0-dev - libvdeplug-dev - libvte-2.91-dev + # Tests dependencies + - genisoimage env: - TEST_CMD="make check check-tcg V=1" - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS}" @@ -412,6 +416,8 @@ matrix: - libusb-1.0-0-dev - libvdeplug-dev - libvte-2.91-dev + # Tests dependencies + - genisoimage env: - TEST_CMD="make check check-tcg V=1" - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},ppc64le-linux-user" @@ -441,6 +447,8 @@ matrix: - libusb-1.0-0-dev - libvdeplug-dev - libvte-2.91-dev + # Tests dependencies + - genisoimage env: - TEST_CMD="make check check-tcg V=1" - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user" -- 2.20.1
The sphinx support is fairly new and we don't seem to have all the bugs worked out for cross development environments right now. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200203090932.19147-6-alex.bennee@linaro.org> diff --git a/.shippable.yml b/.shippable.yml index 83aae08bb4c..2cce7b56890 100644 --- a/.shippable.yml +++ b/.shippable.yml @@ -37,5 +37,5 @@ build: - unset CC - mkdir build - cd build - - ../configure ${QEMU_CONFIGURE_OPTS} --target-list=${TARGET_LIST} + - ../configure --disable-docs ${QEMU_CONFIGURE_OPTS} --target-list=${TARGET_LIST} - make -j$(($(getconf _NPROCESSORS_ONLN) + 1)) -- 2.20.1
From: Philippe Mathieu-Daudé <f4bug@amsat.org> As we require Python3 since commit ddf9069963, we don't need to explicit it with the --python=/usr/bin/python3 configure option. Reported-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20200125184217.30034-1-f4bug@amsat.org> Message-Id: <20200203090932.19147-8-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index e75c979b6c5..75269678476 100644 --- a/.travis.yml +++ b/.travis.yml @@ -270,7 +270,7 @@ matrix: # Acceptance (Functional) tests - env: - - 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" + - CONFIG="--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" - TEST_CMD="make check-acceptance" after_script: - python3 -c 'import json; r = json.load(open("tests/results/latest/results.json")); [print(t["logfile"]) for t in r["tests"] if t["status"] not in ("PASS", "SKIP")]' | xargs cat -- 2.20.1
From: Philippe Mathieu-Daudé <f4bug@amsat.org> The NAME variable can be used to describe nicely a job (see [*]). As we currently have 32 jobs, use it. This helps for quickly finding a particular job. before: https://travis-ci.org/qemu/qemu/builds/639887646 after: https://travis-ci.org/philmd/qemu/builds/641795043 [*] https://docs.travis-ci.com/user/customizing-the-build/#naming-jobs-within-matrices Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20200125183135.28317-1-f4bug@amsat.org> Message-Id: <20200203090932.19147-9-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index 75269678476..3128eff7e01 100644 --- a/.travis.yml +++ b/.travis.yml @@ -96,24 +96,28 @@ after_script: matrix: include: - - env: + - name: "GCC static (user)" + env: - CONFIG="--disable-system --static" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" # we split the system builds as it takes a while to build them all - - env: + - name: "GCC (main-softmmu)" + env: - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" - - env: - - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" + - name: "GCC (other-softmmu)" + env: + - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" # Just build tools and run minimal unit and softfloat checks - - env: + - name: "GCC check-softfloat (user)" + env: - BASE_CONFIG="--enable-tools" - CONFIG="--disable-user --disable-system" - TEST_CMD="make check-unit check-softfloat -j3" @@ -121,41 +125,48 @@ matrix: # --enable-debug implies --enable-debug-tcg, also runs quite a bit slower - - env: + - name: "GCC debug (main-softmmu)" + env: - CONFIG="--enable-debug --target-list=${MAIN_SOFTMMU_TARGETS}" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug" # TCG debug can be run just on its own and is mostly agnostic to user/softmmu distinctions - - env: + - name: "GCC debug (user)" + env: - CONFIG="--enable-debug-tcg --disable-system" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" - - env: + - name: "GCC some libs disabled (main-softmmu)" + env: - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}" # Module builds are mostly of interest to major distros - - env: + - name: "GCC modules (main-softmmu)" + env: - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" # Alternate coroutines implementations are only really of interest to KVM users # However we can't test against KVM on Travis so we can only run unit tests - - env: + - name: "check-unit coroutine=ucontext" + env: - CONFIG="--with-coroutine=ucontext --disable-tcg" - TEST_CMD="make check-unit -j3 V=1" - - env: + - name: "check-unit coroutine=sigaltstack" + env: - CONFIG="--with-coroutine=sigaltstack --disable-tcg" - TEST_CMD="make check-unit -j3 V=1" # Check we can build docs and tools (out of tree) - - env: + - name: "tools and docs" + env: - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.." - BASE_CONFIG="--enable-tools --enable-docs" - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user" @@ -169,13 +180,15 @@ matrix: # Test with Clang for compile portability (Travis uses clang-5.0) - - env: + - name: "Clang (user)" + env: - CONFIG="--disable-system" - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default" compiler: clang - - env: + - name: "Clang (main-softmmu)" + env: - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} " - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-sanitize" compiler: clang @@ -184,52 +197,60 @@ matrix: - ${SRC_DIR}/configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; } - - env: + - name: "Clang (other-softmmu)" + env: - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}" - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-default" compiler: clang # gprof/gcov are GCC features - - env: + - name: "GCC gprof/gcov" + env: - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}" after_success: - ${SRC_DIR}/scripts/travis/coverage-summary.sh # We manually include builds which we disable "make check" for - - env: + - name: "GCC without-default-devices (softmmu)" + env: - CONFIG="--without-default-devices --disable-user" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" - TEST_CMD="" # Check the TCG interpreter (TCI) - - env: + - name: "GCC TCI" + env: - CONFIG="--enable-debug-tcg --enable-tcg-interpreter --disable-kvm --disable-containers --target-list=alpha-softmmu,arm-softmmu,hppa-softmmu,m68k-softmmu,microblaze-softmmu,moxie-softmmu,ppc-softmmu,s390x-softmmu,x86_64-softmmu" - TEST_CMD="make check-qtest check-tcg V=1" # We don't need to exercise every backend with every front-end - - env: + - name: "GCC trace log,simple,syslog (user)" + env: - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system" - TEST_CMD="" - - env: + - name: "GCC trace ftrace (x86_64-softmmu)" + env: - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu" - TEST_CMD="" - - env: + - name: "GCC trace ust (x86_64-softmmu)" + env: - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu" - TEST_CMD="" # MacOSX builds - cirrus.yml also tests some MacOS builds including latest Xcode - - env: + - name: "OSX Xcode 10.3" + env: - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu" os: osx osx_image: xcode10.3 @@ -252,7 +273,8 @@ matrix: # Python builds - - env: + - name: "GCC Python 3.5 (x86_64-softmmu)" + env: - CONFIG="--target-list=x86_64-softmmu" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" language: python @@ -260,7 +282,8 @@ matrix: - "3.5" - - env: + - name: "GCC Python 3.6 (x86_64-softmmu)" + env: - CONFIG="--target-list=x86_64-softmmu" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" language: python @@ -269,7 +292,8 @@ matrix: # Acceptance (Functional) tests - - env: + - name: "GCC check-acceptance" + env: - CONFIG="--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" - TEST_CMD="make check-acceptance" after_script: @@ -285,7 +309,8 @@ matrix: # Using newer GCC with sanitizers - - addons: + - name: "GCC9 with sanitizers (softmmu)" + addons: apt: update: true sources: @@ -333,7 +358,8 @@ matrix: # Run check-tcg against linux-user - - env: + - name: "GCC check-tcg (user)" + env: - CONFIG="--disable-system --enable-debug-tcg" - TEST_CMD="make -j3 check-tcg V=1" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" @@ -341,26 +367,30 @@ matrix: # Run check-tcg against linux-user (with plugins) # we skip sparc64-linux-user until it has been fixed somewhat - - env: + - name: "GCC plugins check-tcg (user)" + env: - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user" - TEST_CMD="make -j3 check-tcg V=1" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" # Run check-tcg against softmmu targets - - env: + - name: "GCC check-tcg (some-softmmu)" + env: - CONFIG="--enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" - TEST_CMD="make -j3 check-tcg V=1" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" # Run check-tcg against softmmu targets (with plugins) - - env: + - name: "GCC plugins check-tcg (some-softmmu)" + env: - CONFIG="--enable-plugins --enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" - TEST_CMD="make -j3 check-tcg V=1" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" - - arch: arm64 + - name: "[aarch64] GCC check-tcg" + arch: arm64 dist: xenial addons: apt_packages: @@ -391,7 +421,8 @@ matrix: - TEST_CMD="make check check-tcg V=1" - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS}" - - arch: ppc64le + - name: "[ppc64] GCC check-tcg" + arch: ppc64le dist: xenial addons: apt_packages: @@ -422,7 +453,8 @@ matrix: - TEST_CMD="make check check-tcg V=1" - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},ppc64le-linux-user" - - arch: s390x + - name: "[s390x] GCC check-tcg" + arch: s390x dist: bionic addons: apt_packages: @@ -456,7 +488,8 @@ matrix: # 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. - - if: tag IS present AND tag =~ /^v\d+\.\d+(\.\d+)?(-\S*)?$/ + - 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="../../.." -- 2.20.1
It looks like the xenial tooling doesn't like something in our setup. We should probably be moving to bionic for everything soon anyway (libssh aside). Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200203090932.19147-10-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index 3128eff7e01..f245765cfed 100644 --- a/.travis.yml +++ b/.travis.yml @@ -165,7 +165,8 @@ matrix: # Check we can build docs and tools (out of tree) - - name: "tools and docs" + - name: "tools and docs (bionic)" + dist: bionic env: - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.." - BASE_CONFIG="--enable-tools --enable-docs" -- 2.20.1
We shall be adding more common early setup in a future commit. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200203090932.19147-11-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index f245765cfed..1b92f40eab2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -82,11 +82,16 @@ git: # we want to do this ourselves submodules: false +# Common first phase for all steps +before_install: + - if command -v ccache ; then ccache --zero-stats ; fi +# Configure step - may be overridden before_script: - - if command -v ccache ; then ccache --zero-stats ; fi - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; } + +# Main build & test - rarely overridden - controlled by TEST_CMD script: - BUILD_RC=0 && make -j3 || BUILD_RC=$? - if [ "$BUILD_RC" -eq 0 ] ; then travis_retry ${TEST_CMD} ; else $(exit $BUILD_RC); fi @@ -268,7 +273,6 @@ matrix: before_script: - brew link --overwrite python - export PATH="/usr/local/opt/ccache/libexec:$PATH" - - if command -v ccache ; then ccache --zero-stats ; fi - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; } @@ -499,9 +503,6 @@ matrix: - TEST_CMD="make install -j3" - QEMU_VERSION="${TRAVIS_TAG:1}" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" - before_script: - - command -v ccache && ccache --zero-stats - - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} script: - make -C ${SRC_DIR} qemu-${QEMU_VERSION}.tar.bz2 - ls -l ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 -- 2.20.1
The arm64 hardware was especially hit by only building on 3 of the 32 available cores. Introduce a JOBS environment variable which we use for all parallel builds. We still run the main checks single threaded though so to make it easier to spot hangs. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200203090932.19147-12-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index 1b92f40eab2..a600f508b0a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -85,6 +85,8 @@ git: # Common first phase for all steps before_install: - if command -v ccache ; then ccache --zero-stats ; fi + - export JOBS=$(($(getconf _NPROCESSORS_ONLN) + 1)) + - echo "=== Using ${JOBS} simultaneous jobs ===" # Configure step - may be overridden before_script: @@ -93,7 +95,7 @@ before_script: # Main build & test - rarely overridden - controlled by TEST_CMD script: - - BUILD_RC=0 && make -j3 || BUILD_RC=$? + - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$? - if [ "$BUILD_RC" -eq 0 ] ; then travis_retry ${TEST_CMD} ; else $(exit $BUILD_RC); fi after_script: - if command -v ccache ; then ccache --show-stats ; fi @@ -125,7 +127,7 @@ matrix: env: - BASE_CONFIG="--enable-tools" - CONFIG="--disable-user --disable-system" - - TEST_CMD="make check-unit check-softfloat -j3" + - TEST_CMD="make check-unit check-softfloat -j${JOBS}" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" @@ -160,13 +162,13 @@ matrix: - name: "check-unit coroutine=ucontext" env: - CONFIG="--with-coroutine=ucontext --disable-tcg" - - TEST_CMD="make check-unit -j3 V=1" + - TEST_CMD="make check-unit -j${JOBS} V=1" - name: "check-unit coroutine=sigaltstack" env: - CONFIG="--with-coroutine=sigaltstack --disable-tcg" - - TEST_CMD="make check-unit -j3 V=1" + - TEST_CMD="make check-unit -j${JOBS} V=1" # Check we can build docs and tools (out of tree) @@ -366,7 +368,7 @@ matrix: - name: "GCC check-tcg (user)" env: - CONFIG="--disable-system --enable-debug-tcg" - - TEST_CMD="make -j3 check-tcg V=1" + - TEST_CMD="make -j${JOBS} check-tcg V=1" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" @@ -375,7 +377,7 @@ matrix: - name: "GCC plugins check-tcg (user)" env: - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user" - - TEST_CMD="make -j3 check-tcg V=1" + - TEST_CMD="make -j${JOBS} check-tcg V=1" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" @@ -383,7 +385,7 @@ matrix: - name: "GCC check-tcg (some-softmmu)" env: - CONFIG="--enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" - - TEST_CMD="make -j3 check-tcg V=1" + - TEST_CMD="make -j${JOBS} check-tcg V=1" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" @@ -391,7 +393,7 @@ matrix: - name: "GCC plugins check-tcg (some-softmmu)" env: - CONFIG="--enable-plugins --enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" - - TEST_CMD="make -j3 check-tcg V=1" + - TEST_CMD="make -j${JOBS} check-tcg V=1" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" - name: "[aarch64] GCC check-tcg" @@ -500,7 +502,7 @@ matrix: - 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 -j3" + - TEST_CMD="make install -j${JOBS}" - QEMU_VERSION="${TRAVIS_TAG:1}" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" script: -- 2.20.1
We will need this for some tests later. The docker images already support it by default. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20200203090932.19147-13-alex.bennee@linaro.org> diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh index 210e68396f2..e0d1fbb182f 100755 --- a/tests/tcg/configure.sh +++ b/tests/tcg/configure.sh @@ -216,6 +216,20 @@ for target in $target_list; do echo "CROSS_CC_GUEST_STATIC=y" >> $config_target_mak fi echo "CROSS_CC_GUEST=$target_compiler" >> $config_target_mak + + # Test for compiler features for optional tests. We only do this + # for cross compilers because ensuring the docker containers based + # compilers is a requirememt for adding a new test that needs a + # compiler feature. + case $target in + aarch64-*) + if do_compiler "$target_compiler" $target_compiler_cflags \ + -march=armv8.1-a+sve -o $TMPE $TMPC; then + echo "CROSS_CC_HAS_SVE=y" >> $config_target_mak + fi + ;; + esac + enabled_cross_compilers="$enabled_cross_compilers $target_compiler" got_cross_cc=yes break -- 2.20.1
At least for check-tcg we can split the build phase from the test phase and do the former in parallel. While we are at it drop the V=1 for the check-tcg part as it just generates a lot more noise in the logs. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200203090932.19147-15-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index a600f508b0a..022462f6981 100644 --- a/.travis.yml +++ b/.travis.yml @@ -71,6 +71,7 @@ env: - 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" @@ -96,6 +97,12 @@ before_script: # 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 travis_retry ${TEST_CMD} ; else $(exit $BUILD_RC); fi after_script: - if command -v ccache ; then ccache --show-stats ; fi @@ -368,7 +375,8 @@ matrix: - name: "GCC check-tcg (user)" env: - CONFIG="--disable-system --enable-debug-tcg" - - TEST_CMD="make -j${JOBS} check-tcg V=1" + - TEST_BUILD_CMD="make -j${JOBS} build-tcg" + - TEST_CMD="make check-tcg" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" @@ -377,7 +385,8 @@ matrix: - name: "GCC plugins check-tcg (user)" env: - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user" - - TEST_CMD="make -j${JOBS} check-tcg V=1" + - TEST_BUILD_CMD="make -j${JOBS} build-tcg" + - TEST_CMD="make check-tcg" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" @@ -385,7 +394,8 @@ matrix: - name: "GCC check-tcg (some-softmmu)" env: - CONFIG="--enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" - - TEST_CMD="make -j${JOBS} check-tcg V=1" + - TEST_BUILD_CMD="make -j${JOBS} build-tcg" + - TEST_CMD="make check-tcg" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" @@ -393,7 +403,8 @@ matrix: - name: "GCC plugins check-tcg (some-softmmu)" env: - CONFIG="--enable-plugins --enable-debug-tcg --target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" - - TEST_CMD="make -j${JOBS} check-tcg V=1" + - TEST_BUILD_CMD="make -j${JOBS} build-tcg" + - TEST_CMD="make check-tcg" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" - name: "[aarch64] GCC check-tcg" -- 2.20.1
This was a crutch when we introduced it - however it does have the disadvantage of causing tests to timeout with large amounts of logs. Lets drop it and see if the stability has improved since. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200203090932.19147-16-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index 022462f6981..875671325c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -103,7 +103,12 @@ script: else $(exit $BUILD_RC); fi - - if [ "$BUILD_RC" -eq 0 ] ; then travis_retry ${TEST_CMD} ; else $(exit $BUILD_RC); fi + - | + if [ "$BUILD_RC" -eq 0 ] ; then + ${TEST_CMD} ; + else + $(exit $BUILD_RC); + fi after_script: - if command -v ccache ; then ccache --show-stats ; fi -- 2.20.1
While it shouldn't cause problems we will never get useful information from cris as it has yet to be converted to the common translator loop. It also causes the Travis CI to fail for weird reasons which I have so far been unable to replicate on a normal Xenial system. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20200203090932.19147-17-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index 875671325c8..c1c6df475a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -387,9 +387,10 @@ matrix: # Run check-tcg against linux-user (with plugins) # we skip sparc64-linux-user until it has been fixed somewhat + # we skip cris-linux-user as it doesn't use the common run loop - name: "GCC plugins check-tcg (user)" env: - - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user" + - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user" - TEST_BUILD_CMD="make -j${JOBS} build-tcg" - TEST_CMD="make check-tcg" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" -- 2.20.1
I've theorised that a parallel build-tcg is somehow getting confused when two fedora-30 based cross compilers attempt to build at the same time. From one data-point so far this may fix the problem although the plugins job runs quite close to timeout. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20200203090932.19147-18-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index c1c6df475a8..3b35b7cf04d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -380,7 +380,7 @@ matrix: - name: "GCC check-tcg (user)" env: - CONFIG="--disable-system --enable-debug-tcg" - - TEST_BUILD_CMD="make -j${JOBS} build-tcg" + - TEST_BUILD_CMD="make build-tcg" - TEST_CMD="make check-tcg" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" @@ -391,7 +391,7 @@ matrix: - name: "GCC plugins check-tcg (user)" env: - CONFIG="--disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user" - - TEST_BUILD_CMD="make -j${JOBS} build-tcg" + - TEST_BUILD_CMD="make build-tcg" - TEST_CMD="make check-tcg" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" -- 2.20.1
Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200204105142.21845-1-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index 3b35b7cf04d..6c0ec6cf69f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -194,7 +194,7 @@ matrix: addons: apt: packages: - - python-sphinx + - python3-sphinx - texinfo - perl -- 2.20.1
© 2016 - 2024 Red Hat, Inc.