mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
a667cd88c3
Instead of being split between three files, let's let `hack/make/.detect-daemon-osarch` be our single source of truth for multiarch detection/vars. Not only does it make it slightly easier to make sure we change everything properly when these bits have to change, but it also makes it so that all bits of `hack/make.sh` (especially `hack/make/.ensure-frozen-images`) work properly outside the context of the `Makefile` on all platforms. Signed-off-by: Andrew "Tianon" Page <admwiggin@gmail.com>
63 lines
1.7 KiB
Bash
63 lines
1.7 KiB
Bash
#!/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 }
|
|
'
|
|
}
|
|
|
|
# Retrieve OS/ARCH of docker daemon, eg. 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'
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
DOCKERFILE="Dockerfile.$PACKAGE_ARCH"
|
|
TEST_IMAGE_NAMESPACE="$PACKAGE_ARCH"
|
|
;;
|
|
esac
|
|
export DOCKERFILE TEST_IMAGE_NAMESPACE
|