diff options
Diffstat (limited to 'tests/docker')
29 files changed, 155 insertions, 121 deletions
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index cf535cbd19..50a400b573 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -6,7 +6,8 @@ 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 debian8-mxe debian-ports debian-sid debian-bootstrap +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_TARGETS := $(patsubst %,docker-image-%,$(DOCKER_IMAGES)) # Use a global constant ccache directory to speed up repetitive builds @@ -71,7 +72,8 @@ docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker $(if $(wildcard $(EXECUTABLE)), \ $(call quiet-command, \ DEB_ARCH=$(DEB_ARCH) \ - DEB_TYPE=$(DEB_TYPE) \ + DEB_TYPE=$(DEB_TYPE) \ + $(if $(DEB_URL),DEB_URL=$(DEB_URL),) \ $(DOCKER_SCRIPT) build qemu:debian-$* $< \ $(if $V,,--quiet) $(if $(NOCACHE),--no-cache) \ $(if $(NOUSER),,--add-current-user) \ @@ -86,13 +88,16 @@ docker-binfmt-image-debian-%: $(DOCKER_FILES_DIR)/debian-bootstrap.docker endif # Enforce dependencies for composite images -docker-image-debian: docker-image-debian9 docker-image-debian9-mxe: docker-image-debian9 +ifeq ($(ARCH),x86_64) docker-image-debian-amd64: docker-image-debian9 +DOCKER_PARTIAL_IMAGES += debian-amd64-cross +else +docker-image-debian-amd64-cross: docker-image-debian10 +DOCKER_PARTIAL_IMAGES += debian-amd64 +endif 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-buster-arm64-cross: docker-image-debian10 docker-image-debian-mips-cross: docker-image-debian9 docker-image-debian-mipsel-cross: docker-image-debian9 docker-image-debian-mips64el-cross: docker-image-debian9 @@ -101,25 +106,41 @@ docker-image-debian-s390x-cross: docker-image-debian9 docker-image-debian-win32-cross: docker-image-debian9-mxe docker-image-debian-win64-cross: docker-image-debian9-mxe -docker-image-debian-alpha-cross: docker-image-debian-sid -docker-image-debian-hppa-cross: docker-image-debian-sid -docker-image-debian-m68k-cross: docker-image-debian-sid -docker-image-debian-sh4-cross: docker-image-debian-sid -docker-image-debian-sparc64-cross: docker-image-debian-sid -docker-image-debian-mips64-cross: docker-image-debian-sid -docker-image-debian-riscv64-cross: docker-image-debian-sid -docker-image-debian-powerpc-cross: docker-image-debian-sid -docker-image-debian-ppc64-cross: docker-image-debian-sid +# For non-x86 hosts not all cross-compilers have been packaged +ifneq ($(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 +DOCKER_PARTIAL_IMAGES += debian-win32-cross debian-win64-cross +DOCKER_PARTIAL_IMAGES += fedora travis +endif + +docker-image-debian-alpha-cross: docker-image-debian10 +docker-image-debian-arm64-cross: docker-image-debian10 +docker-image-debian-hppa-cross: docker-image-debian10 +docker-image-debian-m68k-cross: docker-image-debian10 +docker-image-debian-mips64-cross: docker-image-debian10 +docker-image-debian-powerpc-cross: docker-image-debian10 +docker-image-debian-ppc64-cross: docker-image-debian10 +docker-image-debian-riscv64-cross: docker-image-debian10 +docker-image-debian-sh4-cross: docker-image-debian10 +docker-image-debian-sparc64-cross: docker-image-debian10 + docker-image-travis: NOUSER=1 # Specialist build images, sometimes very limited tools docker-image-tricore-cross: docker-image-debian9 # These images may be good enough for building tests but not for test builds -DOCKER_PARTIAL_IMAGES += debian-alpha-cross debian-hppa-cross debian-m68k-cross debian-sh4-cross -DOCKER_PARTIAL_IMAGES += debian-sparc64-cross debian-mips64-cross debian-riscv64-cross -DOCKER_PARTIAL_IMAGES += debian-tricore-cross debian-powerpc-cross fedora-i386-cross -DOCKER_PARTIAL_IMAGES += fedora-cris-cross +DOCKER_PARTIAL_IMAGES += debian-alpha-cross +DOCKER_PARTIAL_IMAGES += debian-hppa-cross +DOCKER_PARTIAL_IMAGES += debian-m68k-cross debian-mips64-cross +DOCKER_PARTIAL_IMAGES += debian-powerpc-cross debian-ppc64-cross +DOCKER_PARTIAL_IMAGES += debian-riscv64-cross +DOCKER_PARTIAL_IMAGES += debian-sh4-cross debian-sparc64-cross +DOCKER_PARTIAL_IMAGES += debian-tricore-cross +DOCKER_PARTIAL_IMAGES += debian-xtensa-cross +DOCKER_PARTIAL_IMAGES += fedora-i386-cross fedora-cris-cross # Rules for building linux-user powered images # @@ -131,6 +152,7 @@ DOCKER_PARTIAL_IMAGES += fedora-cris-cross # 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 diff --git a/tests/docker/common.rc b/tests/docker/common.rc index 4011561587..512202b0a1 100755 --- a/tests/docker/common.rc +++ b/tests/docker/common.rc @@ -11,6 +11,10 @@ # or (at your option) any later version. See the COPYING file in # the top-level directory. +# This might be set by ENV of a docker container... it is always +# overriden by TARGET_LIST if the user sets it. +DEF_TARGET_LIST=${DEF_TARGET_LIST:-"x86_64-softmmu,aarch64-softmmu"} + requires() { for c in $@; do diff --git a/tests/docker/docker.py b/tests/docker/docker.py index 4bba29e104..29613afd48 100755 --- a/tests/docker/docker.py +++ b/tests/docker/docker.py @@ -111,7 +111,7 @@ def _get_so_libs(executable): libs = [] ldd_re = re.compile(r"(/.*/)(\S*)") try: - ldd_output = subprocess.check_output(["ldd", executable]) + ldd_output = subprocess.check_output(["ldd", executable]).decode('utf-8') for line in ldd_output.split("\n"): search = ldd_re.search(line) if search and len(search.groups()) == 2: @@ -258,10 +258,16 @@ class Docker(object): return self._do_kill_instances(True) def _output(self, cmd, **kwargs): - return subprocess.check_output(self._command + cmd, - stderr=subprocess.STDOUT, - encoding='utf-8', - **kwargs) + if sys.version_info[1] >= 6: + return subprocess.check_output(self._command + cmd, + stderr=subprocess.STDOUT, + encoding='utf-8', + **kwargs) + else: + return subprocess.check_output(self._command + cmd, + stderr=subprocess.STDOUT, + **kwargs).decode('utf-8') + def inspect_tag(self, tag): try: @@ -318,10 +324,18 @@ class Docker(object): return False return checksum == _text_checksum(_dockerfile_preprocess(dockerfile)) - def run(self, cmd, keep, quiet): + def run(self, cmd, keep, quiet, as_user=False): label = uuid.uuid1().hex if not keep: self._instances.append(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') + ret = self._do_check(["run", "--label", "com.qemu.instance.uuid=" + label] + cmd, quiet=quiet) @@ -364,15 +378,8 @@ class RunCommand(SubCommand): help="Run container using the current user's uid") def run(self, args, argv): - if args.run_as_current_user: - uid = os.getuid() - argv = [ "-u", str(uid) ] + argv - docker = Docker() - if docker._command[0] == "podman": - argv = [ "--uidmap", "%d:0:1" % uid, - "--uidmap", "0:1:%d" % uid, - "--uidmap", "%d:%d:64536" % (uid + 1, uid + 1)] + argv - return Docker().run(argv, args.keep, quiet=args.quiet) + return Docker().run(argv, args.keep, quiet=args.quiet, + as_user=args.run_as_current_user) class BuildCommand(SubCommand): @@ -536,9 +543,9 @@ class ProbeCommand(SubCommand): try: docker = Docker() if docker._command[0] == "docker": - print("yes") + print("docker") elif docker._command[0] == "sudo": - print("sudo") + print("sudo docker") elif docker._command[0] == "podman": print("podman") except Exception: @@ -556,8 +563,6 @@ class CcCommand(SubCommand): help="The docker image in which to run cc") parser.add_argument("--cc", default="cc", help="The compiler executable to call") - parser.add_argument("--user", - help="The user-id to run under") parser.add_argument("--source-path", "-s", nargs="*", dest="paths", help="""Extra paths to (ro) mount into container for reading sources""") @@ -571,11 +576,10 @@ class CcCommand(SubCommand): if args.paths: for p in args.paths: cmd += ["-v", "%s:%s:ro,z" % (p, p)] - if args.user: - cmd += ["-u", args.user] cmd += [args.image, args.cc] cmd += argv - return Docker().command("run", cmd, args.quiet) + return Docker().run(cmd, False, quiet=args.quiet, + as_user=True) class CheckCommand(SubCommand): @@ -651,7 +655,8 @@ def main(): cmd.args(subp) subp.set_defaults(cmdobj=cmd) args, argv = parser.parse_known_args() - USE_ENGINE = args.engine + if args.engine: + USE_ENGINE = args.engine return args.cmdobj.run(args, argv) diff --git a/tests/docker/dockerfiles/debian-alpha-cross.docker b/tests/docker/dockerfiles/debian-alpha-cross.docker index 23444342f0..74bcabfdb1 100644 --- a/tests/docker/dockerfiles/debian-alpha-cross.docker +++ b/tests/docker/dockerfiles/debian-alpha-cross.docker @@ -1,13 +1,12 @@ # # Docker cross-compiler target # -# This docker target builds on the debian sid base image which -# contains cross compilers for Debian "ports" targets. +# This docker target builds on the debian Buster base image. # -FROM qemu:debian-sid +FROM qemu:debian10 RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ apt install -y --no-install-recommends \ gcc-alpha-linux-gnu \ - libc6.1-dev-alpha-cross || { echo "Failed to build - see debian-sid.docker notes"; exit 1; } + libc6.1-dev-alpha-cross diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker b/tests/docker/dockerfiles/debian-amd64-cross.docker new file mode 100644 index 0000000000..5d89041925 --- /dev/null +++ b/tests/docker/dockerfiles/debian-amd64-cross.docker @@ -0,0 +1,22 @@ +# +# Docker x86_64 cross target +# +# This docker target is used on non-x86_64 machines which need the +# x86_64 cross compilers installed. +# +FROM qemu:debian10 +MAINTAINER Alex Bennée <alex.bennee@linaro.org> + +# Add the foreign architecture we want and install dependencies +RUN dpkg --add-architecture amd64 +RUN apt update && \ + DEBIAN_FRONTEND=noninteractive eatmydata \ + apt install -y --no-install-recommends \ + crossbuild-essential-amd64 +RUN apt update && \ + DEBIAN_FRONTEND=noninteractive eatmydata \ + apt build-dep -yy -a amd64 --arch-only qemu + +# Specify the cross prefix for this image (see tests/docker/common.rc) +ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-linux-gnu- +ENV DEF_TARGET_LIST x86_64-softmmu,x86_64-linux-user,i386-softmmu,i386-linux-user diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker index 7c2cc93daf..09ca0a1ba7 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 debian Stretch base image. +# This docker target builds on the debian Buster base image. # -FROM qemu:debian9 +FROM qemu:debian10 # Add the foreign architecture we want and install dependencies RUN dpkg --add-architecture arm64 @@ -13,10 +13,11 @@ RUN apt update && \ crossbuild-essential-arm64 RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ - apt build-dep -yy -a arm64 qemu + apt build-dep -yy -a arm64 --arch-only qemu # Specify the cross prefix for this image (see tests/docker/common.rc) ENV QEMU_CONFIGURE_OPTS --cross-prefix=aarch64-linux-gnu- +ENV DEF_TARGET_LIST aarch64-softmmu,aarch64-linux-user RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ diff --git a/tests/docker/dockerfiles/debian-armel-cross.docker b/tests/docker/dockerfiles/debian-armel-cross.docker index d866fe5d75..15378f8ea2 100644 --- a/tests/docker/dockerfiles/debian-armel-cross.docker +++ b/tests/docker/dockerfiles/debian-armel-cross.docker @@ -11,10 +11,11 @@ RUN dpkg --add-architecture armel && \ apt update && \ apt install -yy crossbuild-essential-armel && \ DEBIAN_FRONTEND=noninteractive eatmydata \ - apt build-dep -yy -a armel qemu + apt build-dep -yy -a armel --arch-only qemu # Specify the cross prefix for this image (see tests/docker/common.rc) ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabi- +ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user,armeb-linux-user RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker index 2b8627673c..4a20af6fe1 100644 --- a/tests/docker/dockerfiles/debian-armhf-cross.docker +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker @@ -13,10 +13,11 @@ RUN apt update && \ crossbuild-essential-armhf RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ - apt build-dep -yy -a armhf qemu + apt build-dep -yy -a armhf --arch-only qemu # Specify the cross prefix for this image (see tests/docker/common.rc) ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabihf- +ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user,armeb-linux-user RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ diff --git a/tests/docker/dockerfiles/debian-buster-arm64-cross.docker b/tests/docker/dockerfiles/debian-buster-arm64-cross.docker deleted file mode 100644 index 52787edcc2..0000000000 --- a/tests/docker/dockerfiles/debian-buster-arm64-cross.docker +++ /dev/null @@ -1,16 +0,0 @@ -# -# Docker arm64 cross-compiler target -# -# This docker target builds on the Debian's Buster base image. There -# are no QEMU pre-requistes so this image can only be used to build -# test cases. -# -FROM qemu:debian10 - -# Add the foreign architecture we want and install dependencies -RUN dpkg --add-architecture arm64 -RUN apt update && \ - DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \ - DEBIAN_FRONTEND=noninteractive eatmydata \ - apt-get install -y --no-install-recommends \ - crossbuild-essential-arm64 diff --git a/tests/docker/dockerfiles/debian-hppa-cross.docker b/tests/docker/dockerfiles/debian-hppa-cross.docker index ee6d9a24ce..5c68b2d330 100644 --- a/tests/docker/dockerfiles/debian-hppa-cross.docker +++ b/tests/docker/dockerfiles/debian-hppa-cross.docker @@ -1,10 +1,9 @@ # # Docker cross-compiler target # -# This docker target builds on the debian sid base image which -# contains cross compilers for Debian "ports" targets. +# This docker target builds on the debian Buster base image. # -FROM qemu:debian-sid +FROM qemu:debian10 RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ diff --git a/tests/docker/dockerfiles/debian-m68k-cross.docker b/tests/docker/dockerfiles/debian-m68k-cross.docker index 4311c9cf86..25edc80e9a 100644 --- a/tests/docker/dockerfiles/debian-m68k-cross.docker +++ b/tests/docker/dockerfiles/debian-m68k-cross.docker @@ -1,10 +1,9 @@ # # Docker cross-compiler target # -# This docker target builds on the debian sid base image which -# contains cross compilers for Debian "ports" targets. +# This docker target builds on the debian Buster base image. # -FROM qemu:debian-sid +FROM qemu:debian10 RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ diff --git a/tests/docker/dockerfiles/debian-mips-cross.docker b/tests/docker/dockerfiles/debian-mips-cross.docker index 3c4d6f9ec1..08a8e1c29c 100644 --- a/tests/docker/dockerfiles/debian-mips-cross.docker +++ b/tests/docker/dockerfiles/debian-mips-cross.docker @@ -1,9 +1,9 @@ # # Docker mips cross-compiler target # -# This docker target builds on the debian Stretch base image. +# This docker target builds on the debian Buster base image. # -FROM qemu:debian9 +FROM qemu:debian10 MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org> @@ -16,10 +16,11 @@ RUN apt update && \ RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ - apt build-dep -yy -a mips qemu + apt build-dep -yy -a mips --arch-only qemu # Specify the cross prefix for this image (see tests/docker/common.rc) ENV QEMU_CONFIGURE_OPTS --cross-prefix=mips-linux-gnu- +ENV DEF_TARGET_LIST mips-softmmu,mipsel-linux-user # Install extra libraries to increase code coverage RUN apt update && \ diff --git a/tests/docker/dockerfiles/debian-mips64-cross.docker b/tests/docker/dockerfiles/debian-mips64-cross.docker index bf0073a466..1a79505d69 100644 --- a/tests/docker/dockerfiles/debian-mips64-cross.docker +++ b/tests/docker/dockerfiles/debian-mips64-cross.docker @@ -1,10 +1,9 @@ # # Docker cross-compiler target # -# This docker target builds on the debian sid base image which -# contains cross compilers for Debian "ports" targets. +# This docker target builds on the debian Buster base image. # -FROM qemu:debian-sid +FROM qemu:debian10 RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ diff --git a/tests/docker/dockerfiles/debian-mips64el-cross.docker b/tests/docker/dockerfiles/debian-mips64el-cross.docker index 34b0b82895..2fca112405 100644 --- a/tests/docker/dockerfiles/debian-mips64el-cross.docker +++ b/tests/docker/dockerfiles/debian-mips64el-cross.docker @@ -17,10 +17,11 @@ RUN dpkg --add-architecture mips64el && \ RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ - apt build-dep -yy -a mips64el qemu + apt build-dep -yy -a mips64el --arch-only qemu # Specify the cross prefix for this image (see tests/docker/common.rc) ENV QEMU_CONFIGURE_OPTS --cross-prefix=mips64el-linux-gnuabi64- +ENV DEF_TARGET_LIST mips64el-softmmu,mips64el-linux-user # Install extra libraries to increase code coverage RUN apt update && \ diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker b/tests/docker/dockerfiles/debian-mipsel-cross.docker index 88accad269..4abf7832ac 100644 --- a/tests/docker/dockerfiles/debian-mipsel-cross.docker +++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker @@ -16,7 +16,7 @@ RUN apt update && \ RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ - apt build-dep -yy -a mipsel qemu + apt build-dep -yy -a mipsel --arch-only qemu # Specify the cross prefix for this image (see tests/docker/common.rc) ENV QEMU_CONFIGURE_OPTS --cross-prefix=mipsel-linux-gnu- diff --git a/tests/docker/dockerfiles/debian-powerpc-cross.docker b/tests/docker/dockerfiles/debian-powerpc-cross.docker index 5d08fad7cd..89dd4fbf87 100644 --- a/tests/docker/dockerfiles/debian-powerpc-cross.docker +++ b/tests/docker/dockerfiles/debian-powerpc-cross.docker @@ -1,14 +1,12 @@ # # Docker powerpc cross-compiler target # -# This docker target builds on the debian sid base image which -# contains cross compilers for Debian "ports" targets. The original -# Jessie based no longer builds. +# This docker target builds on the debian Buster base image. # -FROM qemu:debian-sid +FROM qemu:debian10 RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ apt install -y --no-install-recommends \ gcc-powerpc-linux-gnu \ - libc6-dev-powerpc-cross || { echo "Failed to build - see debian-sid.docker notes"; exit 1; } + libc6-dev-powerpc-cross diff --git a/tests/docker/dockerfiles/debian-powerpc-user-cross.docker b/tests/docker/dockerfiles/debian-powerpc-user-cross.docker index 6938a845ee..83749b0abb 100644 --- a/tests/docker/dockerfiles/debian-powerpc-user-cross.docker +++ b/tests/docker/dockerfiles/debian-powerpc-user-cross.docker @@ -8,8 +8,14 @@ # 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 + 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-ppc64-cross.docker b/tests/docker/dockerfiles/debian-ppc64-cross.docker index e5757fe46e..4bf88ab02d 100644 --- a/tests/docker/dockerfiles/debian-ppc64-cross.docker +++ b/tests/docker/dockerfiles/debian-ppc64-cross.docker @@ -1,12 +1,11 @@ # # Docker ppc64 cross-compiler target # -# This docker target builds on the debian sid base image which -# contains cross compilers for Debian "ports" targets. -FROM qemu:debian-sid +# This docker target builds on the debian Buster base image. +FROM qemu:debian10 RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ apt install -y --no-install-recommends \ gcc-powerpc64-linux-gnu \ - libc6-dev-ppc64-cross || { echo "Failed to build - see debian-sid.docker notes"; exit 1; } + libc6-dev-ppc64-cross diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/docker/dockerfiles/debian-ppc64el-cross.docker index fc056d7bc3..9973df9ff7 100644 --- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker +++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker @@ -12,10 +12,11 @@ RUN dpkg --add-architecture ppc64el && \ RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ - apt build-dep -yy -a ppc64el qemu + apt build-dep -yy -a ppc64el --arch-only qemu # Specify the cross prefix for this image (see tests/docker/common.rc) ENV QEMU_CONFIGURE_OPTS --cross-prefix=powerpc64le-linux-gnu- +ENV DEF_TARGET_LIST ppc64-softmmu,ppc64-linux-user,ppc64abi32-linux-user # Install extra libraries to increase code coverage RUN apt update && \ diff --git a/tests/docker/dockerfiles/debian-riscv64-cross.docker b/tests/docker/dockerfiles/debian-riscv64-cross.docker index 221697f9d1..5e2d6ddb60 100644 --- a/tests/docker/dockerfiles/debian-riscv64-cross.docker +++ b/tests/docker/dockerfiles/debian-riscv64-cross.docker @@ -1,10 +1,9 @@ # # Docker cross-compiler target # -# This docker target builds on the debian sid base image which -# contains cross compilers for Debian "ports" targets. +# This docker target builds on the debian Buster base image. # -FROM qemu:debian-sid +FROM qemu:debian10 RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker index 6732f9ec78..eb73c98855 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -17,10 +17,11 @@ RUN apt update && \ RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ - apt build-dep -yy -a s390x qemu + apt build-dep -yy -a s390x --arch-only qemu # Specify the cross prefix for this image (see tests/docker/common.rc) ENV QEMU_CONFIGURE_OPTS --cross-prefix=s390x-linux-gnu- +ENV DEF_TARGET_LIST s390x-softmmu,s390x-linux-user # Install extra libraries to increase code coverage RUN apt update && \ diff --git a/tests/docker/dockerfiles/debian-sh4-cross.docker b/tests/docker/dockerfiles/debian-sh4-cross.docker index 29983b2d75..9d7663764e 100644 --- a/tests/docker/dockerfiles/debian-sh4-cross.docker +++ b/tests/docker/dockerfiles/debian-sh4-cross.docker @@ -1,10 +1,9 @@ # # Docker cross-compiler target # -# This docker target builds on the debian sid base image which -# contains cross compilers for Debian "ports" targets. +# This docker target builds on the debian Buster base image. # -FROM qemu:debian-sid +FROM qemu:debian10 RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ diff --git a/tests/docker/dockerfiles/debian-sid.docker b/tests/docker/dockerfiles/debian-sid.docker index 513459ca7f..2a1bcc33b2 100644 --- a/tests/docker/dockerfiles/debian-sid.docker +++ b/tests/docker/dockerfiles/debian-sid.docker @@ -1,25 +1,19 @@ # # Debian Sid Base # -# A number of our guests exist as ports only. We can either use the -# ports repo or get everything from Sid. However Sid is a rolling -# distro which may be broken at any particular time. If you are -# unlucky and try and build your images while gcc is in the process of -# being uploaded this can fail. Your only recourse is to try again in -# a few hours when the repos have re-synced. Once built however you -# won't be affected by repo changes unless the docker recipies are -# updated and trigger a re-build. +# 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-20181011-slim +FROM debian:sid-20190812-slim -# Use a snapshot known to work (see http://snapshot.debian.org/#Usage) -ENV DEBIAN_SNAPSHOT_DATE "20181030" -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 - -# Use a snapshot known to work (see http://snapshot.debian.org/#Usage) -ENV DEBIAN_SNAPSHOT_DATE "20181030" + # 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 diff --git a/tests/docker/dockerfiles/debian-sparc64-cross.docker b/tests/docker/dockerfiles/debian-sparc64-cross.docker index 7a2c2ab19c..31fd34f120 100644 --- a/tests/docker/dockerfiles/debian-sparc64-cross.docker +++ b/tests/docker/dockerfiles/debian-sparc64-cross.docker @@ -1,10 +1,9 @@ # # Docker cross-compiler target # -# This docker target builds on the debian sid base image which -# contains cross compilers for Debian "ports" targets. +# This docker target builds on the debian Buster base image. # -FROM qemu:debian-sid +FROM qemu:debian10 RUN apt update && \ DEBIAN_FRONTEND=noninteractive eatmydata \ diff --git a/tests/docker/dockerfiles/ubuntu1804.docker b/tests/docker/dockerfiles/ubuntu1804.docker index 44bbf0f77a..883f9bcf31 100644 --- a/tests/docker/dockerfiles/ubuntu1804.docker +++ b/tests/docker/dockerfiles/ubuntu1804.docker @@ -56,3 +56,6 @@ RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get -y install $PACKAGES RUN dpkg -l $PACKAGES | sort > /packages.txt ENV FEATURES clang pyyaml sdl2 + +# https://bugs.launchpad.net/qemu/+bug/1838763 +ENV QEMU_CONFIGURE_OPTS --disable-libssh diff --git a/tests/docker/run b/tests/docker/run index 1014871fec..8edc7026ee 100755 --- a/tests/docker/run +++ b/tests/docker/run @@ -62,7 +62,7 @@ echo "* Prepared to run command:" echo " $CMD" echo "* Hit Ctrl-D to continue, or type 'exit 1' to abort" echo -$SHELL --noprofile --norc +env bash --noprofile --norc if "$CMD"; then exit 0 @@ -72,7 +72,7 @@ elif test -n "$DEBUG"; then echo "* Hit Ctrl-D to exit" echo # Force error after shell exits - $SHELL --noprofile --norc && exit 1 + env bash --noprofile --norc && exit 1 else exit 1 fi diff --git a/tests/docker/test-build b/tests/docker/test-build index 22766cfacc..2b2a7832f1 100755 --- a/tests/docker/test-build +++ b/tests/docker/test-build @@ -15,7 +15,6 @@ cd "$BUILD_DIR" -DEF_TARGET_LIST="x86_64-softmmu,aarch64-softmmu" TARGET_LIST=${TARGET_LIST:-$DEF_TARGET_LIST} \ build_qemu install_qemu diff --git a/tests/docker/test-mingw b/tests/docker/test-mingw index fdb1c2c879..c30eb654eb 100755 --- a/tests/docker/test-mingw +++ b/tests/docker/test-mingw @@ -16,7 +16,6 @@ requires mingw dtc cd "$BUILD_DIR" -DEF_TARGET_LIST="x86_64-softmmu,aarch64-softmmu" for prefix in x86_64-w64-mingw32- i686-w64-mingw32-; do TARGET_LIST=${TARGET_LIST:-$DEF_TARGET_LIST} \ diff --git a/tests/docker/test-quick b/tests/docker/test-quick index eee59c55fb..feee44b247 100755 --- a/tests/docker/test-quick +++ b/tests/docker/test-quick @@ -15,7 +15,6 @@ cd "$BUILD_DIR" -DEF_TARGET_LIST="x86_64-softmmu,aarch64-softmmu" TARGET_LIST=${TARGET_LIST:-$DEF_TARGET_LIST} \ build_qemu check_qemu |