From 043c2c1a5d4dafa330680ca9a3a0369d9a93ef4e Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:16 +0100 Subject: [PATCH 01/14] migration: Silence compiler warning in global_state_store_running() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GCC 9.3.0 on Ubuntu complains: In file included from /usr/include/string.h:495, from /home/travis/build/huth/qemu/include/qemu/osdep.h:87, from ../migration/global_state.c:13: In function ‘strncpy’, inlined from ‘global_state_store_running’ at ../migration/global_state.c:47:5: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error: ‘__builtin_strncpy’ specified bound 100 equals destination size [-Werror=stringop-truncation] 106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ... but we apparently really want to do a strncpy here - the size is already checked with the assert() statement right in front of it. To silence the warning, simply replace it with our strpadcpy() function. Suggested-by: Philippe Mathieu-Daudé (two years ago) Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20200918103430.297167-4-thuth@redhat.com> Message-Id: <20200925154027.12672-5-alex.bennee@linaro.org> --- migration/global_state.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/migration/global_state.c b/migration/global_state.c index 25311479a4..a33947ca32 100644 --- a/migration/global_state.c +++ b/migration/global_state.c @@ -44,8 +44,8 @@ void global_state_store_running(void) { const char *state = RunState_str(RUN_STATE_RUNNING); assert(strlen(state) < sizeof(global_state.runstate)); - strncpy((char *)global_state.runstate, - state, sizeof(global_state.runstate)); + strpadcpy((char *)global_state.runstate, sizeof(global_state.runstate), + state, '\0'); } bool global_state_received(void) From 51f9206d070105f11989ac874e09997094594d97 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:17 +0100 Subject: [PATCH 02/14] travis.yml: Drop the default softmmu builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The total runtime of all Travis jobs is very long and we are testing all softmmu targets in the gitlab-CI already - so we can speed up the Travis testing a little bit by not testing the softmmu targets here anymore. Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Reviewed-by: Daniel P. Berrangé Reviewed-by: Cleber Rosa Acked-by: Alex Bennée Acked-by: Philippe Mathieu-Daudé Message-Id: <20200918103430.297167-5-thuth@redhat.com> Message-Id: <20200925154027.12672-6-alex.bennee@linaro.org> --- .travis.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.travis.yml b/.travis.yml index bd9a6fc06c..b2d492f8c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -123,20 +123,6 @@ jobs: - 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 - - name: "GCC (main-softmmu)" - env: - - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}" - - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" - - - - 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 - name: "GCC check-unit and check-softfloat" env: From e769905e4c057fe80c6eaba071f957ef1dda1770 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:18 +0100 Subject: [PATCH 03/14] travis.yml: Update Travis to use Bionic and Focal instead of Xenial MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to our support policy, we do not support Xenial anymore. Time to switch the bigger parts of the builds to Focal instead. Some few jobs have to be updated to Bionic instead, since they are currently still failing on Focal otherwise. Also "--disable-pie" is causing linker problems with newer versions of Ubuntu ... so remove that switch from the jobs now (we still test it in a gitlab CI job, so we don't lose much test coverage here). Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Tested-by: Cleber Rosa Reviewed-by: Cleber Rosa Message-Id: <20200918103430.297167-6-thuth@redhat.com> Message-Id: <20200925154027.12672-7-alex.bennee@linaro.org> --- .travis.yml | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index b2d492f8c6..65b825ff64 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ # Additional builds with specific requirements for a full VM need to # be added as additional matrix: entries later on os: linux -dist: xenial +dist: focal language: c compiler: - gcc @@ -10,7 +10,7 @@ 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, xenial, trusty, or precise) + # - 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 @@ -27,7 +27,7 @@ addons: - libattr1-dev - libbrlapi-dev - libcap-ng-dev - - libgcc-4.8-dev + - libgcc-7-dev - libgnutls28-dev - libgtk-3-dev - libiscsi-dev @@ -210,8 +210,10 @@ jobs: # gprof/gcov are GCC features - name: "GCC gprof/gcov" + dist: bionic env: - - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}" + - CONFIG="--enable-gprof --enable-gcov --disable-libssh + --target-list=${MAIN_SOFTMMU_TARGETS}" after_success: - ${SRC_DIR}/scripts/travis/coverage-summary.sh @@ -270,6 +272,7 @@ jobs: # Using newer GCC with sanitizers - name: "GCC9 with sanitizers (softmmu)" + dist: bionic addons: apt: update: true @@ -285,7 +288,7 @@ jobs: - libattr1-dev - libbrlapi-dev - libcap-ng-dev - - libgnutls-dev + - libgnutls28-dev - libgtk-3-dev - libiscsi-dev - liblttng-ust-dev @@ -293,14 +296,13 @@ jobs: - libncurses5-dev - libnss3-dev - libpixman-1-dev - - libpng12-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 - libvte-2.91-dev @@ -310,11 +312,11 @@ jobs: compiler: none env: - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9 - - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user" + - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-linux-user" - TEST_CMD="" before_script: - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} - - ${SRC_DIR}/configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread" --extra-ldflags="-fuse-ld=gold" || { cat config.log && exit 1; } + - ${SRC_DIR}/configure ${CONFIG} --extra-cflags="-g3 -O0 -fsanitize=thread" || { cat config.log && exit 1; } # Run check-tcg against linux-user @@ -356,7 +358,7 @@ jobs: - name: "[aarch64] GCC check-tcg" arch: arm64 - dist: xenial + dist: focal addons: apt_packages: - libaio-dev @@ -389,7 +391,7 @@ jobs: - name: "[ppc64] GCC check-tcg" arch: ppc64le - dist: xenial + dist: focal addons: apt_packages: - libaio-dev From 2ef1d9384820ab99facb85f6d799da78fd5df1b6 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:19 +0100 Subject: [PATCH 04/14] travis.yml: Drop the superfluous Python 3.6 build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Python 3.6 is already the default Python in the jobs that are based on Ubuntu Bionic, so it does not make much sense to test this again separately. Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Message-Id: <20200918103430.297167-7-thuth@redhat.com> Message-Id: <20200925154027.12672-8-alex.bennee@linaro.org> --- .travis.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 65b825ff64..990dd11e6f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -262,14 +262,6 @@ jobs: python: 3.5 - - name: "GCC Python 3.6 (x86_64-softmmu)" - env: - - CONFIG="--target-list=x86_64-softmmu" - - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" - language: python - python: 3.6 - - # Using newer GCC with sanitizers - name: "GCC9 with sanitizers (softmmu)" dist: bionic From f4d830c8951b4615db3d558ddeb6ec000c61cac0 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:20 +0100 Subject: [PATCH 05/14] travis.yml: Drop the Python 3.5 build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We are soon going to remove the support for Python 3.5. So remove the CI job now. Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Message-Id: <20200922070441.48844-1-thuth@redhat.com> Message-Id: <20200925154027.12672-9-alex.bennee@linaro.org> --- .travis.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 990dd11e6f..c255c331a7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -253,15 +253,6 @@ jobs: - TEST_CMD="" - # Python builds - - name: "GCC Python 3.5 (x86_64-softmmu)" - env: - - CONFIG="--target-list=x86_64-softmmu" - - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" - language: python - python: 3.5 - - # Using newer GCC with sanitizers - name: "GCC9 with sanitizers (softmmu)" dist: bionic From 93cc0506f6c0f42e959cd94b627b8d737eecedec Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:21 +0100 Subject: [PATCH 06/14] tests/docker: Use Fedora containers for MinGW cross-builds in the gitlab-CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to our support policy, we do not support Debian 9 in QEMU anymore, and we only support building the Windows binaries with a very recent version of the MinGW toolchain. So we should not test the MinGW cross-compilation with Debian 9 anymore, but switch to something newer like Fedora. To do this, we need a separate Fedora container for each build that provides the QEMU_CONFIGURE_OPTS environment variable. Unfortunately, the MinGW 64-bit compiler seems to be a little bit slow, so we also have to disable some features like "capstone" in the build here to make sure that the CI pipelines still finish within a reasonable amount of time. Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Message-Id: <20200921174320.46062-2-thuth@redhat.com> Message-Id: <20200925154027.12672-10-alex.bennee@linaro.org> --- .gitlab-ci.d/containers.yml | 10 +++++ .gitlab-ci.d/crossbuilds.yml | 4 +- .../dockerfiles/fedora-win32-cross.docker | 42 +++++++++++++++++++ .../dockerfiles/fedora-win64-cross.docker | 38 +++++++++++++++++ 4 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 tests/docker/dockerfiles/fedora-win32-cross.docker create mode 100644 tests/docker/dockerfiles/fedora-win64-cross.docker diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml index 8c89efeb6d..15e7b564f9 100644 --- a/.gitlab-ci.d/containers.yml +++ b/.gitlab-ci.d/containers.yml @@ -248,6 +248,16 @@ i386-fedora-cross-container: variables: NAME: fedora-i386-cross +win32-fedora-cross-container: + <<: *container_job_definition + variables: + NAME: fedora-win32-cross + +win64-fedora-cross-container: + <<: *container_job_definition + variables: + NAME: fedora-win64-cross + amd64-ubuntu1804-container: <<: *container_job_definition variables: diff --git a/.gitlab-ci.d/crossbuilds.yml b/.gitlab-ci.d/crossbuilds.yml index 4ec7226b5c..510cfec03b 100644 --- a/.gitlab-ci.d/crossbuilds.yml +++ b/.gitlab-ci.d/crossbuilds.yml @@ -105,9 +105,9 @@ cross-s390x-user: cross-win32-system: <<: *cross_system_build_job_definition variables: - IMAGE: debian-win32-cross + IMAGE: fedora-win32-cross cross-win64-system: <<: *cross_system_build_job_definition variables: - IMAGE: debian-win64-cross + IMAGE: fedora-win64-cross diff --git a/tests/docker/dockerfiles/fedora-win32-cross.docker b/tests/docker/dockerfiles/fedora-win32-cross.docker new file mode 100644 index 0000000000..5903e1b0b4 --- /dev/null +++ b/tests/docker/dockerfiles/fedora-win32-cross.docker @@ -0,0 +1,42 @@ +FROM fedora:32 + +# Please keep this list sorted alphabetically +ENV PACKAGES \ + bc \ + bzip2 \ + diffutils \ + findutils \ + gcc \ + gettext \ + git \ + hostname \ + make \ + meson \ + mingw32-bzip2 \ + mingw32-curl \ + mingw32-glib2 \ + mingw32-gmp \ + mingw32-gnutls \ + mingw32-gtk3 \ + mingw32-libjpeg-turbo \ + mingw32-libpng \ + mingw32-libtasn1 \ + mingw32-nettle \ + mingw32-nsis \ + mingw32-pixman \ + mingw32-pkg-config \ + mingw32-SDL2 \ + perl \ + perl-Test-Harness \ + python3 \ + python3-PyYAML \ + python3-setuptools \ + tar \ + which + +RUN dnf install -y $PACKAGES +RUN rpm -q $PACKAGES | sort > /packages.txt +ENV FEATURES mingw + +# Specify the cross prefix for this image (see tests/docker/common.rc) +ENV QEMU_CONFIGURE_OPTS --cross-prefix=i686-w64-mingw32- diff --git a/tests/docker/dockerfiles/fedora-win64-cross.docker b/tests/docker/dockerfiles/fedora-win64-cross.docker new file mode 100644 index 0000000000..7f03cd8ffc --- /dev/null +++ b/tests/docker/dockerfiles/fedora-win64-cross.docker @@ -0,0 +1,38 @@ +FROM fedora:32 + +# Please keep this list sorted alphabetically +ENV PACKAGES \ + bc \ + bzip2 \ + diffutils \ + findutils \ + gcc \ + gettext \ + git \ + hostname \ + make \ + meson \ + mingw64-bzip2 \ + mingw64-curl \ + mingw64-glib2 \ + mingw64-gmp \ + mingw64-gtk3 \ + mingw64-libjpeg-turbo \ + mingw64-libpng \ + mingw64-libtasn1 \ + mingw64-pixman \ + mingw64-pkg-config \ + perl \ + perl-Test-Harness \ + python3 \ + python3-PyYAML \ + python3-setuptools \ + tar \ + which + +RUN dnf install -y $PACKAGES +RUN rpm -q $PACKAGES | sort > /packages.txt +ENV FEATURES mingw + +# Specify the cross prefix for this image (see tests/docker/common.rc) +ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32- --disable-capstone From 5fdf6e22d9521b2c3a5a84b3d17141bf93572c0f Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:22 +0100 Subject: [PATCH 07/14] gitlab-ci: Remove the Debian9-based containers and containers-layer3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to our support policy, Debian 9 is not supported by the QEMU project anymore. Since we now switched the MinGW cross-compiler builds to Fedora, we do not need these Debian9-based containers in the gitlab-CI anymore, and can now also get rid of the "layer3" container build stage this way. Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Reviewed-by: Daniel P. Berrangé Message-Id: <20200921174320.46062-3-thuth@redhat.com> Message-Id: <20200925154027.12672-11-alex.bennee@linaro.org> --- .gitlab-ci.d/containers.yml | 14 -------------- .gitlab-ci.yml | 1 - 2 files changed, 15 deletions(-) diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml index 15e7b564f9..6769eef0ff 100644 --- a/.gitlab-ci.d/containers.yml +++ b/.gitlab-ci.d/containers.yml @@ -214,20 +214,6 @@ tricore-debian-cross-container: variables: NAME: debian-tricore-cross -win32-debian-cross-container: - <<: *container_job_definition - stage: containers-layer3 - needs: ['amd64-debian9-mxe-container'] - variables: - NAME: debian-win32-cross - -win64-debian-cross-container: - <<: *container_job_definition - stage: containers-layer3 - needs: ['amd64-debian9-mxe-container'] - variables: - NAME: debian-win64-cross - xtensa-debian-cross-container: <<: *container_job_definition variables: diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a18e18b57e..c265e7f8ab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,6 @@ stages: - containers - containers-layer2 - - containers-layer3 - build - test From cf63177e59206afbfe7c8c904fad72bb7ebf59ae Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:23 +0100 Subject: [PATCH 08/14] tests/docker: Update the tricore container to debian 10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We do not support Debian 9 anymore, thus update the Tricore container to Debian 10 now. Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Reviewed-by: Daniel P. Berrangé Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20200921174320.46062-4-thuth@redhat.com> Message-Id: <20200925154027.12672-12-alex.bennee@linaro.org> --- .gitlab-ci.d/containers.yml | 2 +- tests/docker/Makefile.include | 2 +- tests/docker/dockerfiles/debian-tricore-cross.docker | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml index 6769eef0ff..089cea7c14 100644 --- a/.gitlab-ci.d/containers.yml +++ b/.gitlab-ci.d/containers.yml @@ -210,7 +210,7 @@ sparc64-debian-cross-container: tricore-debian-cross-container: <<: *container_job_definition stage: containers-layer2 - needs: ['amd64-debian9-container'] + needs: ['amd64-debian10-container'] variables: NAME: debian-tricore-cross diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 75704268ff..02ec92830b 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -137,7 +137,7 @@ docker-image-debian-sparc64-cross: docker-image-debian10 docker-image-travis: NOUSER=1 # Specialist build images, sometimes very limited tools -docker-image-debian-tricore-cross: docker-image-debian9 +docker-image-debian-tricore-cross: docker-image-debian10 docker-image-debian-all-test-cross: docker-image-debian10 docker-image-debian-arm64-test-cross: docker-image-debian11 diff --git a/tests/docker/dockerfiles/debian-tricore-cross.docker b/tests/docker/dockerfiles/debian-tricore-cross.docker index 769d95c77b..985925134c 100644 --- a/tests/docker/dockerfiles/debian-tricore-cross.docker +++ b/tests/docker/dockerfiles/debian-tricore-cross.docker @@ -7,7 +7,7 @@ # # SPDX-License-Identifier: GPL-2.0-or-later # -FROM qemu/debian9 +FROM qemu/debian10 MAINTAINER Philippe Mathieu-Daudé From 4a73cefbdaa3ac7dc470036ba07fab899da73f77 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:24 +0100 Subject: [PATCH 09/14] shippable.yml: Remove the Debian9-based MinGW cross-compiler tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We're not supporting Debian 9 anymore, and we are now testing MinGW cross-compiler builds in the gitlab-CI, too, so we do not really need these jobs in the shippable.yml anymore. Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Message-Id: <20200921174320.46062-5-thuth@redhat.com> Message-Id: <20200925154027.12672-13-alex.bennee@linaro.org> --- .shippable.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.shippable.yml b/.shippable.yml index 0b4fd6df1d..14350e6de8 100644 --- a/.shippable.yml +++ b/.shippable.yml @@ -7,10 +7,6 @@ env: matrix: - IMAGE=debian-amd64 TARGET_LIST=x86_64-softmmu,x86_64-linux-user - - IMAGE=debian-win32-cross - TARGET_LIST=arm-softmmu,i386-softmmu - - IMAGE=debian-win64-cross - TARGET_LIST=aarch64-softmmu,sparc64-softmmu,x86_64-softmmu - IMAGE=debian-armel-cross TARGET_LIST=arm-softmmu,arm-linux-user,armeb-linux-user - IMAGE=debian-armhf-cross From e3755276d1f5462fb14e25e558e50b1e477406d7 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:25 +0100 Subject: [PATCH 10/14] tests/docker: Remove old Debian 9 containers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We do not support Debian 9 in QEMU anymore, and the Debian 9 containers are now no longer used in the gitlab-CI. Time to remove them. Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Reviewed-by: Daniel P. Berrangé Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20200921174320.46062-6-thuth@redhat.com> Message-Id: <20200925154027.12672-14-alex.bennee@linaro.org> --- .gitlab-ci.d/containers.yml | 12 ----- .../dockerfiles/debian-win32-cross.docker | 38 ---------------- .../dockerfiles/debian-win64-cross.docker | 45 ------------------- tests/docker/dockerfiles/debian9-mxe.docker | 21 --------- tests/docker/dockerfiles/debian9.docker | 32 ------------- 5 files changed, 148 deletions(-) delete mode 100644 tests/docker/dockerfiles/debian-win32-cross.docker delete mode 100644 tests/docker/dockerfiles/debian-win64-cross.docker delete mode 100644 tests/docker/dockerfiles/debian9-mxe.docker delete mode 100644 tests/docker/dockerfiles/debian9.docker diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml index 089cea7c14..11d079ea58 100644 --- a/.gitlab-ci.d/containers.yml +++ b/.gitlab-ci.d/containers.yml @@ -48,18 +48,6 @@ amd64-debian11-container: variables: NAME: debian11 -amd64-debian9-container: - <<: *container_job_definition - variables: - NAME: debian9 - -amd64-debian9-mxe-container: - <<: *container_job_definition - stage: containers-layer2 - needs: ['amd64-debian9-container'] - variables: - NAME: debian9-mxe - alpha-debian-cross-container: <<: *container_job_definition stage: containers-layer2 diff --git a/tests/docker/dockerfiles/debian-win32-cross.docker b/tests/docker/dockerfiles/debian-win32-cross.docker deleted file mode 100644 index b045e821b9..0000000000 --- a/tests/docker/dockerfiles/debian-win32-cross.docker +++ /dev/null @@ -1,38 +0,0 @@ -# -# Docker mingw32 cross-compiler target -# -# This docker target builds on the debian Stretch MXE base image. -# -FROM qemu/debian9-mxe - -MAINTAINER Philippe Mathieu-Daudé - -ENV TARGET i686 - -ENV PATH $PATH:/usr/lib/mxe/usr/bin:/usr/lib/mxe/usr/$TARGET-w64-mingw32.shared/bin - -ENV PKG_CONFIG_PATH \ - $PKG_CONFIG_PATH:/usr/lib/mxe/usr/$TARGET-w64-mingw32.shared/lib/pkgconfig - -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive eatmydata \ - apt-get install -y --no-install-recommends \ - mxe-$TARGET-w64-mingw32.shared-bzip2 \ - mxe-$TARGET-w64-mingw32.shared-curl \ - mxe-$TARGET-w64-mingw32.shared-glib \ - mxe-$TARGET-w64-mingw32.shared-libgcrypt \ - mxe-$TARGET-w64-mingw32.shared-libusb1 \ - mxe-$TARGET-w64-mingw32.shared-lzo \ - mxe-$TARGET-w64-mingw32.shared-nettle \ - mxe-$TARGET-w64-mingw32.shared-ncurses \ - mxe-$TARGET-w64-mingw32.shared-nsis \ - mxe-$TARGET-w64-mingw32.shared-pixman \ - mxe-$TARGET-w64-mingw32.shared-pkgconf \ - mxe-$TARGET-w64-mingw32.shared-pthreads \ - mxe-$TARGET-w64-mingw32.shared-sdl2 \ - mxe-$TARGET-w64-mingw32.shared-sdl2-mixer \ - mxe-$TARGET-w64-mingw32.shared-sdl2-gfx \ - mxe-$TARGET-w64-mingw32.shared-zlib - -# Specify the cross prefix for this image (see tests/docker/common.rc) -ENV QEMU_CONFIGURE_OPTS --cross-prefix=$TARGET-w64-mingw32.shared- diff --git a/tests/docker/dockerfiles/debian-win64-cross.docker b/tests/docker/dockerfiles/debian-win64-cross.docker deleted file mode 100644 index 4cc4a3f365..0000000000 --- a/tests/docker/dockerfiles/debian-win64-cross.docker +++ /dev/null @@ -1,45 +0,0 @@ -# -# Docker mingw64 cross-compiler target -# -# This docker target builds on the debian Stretch MXE base image. -# -FROM qemu/debian9-mxe - -MAINTAINER Philippe Mathieu-Daudé - -ENV TARGET x86-64 - -ENV PATH $PATH:/usr/lib/mxe/usr/$TARGET-w64-mingw32.shared/bin - -ENV PKG_CONFIG_PATH \ - $PKG_CONFIG_PATH:/usr/lib/mxe/usr/$TARGET-w64-mingw32.shared/lib/pkgconfig - -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive eatmydata \ - apt-get install -y --no-install-recommends \ - mxe-$TARGET-w64-mingw32.shared-bzip2 \ - mxe-$TARGET-w64-mingw32.shared-curl \ - mxe-$TARGET-w64-mingw32.shared-glib \ - mxe-$TARGET-w64-mingw32.shared-libgcrypt \ - mxe-$TARGET-w64-mingw32.shared-libusb1 \ - mxe-$TARGET-w64-mingw32.shared-lzo \ - mxe-$TARGET-w64-mingw32.shared-nettle \ - mxe-$TARGET-w64-mingw32.shared-ncurses \ - mxe-$TARGET-w64-mingw32.shared-nsis \ - mxe-$TARGET-w64-mingw32.shared-pixman \ - mxe-$TARGET-w64-mingw32.shared-pkgconf \ - mxe-$TARGET-w64-mingw32.shared-pthreads \ - mxe-$TARGET-w64-mingw32.shared-sdl2 \ - mxe-$TARGET-w64-mingw32.shared-sdl2-mixer \ - mxe-$TARGET-w64-mingw32.shared-sdl2-gfx \ - mxe-$TARGET-w64-mingw32.shared-zlib \ - curl && \ - curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvEmulation.h \ - "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvemulation.h?format=raw" && \ - curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvPlatform.h \ - "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatform.h?format=raw" && \ - curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/winhvplatformdefs.h \ - "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatformdefs.h?format=raw" - -# Specify the cross prefix for this image (see tests/docker/common.rc) -ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32.shared- diff --git a/tests/docker/dockerfiles/debian9-mxe.docker b/tests/docker/dockerfiles/debian9-mxe.docker deleted file mode 100644 index ae2c222a6f..0000000000 --- a/tests/docker/dockerfiles/debian9-mxe.docker +++ /dev/null @@ -1,21 +0,0 @@ -# -# Docker mingw cross-compiler target -# -# This docker target builds on the debian Stretch base image. -# -FROM qemu/debian9 - -MAINTAINER Philippe Mathieu-Daudé - -RUN DEBIAN_FRONTEND=noninteractive eatmydata \ - apt install -y --no-install-recommends gnupg dirmngr - -# Add the foreign architecture we want and install dependencies -RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C6BF758A33A3A276 && \ - echo "deb http://pkg.mxe.cc/repos/apt stretch main" > /etc/apt/sources.list.d/mxeapt.list -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive eatmydata \ - apt-get install -y --no-install-recommends \ - $(apt-get -s install -y --no-install-recommends gw32.shared-mingw-w64 | egrep "^Inst mxe-x86-64-unknown-" | cut -d\ -f2) - -ENV PATH $PATH:/usr/lib/mxe/usr/bin/ diff --git a/tests/docker/dockerfiles/debian9.docker b/tests/docker/dockerfiles/debian9.docker deleted file mode 100644 index 3edb5147ef..0000000000 --- a/tests/docker/dockerfiles/debian9.docker +++ /dev/null @@ -1,32 +0,0 @@ -# -# Docker multiarch cross-compiler target -# -# This docker target is builds on Debian cross compiler targets to build distro -# with a selection of cross compilers for building test binaries. -# -# On its own you can't build much but the docker-foo-cross targets -# build on top of the base debian image. -# -FROM debian:stretch-slim - -# Duplicate deb line as deb-src -RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list - -# Install common build utilities -RUN apt update && \ - DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \ - DEBIAN_FRONTEND=noninteractive eatmydata \ - apt install -y --no-install-recommends \ - bc \ - build-essential \ - ca-certificates \ - clang \ - gdb-multiarch \ - gettext \ - git \ - libncurses5-dev \ - pkg-config \ - psmisc \ - python3 \ - python3-setuptools \ - $(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2) From 254ef17e3f444d1bee03a4274fdd59e853321d5e Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:26 +0100 Subject: [PATCH 11/14] gitlab-ci: Increase the timeout for the cross-compiler builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some of the cross-compiler builds (the mips build and the win64 build for example) are quite slow and sometimes hit the 1h time limit. Increase the limit a little bit to make sure that we do not get failures in the CI runs just because of some few minutes. Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Reviewed-by: Daniel P. Berrangé Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20200921174320.46062-7-thuth@redhat.com> Message-Id: <20200925154027.12672-15-alex.bennee@linaro.org> --- .gitlab-ci.d/crossbuilds.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.d/crossbuilds.yml b/.gitlab-ci.d/crossbuilds.yml index 510cfec03b..03ebfabb3f 100644 --- a/.gitlab-ci.d/crossbuilds.yml +++ b/.gitlab-ci.d/crossbuilds.yml @@ -2,6 +2,7 @@ .cross_system_build_job_template: &cross_system_build_job_definition stage: build image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest + timeout: 80m script: - mkdir build - cd build From 1b11f28d05121fec43a12389b673cc2d7e1d2e26 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 25 Sep 2020 16:40:27 +0100 Subject: [PATCH 12/14] configure: Bump the minimum required Python version to 3.6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All our supported build platforms have Python 3.6 or newer nowadays, and there are some useful features in Python 3.6 which are not available in 3.5 yet (e.g. the type hint annotations which will allow us to statically type the QAPI parser), so let's bump the minimum Python version to 3.6 now. Signed-off-by: Thomas Huth Signed-off-by: Alex Bennée Message-Id: <20200923162908.95372-1-thuth@redhat.com> Message-Id: <20200925154027.12672-16-alex.bennee@linaro.org> --- configure | 4 ++-- docs/conf.py | 4 ++-- tests/qemu-iotests/iotests.py | 2 -- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/configure b/configure index ca9b458ea0..a5841241be 100755 --- a/configure +++ b/configure @@ -1964,8 +1964,8 @@ fi # Note that if the Python conditional here evaluates True we will exit # with status 1 which is a shell 'false' value. -if ! $python -c 'import sys; sys.exit(sys.version_info < (3,5))'; then - error_exit "Cannot use '$python', Python >= 3.5 is required." \ +if ! $python -c 'import sys; sys.exit(sys.version_info < (3,6))'; then + error_exit "Cannot use '$python', Python >= 3.6 is required." \ "Use --python=/path/to/python to specify a supported Python." fi diff --git a/docs/conf.py b/docs/conf.py index 606f623211..00e1b750e2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -36,9 +36,9 @@ from sphinx.errors import ConfigError # In newer versions of Sphinx this will display nicely; in older versions # Sphinx will also produce a Python backtrace but at least the information # gets printed... -if sys.version_info < (3,5): +if sys.version_info < (3,6): raise ConfigError( - "QEMU requires a Sphinx that uses Python 3.5 or better\n") + "QEMU requires a Sphinx that uses Python 3.6 or better\n") # The per-manual conf.py will set qemu_docdir for a single-manual build; # otherwise set it here if this is an entire-manual-set build. diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index 91e4a57126..f48460480a 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -40,8 +40,6 @@ sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python')) from qemu import qtest from qemu.qmp import QMPMessage -assert sys.version_info >= (3, 6) - # Use this logger for logging messages directly from the iotests module logger = logging.getLogger('qemu.iotests') logger.addHandler(logging.NullHandler()) From 8cdb2cef3f1c5f0d7c1fb96ed337d27d9b6267d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 2 Oct 2020 11:32:23 +0100 Subject: [PATCH 13/14] gitlab: move linux-user plugins test across to gitlab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Even with the recent split moving beefier plugins into contrib and dropping them from the check-tcg tests we are still hitting time limits. This possibly points to a slow down of --debug-tcg but seeing as we are migrating stuff to gitlab we might as well move there and bump the timeout. Signed-off-by: Alex Bennée Reviewed-by: Thomas Huth Message-Id: <20201002103223.24022-1-alex.bennee@linaro.org> --- .gitlab-ci.yml | 11 +++++++++++ .travis.yml | 11 ----------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c265e7f8ab..346f23acf7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -244,6 +244,17 @@ build-user: CONFIGURE_ARGS: --disable-tools --disable-system MAKE_CHECK_ARGS: check-tcg +# 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 +build-user-plugins: + <<: *native_build_job_definition + variables: + IMAGE: debian-all-test-cross + CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user + MAKE_CHECK_ARGS: check-tcg + timeout: 1h 30m + build-clang: <<: *native_build_job_definition variables: diff --git a/.travis.yml b/.travis.yml index c255c331a7..519e62432d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -311,17 +311,6 @@ jobs: - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" - # 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,cris-linux-user" - - TEST_BUILD_CMD="make build-tcg" - - TEST_CMD="make check-tcg" - - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg" - - # Run check-tcg against softmmu targets - name: "GCC check-tcg (some-softmmu)" env: From 2614670b7585ce4ec503546bc3023844d392f270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Fri, 2 Oct 2020 10:15:38 +0100 Subject: [PATCH 14/14] gitlab: split deprecated job into build/check stages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit While the job is pretty fast for only a few targets we still want to catch breakage of the build. By splitting the test step we can allow_failures for that while still ensuring we don't miss the build breaking. Signed-off-by: Alex Bennée Reviewed-by: Thomas Huth Message-Id: <20201002091538.3017-1-alex.bennee@linaro.org> --- .gitlab-ci.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 346f23acf7..a51c89554f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -270,9 +270,24 @@ build-deprecated: variables: IMAGE: debian-all-test-cross CONFIGURE_ARGS: --disable-docs --disable-tools - MAKE_CHECK_ARGS: check-tcg + MAKE_CHECK_ARGS: build-tcg TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu unicore32-softmmu + artifacts: + expire_in: 2 days + paths: + - build + +# We split the check-tcg step as test failures are expected but we still +# want to catch the build breaking. +check-deprecated: + <<: *native_test_job_definition + needs: + - job: build-deprecated + artifacts: true + variables: + IMAGE: debian-all-test-cross + MAKE_CHECK_ARGS: check-tcg allow_failure: true build-oss-fuzz: