From 1a9742c9c425085caec8b8ad66cbecdfe728c93a Mon Sep 17 00:00:00 2001 From: Dirkjan Bussink Date: Wed, 22 Dec 2021 09:59:40 +0100 Subject: [PATCH] release: build with consistent paths This changes the builds to always add -trimpath which removes specific build time paths from the binary (like current directories etc). Improves build reproducability to make the final binary independent from the specific build path. Lastly, when stripping debug symbols, also add -w to strip DWARF symbols as well which aren't needed in that case either. Signed-off-by: Dirkjan Bussink --- build.sh | 4 ++++ scripts/build-binary | 2 +- tests/functional/build | 8 ++++---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/build.sh b/build.sh index 7a4f8670e6f..dea5719ecc0 100755 --- a/build.sh +++ b/build.sh @@ -42,6 +42,7 @@ etcd_build() { # Static compilation is useful when etcd is run in a container. $GO_BUILD_FLAGS is OK # shellcheck disable=SC2086 run env "${GO_BUILD_ENV[@]}" go build $GO_BUILD_FLAGS \ + -trimpath \ -installsuffix=cgo \ "-ldflags=${GO_LDFLAGS[*]}" \ -o="../${out}/etcd" . || return 2 @@ -52,6 +53,7 @@ etcd_build() { ( cd ./etcdutl run env GO_BUILD_FLAGS="${GO_BUILD_FLAGS}" "${GO_BUILD_ENV[@]}" go build $GO_BUILD_FLAGS \ + -trimpath \ -installsuffix=cgo \ "-ldflags=${GO_LDFLAGS[*]}" \ -o="../${out}/etcdutl" . || return 2 @@ -62,6 +64,7 @@ etcd_build() { ( cd ./etcdctl run env GO_BUILD_FLAGS="${GO_BUILD_FLAGS}" "${GO_BUILD_ENV[@]}" go build $GO_BUILD_FLAGS \ + -trimpath \ -installsuffix=cgo \ "-ldflags=${GO_LDFLAGS[*]}" \ -o="../${out}/etcdctl" . || return 2 @@ -92,6 +95,7 @@ tools_build() { run rm -f "${out}/${tool}" # shellcheck disable=SC2086 run env GO_BUILD_FLAGS="${GO_BUILD_FLAGS}" CGO_ENABLED=0 go build ${GO_BUILD_FLAGS} \ + -trimpath \ -installsuffix=cgo \ "-ldflags='${GO_LDFLAGS[*]}'" \ -o="${out}/${tool}" "./${tool}" || return 2 diff --git a/scripts/build-binary b/scripts/build-binary index b819a3e5757..894652932e6 100755 --- a/scripts/build-binary +++ b/scripts/build-binary @@ -87,7 +87,7 @@ function main { export GOARCH=${TARGET_ARCH} pushd etcd >/dev/null - GO_LDFLAGS="-s" ./build.sh + GO_LDFLAGS="-s -w" ./build.sh popd >/dev/null TARGET="etcd-${VER}-${GOOS}-${GOARCH}" diff --git a/tests/functional/build b/tests/functional/build index 324c8670cec..f55c7bfacde 100755 --- a/tests/functional/build +++ b/tests/functional/build @@ -7,8 +7,8 @@ fi ( cd ./tests - CGO_ENABLED=0 go build -v -installsuffix cgo -ldflags "-s" -o ../bin/etcd-agent ./functional/cmd/etcd-agent - CGO_ENABLED=0 go build -v -installsuffix cgo -ldflags "-s" -o ../bin/etcd-proxy ./functional/cmd/etcd-proxy - CGO_ENABLED=0 go build -v -installsuffix cgo -ldflags "-s" -o ../bin/etcd-runner ./functional/cmd/etcd-runner - CGO_ENABLED=0 go build -v -installsuffix cgo -ldflags "-s" -o ../bin/etcd-tester ./functional/cmd/etcd-tester + CGO_ENABLED=0 go build -v -installsuffix cgo -ldflags "-s -w" -o ../bin/etcd-agent ./functional/cmd/etcd-agent + CGO_ENABLED=0 go build -v -installsuffix cgo -ldflags "-s -w" -o ../bin/etcd-proxy ./functional/cmd/etcd-proxy + CGO_ENABLED=0 go build -v -installsuffix cgo -ldflags "-s -w" -o ../bin/etcd-runner ./functional/cmd/etcd-runner + CGO_ENABLED=0 go build -v -installsuffix cgo -ldflags "-s -w" -o ../bin/etcd-tester ./functional/cmd/etcd-tester )