diff options
-rw-r--r-- | Dockerfile | 4 | ||||
-rw-r--r-- | hack/make/.binary | 22 | ||||
-rw-r--r-- | hack/make/binary-daemon | 1 | ||||
-rw-r--r-- | hack/make/binary-proxy | 2 |
4 files changed, 16 insertions, 13 deletions
diff --git a/Dockerfile b/Dockerfile index 3632f5f614..2606e856dd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 diff --git a/hack/make/.binary b/hack/make/.binary index 8b412b5a72..8c1769ec1e 100644 --- a/hack/make/.binary +++ b/hack/make/.binary @@ -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[@]}" \ diff --git a/hack/make/binary-daemon b/hack/make/binary-daemon index 02ec3ce56b..0d8877bc02 100644 --- a/hack/make/binary-daemon +++ b/hack/make/binary-daemon @@ -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" diff --git a/hack/make/binary-proxy b/hack/make/binary-proxy index 011cf9d500..9fa51f76cd 100644 --- a/hack/make/binary-proxy +++ b/hack/make/binary-proxy @@ -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" ) |