diff --git a/.cirrus.yml b/.cirrus.yml index 8326a3a4b160b5596a1e5b9c97fc8a293fa1f6b4..27efc48619b5147a2843416cf23d65b6009602d3 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -25,3 +25,14 @@ macos_task: - ./configure --python=/usr/local/bin/python3 || { cat config.log; exit 1; } - gmake -j$(sysctl -n hw.ncpu) - gmake check -j$(sysctl -n hw.ncpu) + +macos_xcode_task: + osx_instance: + # this is an alias for the latest Xcode + image: mojave-xcode + install_script: + - brew install pkg-config gnu-sed glib pixman make sdl2 + script: + - ./configure --cc=clang || { cat config.log; exit 1; } + - gmake -j$(sysctl -n hw.ncpu) + - gmake check -j$(sysctl -n hw.ncpu) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ed8067f5cf9d5b27023878a83e39e09c9e8e77e2..be57c6a454a5e83b2a433dbe0d8d3f06ffbe73a7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ before_script: build-system1: script: - apt-get install -y -qq libgtk-3-dev libvte-dev nettle-dev libcacard-dev - libusb-dev libvde-dev libspice-protocol-dev libgl1-mesa-dev + libusb-dev libvde-dev libspice-protocol-dev libgl1-mesa-dev libvdeplug-dev - ./configure --enable-werror --target-list="aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu lm32-softmmu moxie-softmmu microblazeel-softmmu mips64el-softmmu m68k-softmmu ppc-softmmu riscv64-softmmu sparc-softmmu" diff --git a/.shippable.yml b/.shippable.yml index bbc6f88510f183d490b6652cd7d4c55bdd97ca1e..f74a3de3ffdb3abd50a6d57b0a804e64fd50a7b2 100644 --- a/.shippable.yml +++ b/.shippable.yml @@ -27,8 +27,6 @@ env: TARGET_LIST=ppc64-softmmu,ppc64-linux-user,ppc64abi32-linux-user build: pre_ci: - # usually host ARCH is set by configure - - echo "ARCH=$(uname -m)" > config-host.mak - make docker-image-${IMAGE} V=1 pre_ci_boot: image_name: qemu diff --git a/.travis.yml b/.travis.yml index d0b9e099b9cc7e45dc09611e6f48466db0eebded..ba3a8d4cfc98c08a6d99536109a6b3885c8e6d04 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,7 @@ addons: - libcap-dev - libcap-ng-dev - libgcc-4.8-dev - - libgnutls-dev + - libgnutls28-dev - libgtk-3-dev - libiscsi-dev - liblttng-ust-dev @@ -37,15 +37,17 @@ addons: - libnfs-dev - libnss3-dev - libpixman-1-dev - - libpng12-dev + - libpng-dev - librados-dev - - libsdl1.2-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 - sparse - uuid-dev @@ -89,13 +91,13 @@ git: before_script: - if [ "$TRAVIS_OS_NAME" == "osx" ] ; then export PATH="/usr/local/opt/ccache/libexec:$PATH" ; fi - - command -v ccache && ccache --zero-stats + - 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; } script: - make -j3 && travis_retry ${TEST_CMD} after_script: - - command -v ccache && ccache --show-stats + - if command -v ccache ; then ccache --show-stats ; fi matrix: @@ -124,12 +126,13 @@ matrix: - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" + # --enable-debug implies --enable-debug-tcg, also runs quite a bit slower - env: - - CONFIG="--enable-debug --enable-debug-tcg --disable-user" + - CONFIG="--enable-debug --target-list=${MAIN_SOFTMMU_TARGETS}" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug" - # TCG debug can be run just on it's own and is mostly agnostic to user/softmmu distinctions + # TCG debug can be run just on its own and is mostly agnostic to user/softmmu distinctions - env: - CONFIG="--enable-debug-tcg --disable-system" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug" @@ -186,6 +189,7 @@ matrix: - env: - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} " + - CACHE_NAME="${TRAVIS_BRANCH}-linux-clang-sanitize" compiler: clang before_script: - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; } @@ -244,7 +248,7 @@ matrix: - env: - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu" os: osx - osx_image: xcode10.2 + osx_image: xcode10.3 compiler: clang @@ -307,7 +311,8 @@ matrix: - libpixman-1-dev - libpng12-dev - librados-dev - - libsdl1.2-dev + - libsdl2-dev + - libsdl2-image-dev - libseccomp-dev - libspice-protocol-dev - libspice-server-dev @@ -329,13 +334,36 @@ matrix: # Run check-tcg against linux-user - env: - - CONFIG="--disable-system" + - CONFIG="--disable-system --enable-debug-tcg" - TEST_CMD="make -j3 check-tcg V=1" - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default" # Run check-tcg against softmmu targets - env: - - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu" + - 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-default" + + + # 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*)?$/ + 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 -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 + - tar -xf ${SRC_DIR}/qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION} + - ./configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; } + - make install diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 89c56a3a88c9dba9b349dfff786a9626334f720f..19dbe2616999109852060363043f579733007dac 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -2,6 +2,8 @@ .PHONY: docker docker-test docker-clean docker-image docker-qemu-src +HOST_ARCH = $(if $(ARCH),$(ARCH),$(shell uname -m)) + DOCKER_SUFFIX := .docker DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles # we don't run tests on intermediate images (used as base by another image) @@ -88,7 +90,7 @@ endif # Enforce dependencies for composite images docker-image-debian9-mxe: docker-image-debian9 -ifeq ($(ARCH),x86_64) +ifeq ($(HOST_ARCH),x86_64) docker-image-debian-amd64: docker-image-debian9 DOCKER_PARTIAL_IMAGES += debian-amd64-cross else @@ -106,7 +108,7 @@ docker-image-debian-win32-cross: docker-image-debian9-mxe docker-image-debian-win64-cross: docker-image-debian9-mxe # For non-x86 hosts not all cross-compilers have been packaged -ifneq ($(ARCH),x86_64) +ifneq ($(HOST_ARCH),x86_64) DOCKER_PARTIAL_IMAGES += debian-mips-cross debian-mipsel-cross debian-mips64el-cross DOCKER_PARTIAL_IMAGES += debian-ppc64el-cross DOCKER_PARTIAL_IMAGES += debian-s390x-cross diff --git a/tests/docker/dockerfiles/travis.docker b/tests/docker/dockerfiles/travis.docker index ea14da29d9708272711c3489b54236a32f4049af..e8eb48dccfd523a79ea8871c38de69a6f9532335 100644 --- a/tests/docker/dockerfiles/travis.docker +++ b/tests/docker/dockerfiles/travis.docker @@ -1,4 +1,8 @@ -FROM travisci/ci-sardonyx:packer-1546978056-2c98a19 +# +# Travis Image - this is broadly the same image that we run our CI +# tests on. +# +FROM travisci/ci-sardonyx:packer-1552557266-f909ac5 ENV DEBIAN_FRONTEND noninteractive ENV LANG en_US.UTF-8 ENV LC_ALL en_US.UTF-8 diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py index b5d1479bee9685b8300472b722cc6acbe6a7dc51..2929de23aa74b64b533c5ba2e172ad8316a75452 100755 --- a/tests/vm/basevm.py +++ b/tests/vm/basevm.py @@ -57,6 +57,8 @@ class BaseVM(object): arch = "#arch" # command to halt the guest, can be overridden by subclasses poweroff = "poweroff" + # enable IPv6 networking + ipv6 = True def __init__(self, debug=False, vcpus=None): self._guest = None self._tmpdir = os.path.realpath(tempfile.mkdtemp(prefix="vm-test-", @@ -81,7 +83,8 @@ class BaseVM(object): self._args = [ \ "-nodefaults", "-m", "4G", "-cpu", "max", - "-netdev", "user,id=vnet,hostfwd=:127.0.0.1:0-:22", + "-netdev", "user,id=vnet,hostfwd=:127.0.0.1:0-:22" + + (",ipv6=no" if not self.ipv6 else ""), "-device", "virtio-net-pci,netdev=vnet", "-vnc", "127.0.0.1:0,to=20"] if vcpus and vcpus > 1: diff --git a/tests/vm/netbsd b/tests/vm/netbsd index ee9eaeab504f620aab790846ae297855b9984ffc..18aa56ae826fcdc52151ce6141bdc15c1d7168aa 100755 --- a/tests/vm/netbsd +++ b/tests/vm/netbsd @@ -28,6 +28,13 @@ class NetBSDVM(basevm.BaseVM): gmake --output-sync -j{jobs} {target} {verbose}; """ + # Workaround for NetBSD + IPv6 + slirp issues. + # NetBSD seems to ignore the ICMPv6 Destination Unreachable + # messages generated by slirp. When the host has no IPv6 + # connectivity, this causes every connection to ftp.NetBSD.org + # take more than a minute to be established. + ipv6 = False + def build_image(self, img): cimg = self._download_with_cache("http://download.patchew.org/netbsd-7.1-amd64.img.xz", sha256sum='b633d565b0eac3d02015cd0c81440bd8a7a8df8512615ac1ee05d318be015732')