diff mbox series

[v3,25/30] tests/docker: add a linux-user testing focused image

Message ID 20200626181357.26211-26-alex.bennee@linaro.org
State Superseded
Headers show
Series testing/next (gitlab, vm, docker) | expand

Commit Message

Alex Bennée June 26, 2020, 6:13 p.m. UTC
We happily use all the cross images for both cross-building QEMU as
well as building the linux-user tests. However calling docker from
within docker seems not to work. As we can build in Debian anyway why
not include an image that has all the compilers available for
non-docker invocation.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

---
 .gitlab-ci.d/containers.yml                   |  7 +++
 tests/docker/Makefile.include                 |  1 +
 .../dockerfiles/debian-all-test-cross.docker  | 53 +++++++++++++++++++
 3 files changed, 61 insertions(+)
 create mode 100644 tests/docker/dockerfiles/debian-all-test-cross.docker

-- 
2.20.1

Comments

Philippe Mathieu-Daudé June 29, 2020, 10:18 a.m. UTC | #1
On 6/26/20 8:13 PM, Alex Bennée wrote:
> We happily use all the cross images for both cross-building QEMU as

> well as building the linux-user tests. However calling docker from

> within docker seems not to work. As we can build in Debian anyway why

> not include an image that has all the compilers available for

> non-docker invocation.

> 

> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>


Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>


> ---

>  .gitlab-ci.d/containers.yml                   |  7 +++

>  tests/docker/Makefile.include                 |  1 +

>  .../dockerfiles/debian-all-test-cross.docker  | 53 +++++++++++++++++++

>  3 files changed, 61 insertions(+)

>  create mode 100644 tests/docker/dockerfiles/debian-all-test-cross.docker

> 

> diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml

> index ba9c24e98f1..20b2fb1de5d 100644

> --- a/.gitlab-ci.d/containers.yml

> +++ b/.gitlab-ci.d/containers.yml

> @@ -66,6 +66,13 @@ amd64-debian-cross-container:

>    variables:

>      NAME: debian-amd64-cross

>  

> +amd64-debian-user-cross-container:

> +  <<: *container_job_definition

> +  stage: containers-layer2

> +  needs: ['amd64-debian10-container']

> +  variables:

> +    NAME: debian-all-test-cross

> +

>  amd64-debian-container:

>    <<: *container_job_definition

>    stage: containers-layer2

> diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include

> index 8139e8467d4..079ceb6ff33 100644

> --- a/tests/docker/Makefile.include

> +++ b/tests/docker/Makefile.include

> @@ -133,6 +133,7 @@ docker-image-travis: NOUSER=1

>  

>  # Specialist build images, sometimes very limited tools

>  docker-image-debian-tricore-cross: docker-image-debian9

> +docker-image-debian-all-test-cross: docker-image-debian10

>  docker-image-debian-arm64-test-cross: docker-image-debian11

>  

>  # These images may be good enough for building tests but not for test builds

> diff --git a/tests/docker/dockerfiles/debian-all-test-cross.docker b/tests/docker/dockerfiles/debian-all-test-cross.docker

> new file mode 100644

> index 00000000000..dedcea58b46

> --- /dev/null

> +++ b/tests/docker/dockerfiles/debian-all-test-cross.docker

> @@ -0,0 +1,53 @@

> +#

> +# Docker all cross-compiler target (tests only)

> +#

> +# While the normal cross builds take care to setup proper multiarch

> +# build environments which can cross build QEMU this just installs the

> +# basic compilers for as many targets as possible. We shall use this

> +# to build and run linux-user tests on GitLab

> +#

> +FROM qemu/debian10

> +

> +# What we need to build QEMU itself

> +RUN apt update && \

> +    DEBIAN_FRONTEND=noninteractive eatmydata \

> +    apt build-dep -yy qemu

> +

> +# Add the foreign architecture we want and install dependencies

> +RUN DEBIAN_FRONTEND=noninteractive eatmydata \

> +        apt install -y --no-install-recommends \

> +        gcc-aarch64-linux-gnu \

> +        libc6-dev-arm64-cross \

> +        gcc-alpha-linux-gnu \

> +        libc6.1-dev-alpha-cross \

> +        gcc-arm-linux-gnueabihf \

> +        libc6-dev-armhf-cross \

> +        gcc-hppa-linux-gnu \

> +        libc6-dev-hppa-cross \

> +        gcc-m68k-linux-gnu \

> +        libc6-dev-m68k-cross \

> +        gcc-mips-linux-gnu \

> +        libc6-dev-mips-cross \

> +        gcc-mips64-linux-gnuabi64 \

> +        libc6-dev-mips64-cross \

> +        gcc-mips64el-linux-gnuabi64 \

> +        libc6-dev-mips64el-cross \

> +        gcc-mipsel-linux-gnu \

> +        libc6-dev-mipsel-cross \

