From 45fc3b034ada11f9eb1e37ad0240709b57e88453 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 22 May 2026 11:51:54 +0200 Subject: [PATCH] scripts/build: set grpcnotrace build-tag to reduce binary size Reduces the binary size (39810466 - 39289106 => 521360 (521 kb) We only import google.golang.org/grpc as an indirect dependency, and do not make gRPC connections. grpcnotrace avoids importing golang.org/x/net/trace, which in turn enables dead code elimination, which can yield 10-15% improvements in binary size when tracing is not needed. see https://github.com/grpc/grpc-go/blob/v1.81.1/trace_notrace.go#L23-L25 Before: ls -l ./build/docker-darwin-arm64 -rwxr-xr-x 1 thajeztah staff 39810466 May 22 11:44 ./build/docker-darwin-arm64* ls -lh ./build/docker-darwin-arm64 -rwxr-xr-x 1 thajeztah staff 38M May 22 11:44 ./build/docker-darwin-arm64* After: ls -l ./build/docker-darwin-arm64 -rwxr-xr-x 1 thajeztah staff 39289106 May 22 11:45 ./build/docker-darwin-arm64* ls -lh ./build/docker-darwin-arm64 -rwxr-xr-x 1 thajeztah staff 37M May 22 11:45 ./build/docker-darwin-arm64* Signed-off-by: Sebastiaan van Stijn --- scripts/build/.variables | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/build/.variables b/scripts/build/.variables index 53afc14a21d3..cb1324f49ef8 100755 --- a/scripts/build/.variables +++ b/scripts/build/.variables @@ -98,6 +98,16 @@ fi if [ "$CGO_ENABLED" = "1" ] && [ "$GO_LINKMODE" = "static" ] && [ "$(go env GOOS)" = "linux" ]; then GO_LDFLAGS="$GO_LDFLAGS -linkmode external -extldflags -static" fi + +# We only import google.golang.org/grpc as an indirect dependency, and +# do not make gRPC connections. +# +# grpcnotrace avoids importing golang.org/x/net/trace, which in turn enables +# dead code elimination, which can reduce binary size when tracing is not needed. +# +# see https://github.com/grpc/grpc-go/blob/v1.81.1/trace_notrace.go#L23-L25 +GO_BUILDTAGS="$GO_BUILDTAGS grpcnotrace" + if [ "$CGO_ENABLED" = "1" ] && [ "$GO_LINKMODE" = "static" ]; then # compiling statically with CGO enabled requires osusergo and netgo to be set. GO_BUILDTAGS="$GO_BUILDTAGS osusergo netgo"