mirror of
https://git.yoctoproject.org/poky
synced 2026-09-20 03:49:32 +02:00
go: Filter build paths on staticly linked arches
(From OE-Core rev: acd376324765e432f7c3895470ca46d2ce29287e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -13,5 +13,6 @@ SRC_URI += "\
|
|||||||
file://0007-cmd-go-make-GOROOT-precious-by-default.patch \
|
file://0007-cmd-go-make-GOROOT-precious-by-default.patch \
|
||||||
file://0001-exec.go-do-not-write-linker-flags-into-buildids.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://0001-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
|
||||||
|
file://filter-build-paths.patch \
|
||||||
"
|
"
|
||||||
SRC_URI[main.sha256sum] = "0012386ddcbb5f3350e407c679923811dbd283fcdc421724931614a842ecbc2d"
|
SRC_URI[main.sha256sum] = "0012386ddcbb5f3350e407c679923811dbd283fcdc421724931614a842ecbc2d"
|
||||||
|
|||||||
48
meta/recipes-devtools/go/go/filter-build-paths.patch
Normal file
48
meta/recipes-devtools/go/go/filter-build-paths.patch
Normal file
@@ -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)
|
||||||
Reference in New Issue
Block a user