|
@@ -1,34 +1,66 @@
|
|
|
#!/bin/bash
|
|
|
set -e
|
|
|
|
|
|
+docker-version-osarch() {
|
|
|
+ local target="$1" # "Client" or "Server"
|
|
|
+ local fmtStr="{{.${target}.Os}}/{{.${target}.Arch}}"
|
|
|
+ if docker version -f "$fmtStr" 2>/dev/null; then
|
|
|
+ # if "docker version -f" works, let's just use that!
|
|
|
+ return
|
|
|
+ fi
|
|
|
+ docker version | awk '
|
|
|
+ $1 ~ /^(Client|Server):$/ { section = 0 }
|
|
|
+ $1 == "'"$target"':" { section = 1; next }
|
|
|
+ section && $1 == "OS/Arch:" { print $2 }
|
|
|
+
|
|
|
+ # old versions of Docker
|
|
|
+ $1 == "OS/Arch" && $2 == "('"${target,,}"'):" { print $3 }
|
|
|
+ '
|
|
|
+}
|
|
|
+
|
|
|
# Retrieve OS/ARCH of docker daemon, eg. linux/amd64
|
|
|
-export DOCKER_ENGINE_OSARCH="$(docker version | awk '
|
|
|
- $1 == "Client:" { server = 0; next }
|
|
|
- $1 == "Server:" { server = 1; next }
|
|
|
- server && $1 == "OS/Arch:" { print $2 }
|
|
|
-')"
|
|
|
+export DOCKER_ENGINE_OSARCH="$(docker-version-osarch 'Server')"
|
|
|
export DOCKER_ENGINE_GOOS="${DOCKER_ENGINE_OSARCH%/*}"
|
|
|
export DOCKER_ENGINE_GOARCH="${DOCKER_ENGINE_OSARCH##*/}"
|
|
|
DOCKER_ENGINE_GOARCH=${DOCKER_ENGINE_GOARCH:=amd64}
|
|
|
|
|
|
# and the client, just in case
|
|
|
-export DOCKER_CLIENT_OSARCH="$(docker version | awk '
|
|
|
- $1 == "Client:" { client = 1; next }
|
|
|
- $1 == "Server:" { client = 0; next }
|
|
|
- client && $1 == "OS/Arch:" { print $2 }
|
|
|
-')"
|
|
|
+export DOCKER_CLIENT_OSARCH="$(docker-version-osarch 'Client')"
|
|
|
+export DOCKER_CLIENT_GOOS="${DOCKER_CLIENT_OSARCH%/*}"
|
|
|
+export DOCKER_CLIENT_GOARCH="${DOCKER_CLIENT_OSARCH##*/}"
|
|
|
+DOCKER_CLIENT_GOARCH=${DOCKER_CLIENT_GOARCH:=amd64}
|
|
|
|
|
|
# Retrieve the architecture used in contrib/builder/(deb|rpm)/$PACKAGE_ARCH/
|
|
|
-PACKAGE_ARCH="amd64"
|
|
|
-case "$DOCKER_ENGINE_OSARCH" in
|
|
|
- linux/arm)
|
|
|
+PACKAGE_ARCH='amd64'
|
|
|
+case "${DOCKER_ENGINE_GOARCH:-$DOCKER_CLIENT_GOARCH}" in
|
|
|
+ arm)
|
|
|
PACKAGE_ARCH='armhf'
|
|
|
;;
|
|
|
- linux/ppc64le)
|
|
|
- PACKAGE_ARCH='ppc64le'
|
|
|
+ arm64)
|
|
|
+ PACKAGE_ARCH='aarch64'
|
|
|
;;
|
|
|
- linux/s390x)
|
|
|
- PACKAGE_ARCH='s390x'
|
|
|
+ amd64|ppc64le|s390x)
|
|
|
+ PACKAGE_ARCH="${DOCKER_ENGINE_GOARCH:-$DOCKER_CLIENT_GOARCH}"
|
|
|
+ ;;
|
|
|
+ *)
|
|
|
+ echo >&2 "warning: not sure how to convert '$DOCKER_ENGINE_GOARCH' to a 'Docker' arch, assuming '$PACKAGE_ARCH'"
|
|
|
;;
|
|
|
esac
|
|
|
export PACKAGE_ARCH
|
|
|
+
|
|
|
+DOCKERFILE='Dockerfile'
|
|
|
+TEST_IMAGE_NAMESPACE=
|
|
|
+case "$PACKAGE_ARCH" in
|
|
|
+ amd64)
|
|
|
+ case "${DOCKER_ENGINE_GOOS:-$DOCKER_CLIENT_GOOS}" in
|
|
|
+ windows)
|
|
|
+ DOCKERFILE='Dockerfile.windows'
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
+ ;;
|
|
|
+ *)
|
|
|
+ DOCKERFILE="Dockerfile.$PACKAGE_ARCH"
|
|
|
+ TEST_IMAGE_NAMESPACE="$PACKAGE_ARCH"
|
|
|
+ ;;
|
|
|
+esac
|
|
|
+export DOCKERFILE TEST_IMAGE_NAMESPACE
|