diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-07-02 23:08:13 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-07-04 15:13:18 +0100 |
commit | acd376324765e432f7c3895470ca46d2ce29287e (patch) | |
tree | 7e6eae3c15983f3ad358be5039578480d777efbb /meta | |
parent | 2567edb7e0a8c5ca9a88d6940491bf33bfe0eff9 (diff) | |
download | openembedded-core-contrib-acd376324765e432f7c3895470ca46d2ce29287e.tar.gz |
go: Filter build paths on staticly linked arches
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-devtools/go/go-1.18.3.inc | 1 | ||||
-rw-r--r-- | meta/recipes-devtools/go/go/filter-build-paths.patch | 48 |
2 files changed, 49 insertions, 0 deletions
diff --git a/meta/recipes-devtools/go/go-1.18.3.inc b/meta/recipes-devtools/go/go-1.18.3.inc index 68062952ca..693b045e8f 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 0000000000..caf727714e --- /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.purdie@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) |