mirror of https://github.com/docker/cli.git
84 lines
2.5 KiB
Bash
Executable File
84 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
#
|
|
# Build a static binary for the host OS/ARCH
|
|
#
|
|
|
|
set -eu
|
|
|
|
: "${CGO_ENABLED=}"
|
|
: "${GO_LINKMODE=static}"
|
|
: "${GO_BUILDMODE=}"
|
|
: "${GO_BUILDTAGS=}"
|
|
: "${GO_STRIP=}"
|
|
|
|
. ./scripts/build/.variables
|
|
|
|
if [ -z "$CGO_ENABLED" ]; then
|
|
case "$(go env GOOS)" in
|
|
linux)
|
|
case "$(go env GOARCH)" in
|
|
amd64|arm64|arm|s390x)
|
|
CGO_ENABLED=1
|
|
;;
|
|
*)
|
|
CGO_ENABLED=0
|
|
;;
|
|
esac
|
|
;;
|
|
darwin|windows)
|
|
CGO_ENABLED=1
|
|
;;
|
|
*)
|
|
CGO_ENABLED=0
|
|
;;
|
|
esac
|
|
fi
|
|
export CGO_ENABLED
|
|
if [ "$CGO_ENABLED" = "1" ] && [ "$(go env GOOS)" != "windows" ]; then
|
|
case "$(go env GOARCH)" in
|
|
mips*|ppc64)
|
|
# pie build mode is not supported on mips architectures
|
|
;;
|
|
*)
|
|
GO_BUILDMODE="-buildmode=pie"
|
|
;;
|
|
esac
|
|
GO_BUILDTAGS="$GO_BUILDTAGS pkcs11"
|
|
fi
|
|
|
|
if [ "$CGO_ENABLED" = "1" ] && [ "$GO_LINKMODE" = "static" ] && [ "$(go env GOOS)" = "linux" ]; then
|
|
LDFLAGS="$LDFLAGS -extldflags -static"
|
|
fi
|
|
|
|
if [ -n "$GO_STRIP" ]; then
|
|
LDFLAGS="$LDFLAGS -s -w"
|
|
fi
|
|
|
|
if [ "$(go env GOOS)" = "windows" ]; then
|
|
: "${WINDRES=$($(go env CC) --print-prog-name=windres)}"
|
|
if [ -z "$WINDRES" ]; then
|
|
>&2 echo "Empty WINDRES detected, skipping manifesting binary"
|
|
else
|
|
# Generate a Windows file version of the form major,minor,patch,build
|
|
VERSION_QUAD=$(printf "%s" "$VERSION" | sed -re 's/^([0-9.]*).*$/\1/' | tr . , | sed -re 's/,$//' | sed -re 's/^[0-9]+$/\0,0/' | sed -re 's/^[0-9]+,[0-9]+$/\0,0/' | sed -re 's/^[0-9]+,[0-9]+,[0-9]+$/\0,0/')
|
|
|
|
set --
|
|
[ -n "$VERSION" ] && set -- "$@" -D "DOCKER_VERSION=\"$VERSION\""
|
|
[ -n "$VERSION_QUAD" ] && set -- "$@" -D "DOCKER_VERSION_QUAD=$VERSION_QUAD"
|
|
[ -n "$GITCOMMIT" ] && set -- "$@" -D "DOCKER_COMMIT=\"$GITCOMMIT\""
|
|
|
|
target="$(dirname "$0")/../../cli/winresources/rsrc_$(go env GOARCH).syso"
|
|
mkdir -p "$(dirname "${target}")"
|
|
"$WINDRES" -i "$(dirname "$0")/../winresources/docker.rc" -o "$target" --use-temp-file "$@"
|
|
echo "package winresources" > "$(dirname "${target}")/stub_windows.go"
|
|
fi
|
|
fi
|
|
|
|
echo "Building $GO_LINKMODE $(basename "${TARGET}")"
|
|
|
|
export GO111MODULE=auto
|
|
|
|
go build -o "${TARGET}" -tags "${GO_BUILDTAGS}" --ldflags "${LDFLAGS}" ${GO_BUILDMODE} "${SOURCE}"
|
|
|
|
ln -sf "$(basename "${TARGET}")" "$(dirname "${TARGET}")/docker"
|