github.com/sams1990/dockerrepo@v17.12.1-ce-rc2+incompatible/hack/make/.detect-daemon-osarch (about) 1 #!/usr/bin/env bash 2 set -e 3 4 docker-version-osarch() { 5 if ! type docker &>/dev/null; then 6 # docker is not installed 7 return 8 fi 9 local target="$1" # "Client" or "Server" 10 local fmtStr="{{.${target}.Os}}/{{.${target}.Arch}}" 11 if docker version -f "$fmtStr" 2>/dev/null; then 12 # if "docker version -f" works, let's just use that! 13 return 14 fi 15 docker version | awk ' 16 $1 ~ /^(Client|Server):$/ { section = 0 } 17 $1 == "'"$target"':" { section = 1; next } 18 section && $1 == "OS/Arch:" { print $2 } 19 20 # old versions of Docker 21 $1 == "OS/Arch" && $2 == "('"${target,,}"'):" { print $3 } 22 ' 23 } 24 25 # Retrieve OS/ARCH of docker daemon, e.g. linux/amd64 26 export DOCKER_ENGINE_OSARCH="${DOCKER_ENGINE_OSARCH:=$(docker-version-osarch 'Server')}" 27 export DOCKER_ENGINE_GOOS="${DOCKER_ENGINE_OSARCH%/*}" 28 export DOCKER_ENGINE_GOARCH="${DOCKER_ENGINE_OSARCH##*/}" 29 DOCKER_ENGINE_GOARCH=${DOCKER_ENGINE_GOARCH:=amd64} 30 31 # and the client, just in case 32 export DOCKER_CLIENT_OSARCH="$(docker-version-osarch 'Client')" 33 export DOCKER_CLIENT_GOOS="${DOCKER_CLIENT_OSARCH%/*}" 34 export DOCKER_CLIENT_GOARCH="${DOCKER_CLIENT_OSARCH##*/}" 35 DOCKER_CLIENT_GOARCH=${DOCKER_CLIENT_GOARCH:=amd64} 36 37 # Retrieve the architecture used in contrib/builder/(deb|rpm)/$PACKAGE_ARCH/ 38 PACKAGE_ARCH='amd64' 39 case "${DOCKER_ENGINE_GOARCH:-$DOCKER_CLIENT_GOARCH}" in 40 arm) 41 PACKAGE_ARCH='armhf' 42 ;; 43 arm64) 44 PACKAGE_ARCH='aarch64' 45 ;; 46 amd64|ppc64le|s390x) 47 PACKAGE_ARCH="${DOCKER_ENGINE_GOARCH:-$DOCKER_CLIENT_GOARCH}" 48 ;; 49 *) 50 echo >&2 "warning: not sure how to convert '$DOCKER_ENGINE_GOARCH' to a 'Docker' arch, assuming '$PACKAGE_ARCH'" 51 ;; 52 esac 53 export PACKAGE_ARCH 54 55 DOCKERFILE='Dockerfile' 56 TEST_IMAGE_NAMESPACE= 57 case "$PACKAGE_ARCH" in 58 amd64) 59 case "${DOCKER_ENGINE_GOOS:-$DOCKER_CLIENT_GOOS}" in 60 windows) 61 DOCKERFILE='Dockerfile.windows' 62 ;; 63 esac 64 ;; 65 *) 66 DOCKERFILE="Dockerfile.$PACKAGE_ARCH" 67 TEST_IMAGE_NAMESPACE="$PACKAGE_ARCH" 68 ;; 69 esac 70 export DOCKERFILE TEST_IMAGE_NAMESPACE