| #!/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, e.g. linux/amd64 |
| 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-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_GOARCH:-$DOCKER_CLIENT_GOARCH}" in |
| arm) |
| PACKAGE_ARCH='armhf' |
| ;; |
| arm64) |
| PACKAGE_ARCH='aarch64' |
| ;; |
| 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' |
| ;; |
| solaris) |
| DOCKERFILE='Dockerfile.solaris' |
| ;; |
| esac |
| ;; |
| *) |
| DOCKERFILE="Dockerfile.$PACKAGE_ARCH" |
| TEST_IMAGE_NAMESPACE="$PACKAGE_ARCH" |
| ;; |
| esac |
| export DOCKERFILE TEST_IMAGE_NAMESPACE |