From e93132e273f38b7adacc824754e2faa738fb6bda Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Dalleau?= <frederic.dalleau@docker.com>
Date: Mon, 14 Jun 2021 11:06:42 +0200
Subject: [PATCH] Add s390x to cross platforms target
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Update build script and buid environment for supporting s390x
Signed-off-by: Frédéric Dalleau <frederic.dalleau@docker.com>
---
 Dockerfile        | 7 +++++--
 hack/make/.binary | 5 ++++-
 hack/make/cross   | 2 +-
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index a595eaecd6..c86f65968b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -98,13 +98,15 @@ RUN dpkg --add-architecture arm64
 RUN dpkg --add-architecture armel
 RUN dpkg --add-architecture armhf
 RUN dpkg --add-architecture ppc64el
+RUN dpkg --add-architecture s390x
 RUN --mount=type=cache,sharing=locked,id=moby-cross-true-aptlib,target=/var/lib/apt \
     --mount=type=cache,sharing=locked,id=moby-cross-true-aptcache,target=/var/cache/apt \
         apt-get update && apt-get install -y --no-install-recommends \
             crossbuild-essential-arm64 \
             crossbuild-essential-armel \
             crossbuild-essential-armhf \
-            crossbuild-essential-ppc64el
+            crossbuild-essential-ppc64el \
+            crossbuild-essential-s390x
 
 FROM cross-${CROSS} as dev-base
 
@@ -135,7 +137,8 @@ RUN --mount=type=cache,sharing=locked,id=moby-cross-true-aptlib,target=/var/lib/
             libapparmor-dev:arm64 \
             libapparmor-dev:armel \
             libapparmor-dev:armhf \
-            libapparmor-dev:ppc64el
+            libapparmor-dev:ppc64el \
+            libapparmor-dev:s390x
 
 FROM runtime-dev-cross-${CROSS} AS runtime-dev
 
diff --git a/hack/make/.binary b/hack/make/.binary
index 4ca92cc01b..371af7536b 100644
--- a/hack/make/.binary
+++ b/hack/make/.binary
@@ -69,7 +69,10 @@ hash_files() {
 				export CC="${CC:-powerpc64le-linux-gnu-gcc}"
 				export CGO_ENABLED=1
 				;;
-
+			linux/s390x)
+				export CC="${CC:-s390x-linux-gnu-gcc}"
+				export CGO_ENABLED=1
+				;;
 		esac
 	fi
 
diff --git a/hack/make/cross b/hack/make/cross
index f4af3ae94b..a20148b1fb 100644
--- a/hack/make/cross
+++ b/hack/make/cross
@@ -12,7 +12,7 @@ if [ -x "${DEST}/../binary-daemon/dockerd-${VERSION}" ]; then
 	echo "Created symlinks:" "${DEST}/linux/${arch}/"*
 fi
 
-DOCKER_CROSSPLATFORMS=${DOCKER_CROSSPLATFORMS:-"linux/amd64 windows/amd64 linux/ppc64le"}
+DOCKER_CROSSPLATFORMS=${DOCKER_CROSSPLATFORMS:-"linux/amd64 windows/amd64 linux/ppc64le linux/s390x"}
 
 for platform in ${DOCKER_CROSSPLATFORMS}; do
 	(