From 6ca9f7fedbfe97bece72cd6eac0a8be4a9a3898a Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Mon, 17 Jul 2017 21:31:29 -0300 Subject: [PATCH 01/32] docker: allow customizing Travis global_env variables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is useful so that we can do builds at higher than -j3 when running travis.py locally. Signed-off-by: Paolo Bonzini Signed-off-by: Alex Bennée --- tests/docker/travis.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/docker/travis.py b/tests/docker/travis.py index 8dcc964da4..703a7fde85 100755 --- a/tests/docker/travis.py +++ b/tests/docker/travis.py @@ -21,13 +21,12 @@ def load_yaml(fname): def conf_iter(conf): def env_to_list(env): return env if isinstance(env, list) else [env] - global_env = conf["env"]["global"] for entry in conf["matrix"]["include"]: - yield {"env": global_env + env_to_list(entry["env"]), + yield {"env": env_to_list(entry["env"]), "compiler": entry["compiler"]} for entry in itertools.product(conf["compiler"], conf["env"]["matrix"]): - yield {"env": global_env + env_to_list(entry[1]), + yield {"env": env_to_list(entry[1]), "compiler": entry[0]} def main(): @@ -35,6 +34,7 @@ def main(): sys.stderr.write("Usage: %s \n" % sys.argv[0]) return 1 conf = load_yaml(sys.argv[1]) + print "\n".join((": ${%s}" % var for var in conf["env"]["global"])) for config in conf_iter(conf): print "(" print "\n".join(config["env"]) From f4089dc8da4e7135600093c6afac8c83fb7057a1 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Mon, 17 Jul 2017 21:31:30 -0300 Subject: [PATCH 02/32] travis: move make -j flag out of script MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Because global environment variables can be overridden when .travis.yml is processed by the docker-travis target, the effect of this patch is that docker-travis now obeys the "J=n" option. Signed-off-by: Paolo Bonzini Signed-off-by: Alex Bennée --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3c7a5cbe25..f583839755 100644 --- a/.travis.yml +++ b/.travis.yml @@ -46,6 +46,7 @@ notifications: env: global: - TEST_CMD="make check" + - MAKEFLAGS="-j3" matrix: - CONFIG="" - CONFIG="--enable-debug --enable-debug-tcg --enable-trace-backends=log" @@ -64,7 +65,7 @@ before_install: before_script: - ./configure ${CONFIG} script: - - make -j3 && ${TEST_CMD} + - make ${MAKEFLAGS} && ${TEST_CMD} matrix: include: # Test with CLang for compile portability From dca34e8c4e8cffb112a8cdc8c1ddd9dc93d1ffcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Mon, 17 Jul 2017 21:31:31 -0300 Subject: [PATCH 03/32] docker: include python-yaml in travis.docker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Although the upstream Travis images don't need this library our "travis-lite" scripts are written in python. This allows us to do: make docker-travis@travis J=10 and approximate a travis run on their default image. Signed-off-by: Alex Bennée Reviewed-by: Fam Zheng Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/travis.docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/docker/dockerfiles/travis.docker b/tests/docker/dockerfiles/travis.docker index e4983ae2d3..a315f66ad9 100644 --- a/tests/docker/dockerfiles/travis.docker +++ b/tests/docker/dockerfiles/travis.docker @@ -2,5 +2,5 @@ FROM quay.io/travisci/travis-ruby RUN apt-get update RUN apt-get -y build-dep qemu RUN apt-get -y build-dep device-tree-compiler -RUN apt-get -y install python2.7 dh-autoreconf +RUN apt-get -y install python2.7 python-yaml dh-autoreconf ENV FEATURES pyyaml From ed7023b05b06a38fc32ca5ef9a8c49d6fcbad572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Mon, 17 Jul 2017 21:31:32 -0300 Subject: [PATCH 04/32] docker: add debug tools to travis.docker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a test fails/hangs you don't want the hassle of getting the debug tools installed. Lets install them on our image by default so we can debug when we need to. Signed-off-by: Alex Bennée Reviewed-by: Fam Zheng Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/travis.docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/docker/dockerfiles/travis.docker b/tests/docker/dockerfiles/travis.docker index a315f66ad9..636fa590a5 100644 --- a/tests/docker/dockerfiles/travis.docker +++ b/tests/docker/dockerfiles/travis.docker @@ -2,5 +2,5 @@ FROM quay.io/travisci/travis-ruby RUN apt-get update RUN apt-get -y build-dep qemu RUN apt-get -y build-dep device-tree-compiler -RUN apt-get -y install python2.7 python-yaml dh-autoreconf +RUN apt-get -y install python2.7 python-yaml dh-autoreconf gdb strace lsof net-tools ENV FEATURES pyyaml From 24044d48251fc9cd163e005a3d41d299819d2092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:33 -0300 Subject: [PATCH 05/32] docker: rename debian stable -> 9 (Stretch) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We'll also want to support some older Debian combinations for architectures that didn't make the Debian 9 cut. Signed-off-by: Philippe Mathieu-Daudé [AJB: extend commit msg] Signed-off-by: Alex Bennée --- tests/docker/Makefile.include | 6 +++--- tests/docker/dockerfiles/debian-arm64-cross.docker | 4 ++-- tests/docker/dockerfiles/debian-armhf-cross.docker | 4 ++-- tests/docker/dockerfiles/debian-mipsel-cross.docker | 4 ++-- .../dockerfiles/{debian.docker => debian9.docker} | 13 +++++++++---- 5 files changed, 18 insertions(+), 13 deletions(-) rename tests/docker/dockerfiles/{debian.docker => debian9.docker} (62%) diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 012a2fc1af..72bb52ad7b 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -56,9 +56,9 @@ docker-image-%: $(DOCKER_FILES_DIR)/%.docker "BUILD","$*") # Enforce dependancies for composite images -docker-image-debian-armhf-cross: docker-image-debian -docker-image-debian-arm64-cross: docker-image-debian -docker-image-debian-mipsel-cross: docker-image-debian +docker-image-debian-armhf-cross: docker-image-debian9 +docker-image-debian-arm64-cross: docker-image-debian9 +docker-image-debian-mipsel-cross: docker-image-debian9 # Expand all the pre-requistes for each docker image and test combination $(foreach i,$(DOCKER_IMAGES), \ diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker index 45b891d57a..f1bfa64160 100644 --- a/tests/docker/dockerfiles/debian-arm64-cross.docker +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker @@ -1,9 +1,9 @@ # # Docker arm64 cross-compiler target # -# This docker target builds on the base debian image. +# This docker target builds on the debian Stretch base image. # -FROM qemu:debian +FROM qemu:debian9 # Add the foreign architecture we want and install dependencies RUN dpkg --add-architecture arm64 diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker index e67dfdccc5..2beacef49b 100644 --- a/tests/docker/dockerfiles/debian-armhf-cross.docker +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker @@ -1,9 +1,9 @@ # # Docker armhf cross-compiler target # -# This docker target builds on the base debian image. +# This docker target builds on the debian Stretch base image. # -FROM qemu:debian +FROM qemu:debian9 # Add the foreign architecture we want and install dependencies RUN dpkg --add-architecture armhf diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker b/tests/docker/dockerfiles/debian-mipsel-cross.docker index 2156bdb28d..9ee997aa54 100644 --- a/tests/docker/dockerfiles/debian-mipsel-cross.docker +++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker @@ -1,9 +1,9 @@ # # Docker mipsel cross-compiler target # -# This docker target builds on the base debian image. +# This docker target builds on the debian Stretch base image. # -FROM qemu:debian +FROM qemu:debian9 MAINTAINER Philippe Mathieu-Daudé # Add the foreign architecture we want and install dependencies diff --git a/tests/docker/dockerfiles/debian.docker b/tests/docker/dockerfiles/debian9.docker similarity index 62% rename from tests/docker/dockerfiles/debian.docker rename to tests/docker/dockerfiles/debian9.docker index 10953b2425..c74f71283c 100644 --- a/tests/docker/dockerfiles/debian.docker +++ b/tests/docker/dockerfiles/debian9.docker @@ -1,13 +1,13 @@ # # 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. +# 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:stable-slim +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 @@ -17,4 +17,9 @@ RUN apt update RUN DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt install -y --no-install-recommends \ - ca-certificates build-essential clang git bison flex + bison \ + build-essential \ + ca-certificates \ + clang \ + flex \ + git From 94afe49eab9b2292b386fde72107aab012d2d91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:34 -0300 Subject: [PATCH 06/32] docker: add common packages to debian base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/debian9.docker | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/docker/dockerfiles/debian9.docker b/tests/docker/dockerfiles/debian9.docker index c74f71283c..6b6bf41421 100644 --- a/tests/docker/dockerfiles/debian9.docker +++ b/tests/docker/dockerfiles/debian9.docker @@ -18,8 +18,11 @@ RUN DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt install -y --no-install-recommends \ bison \ + binutils-multiarch \ build-essential \ ca-certificates \ clang \ flex \ - git + git \ + pkg-config \ + python-minimal From 7d2bcf23638ccca2a63b4a4ee5d2ae5f22244101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:35 -0300 Subject: [PATCH 07/32] docker: debian/s390x no more in unstable, now available in Stretch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/Makefile.include | 1 + .../dockerfiles/debian-s390x-cross.docker | 20 +++++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 72bb52ad7b..84dce49655 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -59,6 +59,7 @@ docker-image-%: $(DOCKER_FILES_DIR)/%.docker docker-image-debian-armhf-cross: docker-image-debian9 docker-image-debian-arm64-cross: docker-image-debian9 docker-image-debian-mipsel-cross: docker-image-debian9 +docker-image-debian-s390x-cross: docker-image-debian9 # Expand all the pre-requistes for each docker image and test combination $(foreach i,$(DOCKER_IMAGES), \ diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker index cfc354ce5d..667e428a4c 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -1,27 +1,27 @@ # # Docker s390 cross-compiler target # -# This docker target is based on stretch (testing) as the stable build -# doesn't have the cross compiler available. +# This docker target builds on the debian Stretch base image. # -FROM debian:testing-slim - -# Duplicate deb line as deb-src -RUN cat /etc/apt/sources.list | sed "s/deb/deb-src/" >> /etc/apt/sources.list +FROM qemu:debian9 # Add the s390x architecture RUN dpkg --add-architecture s390x # Grab the updated list of packages RUN apt update && apt dist-upgrade -yy -RUN apt install -yy build-essential clang -RUN apt-get build-dep -yy -a s390x qemu || apt-get -f install -RUN apt install -yy gcc-multilib-s390x-linux-gnu binutils-multiarch +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + gcc-multilib-s390x-linux-gnu + +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get build-dep -yy -a s390x qemu # Specify the cross prefix for this image (see tests/docker/common.rc) ENV QEMU_CONFIGURE_OPTS --cross-prefix=s390x-linux-gnu- -RUN DEBIAN_FRONTEND=noninteractive \ +# Install extra libraries to increase code coverage +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt-get install -y --no-install-recommends \ glusterfs-common:s390x \ libbz2-dev:s390x \ From 2a444f55eb65cb746adad0f8166c3bc143073c92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:36 -0300 Subject: [PATCH 08/32] docker: remove packages now dependent of qemu in Stretch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/debian-arm64-cross.docker | 3 --- tests/docker/dockerfiles/debian-armhf-cross.docker | 3 --- tests/docker/dockerfiles/debian-mipsel-cross.docker | 3 --- tests/docker/dockerfiles/debian-s390x-cross.docker | 3 --- 4 files changed, 12 deletions(-) diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker index f1bfa64160..6ed12a3f6e 100644 --- a/tests/docker/dockerfiles/debian-arm64-cross.docker +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker @@ -19,11 +19,8 @@ ENV QEMU_CONFIGURE_OPTS --cross-prefix=aarch64-linux-gnu- RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt-get install -y --no-install-recommends \ - glusterfs-common:arm64 \ libbz2-dev:arm64 \ liblzo2-dev:arm64 \ - libncursesw5-dev:arm64 \ - libnfs-dev:arm64 \ librdmacm-dev:arm64 \ libsnappy-dev:arm64 \ libxen-dev:arm64 diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker index 2beacef49b..5100b0afc0 100644 --- a/tests/docker/dockerfiles/debian-armhf-cross.docker +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker @@ -19,11 +19,8 @@ ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabihf- RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt-get install -y --no-install-recommends \ - glusterfs-common:armhf \ libbz2-dev:armhf \ liblzo2-dev:armhf \ - libncursesw5-dev:armhf \ - libnfs-dev:armhf \ librdmacm-dev:armhf \ libsnappy-dev:armhf \ libxen-dev:armhf diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker b/tests/docker/dockerfiles/debian-mipsel-cross.docker index 9ee997aa54..eb279c5044 100644 --- a/tests/docker/dockerfiles/debian-mipsel-cross.docker +++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker @@ -20,10 +20,7 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt-get build-dep -yy -a mipsel qemu RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt-get install -y --no-install-recommends \ - glusterfs-common:mipsel \ libbz2-dev:mipsel \ liblzo2-dev:mipsel \ - libncursesw5-dev:mipsel \ - libnfs-dev:mipsel \ librdmacm-dev:mipsel \ libsnappy-dev:mipsel diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker index 667e428a4c..e188bfeda4 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -23,10 +23,7 @@ ENV QEMU_CONFIGURE_OPTS --cross-prefix=s390x-linux-gnu- # Install extra libraries to increase code coverage RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt-get install -y --no-install-recommends \ - glusterfs-common:s390x \ libbz2-dev:s390x \ liblzo2-dev:s390x \ - libncursesw5-dev:s390x \ - libnfs-dev:s390x \ librdmacm-dev:s390x \ libsnappy-dev:s390x From aaa6ccc9ffda85af8fa9ef319de21bf998d85878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:37 -0300 Subject: [PATCH 09/32] docker: optimize debian9 base image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/debian9.docker | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/docker/dockerfiles/debian9.docker b/tests/docker/dockerfiles/debian9.docker index 6b6bf41421..056e5389cc 100644 --- a/tests/docker/dockerfiles/debian9.docker +++ b/tests/docker/dockerfiles/debian9.docker @@ -18,11 +18,12 @@ RUN DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt install -y --no-install-recommends \ bison \ - binutils-multiarch \ build-essential \ ca-certificates \ - clang \ flex \ git \ pkg-config \ - python-minimal + psmisc \ + python \ + texinfo \ + $(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2) From 31e205d1bf6041c4a254ed6ab2b203d8acf03989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:38 -0300 Subject: [PATCH 10/32] docker: add debian/armel based on Stretch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/Makefile.include | 1 + .../dockerfiles/debian-armel-cross.docker | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 tests/docker/dockerfiles/debian-armel-cross.docker diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 84dce49655..db66b6f802 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -56,6 +56,7 @@ docker-image-%: $(DOCKER_FILES_DIR)/%.docker "BUILD","$*") # Enforce dependancies for composite images +docker-image-debian-armel-cross: docker-image-debian9 docker-image-debian-armhf-cross: docker-image-debian9 docker-image-debian-arm64-cross: docker-image-debian9 docker-image-debian-mipsel-cross: docker-image-debian9 diff --git a/tests/docker/dockerfiles/debian-armel-cross.docker b/tests/docker/dockerfiles/debian-armel-cross.docker new file mode 100644 index 0000000000..e3bd68f51e --- /dev/null +++ b/tests/docker/dockerfiles/debian-armel-cross.docker @@ -0,0 +1,24 @@ +# +# Docker armel cross-compiler target +# +# This docker target builds on the debian Stretch base image. +# +FROM qemu:debian9 +MAINTAINER Philippe Mathieu-Daudé + +# Add the foreign architecture we want and install dependencies +RUN dpkg --add-architecture armel && \ + apt update +RUN apt install -yy crossbuild-essential-armel +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get build-dep -yy -a armel qemu + +# Specify the cross prefix for this image (see tests/docker/common.rc) +ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabi- + +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + libbz2-dev:armel \ + liblzo2-dev:armel \ + librdmacm-dev:armel \ + libsnappy-dev:armel From 2b1c10bdcf98917ce27a6e3ec1419d3423764c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:39 -0300 Subject: [PATCH 11/32] docker: add debian/ppc64el based on Stretch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/Makefile.include | 1 + .../dockerfiles/debian-ppc64el-cross.docker | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 tests/docker/dockerfiles/debian-ppc64el-cross.docker diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index db66b6f802..553465ef6d 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -60,6 +60,7 @@ docker-image-debian-armel-cross: docker-image-debian9 docker-image-debian-armhf-cross: docker-image-debian9 docker-image-debian-arm64-cross: docker-image-debian9 docker-image-debian-mipsel-cross: docker-image-debian9 +docker-image-debian-ppc64el-cross: docker-image-debian9 docker-image-debian-s390x-cross: docker-image-debian9 # Expand all the pre-requistes for each docker image and test combination diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/docker/dockerfiles/debian-ppc64el-cross.docker new file mode 100644 index 0000000000..f44a35880a --- /dev/null +++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker @@ -0,0 +1,25 @@ +# +# Docker ppc64el cross-compiler target +# +# This docker target builds on the debian Stretch base image. +# +FROM qemu:debian9 + +# Add the foreign architecture we want and install dependencies +RUN dpkg --add-architecture ppc64el && \ + apt update +RUN apt install -yy crossbuild-essential-ppc64el + +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get build-dep -yy -a ppc64el qemu + +# Specify the cross prefix for this image (see tests/docker/common.rc) +ENV QEMU_CONFIGURE_OPTS --cross-prefix=powerpc64le-linux-gnu- + +# Install extra libraries to increase code coverage +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + libbz2-dev:ppc64el \ + liblzo2-dev:ppc64el \ + librdmacm-dev:ppc64el \ + libsnappy-dev:ppc64el From 15288046e0b19098397cbb792b8ed30064c8c584 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:40 -0300 Subject: [PATCH 12/32] docker: add debian/amd64 based on Stretch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By itself this doesn't add much to our coverage. However later patches will extend this image to include more bleeding edge libraries which are not yet widely available in distros. Signed-off-by: Philippe Mathieu-Daudé [AJB: extend commit msg] Signed-off-by: Alex Bennée --- tests/docker/Makefile.include | 1 + tests/docker/dockerfiles/debian-amd64.docker | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 tests/docker/dockerfiles/debian-amd64.docker diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 553465ef6d..b5eec5dc68 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -56,6 +56,7 @@ docker-image-%: $(DOCKER_FILES_DIR)/%.docker "BUILD","$*") # Enforce dependancies for composite images +docker-image-debian-amd64: docker-image-debian9 docker-image-debian-armel-cross: docker-image-debian9 docker-image-debian-armhf-cross: docker-image-debian9 docker-image-debian-arm64-cross: docker-image-debian9 diff --git a/tests/docker/dockerfiles/debian-amd64.docker b/tests/docker/dockerfiles/debian-amd64.docker new file mode 100644 index 0000000000..2ab76120a4 --- /dev/null +++ b/tests/docker/dockerfiles/debian-amd64.docker @@ -0,0 +1,18 @@ +# +# Docker x86_64 target +# +# This docker target builds on the debian Stretch base image. +# +FROM qemu:debian9 +MAINTAINER Philippe Mathieu-Daudé + +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get build-dep -yy qemu + +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + libbz2-dev \ + liblzo2-dev \ + librdmacm-dev \ + libsnappy-dev \ + libvte-dev From b2e771742586b4f434608b901f1805573ab066bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:41 -0300 Subject: [PATCH 13/32] docker: enable virgl to extend code coverage on amd64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé [AJB: mv, comments in dockerfile] Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/debian-amd64.docker | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/docker/dockerfiles/debian-amd64.docker b/tests/docker/dockerfiles/debian-amd64.docker index 2ab76120a4..360ecf0360 100644 --- a/tests/docker/dockerfiles/debian-amd64.docker +++ b/tests/docker/dockerfiles/debian-amd64.docker @@ -1,7 +1,8 @@ # # Docker x86_64 target # -# This docker target builds on the debian Stretch base image. +# This docker target builds on the debian Stretch base image. Further +# libraries which are not widely available are installed by hand. # FROM qemu:debian9 MAINTAINER Philippe Mathieu-Daudé @@ -16,3 +17,12 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \ librdmacm-dev \ libsnappy-dev \ libvte-dev + +# virgl +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + libegl1-mesa-dev \ + libepoxy-dev \ + libgbm-dev +RUN git clone git://anongit.freedesktop.org/virglrenderer /usr/src/virglrenderer +RUN cd /usr/src/virglrenderer && ./autogen.sh && ./configure --with-glx --disable-tests && make install From 0cf01f5b4ab2991521b4b8b1044f573f1c6c6c4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:42 -0300 Subject: [PATCH 14/32] docker: enable netmap to extend code coverage on amd64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/debian-amd64.docker | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/docker/dockerfiles/debian-amd64.docker b/tests/docker/dockerfiles/debian-amd64.docker index 360ecf0360..71bcfc14d5 100644 --- a/tests/docker/dockerfiles/debian-amd64.docker +++ b/tests/docker/dockerfiles/debian-amd64.docker @@ -26,3 +26,11 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \ libgbm-dev RUN git clone git://anongit.freedesktop.org/virglrenderer /usr/src/virglrenderer RUN cd /usr/src/virglrenderer && ./autogen.sh && ./configure --with-glx --disable-tests && make install + +# netmap +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + linux-headers-amd64 +RUN git clone https://github.com/luigirizzo/netmap.git /usr/src/netmap +RUN cd /usr/src/netmap/LINUX && ./configure --no-drivers --no-apps --kernel-dir=$(ls -d /usr/src/linux-headers-*-amd64) && make install +ENV QEMU_CONFIGURE_OPTS --enable-netmap From 6f8bbb374be6bda03fbdadcd2253a7fc070966b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:43 -0300 Subject: [PATCH 15/32] docker: enable gcrypt to extend code coverage on amd64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/debian-amd64.docker | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/docker/dockerfiles/debian-amd64.docker b/tests/docker/dockerfiles/debian-amd64.docker index 71bcfc14d5..eb13f06ed1 100644 --- a/tests/docker/dockerfiles/debian-amd64.docker +++ b/tests/docker/dockerfiles/debian-amd64.docker @@ -34,3 +34,6 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \ RUN git clone https://github.com/luigirizzo/netmap.git /usr/src/netmap RUN cd /usr/src/netmap/LINUX && ./configure --no-drivers --no-apps --kernel-dir=$(ls -d /usr/src/linux-headers-*-amd64) && make install ENV QEMU_CONFIGURE_OPTS --enable-netmap + +# gcrypt +ENV QEMU_CONFIGURE_OPTS $QEMU_CONFIGURE_OPTS --enable-gcrypt From c705b8617ba30fe8755d54ca8acb2408a7546179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:44 -0300 Subject: [PATCH 16/32] docker: enable nettle to extend code coverage on arm64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/debian-arm64-cross.docker | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker index 6ed12a3f6e..877d863475 100644 --- a/tests/docker/dockerfiles/debian-arm64-cross.docker +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker @@ -24,3 +24,6 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \ librdmacm-dev:arm64 \ libsnappy-dev:arm64 \ libxen-dev:arm64 + +# nettle +ENV QEMU_CONFIGURE_OPTS $QEMU_CONFIGURE_OPTS --enable-nettle From dca688c8f7f316e24c76a8d03e8dc7a6adc0cbcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:45 -0300 Subject: [PATCH 17/32] shippable: add armel targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- .shippable.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.shippable.yml b/.shippable.yml index 5e0caa65c5..abcaf6f4d4 100644 --- a/.shippable.yml +++ b/.shippable.yml @@ -5,6 +5,8 @@ env: global: - LC_ALL=C matrix: + - IMAGE=debian-armel-cross + TARGET_LIST=arm-softmmu,arm-linux-user,armeb-linux-user - IMAGE=debian-armhf-cross TARGET_LIST=arm-softmmu,arm-linux-user,armeb-linux-user - IMAGE=debian-arm64-cross From 41a0b1ee8993643b44b975557618838c0de57adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:46 -0300 Subject: [PATCH 18/32] shippable: add ppc64el targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- .shippable.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.shippable.yml b/.shippable.yml index abcaf6f4d4..189d193da5 100644 --- a/.shippable.yml +++ b/.shippable.yml @@ -16,6 +16,8 @@ env: # mips64el-softmmu disabled due to libfdt problem - IMAGE=debian-mipsel-cross TARGET_LIST=mipsel-softmmu,mipsel-linux-user,mips64el-linux-user + - IMAGE=debian-ppc64el-cross + TARGET_LIST=ppc64-softmmu,ppc64-linux-user,ppc64abi32-linux-user build: pre_ci: - make docker-image-${IMAGE} V=1 From 9d3aa1a3f764bd2b69443c6b9913bff59147e7f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:47 -0300 Subject: [PATCH 19/32] shippable: add x86_64 targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé [AJB: minor tweak to name] Signed-off-by: Alex Bennée --- .shippable.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.shippable.yml b/.shippable.yml index 189d193da5..1f92ace8f7 100644 --- a/.shippable.yml +++ b/.shippable.yml @@ -5,6 +5,8 @@ env: global: - LC_ALL=C matrix: + - IMAGE=debian-amd64 + TARGET_LIST=x86_64-softmmu,x86_64-linux-user - IMAGE=debian-armel-cross TARGET_LIST=arm-softmmu,arm-linux-user,armeb-linux-user - IMAGE=debian-armhf-cross From a3cf6b19617d3343fa75789d5d487f5d5bf620b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:49 -0300 Subject: [PATCH 20/32] docker: add qemu:debian-jessie based on outdated jessie release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/debian8.docker | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tests/docker/dockerfiles/debian8.docker diff --git a/tests/docker/dockerfiles/debian8.docker b/tests/docker/dockerfiles/debian8.docker new file mode 100644 index 0000000000..3d09b4b462 --- /dev/null +++ b/tests/docker/dockerfiles/debian8.docker @@ -0,0 +1,36 @@ +# +# 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é + +# 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-get update && \ + DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + bison \ + binutils-multiarch \ + build-essential \ + ca-certificates \ + clang \ + curl \ + flex \ + git \ + gnupg \ + pkg-config \ + python-minimal + +# Setup Emdebian [emdebian-archive-keyring] +RUN echo "deb http://emdebian.org/tools/debian/ jessie main" > /etc/apt/sources.list.d/emdebian.list && \ + curl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | apt-key add - From bec45514e5862a1c022314d079558989e894e81a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:50 -0300 Subject: [PATCH 21/32] docker: add 'apt-fake' script which generate fake debian packages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alex Bennée Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/debian-apt-fake.sh | 46 +++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 tests/docker/dockerfiles/debian-apt-fake.sh diff --git a/tests/docker/dockerfiles/debian-apt-fake.sh b/tests/docker/dockerfiles/debian-apt-fake.sh new file mode 100755 index 0000000000..2ec0fdf47a --- /dev/null +++ b/tests/docker/dockerfiles/debian-apt-fake.sh @@ -0,0 +1,46 @@ +#! /bin/sh +# +# Generate fake debian package to resolve unimportant unmet dependencies held +# by upstream multiarch broken packages. +# +# Copyright (c) 2017 Philippe Mathieu-Daudé +# +# This work is licensed under the terms of the GNU GPL, version 2 +# or (at your option) any later version. See the COPYING file in +# the top-level directory. + +test $1 = "install" && shift 1 + +fake_install() +{ + echo "Generating fake $2 $1 $3 ..." + (cd /var/cache/apt/archives + (cat << 'EOF' +Section: misc +Priority: optional +Standards-Version: 3.9.2 + +Package: NAME +Version: VERSION +Maintainer: qemu-devel@nongnu.org +Architecture: any +Multi-Arch: same +Description: fake NAME +EOF + ) | sed s/NAME/$2/g | sed s/VERSION/$3/g > $2.control + equivs-build -a $1 $2.control 1>/dev/null 2>/dev/null + dpkg -i --force-overwrite $2_$3_$1.deb + ) +} + +try_install() +{ + name=$(echo $1|sed "s/\(.*\):\(.*\)=\(.*\)/\1/") + arch=$(echo $1|sed "s/\(.*\):\(.*\)=\(.*\)/\2/") + vers=$(echo $1|sed "s/\(.*\):\(.*\)=\(.*\)/\3/") + apt-get install -q -yy $1 || fake_install $arch $name $vers +} + +for package in $*; do + try_install $package +done From 16dcece4d5792bf51caa9a455b985e1ae6dd736f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Mon, 17 Jul 2017 21:31:51 -0300 Subject: [PATCH 22/32] docker: add debian/powerpc based on Jessie MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alex Bennée [AJB: split from merged patch] Signed-off-by: Alex Bennée --- tests/docker/Makefile.include | 3 ++ .../dockerfiles/debian-powerpc-cross.docker | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 tests/docker/dockerfiles/debian-powerpc-cross.docker diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index b5eec5dc68..202efe9ee6 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -55,12 +55,15 @@ docker-image-%: $(DOCKER_FILES_DIR)/%.docker $(if $(EXECUTABLE),--include-executable=$(EXECUTABLE)),\ "BUILD","$*") +docker-image-debian-powerpc-cross: EXTRA_FILES:=tests/docker/dockerfiles/debian-apt-fake.sh + # Enforce dependancies for composite images docker-image-debian-amd64: docker-image-debian9 docker-image-debian-armel-cross: docker-image-debian9 docker-image-debian-armhf-cross: docker-image-debian9 docker-image-debian-arm64-cross: docker-image-debian9 docker-image-debian-mipsel-cross: docker-image-debian9 +docker-image-debian-powerpc-cross: docker-image-debian8 docker-image-debian-ppc64el-cross: docker-image-debian9 docker-image-debian-s390x-cross: docker-image-debian9 diff --git a/tests/docker/dockerfiles/debian-powerpc-cross.docker b/tests/docker/dockerfiles/debian-powerpc-cross.docker new file mode 100644 index 0000000000..a5dd46b4ac --- /dev/null +++ b/tests/docker/dockerfiles/debian-powerpc-cross.docker @@ -0,0 +1,40 @@ +# +# Docker powerpc cross-compiler target +# +# This docker target builds on the debian Jessie base image. +# +FROM qemu:debian8 +MAINTAINER Philippe Mathieu-Daudé + +# Add the foreign architecture we want and install dependencies +RUN dpkg --add-architecture powerpc +RUN apt-get update +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + crossbuild-essential-powerpc + +# to fix "following packages have unmet dependencies" ... +ADD debian-apt-fake.sh /usr/local/bin/apt-fake +RUN apt-get install -y --no-install-recommends \ + equivs \ + pkg-config +RUN apt-fake install \ + pkg-config:powerpc=0.28-1.1-fake && \ + ln -s pkg-config /usr/bin/powerpc-linux-gnu-pkg-config +ENV PKG_CONFIG_PATH /usr/lib/powerpc-linux-gnu/pkgconfig +# + +# Specify the cross prefix for this image (see tests/docker/common.rc) +ENV QEMU_CONFIGURE_OPTS --cross-prefix=powerpc-linux-gnu- + +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get build-dep -yy -a powerpc qemu +RUN DEBIAN_FRONTEND=noninteractive \ + apt-get install -y --no-install-recommends \ + glusterfs-common:powerpc \ + libbz2-dev:powerpc \ + liblzo2-dev:powerpc \ + libncursesw5-dev:powerpc \ + libnfs-dev:powerpc \ + librdmacm-dev:powerpc \ + libsnappy-dev:powerpc From 9fa82d269c75f9536aad21d704f6a275812a4ff1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:52 -0300 Subject: [PATCH 23/32] shippable: add powerpc target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Alex Bennée Signed-off-by: Alex Bennée --- .shippable.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.shippable.yml b/.shippable.yml index 1f92ace8f7..fa54df6cff 100644 --- a/.shippable.yml +++ b/.shippable.yml @@ -18,6 +18,8 @@ env: # mips64el-softmmu disabled due to libfdt problem - IMAGE=debian-mipsel-cross TARGET_LIST=mipsel-softmmu,mipsel-linux-user,mips64el-linux-user + - IMAGE=debian-powerpc-cross + TARGET_LIST=ppc-softmmu,ppcemb-softmmu,ppc-linux-user - IMAGE=debian-ppc64el-cross TARGET_LIST=ppc64-softmmu,ppc64-linux-user,ppc64abi32-linux-user build: From 4319db7b1357f1256b6cfd92e82fbb7e7f999f51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:53 -0300 Subject: [PATCH 24/32] docker: add debian/mips[eb] images MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit change image mips little -> big endian Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/Makefile.include | 2 +- .../dockerfiles/debian-mips-cross.docker | 29 +++++++++++++++++++ .../dockerfiles/debian-mipsel-cross.docker | 9 ++++-- 3 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 tests/docker/dockerfiles/debian-mips-cross.docker diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 202efe9ee6..e0807c0917 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -62,7 +62,7 @@ docker-image-debian-amd64: docker-image-debian9 docker-image-debian-armel-cross: docker-image-debian9 docker-image-debian-armhf-cross: docker-image-debian9 docker-image-debian-arm64-cross: docker-image-debian9 -docker-image-debian-mipsel-cross: docker-image-debian9 +docker-image-debian-mips-cross: docker-image-debian9 docker-image-debian-powerpc-cross: docker-image-debian8 docker-image-debian-ppc64el-cross: docker-image-debian9 docker-image-debian-s390x-cross: docker-image-debian9 diff --git a/tests/docker/dockerfiles/debian-mips-cross.docker b/tests/docker/dockerfiles/debian-mips-cross.docker new file mode 100644 index 0000000000..550f43281b --- /dev/null +++ b/tests/docker/dockerfiles/debian-mips-cross.docker @@ -0,0 +1,29 @@ +# +# Docker mips cross-compiler target +# +# This docker target builds on the debian Stretch base image. +# +FROM qemu:debian9 + +MAINTAINER Philippe Mathieu-Daudé + +# Add the foreign architecture we want and install dependencies +RUN dpkg --add-architecture mips +RUN apt-get update +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + gcc-mips-linux-gnu + +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get build-dep -yy -a mips qemu + +# Specify the cross prefix for this image (see tests/docker/common.rc) +ENV QEMU_CONFIGURE_OPTS --cross-prefix=mips-linux-gnu- + +# Install extra libraries to increase code coverage +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + libbz2-dev:mips \ + liblzo2-dev:mips \ + librdmacm-dev:mips \ + libsnappy-dev:mips diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker b/tests/docker/dockerfiles/debian-mipsel-cross.docker index eb279c5044..6378bd41e7 100644 --- a/tests/docker/dockerfiles/debian-mipsel-cross.docker +++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker @@ -4,6 +4,7 @@ # This docker target builds on the debian Stretch base image. # FROM qemu:debian9 + MAINTAINER Philippe Mathieu-Daudé # Add the foreign architecture we want and install dependencies @@ -11,13 +12,15 @@ RUN dpkg --add-architecture mipsel RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt-get install -y --no-install-recommends \ - crossbuild-essential-mipsel + gcc-mipsel-linux-gnu + +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get build-dep -yy -a mipsel qemu # Specify the cross prefix for this image (see tests/docker/common.rc) ENV QEMU_CONFIGURE_OPTS --cross-prefix=mipsel-linux-gnu- -RUN DEBIAN_FRONTEND=noninteractive eatmydata \ - apt-get build-dep -yy -a mipsel qemu +# Install extra libraries to increase code coverage RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt-get install -y --no-install-recommends \ libbz2-dev:mipsel \ From 1214970481fda30cc81aa0100868b2d77eaaa60b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:54 -0300 Subject: [PATCH 25/32] shippable: use debian/mips[eb] targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit previous commit change image mips little -> big endian Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- .shippable.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.shippable.yml b/.shippable.yml index fa54df6cff..f2a904014a 100644 --- a/.shippable.yml +++ b/.shippable.yml @@ -16,8 +16,8 @@ env: - IMAGE=debian-s390x-cross TARGET_LIST=s390x-softmmu,s390x-linux-user # mips64el-softmmu disabled due to libfdt problem - - IMAGE=debian-mipsel-cross - TARGET_LIST=mipsel-softmmu,mipsel-linux-user,mips64el-linux-user + - IMAGE=debian-mips-cross + TARGET_LIST=mips-softmmu,mipsel-linux-user - IMAGE=debian-powerpc-cross TARGET_LIST=ppc-softmmu,ppcemb-softmmu,ppc-linux-user - IMAGE=debian-ppc64el-cross From fd7b284d79982784b4cd9f32b8282e3c5a7863ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:55 -0300 Subject: [PATCH 26/32] docker: add debian/mips64el image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/Makefile.include | 1 + .../dockerfiles/debian-mips64el-cross.docker | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 tests/docker/dockerfiles/debian-mips64el-cross.docker diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index e0807c0917..5a8283674a 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -63,6 +63,7 @@ docker-image-debian-armel-cross: docker-image-debian9 docker-image-debian-armhf-cross: docker-image-debian9 docker-image-debian-arm64-cross: docker-image-debian9 docker-image-debian-mips-cross: docker-image-debian9 +docker-image-debian-mips64el-cross: docker-image-debian9 docker-image-debian-powerpc-cross: docker-image-debian8 docker-image-debian-ppc64el-cross: docker-image-debian9 docker-image-debian-s390x-cross: docker-image-debian9 diff --git a/tests/docker/dockerfiles/debian-mips64el-cross.docker b/tests/docker/dockerfiles/debian-mips64el-cross.docker new file mode 100644 index 0000000000..fd2aafeb01 --- /dev/null +++ b/tests/docker/dockerfiles/debian-mips64el-cross.docker @@ -0,0 +1,30 @@ +# +# Docker mips64el cross-compiler target +# +# This docker target builds on the debian Stretch base image. +# + +FROM qemu:debian9 + +MAINTAINER Philippe Mathieu-Daudé + +# Add the foreign architecture we want and install dependencies +RUN dpkg --add-architecture mips64el && \ + apt-get update +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + gcc-mips64el-linux-gnuabi64 + +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get build-dep -yy -a mips64el qemu + +# Specify the cross prefix for this image (see tests/docker/common.rc) +ENV QEMU_CONFIGURE_OPTS --cross-prefix=mips64el-linux-gnuabi64- + +# Install extra libraries to increase code coverage +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + libbz2-dev:mips64el \ + liblzo2-dev:mips64el \ + librdmacm-dev:mips64el \ + libsnappy-dev:mips64el From 67f5b285ba56d6015e728059db136103e0593af5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 21:31:56 -0300 Subject: [PATCH 27/32] shippable: add mips64el targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- .shippable.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.shippable.yml b/.shippable.yml index f2a904014a..53b43b349f 100644 --- a/.shippable.yml +++ b/.shippable.yml @@ -15,9 +15,10 @@ env: TARGET_LIST=aarch64-softmmu,aarch64-linux-user - IMAGE=debian-s390x-cross TARGET_LIST=s390x-softmmu,s390x-linux-user - # mips64el-softmmu disabled due to libfdt problem - IMAGE=debian-mips-cross TARGET_LIST=mips-softmmu,mipsel-linux-user + - IMAGE=debian-mips64el-cross + TARGET_LIST=mips64el-softmmu,mips64el-linux-user - IMAGE=debian-powerpc-cross TARGET_LIST=ppc-softmmu,ppcemb-softmmu,ppc-linux-user - IMAGE=debian-ppc64el-cross From 982e758af713044f716811d819a1b5978c6f5136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 23:47:09 -0300 Subject: [PATCH 28/32] docker: add MXE (M cross environment) base image for MinGW-w64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit see http://mxe.cc/ Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/Makefile.include | 3 ++ .../dockerfiles/debian-win32-cross.docker | 32 +++++++++++++++++++ .../dockerfiles/debian-win64-cross.docker | 32 +++++++++++++++++++ tests/docker/dockerfiles/debian8-mxe.docker | 18 +++++++++++ 4 files changed, 85 insertions(+) create mode 100644 tests/docker/dockerfiles/debian-win32-cross.docker create mode 100644 tests/docker/dockerfiles/debian-win64-cross.docker create mode 100644 tests/docker/dockerfiles/debian8-mxe.docker diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 5a8283674a..e993e149e7 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -58,6 +58,7 @@ docker-image-%: $(DOCKER_FILES_DIR)/%.docker docker-image-debian-powerpc-cross: EXTRA_FILES:=tests/docker/dockerfiles/debian-apt-fake.sh # Enforce dependancies for composite images +docker-image-debian8-mxe: docker-image-debian8 docker-image-debian-amd64: docker-image-debian9 docker-image-debian-armel-cross: docker-image-debian9 docker-image-debian-armhf-cross: docker-image-debian9 @@ -67,6 +68,8 @@ docker-image-debian-mips64el-cross: docker-image-debian9 docker-image-debian-powerpc-cross: docker-image-debian8 docker-image-debian-ppc64el-cross: docker-image-debian9 docker-image-debian-s390x-cross: docker-image-debian9 +docker-image-debian-win32-cross: docker-image-debian8-mxe +docker-image-debian-win64-cross: docker-image-debian8-mxe # Expand all the pre-requistes for each docker image and test combination $(foreach i,$(DOCKER_IMAGES), \ diff --git a/tests/docker/dockerfiles/debian-win32-cross.docker b/tests/docker/dockerfiles/debian-win32-cross.docker new file mode 100644 index 0000000000..dd021f2df0 --- /dev/null +++ b/tests/docker/dockerfiles/debian-win32-cross.docker @@ -0,0 +1,32 @@ +# +# Docker mingw32 cross-compiler target +# +# This docker target builds on the debian Jessie MXE base image. +# +FROM qemu:debian8-mxe + +MAINTAINER Philippe Mathieu-Daudé + +ENV TARGET i686 + +RUN 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-libssh2 \ + 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-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 new file mode 100644 index 0000000000..4542bcc821 --- /dev/null +++ b/tests/docker/dockerfiles/debian-win64-cross.docker @@ -0,0 +1,32 @@ +# +# Docker mingw64 cross-compiler target +# +# This docker target builds on the debian Jessie MXE base image. +# +FROM qemu:debian8-mxe + +MAINTAINER Philippe Mathieu-Daudé + +ENV TARGET x86-64 + +RUN 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-libssh2 \ + 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-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=x86_64-w64-mingw32.shared- diff --git a/tests/docker/dockerfiles/debian8-mxe.docker b/tests/docker/dockerfiles/debian8-mxe.docker new file mode 100644 index 0000000000..7bf1b59e54 --- /dev/null +++ b/tests/docker/dockerfiles/debian8-mxe.docker @@ -0,0 +1,18 @@ +# +# Docker mingw cross-compiler target +# +# This docker target builds on the debian Jessie base image. +# +FROM qemu:debian8 + +MAINTAINER Philippe Mathieu-Daudé + +# Add the foreign architecture we want and install dependencies +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D43A795B73B16ABE9643FE1AFD8FFF16DB45C6AB && \ + echo "deb http://pkg.mxe.cc/repos/apt/debian jessie main" > /etc/apt/sources.list.d/mxeapt.list +RUN apt-get update +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + $(apt-get -s install -y --no-install-recommends gw32.shared-mingw-w64 gw32.shared-mingw-w64 | egrep "^Inst mxe-x86-64-unknown-" | cut -d\ -f2) + +ENV PATH $PATH:/usr/lib/mxe/usr/bin/ From 89bec11a479240e808eda9dea7b0c4f2be134a8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 23:47:10 -0300 Subject: [PATCH 29/32] shippable: add win32/64 targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- .shippable.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.shippable.yml b/.shippable.yml index 53b43b349f..dd4bbc84b1 100644 --- a/.shippable.yml +++ b/.shippable.yml @@ -7,6 +7,10 @@ env: matrix: - IMAGE=debian-amd64 TARGET_LIST=x86_64-softmmu,x86_64-linux-user + - IMAGE=debian-win32-cross + TARGET_LIST=arm-softmmu,i386-softmmu,lm32-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 f847325106d6474f0d570d02e462de262ed00db1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 23:47:11 -0300 Subject: [PATCH 30/32] docker: add debian Ports base image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/debian-ports.docker | 35 ++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 tests/docker/dockerfiles/debian-ports.docker diff --git a/tests/docker/dockerfiles/debian-ports.docker b/tests/docker/dockerfiles/debian-ports.docker new file mode 100644 index 0000000000..fba224f760 --- /dev/null +++ b/tests/docker/dockerfiles/debian-ports.docker @@ -0,0 +1,35 @@ +# +# 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é + +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-get install -yy eatmydata +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt-get install -y --no-install-recommends \ + bison \ + build-essential \ + ca-certificates \ + clang \ + debian-ports-archive-keyring \ + flex \ + git \ + pkg-config \ + psmisc \ + python \ + texinfo \ + $(apt-get -s build-dep qemu | egrep ^Inst | fgrep '[all]' | cut -d\ -f2) From 3e11974988d80149ccda0d16cc3f91781f601883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 23:47:12 -0300 Subject: [PATCH 31/32] docker: warn users to use newer debian8/debian9 base image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit to stay backward incompatible. Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/Makefile.include | 1 + tests/docker/dockerfiles/debian.docker | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 tests/docker/dockerfiles/debian.docker diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index e993e149e7..aaab1a4208 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -58,6 +58,7 @@ docker-image-%: $(DOCKER_FILES_DIR)/%.docker docker-image-debian-powerpc-cross: EXTRA_FILES:=tests/docker/dockerfiles/debian-apt-fake.sh # Enforce dependancies for composite images +docker-image-debian: docker-image-debian9 docker-image-debian8-mxe: docker-image-debian8 docker-image-debian-amd64: docker-image-debian9 docker-image-debian-armel-cross: docker-image-debian9 diff --git a/tests/docker/dockerfiles/debian.docker b/tests/docker/dockerfiles/debian.docker new file mode 100644 index 0000000000..fd32e71b79 --- /dev/null +++ b/tests/docker/dockerfiles/debian.docker @@ -0,0 +1,13 @@ +# This template is deprecated and was previously based on Jessie on QEMU 2.9. +# Now than Stretch is out, please use qemu:debian8 as base for Jessie, +# and qemu:debian9 for Stretch. +# +FROM qemu:debian9 + +MAINTAINER Philippe Mathieu-Daudé + +RUN for n in $(seq 8); do echo; done && \ + echo "\n\t\tThis image is deprecated." && echo && \ + echo "\tUse 'FROM qemu:debian9' to use the stable Debian Stretch image" && \ + echo "\tor 'FROM qemu:debian8' to use old Debian Jessie." && \ + for n in $(seq 8); do echo; done From 118d1becc0e6332145bb9d6aee8ed232eed770e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 17 Jul 2017 23:47:13 -0300 Subject: [PATCH 32/32] docker: install clang since Shippable setup_ve() verify it is available MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- tests/docker/dockerfiles/debian9.docker | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/docker/dockerfiles/debian9.docker b/tests/docker/dockerfiles/debian9.docker index 056e5389cc..a4509950e6 100644 --- a/tests/docker/dockerfiles/debian9.docker +++ b/tests/docker/dockerfiles/debian9.docker @@ -20,6 +20,7 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \ bison \ build-essential \ ca-certificates \ + clang \ flex \ git \ pkg-config \