hack: do not set buildmode pie for statically linked binary

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax 2022-12-27 02:45:43 +01:00
parent e37985f590
commit 347a5f68da
No known key found for this signature in database
GPG key ID: 3248E46B6BB8C7F7
4 changed files with 16 additions and 13 deletions

View file

@ -582,8 +582,8 @@ RUN --mount=type=bind,target=. \
target=$([ "$DOCKER_STATIC" = "1" ] && echo "binary" || echo "dynbinary")
xx-go --wrap
./hack/make.sh $target
xx-verify /tmp/bundles/${target}-daemon/dockerd$([ "$(xx-info os)" = "windows" ] && echo ".exe")
xx-verify /tmp/bundles/${target}-daemon/docker-proxy$([ "$(xx-info os)" = "windows" ] && echo ".exe")
xx-verify $([ "$DOCKER_STATIC" = "1" ] && echo "--static") /tmp/bundles/${target}-daemon/dockerd$([ "$(xx-info os)" = "windows" ] && echo ".exe")
xx-verify $([ "$DOCKER_STATIC" = "1" ] && echo "--static") /tmp/bundles/${target}-daemon/docker-proxy$([ "$(xx-info os)" = "windows" ] && echo ".exe")
mkdir /build
mv /tmp/bundles/${target}-daemon/* /build/
EOT

View file

@ -73,15 +73,17 @@ source "${MAKEDIR}/.go-autogen"
# -buildmode=pie is not supported on Windows and Linux on mips, riscv64 and ppc64be.
# https://github.com/golang/go/blob/77aa209b386a184e7f4b44938f2a05a1b5c5a3cf/src/cmd/internal/sys/supported.go#L89-L99
case "$(go env GOOS)/$(go env GOARCH)" in
windows/* | linux/mips* | linux/riscv* | linux/ppc64) ;;
# TODO remove windows in Go 1.15+: https://github.com/golang/go/commit/95f382139043059a2a0780ba577b53893408f7e4
# TODO remove riscv64 in Go 1.16+: https://github.com/golang/go/commit/8eb846fd37eb7bded8a1cf6932be2c59069863e5
*)
BUILDFLAGS+=("-buildmode=pie")
;;
esac
if ! [ "$DOCKER_STATIC" = "1" ]; then
case "$(go env GOOS)/$(go env GOARCH)" in
windows/* | linux/mips* | linux/riscv* | linux/ppc64) ;;
# TODO remove windows in Go 1.15+: https://github.com/golang/go/commit/95f382139043059a2a0780ba577b53893408f7e4
# TODO remove riscv64 in Go 1.16+: https://github.com/golang/go/commit/8eb846fd37eb7bded8a1cf6932be2c59069863e5
*)
BUILDFLAGS+=("-buildmode=pie")
;;
esac
fi
# only necessary for non-sandboxed invocation where TARGETPLATFORM is empty
PLATFORM_NAME=$TARGETPLATFORM
@ -94,7 +96,7 @@ source "${MAKEDIR}/.go-autogen"
fi
fi
echo "Building $DEST/$BINARY_FULLNAME ($PLATFORM_NAME)..."
echo "Building $([ "$DOCKER_STATIC" = "1" ] && echo "static" || echo "dynamic") $DEST/$BINARY_FULLNAME ($PLATFORM_NAME)..."
go build \
-o "$DEST/$BINARY_FULLNAME" \
"${BUILDFLAGS[@]}" \

View file

@ -4,6 +4,7 @@ set -e
[ -z "$KEEPDEST" ] && rm -rf "$DEST"
(
DOCKER_STATIC=1
GO_PACKAGE='github.com/docker/docker/cmd/dockerd'
BINARY_NAME='dockerd'
source "${MAKEDIR}/.binary"

View file

@ -5,8 +5,8 @@ set -e
(
export CGO_ENABLED=0
DOCKER_STATIC=1
GO_PACKAGE='github.com/docker/docker/cmd/docker-proxy'
BINARY_NAME='docker-proxy'
source "${MAKEDIR}/.binary"
)