diff options
Diffstat (limited to 'tests/docker')
| -rw-r--r-- | tests/docker/Makefile.include | 18 | ||||
| -rwxr-xr-x | tests/docker/docker.py | 36 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/centos7.docker | 2 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/debian-ports.docker | 36 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/debian-powerpc-user-cross.docker | 21 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/debian-sid.docker | 35 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/debian-xtensa-cross.docker | 2 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/debian10.docker | 2 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/debian8.docker | 34 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/debian9-mxe.docker | 3 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/debian9.docker | 2 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/travis.docker | 2 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/ubuntu.docker | 2 | ||||
| -rw-r--r-- | tests/docker/dockerfiles/ubuntu1804.docker | 2 | ||||
| -rwxr-xr-x | tests/docker/test-clang | 6 |
15 files changed, 30 insertions, 173 deletions
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 50a400b573..89c56a3a88 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -4,11 +4,10 @@ DOCKER_SUFFIX := .docker DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles -DOCKER_DEPRECATED_IMAGES := debian # we don't run tests on intermediate images (used as base by another image) -DOCKER_PARTIAL_IMAGES := debian debian8 debian9 debian10 debian-sid -DEBIAN_PARTIAL_IMAGES += debian8-mxe debian-9-mxe debian-ports debian-bootstrap -DOCKER_IMAGES := $(filter-out $(DOCKER_DEPRECATED_IMAGES),$(sort $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker))))) +DOCKER_PARTIAL_IMAGES := debian9 debian10 +DOCKER_PARTIAL_IMAGES += debian9-mxe debian-bootstrap +DOCKER_IMAGES := $(sort $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker)))) DOCKER_TARGETS := $(patsubst %,docker-image-%,$(DOCKER_IMAGES)) # Use a global constant ccache directory to speed up repetitive builds DOCKER_CCACHE_DIR := $$HOME/.cache/qemu-docker-ccache @@ -148,17 +147,8 @@ DOCKER_PARTIAL_IMAGES += fedora-i386-cross fedora-cris-cross # work around issues with poorly working multi-arch systems and broken # packages. -# Jessie is the last supported release for powerpc, but multi-arch is -# broken so we need a qemu-linux-user for this target -docker-binfmt-image-debian-powerpc-user: DEB_ARCH = powerpc -docker-binfmt-image-debian-powerpc-user: DEB_TYPE = jessie -docker-binfmt-image-debian-powerpc-user: DEB_URL = http://snapshot.debian.org/archive/debian/20180615T211437Z -docker-binfmt-image-debian-powerpc-user: EXECUTABLE = ${BUILD_DIR}/ppc-linux-user/qemu-ppc -docker-image-debian-powerpc-user-cross: docker-binfmt-image-debian-powerpc-user -DOCKER_USER_IMAGES += debian-powerpc-user - # Expand all the pre-requistes for each docker image and test combination -$(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES),$(DOCKER_IMAGES) $(DOCKER_DEPRECATED_IMAGES)), \ +$(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES),$(DOCKER_IMAGES)), \ $(foreach t,$(DOCKER_TESTS) $(DOCKER_TOOLS), \ $(eval .PHONY: docker-$t@$i) \ $(eval docker-$t@$i: docker-image-$i docker-run-$t@$i) \ diff --git a/tests/docker/docker.py b/tests/docker/docker.py index 29613afd48..31d8adf836 100755 --- a/tests/docker/docker.py +++ b/tests/docker/docker.py @@ -215,7 +215,7 @@ class Docker(object): """ Running Docker commands """ def __init__(self): self._command = _guess_engine_command() - self._instances = [] + self._instance = None atexit.register(self._kill_instances) signal.signal(signal.SIGTERM, self._kill_instances) signal.signal(signal.SIGHUP, self._kill_instances) @@ -234,21 +234,19 @@ class Docker(object): cmd = ["ps", "-q"] if not only_active: cmd.append("-a") + + filter = "--filter=label=com.qemu.instance.uuid" + if only_known: + if self._instance: + filter += "=%s" % (self._instance) + else: + # no point trying to kill, we finished + return + + print("filter=%s" % (filter)) + cmd.append(filter) for i in self._output(cmd).split(): - resp = self._output(["inspect", i]) - labels = json.loads(resp)[0]["Config"]["Labels"] - active = json.loads(resp)[0]["State"]["Running"] - if not labels: - continue - instance_uuid = labels.get("com.qemu.instance.uuid", None) - if not instance_uuid: - continue - if only_known and instance_uuid not in self._instances: - continue - print("Terminating", i) - if active: - self._do(["kill", i]) - self._do(["rm", i]) + self._do(["rm", "-f", i]) def clean(self): self._do_kill_instances(False, False) @@ -325,22 +323,22 @@ class Docker(object): return checksum == _text_checksum(_dockerfile_preprocess(dockerfile)) def run(self, cmd, keep, quiet, as_user=False): - label = uuid.uuid1().hex + label = uuid.uuid4().hex if not keep: - self._instances.append(label) + self._instance = label if as_user: uid = os.getuid() cmd = [ "-u", str(uid) ] + cmd # podman requires a bit more fiddling if self._command[0] == "podman": - argv.insert(0, '--userns=keep-id') + cmd.insert(0, '--userns=keep-id') ret = self._do_check(["run", "--label", "com.qemu.instance.uuid=" + label] + cmd, quiet=quiet) if not keep: - self._instances.remove(label) + self._instance = None return ret def command(self, cmd, argv, quiet): diff --git a/tests/docker/dockerfiles/centos7.docker b/tests/docker/dockerfiles/centos7.docker index e0b9d7dbe9..953637065c 100644 --- a/tests/docker/dockerfiles/centos7.docker +++ b/tests/docker/dockerfiles/centos7.docker @@ -25,6 +25,7 @@ ENV PACKAGES \ nettle-devel \ perl-Test-Harness \ pixman-devel \ + python3 \ SDL-devel \ spice-glib-devel \ spice-server-devel \ @@ -34,4 +35,3 @@ ENV PACKAGES \ zlib-devel RUN yum install -y $PACKAGES RUN rpm -q $PACKAGES | sort > /packages.txt - diff --git a/tests/docker/dockerfiles/debian-ports.docker b/tests/docker/dockerfiles/debian-ports.docker deleted file mode 100644 index 61bc3f2993..0000000000 --- a/tests/docker/dockerfiles/debian-ports.docker +++ /dev/null @@ -1,36 +0,0 @@ -# -# Docker multiarch cross-compiler target -# -# This docker target is builds on Debian Ports 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:unstable - -MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org> - -RUN echo "deb [arch=amd64] http://deb.debian.org/debian unstable main" > /etc/apt/sources.list - -# Duplicate deb line as deb-src -RUN cat /etc/apt/sources.list | sed -ne "s/^deb\ \(\[.*\]\ \)\?\(.*\)/deb-src \2/p" >> /etc/apt/sources.list - -# Setup some basic tools we need -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \ - DEBIAN_FRONTEND=noninteractive eatmydata \ - apt-get install -y --no-install-recommends \ - bison \ - build-essential \ - ca-certificates \ - clang \ - debian-ports-archive-keyring \ - flex \ - gettext \ - git \ - pkg-config \ - psmisc \ - python \ - texinfo \ - $(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2) diff --git a/tests/docker/dockerfiles/debian-powerpc-user-cross.docker b/tests/docker/dockerfiles/debian-powerpc-user-cross.docker deleted file mode 100644 index 83749b0abb..0000000000 --- a/tests/docker/dockerfiles/debian-powerpc-user-cross.docker +++ /dev/null @@ -1,21 +0,0 @@ -# -# Docker powerpc cross-compiler target for QEMU -# -# We can't use current Debian stable cross-compilers to build powerpc -# as it has been dropped as a release architecture. Using Debian Sid -# is just far too sketchy a build environment. This leaves us the -# final option of using linux-user. This image is based of the -# debootstrapped qemu:debian-powerpc-user but doesn't need any extra -# magic once it is setup. -# -# It can be used to build old versions of QEMU, current versions need -# newer dependencies than Jessie provides. -# -FROM qemu:debian-powerpc-user - -RUN echo man-db man-db/auto-update boolean false | debconf-set-selections -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get build-dep -yy qemu - -ENV QEMU_CONFIGURE_OPTS --disable-werror -ENV DEF_TARGET_LIST powerpc-softmmu,arm-linux-user,aarch64-linux-user diff --git a/tests/docker/dockerfiles/debian-sid.docker b/tests/docker/dockerfiles/debian-sid.docker deleted file mode 100644 index 2a1bcc33b2..0000000000 --- a/tests/docker/dockerfiles/debian-sid.docker +++ /dev/null @@ -1,35 +0,0 @@ -# -# Debian Sid Base -# -# Currently we can build all our guests with cross-compilers in the -# latest Debian release (Buster). However new compilers will first -# arrive in Sid. However Sid is a rolling distro which may be broken -# at any particular time. To try and mitigate this we use Debian's -# snapshot archive which provides a "stable" view of what state Sid -# was in. -# - -# This must be earlier than the snapshot date we are aiming for -FROM debian:sid-20190812-slim - - # Use a snapshot known to work (see http://snapshot.debian.org/#Usage) -ENV DEBIAN_SNAPSHOT_DATE "20190820" -RUN sed -i "s%^deb \(https\?://\)deb.debian.org/debian/\? \(.*\)%deb [check-valid-until=no] \1snapshot.debian.org/archive/debian/${DEBIAN_SNAPSHOT_DATE} \2%" /etc/apt/sources.list - -# 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 \ - bison \ - build-essential \ - ca-certificates \ - flex \ - git \ - pkg-config \ - psmisc \ - python \ - texinfo || { echo "Failed to build - see debian-sid.docker notes"; exit 1; } diff --git a/tests/docker/dockerfiles/debian-xtensa-cross.docker b/tests/docker/dockerfiles/debian-xtensa-cross.docker index b9c2e2e531..e6f93f65ee 100644 --- a/tests/docker/dockerfiles/debian-xtensa-cross.docker +++ b/tests/docker/dockerfiles/debian-xtensa-cross.docker @@ -18,7 +18,7 @@ RUN apt-get update && \ flex \ gettext \ git \ - python-minimal + python3-minimal ENV CPU_LIST csp dc232b dc233c ENV TOOLCHAIN_RELEASE 2018.02 diff --git a/tests/docker/dockerfiles/debian10.docker b/tests/docker/dockerfiles/debian10.docker index 30a78813f2..dad498b52e 100644 --- a/tests/docker/dockerfiles/debian10.docker +++ b/tests/docker/dockerfiles/debian10.docker @@ -26,7 +26,7 @@ RUN apt update && \ git \ pkg-config \ psmisc \ - python \ + python3 \ python3-sphinx \ texinfo \ $(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2) diff --git a/tests/docker/dockerfiles/debian8.docker b/tests/docker/dockerfiles/debian8.docker deleted file mode 100644 index 1212a85c35..0000000000 --- a/tests/docker/dockerfiles/debian8.docker +++ /dev/null @@ -1,34 +0,0 @@ -# -# Docker multiarch cross-compiler target -# -# This docker target is builds on Debian and Emdebian's 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:jessie-slim - -MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org> - -# Duplicate deb line as deb-src -RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list - -# Setup some basic tools we need -RUN apt update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -yy eatmydata && \ - DEBIAN_FRONTEND=noninteractive eatmydata \ - apt-get install -y --no-install-recommends \ - bison \ - binutils-multiarch \ - build-essential \ - ca-certificates \ - clang \ - curl \ - flex \ - gettext \ - git \ - gnupg \ - pkg-config \ - python-minimal - diff --git a/tests/docker/dockerfiles/debian9-mxe.docker b/tests/docker/dockerfiles/debian9-mxe.docker index 7431168dad..62ff1cecf2 100644 --- a/tests/docker/dockerfiles/debian9-mxe.docker +++ b/tests/docker/dockerfiles/debian9-mxe.docker @@ -16,7 +16,6 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C6BF758A33A3A276 && RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ apt-get install -y --no-install-recommends \ - libpython2.7-stdlib \ $(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/ +ENV PATH $PATH:/usr/lib/mxe/usr/bin/ diff --git a/tests/docker/dockerfiles/debian9.docker b/tests/docker/dockerfiles/debian9.docker index b36f1d4ed8..8cbd742bb5 100644 --- a/tests/docker/dockerfiles/debian9.docker +++ b/tests/docker/dockerfiles/debian9.docker @@ -26,7 +26,7 @@ RUN apt update && \ git \ pkg-config \ psmisc \ - python \ + python3 \ python3-sphinx \ texinfo \ $(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2) diff --git a/tests/docker/dockerfiles/travis.docker b/tests/docker/dockerfiles/travis.docker index e72dc85ca7..ea14da29d9 100644 --- a/tests/docker/dockerfiles/travis.docker +++ b/tests/docker/dockerfiles/travis.docker @@ -5,7 +5,7 @@ ENV LC_ALL en_US.UTF-8 RUN sed -i "s/# deb-src/deb-src/" /etc/apt/sources.list RUN apt-get update RUN apt-get -y build-dep qemu -RUN apt-get -y install device-tree-compiler python2.7 python-yaml dh-autoreconf gdb strace lsof net-tools gcovr +RUN apt-get -y install device-tree-compiler python3 python3-yaml dh-autoreconf gdb strace lsof net-tools gcovr # Travis tools require PhantomJS / Neo4j / Maven accessible # in their PATH (QEMU build won't access them). ENV PATH /usr/local/phantomjs/bin:/usr/local/phantomjs:/usr/local/neo4j-3.2.7/bin:/usr/local/maven-3.5.2/bin:/usr/local/cmake-3.9.2/bin:/usr/local/clang-5.0.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin diff --git a/tests/docker/dockerfiles/ubuntu.docker b/tests/docker/dockerfiles/ubuntu.docker index a4f601395c..f486492224 100644 --- a/tests/docker/dockerfiles/ubuntu.docker +++ b/tests/docker/dockerfiles/ubuntu.docker @@ -60,7 +60,7 @@ ENV PACKAGES flex bison \ libvte-2.91-dev \ libxen-dev \ make \ - python-yaml \ + python3-yaml \ python3-sphinx \ sparse \ texinfo \ diff --git a/tests/docker/dockerfiles/ubuntu1804.docker b/tests/docker/dockerfiles/ubuntu1804.docker index 883f9bcf31..3cc4f492c4 100644 --- a/tests/docker/dockerfiles/ubuntu1804.docker +++ b/tests/docker/dockerfiles/ubuntu1804.docker @@ -47,7 +47,7 @@ ENV PACKAGES flex bison \ libvte-2.91-dev \ libxen-dev \ make \ - python-yaml \ + python3-yaml \ python3-sphinx \ sparse \ texinfo \ diff --git a/tests/docker/test-clang b/tests/docker/test-clang index 324e341cea..db9e6970b7 100755 --- a/tests/docker/test-clang +++ b/tests/docker/test-clang @@ -17,11 +17,7 @@ requires clang cd "$BUILD_DIR" -OPTS="--cxx=clang++ --cc=clang --host-cc=clang" -# -fsanitize=undefined is broken on Fedora 23, skip it for now -# See also: https://bugzilla.redhat.com/show_bug.cgi?id=1263834 -#OPTS="$OPTS --extra-cflags=-fsanitize=undefined \ - #--extra-cflags=-fno-sanitize=float-divide-by-zero" +OPTS="--cxx=clang++ --cc=clang --host-cc=clang --enable-sanitizers" build_qemu $OPTS check_qemu install_qemu |