diff options
Diffstat (limited to 'scripts/build.sh')
-rwxr-xr-x | scripts/build.sh | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/scripts/build.sh b/scripts/build.sh index dde199549..490f68038 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,11 +1,27 @@ #!/bin/sh -set -eu +set -e -# DEBUG returns whether DEBUG build is enabled. -DEBUG() { [ ! -z "${DEBUG-}" ]; } +# Log and execute provided args. +log_exec() { echo "$ ${*}"; "$@"; } -CGO_ENABLED=0 go build -trimpath \ - -tags "netgo osusergo static_build kvformat $(DEBUG && echo 'debugenv')" \ - -ldflags="-s -w -extldflags '-static' -X 'main.Version=${VERSION:-$(git describe --tags --abbrev=0)}'" \ +# Grab environment variables and set defaults + requirements. +GO_BUILDTAGS="${GO_BUILDTAGS-} netgo osusergo static_build kvformat" +GO_LDFLAGS="${GO_LDFLAGS-} -s -w -extldflags '-static' -X 'main.Version=${VERSION:-$(git describe --tags --abbrev=0)}'" +GO_GCFLAGS=${GO_GCFLAGS-} + +# Maintain old $DEBUG compat. +[ ! -z "$DEBUG" ] && \ + GO_BUILDTAGS="${GO_BUILDTAGS} debugenv" + +# Available Go build tags, with explanation, followed by benefits of enabling it: +# - kvformat: enables prettier output of log fields (slightly better performance) +# - notracing: disables compiling-in otel tracing support (reduced binary size, better performance) +# - noerrcaller: disables caller function prefix in errors (slightly better performance, at cost of err readability) +# - debug: enables /debug/pprof endpoint (adds debug, at performance cost) +# - debugenv: enables /debug/pprof endpoint if DEBUG=1 env during runtime (adds debug, at performance cost) +log_exec env CGO_ENABLED=0 go build -trimpath -v \ + -tags "${GO_BUILDTAGS}" \ + -ldflags="${GO_LDFLAGS}" \ + -gcflags="${GO_GCFLAGS}" \ ./cmd/gotosocial |