In upstream commit [cmd: remove support for GOROOT_FINAL][1], it clear
GOROOT for func ld when -trimpath is used

But it missed to do the same thing for share libarary linking which caused
building go-runtime failed with buildpath issue

|ERROR: go-runtime-1.23.4-r0 do_package_qa: QA Issue: File /usr/lib/go/pkg/
linux_amd64_dynlink/libstd.so in package go-runtime contains reference to
TMPDIR [buildpaths]

This commit applied a patch to clear GOROOT for func ldShared when
-trimpath is used and add option -trimpath to go-runtime build

[1] https://github.com/golang/go/commit/507d1b22f4b58ac68841582d0c2c0ab6b20e5a98
[2] 
https://github.com/golang/go/commit/507d1b22f4b58ac68841582d0c2c0ab6b20e5a98#diff-cab5921f94f2667bb0bc1b935d2d46b4c03541b4351b33438ab7290b94dea212R669

Signed-off-by: Hongxu Jia <hongxu....@windriver.com>
---
 meta/recipes-devtools/go/go-1.24.0.inc        |  1 +
 meta/recipes-devtools/go/go-runtime.inc       |  2 +-
 ...OOT-for-func-ldShared-when-trimpath-.patch | 51 +++++++++++++++++++
 3 files changed, 53 insertions(+), 1 deletion(-)
 create mode 100644 
meta/recipes-devtools/go/go/0010-cmd-go-clear-GOROOT-for-func-ldShared-when-trimpath-.patch

diff --git a/meta/recipes-devtools/go/go-1.24.0.inc 
b/meta/recipes-devtools/go/go-1.24.0.inc
index 26a4947caf..a52dd19e76 100644
--- a/meta/recipes-devtools/go/go-1.24.0.inc
+++ b/meta/recipes-devtools/go/go-1.24.0.inc
@@ -14,6 +14,7 @@ SRC_URI += "\
     file://0007-exec.go-filter-out-build-specific-paths-from-linker-.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://0010-cmd-go-clear-GOROOT-for-func-ldShared-when-trimpath-.patch \
     file://6d265b008e3d106b2706645e5a88cd8e2fb98953.patch \
 "
 SRC_URI[main.sha256sum] = 
"d14120614acb29d12bcab72bd689f257eb4be9e0b6f88a8fb7e41ac65f8556e5"
diff --git a/meta/recipes-devtools/go/go-runtime.inc 
b/meta/recipes-devtools/go/go-runtime.inc
index 413cf6d33f..e5f17337bc 100644
--- a/meta/recipes-devtools/go/go-runtime.inc
+++ b/meta/recipes-devtools/go/go-runtime.inc
@@ -34,7 +34,7 @@ do_compile() {
        if [ -n "${GO_DYNLINK}" ]; then
                export GOTOOLDIR="${B}/pkg/tool/native_native"
                CC="$CC_FOR_${TARGET_GOTUPLE}" GOARCH="${TARGET_GOARCH}" 
GOOS="${TARGET_GOOS}" GOROOT=${B} \
-                       $GOTOOLDIR/go_bootstrap install -linkshared 
-buildmode=shared ${GO_SHLIB_LDFLAGS} std
+                       $GOTOOLDIR/go_bootstrap install -linkshared -trimpath 
-buildmode=shared ${GO_SHLIB_LDFLAGS} std
        fi
        cd ${B}
 }
diff --git 
a/meta/recipes-devtools/go/go/0010-cmd-go-clear-GOROOT-for-func-ldShared-when-trimpath-.patch
 
b/meta/recipes-devtools/go/go/0010-cmd-go-clear-GOROOT-for-func-ldShared-when-trimpath-.patch
new file mode 100644
index 0000000000..2c2f0cbfb5
--- /dev/null
+++ 
b/meta/recipes-devtools/go/go/0010-cmd-go-clear-GOROOT-for-func-ldShared-when-trimpath-.patch
@@ -0,0 +1,51 @@
+From c4215b5ca69a7626d97cf9b7ebc460c2b5b9148b Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu....@windriver.com>
+Date: Fri, 28 Feb 2025 19:13:18 -0800
+Subject: [PATCH 10/11] cmd/go: clear GOROOT for func ldShared when -trimpath
+ is used
+
+In commit [cmd: remove support for GOROOT_FINAL][1], it clear GOROOT
+for func ld when -trimpath is used. [2]
+
+This commit do the same thing for func ldShared, otherwise run go_bootstrap
+with -trimpath does not remove build path directory from the generated share
+libarary
+
+  $ ./make.bash --target-only --no-banner std
+  $ go_bootstrap install -linkshared -buildmode=shared -trimpath std
+  $ grep "$(pwd)" ./pkg/linux_amd64_dynlink/libstd.so
+  Binary file ./pkg/linux_amd64_dynlink/libstd.so matches
+
+[1] 
https://github.com/golang/go/commit/507d1b22f4b58ac68841582d0c2c0ab6b20e5a98
+[2] 
https://github.com/golang/go/commit/507d1b22f4b58ac68841582d0c2c0ab6b20e5a98#diff-cab5921f94f2667bb0bc1b935d2d46b4c03541b4351b33438ab7290b94dea212R669
+
+Upstream-Status: Submitted [https://go-review.googlesource.com/c/go/+/653895]
+
+Signed-off-by: Hongxu Jia <hongxu....@windriver.com>
+---
+ src/cmd/go/internal/work/gc.go | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/cmd/go/internal/work/gc.go b/src/cmd/go/internal/work/gc.go
+index 3a173efee8..8b7a44e031 100644
+--- a/src/cmd/go/internal/work/gc.go
++++ b/src/cmd/go/internal/work/gc.go
+@@ -728,7 +728,14 @@ func (gcToolchain) ldShared(b *Builder, root *Action, 
toplevelactions []*Action,
+       // the output file path is recorded in the .gnu.version_d section.
+       dir, targetPath := filepath.Split(targetPath)
+ 
+-      return b.Shell(root).run(dir, targetPath, nil, cfg.BuildToolexec, 
base.Tool("link"), "-o", targetPath, "-importcfg", importcfg, ldflags)
++      env := []string{}
++      // When -trimpath is used, GOROOT is cleared
++      if cfg.BuildTrimpath {
++              env = append(env, "GOROOT=")
++      } else {
++              env = append(env, "GOROOT="+cfg.GOROOT)
++      }
++      return b.Shell(root).run(dir, targetPath, env, cfg.BuildToolexec, 
base.Tool("link"), "-o", targetPath, "-importcfg", importcfg, ldflags)
+ }
+ 
+ func (gcToolchain) cc(b *Builder, a *Action, ofile, cfile string) error {
+-- 
+2.25.1
+
-- 
2.34.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#212088): 
https://lists.openembedded.org/g/openembedded-core/message/212088
Mute This Topic: https://lists.openembedded.org/mt/111448992/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