mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
go: filter out build specific path from the linker flags
patch 0007-exec.go-do-not-write-linker-flags-into-buildids.patch removes linker flags from buildids for not breaking reproducibility, but it seems that this will make go not rebuild when linker flag changes, Refer [1]. So remove this oe-specific patch, and change to filter out build specific path from the linker flags [1] https://github.com/golang/go/issues/63760 (From OE-Core rev: 6873c6cb000b24c1badd0fb8b5cd2d0a31a63096) Signed-off-by: Changqing Li <changqing.li@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
bf6591b935
commit
7165c23237
@@ -11,8 +11,8 @@ SRC_URI += "\
|
||||
file://0004-make.bash-override-CC-when-building-dist-and-go_boot.patch \
|
||||
file://0005-cmd-dist-separate-host-and-target-builds.patch \
|
||||
file://0006-cmd-go-make-GOROOT-precious-by-default.patch \
|
||||
file://0007-exec.go-do-not-write-linker-flags-into-buildids.patch \
|
||||
file://0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
|
||||
file://0009-go-Filter-build-paths-on-staticly-linked-arches.patch \
|
||||
file://0001-exec.go-filter-out-build-specific-paths-from-linker-.patch \
|
||||
"
|
||||
SRC_URI[main.sha256sum] = "4d196c3d41a0d6c1dfc64d04e3cc1f608b0c436bd87b7060ce3e23234e1f4d5c"
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
From 083b5c74b12a1abeb11dd7f58a1cb1593d0000c0 Mon Sep 17 00:00:00 2001
|
||||
From: Changqing Li <changqing.li@windriver.com>
|
||||
Date: Tue, 27 Feb 2024 18:06:51 +0800
|
||||
Subject: [PATCH] exec.go: filter out build-specific paths from linker flags
|
||||
|
||||
The flags can contain build-specific paths, breaking reproducibility.
|
||||
Filter out options that have build-specific paths.
|
||||
|
||||
Upstream-Status: Inappropriate [ Not perfect for upstream ]
|
||||
|
||||
Signed-off-by: Changqing Li <changqing.li@windriver.com>
|
||||
---
|
||||
src/cmd/go/internal/work/exec.go | 25 ++++++++++++++++++++++++-
|
||||
1 file changed, 24 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
|
||||
index cde867b..e3ce17d 100644
|
||||
--- a/src/cmd/go/internal/work/exec.go
|
||||
+++ b/src/cmd/go/internal/work/exec.go
|
||||
@@ -1358,6 +1358,29 @@ func (b *Builder) linkActionID(a *Action) cache.ActionID {
|
||||
return h.Sum()
|
||||
}
|
||||
|
||||
+func filterLinkerFlags(flags []string) []string {
|
||||
+ var newflags []string
|
||||
+ var skipflag bool
|
||||
+ skipflag = false
|
||||
+ for i, flag := range flags {
|
||||
+ if skipflag == true {
|
||||
+ skipflag = false
|
||||
+ continue
|
||||
+ }
|
||||
+ if strings.HasPrefix(flag, "--sysroot") || strings.HasPrefix(flag, "-fmacro-prefix-map") || strings.HasPrefix(flag, "-fdebug-prefix-map") || strings.HasPrefix(flag, "-ffile-prefix-map") || strings.HasPrefix(flag, "-fcanon-prefix-map") || strings.HasPrefix(flag, "-fprofile-prefix-map") || strings.HasPrefix(flag, "-Wl,-rpath-link"){
|
||||
+ continue
|
||||
+ } else if strings.HasPrefix(flag, "-extldflags") {
|
||||
+ skipflag = true
|
||||
+ newflags = append(newflags, flag)
|
||||
+ var filterd_Extldflags []string = filterLinkerFlags(strings.Split(flags[i+1], " "))
|
||||
+ newflags = append(newflags, strings.Join(filterd_Extldflags, " "))
|
||||
+ } else {
|
||||
+ newflags = append(newflags, flag)
|
||||
+ }
|
||||
+ }
|
||||
+ return newflags
|
||||
+}
|
||||
+
|
||||
// printLinkerConfig prints the linker config into the hash h,
|
||||
// as part of the computation of a linker-related action ID.
|
||||
func (b *Builder) printLinkerConfig(h io.Writer, p *load.Package) {
|
||||
@@ -1368,7 +1391,7 @@ func (b *Builder) printLinkerConfig(h io.Writer, p *load.Package) {
|
||||
case "gc":
|
||||
fmt.Fprintf(h, "link %s %q %s\n", b.toolID("link"), forcedLdflags, ldBuildmode)
|
||||
if p != nil {
|
||||
- fmt.Fprintf(h, "linkflags %q\n", p.Internal.Ldflags)
|
||||
+ fmt.Fprintf(h, "linkflags %q\n", filterLinkerFlags(p.Internal.Ldflags))
|
||||
}
|
||||
|
||||
// GOARM, GOMIPS, etc.
|
||||
--
|
||||
2.25.1
|
||||
|
||||
Reference in New Issue
Block a user