12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/usr/bin/env bash
- set -e
- docker-version-osarch() {
- if ! type docker &>/dev/null; then
- # docker is not installed
- return
- fi
- 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_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
|