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 <d.bussink@gmail.com>
This commit is contained in:
Dirkjan Bussink
2021-12-22 09:59:40 +01:00
committed by Marek Siarkowicz
parent 7ccca083eb
commit 1a9742c9c4
3 changed files with 9 additions and 5 deletions

View File

@ -42,6 +42,7 @@ etcd_build() {
# Static compilation is useful when etcd is run in a container. $GO_BUILD_FLAGS is OK # Static compilation is useful when etcd is run in a container. $GO_BUILD_FLAGS is OK
# shellcheck disable=SC2086 # shellcheck disable=SC2086
run env "${GO_BUILD_ENV[@]}" go build $GO_BUILD_FLAGS \ run env "${GO_BUILD_ENV[@]}" go build $GO_BUILD_FLAGS \
-trimpath \
-installsuffix=cgo \ -installsuffix=cgo \
"-ldflags=${GO_LDFLAGS[*]}" \ "-ldflags=${GO_LDFLAGS[*]}" \
-o="../${out}/etcd" . || return 2 -o="../${out}/etcd" . || return 2
@ -52,6 +53,7 @@ etcd_build() {
( (
cd ./etcdutl cd ./etcdutl
run env GO_BUILD_FLAGS="${GO_BUILD_FLAGS}" "${GO_BUILD_ENV[@]}" go build $GO_BUILD_FLAGS \ run env GO_BUILD_FLAGS="${GO_BUILD_FLAGS}" "${GO_BUILD_ENV[@]}" go build $GO_BUILD_FLAGS \
-trimpath \
-installsuffix=cgo \ -installsuffix=cgo \
"-ldflags=${GO_LDFLAGS[*]}" \ "-ldflags=${GO_LDFLAGS[*]}" \
-o="../${out}/etcdutl" . || return 2 -o="../${out}/etcdutl" . || return 2
@ -62,6 +64,7 @@ etcd_build() {
( (
cd ./etcdctl cd ./etcdctl
run env GO_BUILD_FLAGS="${GO_BUILD_FLAGS}" "${GO_BUILD_ENV[@]}" go build $GO_BUILD_FLAGS \ run env GO_BUILD_FLAGS="${GO_BUILD_FLAGS}" "${GO_BUILD_ENV[@]}" go build $GO_BUILD_FLAGS \
-trimpath \
-installsuffix=cgo \ -installsuffix=cgo \
"-ldflags=${GO_LDFLAGS[*]}" \ "-ldflags=${GO_LDFLAGS[*]}" \
-o="../${out}/etcdctl" . || return 2 -o="../${out}/etcdctl" . || return 2
@ -92,6 +95,7 @@ tools_build() {
run rm -f "${out}/${tool}" run rm -f "${out}/${tool}"
# shellcheck disable=SC2086 # shellcheck disable=SC2086
run env GO_BUILD_FLAGS="${GO_BUILD_FLAGS}" CGO_ENABLED=0 go build ${GO_BUILD_FLAGS} \ run env GO_BUILD_FLAGS="${GO_BUILD_FLAGS}" CGO_ENABLED=0 go build ${GO_BUILD_FLAGS} \
-trimpath \
-installsuffix=cgo \ -installsuffix=cgo \
"-ldflags='${GO_LDFLAGS[*]}'" \ "-ldflags='${GO_LDFLAGS[*]}'" \
-o="${out}/${tool}" "./${tool}" || return 2 -o="${out}/${tool}" "./${tool}" || return 2

View File

@ -87,7 +87,7 @@ function main {
export GOARCH=${TARGET_ARCH} export GOARCH=${TARGET_ARCH}
pushd etcd >/dev/null pushd etcd >/dev/null
GO_LDFLAGS="-s" ./build.sh GO_LDFLAGS="-s -w" ./build.sh
popd >/dev/null popd >/dev/null
TARGET="etcd-${VER}-${GOOS}-${GOARCH}" TARGET="etcd-${VER}-${GOOS}-${GOARCH}"

View File

@ -7,8 +7,8 @@ fi
( (
cd ./tests 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 -w" -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 -w" -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 -w" -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-tester ./functional/cmd/etcd-tester
) )