> +        gcc-powerpc-linux-gnu \

> +        libc6-dev-powerpc-cross \

> +        gcc-powerpc64-linux-gnu \

> +        libc6-dev-ppc64-cross \

> +        gcc-powerpc64le-linux-gnu \

> +        libc6-dev-ppc64el-cross \

> +        gcc-riscv64-linux-gnu \

> +        libc6-dev-riscv64-cross \

> +        gcc-s390x-linux-gnu \

> +        libc6-dev-s390x-cross \

> +        gcc-sh4-linux-gnu \

> +        libc6-dev-sh4-cross \

> +        gcc-sparc64-linux-gnu \

> +        libc6-dev-sparc64-cross

> +

> +ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools

> +ENV DEF_TARGET_LIST aarch64-linux-user,alpha-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sh4-linux-user,sparc64-linux-user

>
diff mbox series

Patch

diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml
index ba9c24e98f1..20b2fb1de5d 100644
--- a/.gitlab-ci.d/containers.yml
+++ b/.gitlab-ci.d/containers.yml
@@ -66,6 +66,13 @@  amd64-debian-cross-container:
   variables:
     NAME: debian-amd64-cross
 
+amd64-debian-user-cross-container:
+  <<: *container_job_definition
+  stage: containers-layer2
+  needs: ['amd64-debian10-container']
+  variables:
+    NAME: debian-all-test-cross
+
 amd64-debian-container:
   <<: *container_job_definition
   stage: containers-layer2
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 8139e8467d4..079ceb6ff33 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -133,6 +133,7 @@  docker-image-travis: NOUSER=1
 
 # Specialist build images, sometimes very limited tools
 docker-image-debian-tricore-cross: docker-image-debian9
+docker-image-debian-all-test-cross: docker-image-debian10
 docker-image-debian-arm64-test-cross: docker-image-debian11
 
 # These images may be good enough for building tests but not for test builds
diff --git a/tests/docker/dockerfiles/debian-all-test-cross.docker b/tests/docker/dockerfiles/debian-all-test-cross.docker
new file mode 100644
index 00000000000..dedcea58b46
--- /dev/null
+++ b/tests/docker/dockerfiles/debian-all-test-cross.docker
@@ -0,0 +1,53 @@ 
+#
+# Docker all cross-compiler target (tests only)
+#
+# While the normal cross builds take care to setup proper multiarch
+# build environments which can cross build QEMU this just installs the
+# basic compilers for as many targets as possible. We shall use this
+# to build and run linux-user tests on GitLab
+#
+FROM qemu/debian10
+
+# What we need to build QEMU itself
+RUN apt update && \
+    DEBIAN_FRONTEND=noninteractive eatmydata \
+    apt build-dep -yy qemu
+
+# Add the foreign architecture we want and install dependencies
+RUN DEBIAN_FRONTEND=noninteractive eatmydata \
+        apt install -y --no-install-recommends \
+        gcc-aarch64-linux-gnu \
+        libc6-dev-arm64-cross \
+        gcc-alpha-linux-gnu \
+        libc6.1-dev-alpha-cross \
+        gcc-arm-linux-gnueabihf \
+        libc6-dev-armhf-cross \
+        gcc-hppa-linux-gnu \
+        libc6-dev-hppa-cross \
+        gcc-m68k-linux-gnu \
+        libc6-dev-m68k-cross \
+        gcc-mips-linux-gnu \
+        libc6-dev-mips-cross \
+        gcc-mips64-linux-gnuabi64 \
+        libc6-dev-mips64-cross \
+        gcc-mips64el-linux-gnuabi64 \
+        libc6-dev-mips64el-cross \
+        gcc-mipsel-linux-gnu \
+        libc6-dev-mipsel-cross \
+        gcc-powerpc-linux-gnu \
+        libc6-dev-powerpc-cross \
+        gcc-powerpc64-linux-gnu \
+        libc6-dev-ppc64-cross \
+        gcc-powerpc64le-linux-gnu \
+        libc6-dev-ppc64el-cross \
+        gcc-riscv64-linux-gnu \
+        libc6-dev-riscv64-cross \
+        gcc-s390x-linux-gnu \
+        libc6-dev-s390x-cross \
+        gcc-sh4-linux-gnu \
+        libc6-dev-sh4-cross \
+        gcc-sparc64-linux-gnu \
+        libc6-dev-sparc64-cross
+
+ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools
+ENV DEF_TARGET_LIST aarch64-linux-user,alpha-linux-user,arm-linux-user,hppa-linux-user,i386-linux-user,m68k-linux-user,mips-linux-user,mips64-linux-user,mips64el-linux-user,mipsel-linux-user,ppc-linux-user,ppc64-linux-user,ppc64le-linux-user,riscv64-linux-user,s390x-linux-user,sh4-linux-user,sparc64-linux-user