blob: 4f055b26dc709e2b5287681aa377426c64985509 [file]
#!/usr/bin/env bash
set -eu
# The value of GOCACHE/GOPATH are determined from HOME.
# We place them in the execroot to avoid dependency on `mktemp` and because we don't know
# a safe scratch space on all systems. Note that HOME must be an absolute path, otherwise the
# Go toolchain will write some outputs to the wrong place and the result will be uncacheable.
# We include an output path of this action to prevent collisions with anything else,
# including differently configured versions of the same target, under an unsandboxed strategy.
export HOME="${PWD}/_go_tool_binary-fake-home-${1//\\//_}"
trap "${GO_BINARY} clean -cache" EXIT
# We do not use -a here as the cache drastically reduces the time spent
# on the second go build invocation (roughly 50% faster).
"${GO_BINARY}" build -trimpath -ldflags="-buildid=\"\" ${LD_FLAGS}" -o "$1" cmd/pack
shift
"${GO_BINARY}" build -trimpath -ldflags="-buildid=\"\" ${LD_FLAGS}" -o "$@"