diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2017-07-21 11:44:53 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2017-07-21 11:44:53 +0100 |
commit | 14e167530adfc33f083299fb9f33499d18f3e729 (patch) | |
tree | 60efad3d50ff9eecf8ff36428aa99ca67410a4c7 /tests | |
parent | 710259565bd4bd2beba6731d430ab3b701c0f96a (diff) | |
parent | 118d1becc0e6332145bb9d6aee8ed232eed770e8 (diff) |
Merge remote-tracking branch 'remotes/stsquad/tags/pull-ci-updates-for-softfreeze-180717-2' into staging
Final CI updates for soft-freeze
Tweaks from Paolo for J=x Travis compiles
Bunch of updated cross-compile targets from Philippe
Additional debug tools in travis image from Me
# gpg: Signature made Tue 18 Jul 2017 11:00:26 BST
# gpg: using RSA key 0xFBD0DB095A9E2A44
# gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>"
# Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44
* remotes/stsquad/tags/pull-ci-updates-for-softfreeze-180717-2: (32 commits)
docker: install clang since Shippable setup_ve() verify it is available
docker: warn users to use newer debian8/debian9 base image
docker: add debian Ports base image
shippable: add win32/64 targets
docker: add MXE (M cross environment) base image for MinGW-w64
shippable: add mips64el targets
docker: add debian/mips64el image
shippable: use debian/mips[eb] targets
docker: add debian/mips[eb] images
shippable: add powerpc target
docker: add debian/powerpc based on Jessie
docker: add 'apt-fake' script which generate fake debian packages
docker: add qemu:debian-jessie based on outdated jessie release
shippable: add x86_64 targets
shippable: add ppc64el targets
shippable: add armel targets
docker: enable nettle to extend code coverage on arm64
docker: enable gcrypt to extend code coverage on amd64
docker: enable netmap to extend code coverage on amd64
docker: enable virgl to extend code coverage on amd64
...
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'tests')
21 files changed, 470 insertions, 55 deletions
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include index 012a2fc1af..aaab1a4208 100644 --- a/tests/docker/Makefile.include +++ b/tests/docker/Makefile.include @@ -55,10 +55,22 @@ 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-armhf-cross: docker-image-debian -docker-image-debian-arm64-cross: docker-image-debian -docker-image-debian-mipsel-cross: docker-image-debian +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 +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 +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-amd64.docker b/tests/docker/dockerfiles/debian-amd64.docker new file mode 100644 index 0000000000..eb13f06ed1 --- /dev/null +++ b/tests/docker/dockerfiles/debian-amd64.docker @@ -0,0 +1,39 @@ +# +# Docker x86_64 target +# +# 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é <f4bug@amsat.org> + +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 + +# 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 + +# 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 + +# gcrypt +ENV QEMU_CONFIGURE_OPTS $QEMU_CONFIGURE_OPTS --enable-gcrypt 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é <f4bug@amsat.org> +# +# 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 diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker index 45b891d57a..877d863475 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 @@ -19,11 +19,11 @@ 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 + +# nettle +ENV QEMU_CONFIGURE_OPTS $QEMU_CONFIGURE_OPTS --enable-nettle 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é <f4bug@amsat.org> + +# 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 diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker index e67dfdccc5..5100b0afc0 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 @@ -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-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é <f4bug@amsat.org> + +# 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-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é <f4bug@amsat.org> + +# 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 diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker b/tests/docker/dockerfiles/debian-mipsel-cross.docker index 2156bdb28d..6378bd41e7 100644 --- a/tests/docker/dockerfiles/debian-mipsel-cross.docker +++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker @@ -1,9 +1,10 @@ # # 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é <f4bug@amsat.org> # Add the foreign architecture we want and install dependencies @@ -11,19 +12,18 @@ 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 \ - 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-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é <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-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) 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é <f4bug@amsat.org> + +# 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 + +# <kludge> 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 +# </kludge> + +# 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 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 diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker index cfc354ce5d..e188bfeda4 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -1,32 +1,29 @@ # # 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 \ liblzo2-dev:s390x \ - libncursesw5-dev:s390x \ - libnfs-dev:s390x \ librdmacm-dev:s390x \ libsnappy-dev:s390x 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é <f4bug@amsat.org> + +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é <f4bug@amsat.org> + +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/debian.docker b/tests/docker/dockerfiles/debian.docker index 10953b2425..fd32e71b79 100644 --- a/tests/docker/dockerfiles/debian.docker +++ b/tests/docker/dockerfiles/debian.docker @@ -1,20 +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. # -# 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:stable-slim +FROM qemu:debian9 -# Duplicate deb line as deb-src -RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list +MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org> -# Install common build utilities -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 +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 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é <f4bug@amsat.org> + +# 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/ 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é <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-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 - diff --git a/tests/docker/dockerfiles/debian9.docker b/tests/docker/dockerfiles/debian9.docker new file mode 100644 index 0000000000..a4509950e6 --- /dev/null +++ b/tests/docker/dockerfiles/debian9.docker @@ -0,0 +1,30 @@ +# +# Docker multiarch cross-compiler target +# +# This docker target is builds on Debian cross compiler targets to build distro +# with a selection of cross compilers for building test binaries. +# +# On its own you can't build much but the docker-foo-cross targets +# build on top of the base debian image. +# +FROM debian:stretch-slim + +# Duplicate deb line as deb-src +RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list + +# Install common build utilities +RUN apt update +RUN DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ + apt install -y --no-install-recommends \ + bison \ + build-essential \ + ca-certificates \ + clang \ + flex \ + 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/travis.docker b/tests/docker/dockerfiles/travis.docker index e4983ae2d3..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 dh-autoreconf +RUN apt-get -y install python2.7 python-yaml dh-autoreconf gdb strace lsof net-tools ENV FEATURES pyyaml 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 <travis-file>\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"]) |