kubernetes1.25/kubernetes-trimpath.patch

103 lines
4.2 KiB
Diff

From 37b7ae6b9332e0275bcc8eeb01bbc69e2f3239e6 Mon Sep 17 00:00:00 2001
From: Tim Hockin <thockin@google.com>
Date: Tue, 14 Nov 2023 18:57:34 -0800
Subject: [PATCH 1/2] build: use -trimpath in non-DBG mode
fix reproducible builds
https://github.com/kubernetes/kubernetes/issues/110928
---
hack/lib/golang.sh | 28 +++++++++-------------------
1 file changed, 9 insertions(+), 19 deletions(-)
Index: kubernetes-1.25.16/hack/lib/golang.sh
===================================================================
--- kubernetes-1.25.16.orig/hack/lib/golang.sh
+++ kubernetes-1.25.16/hack/lib/golang.sh
@@ -744,7 +744,7 @@ kube::golang::build_binaries_for_platfor
done
V=2 kube::log::info "Env for ${platform}: GOOS=${GOOS-} GOARCH=${GOARCH-} GOROOT=${GOROOT-} CGO_ENABLED=${CGO_ENABLED-} CC=${CC-}"
- V=3 kube::log::info "Building binaries with GCFLAGS=${gogcflags} ASMFLAGS=${goasmflags} LDFLAGS=${goldflags}"
+ V=3 kube::log::info "Building binaries with GCFLAGS=${gogcflags} LDFLAGS=${goldflags}"
local -a build_args
if [[ "${#statics[@]}" != 0 ]]; then
@@ -752,7 +752,6 @@ kube::golang::build_binaries_for_platfor
-installsuffix=static
${goflags:+"${goflags[@]}"}
-gcflags="${gogcflags}"
- -asmflags="${goasmflags}"
-ldflags="${goldflags}"
-tags="${gotags:-}"
)
@@ -763,7 +762,6 @@ kube::golang::build_binaries_for_platfor
build_args=(
${goflags:+"${goflags[@]}"}
-gcflags="${gogcflags}"
- -asmflags="${goasmflags}"
-ldflags="${goldflags}"
-tags="${gotags:-}"
)
@@ -779,7 +777,6 @@ kube::golang::build_binaries_for_platfor
go test -c \
${goflags:+"${goflags[@]}"} \
-gcflags="${gogcflags}" \
- -asmflags="${goasmflags}" \
-ldflags="${goldflags}" \
-tags="${gotags:-}" \
-o "${outfile}" \
@@ -836,26 +833,19 @@ kube::golang::build_binaries() {
# These are "local" but are visible to and relied on by functions this
# function calls. They are effectively part of the calling API to
# build_binaries_for_platform.
- local goflags goldflags goasmflags gogcflags gotags
+ local goflags goldflags gogcflags gotags
- # This is $(pwd) because we use run-in-gopath to build. Once that is
- # excised, this can become ${KUBE_ROOT}.
- local trimroot # two lines to appease shellcheck SC2155
- trimroot=$(pwd)
-
- goasmflags="all=-trimpath=${trimroot}"
+ goflags=()
+ gogcflags="${GOGCFLAGS:-}"
+ goldflags="all=$(kube::version::ldflags) ${GOLDFLAGS:-}"
- gogcflags="all=-trimpath=${trimroot} ${GOGCFLAGS:-}"
if [[ "${DBG:-}" == 1 ]]; then
# Debugging - disable optimizations and inlining and trimPath
- gogcflags="${GOGCFLAGS:-} all=-N -l"
- goasmflags=""
- fi
-
- goldflags="all=$(kube::version::ldflags) ${GOLDFLAGS:-}"
- if [[ "${DBG:-}" != 1 ]]; then
- # Not debugging - disable symbols and DWARF.
+ gogcflags="${gogcflags} all=-N -l"
+ else
+ # Not debugging - disable symbols and DWARF, trim embedded paths
goldflags="${goldflags} -s -w"
+ goflags+=("-trimpath")
fi
# Extract tags if any specified in GOFLAGS
Index: kubernetes-1.25.16/test/conformance/gen-specsummaries.sh
===================================================================
--- kubernetes-1.25.16.orig/test/conformance/gen-specsummaries.sh
+++ kubernetes-1.25.16/test/conformance/gen-specsummaries.sh
@@ -26,7 +26,12 @@ cd "${KUBE_ROOT}"
# NOTE: we do *not* use `make WHAT=...` because we do *not* want to be running
# make generated_files when diffing things (see: hack/verify-conformance-yaml.sh)
# other update/verify already handle the generated files
-hack/make-rules/build.sh github.com/onsi/ginkgo/v2/ginkgo test/e2e/e2e.test
+#
+# Set DBG=1 to build with embedded filenames as filenames rather than
+# module-relative names (e.g. /src/kube/foo/bar.go vs.
+# k8s.io/kubernetes/foo/bar.go). These names are used by gingko in
+# `--spec-dump` which is consumed later in conformance verification.
+DBG=1 hack/make-rules/build.sh github.com/onsi/ginkgo/v2/ginkgo test/e2e/e2e.test
# dump spec
./_output/bin/ginkgo --dry-run=true --focus='[Conformance]' ./_output/bin/e2e.test -- --spec-dump "${KUBE_ROOT}/_output/specsummaries.json" > /dev/null