Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org> --- meta/recipes-devtools/go/go-1.18.3.inc | 1 + .../go/go/filter-build-paths.patch | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 meta/recipes-devtools/go/go/filter-build-paths.patch
diff --git a/meta/recipes-devtools/go/go-1.18.3.inc b/meta/recipes-devtools/go/go-1.18.3.inc index 68062952cae..693b045e8f0 100644 --- a/meta/recipes-devtools/go/go-1.18.3.inc +++ b/meta/recipes-devtools/go/go-1.18.3.inc @@ -13,5 +13,6 @@ SRC_URI += "\ file://0007-cmd-go-make-GOROOT-precious-by-default.patch \ file://0001-exec.go-do-not-write-linker-flags-into-buildids.patch \ file://0001-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \ + file://filter-build-paths.patch \ " SRC_URI[main.sha256sum] = "0012386ddcbb5f3350e407c679923811dbd283fcdc421724931614a842ecbc2d" diff --git a/meta/recipes-devtools/go/go/filter-build-paths.patch b/meta/recipes-devtools/go/go/filter-build-paths.patch new file mode 100644 index 00000000000..caf727714e8 --- /dev/null +++ b/meta/recipes-devtools/go/go/filter-build-paths.patch @@ -0,0 +1,48 @@ +Filter out build time paths from ldflags and other flags variables when they're +embedded in the go binary so that builds are reproducible regardless of build +location. This codepath is hit for statically linked go binaries such as those +on mips/ppc. + +Upstream-Status: Pending +Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org> + +Index: go/src/cmd/go/internal/load/pkg.go +=================================================================== +--- go.orig/src/cmd/go/internal/load/pkg.go ++++ go/src/cmd/go/internal/load/pkg.go +@@ -2225,6 +2225,17 @@ func (p *Package) collectDeps() { + // to their VCS information (vcsStatusError). + var vcsStatusCache par.Cache + ++func filterCompilerFlags(flags string) string { ++ var newflags []string ++ for _, flag := range strings.Fields(flags) { ++ if strings.HasPrefix(flag, "--sysroot") || strings.HasPrefix(flag, "-fmacro-prefix-map") || strings.HasPrefix(flag, "-fdebug-prefix-map") { ++ continue ++ } ++ newflags = append(newflags, flag) ++ } ++ return strings.Join(newflags, " ") ++} ++ + // setBuildInfo gathers build information, formats it as a string to be + // embedded in the binary, then sets p.Internal.BuildInfo to that string. + // setBuildInfo should only be called on a main package with no errors. +@@ -2329,7 +2340,7 @@ func (p *Package) setBuildInfo(includeVC + appendSetting("-gcflags", BuildGcflags.String()) + } + if BuildLdflags.present { +- appendSetting("-ldflags", BuildLdflags.String()) ++ appendSetting("-ldflags", filterCompilerFlags(BuildLdflags.String())) + } + if cfg.BuildMSan { + appendSetting("-msan", "true") +@@ -2347,7 +2358,7 @@ func (p *Package) setBuildInfo(includeVC + appendSetting("CGO_ENABLED", cgo) + if cfg.BuildContext.CgoEnabled { + for _, name := range []string{"CGO_CFLAGS", "CGO_CPPFLAGS", "CGO_CXXFLAGS", "CGO_LDFLAGS"} { +- appendSetting(name, cfg.Getenv(name)) ++ appendSetting(name, filterCompilerFlags(cfg.Getenv(name))) + } + } + appendSetting("GOARCH", cfg.BuildContext.GOARCH) -- 2.34.1
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#167552): https://lists.openembedded.org/g/openembedded-core/message/167552 Mute This Topic: https://lists.openembedded.org/mt/92137981/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-