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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to