On Wed, 2022-05-25 at 20:56 +0300, Dmitry Baryshkov wrote: > Building native Go tools results in the tool pointing to the wrong > location of dynamic linker (see below). The linker is looked up in the > temporary dir, which can be removed if rm_work is inherited. This > results in being unable to execute the program with the 'No such file or > directory' error. Override linker specificiation for native recipes (and > let Go build environment to pick up a correct one on it's own). > > Without this patch: > > $ ldd > tmp-rpb-glibc/sysroots-components/x86_64/go-md2man-native/usr/bin/go-md2man > linux-vdso.so.1 (0x00007ffe945ec000) > libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3a7490e000) > > /home/lumag/Projects/RPB/build-rpb/tmp-rpb-glibc/work/x86_64-linux/go-md2man-native/1.0.10+gitAUTOINC+f79a8a8ca6-r0/recipe-sysroot-native/usr/lib/ld-linux-x86-64.so.2 > => /lib64/ld-linux-x86-64.so.2 (0x00007f3a74d13000) > $ tmp-rpb-glibc/sysroots-components/x86_64/go-md2man-native/usr/bin/go-md2man > --help > -bash: > tmp-rpb-glibc/sysroots-components/x86_64/go-md2man-native/usr/bin/go-md2man: > No such file or directory > > With the patch > > $ ldd > tmp-rpb-glibc/sysroots-components/x86_64/go-md2man-native/usr/bin/go-md2man > linux-vdso.so.1 (0x00007ffd19dbf000) > libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2d44181000) > /lib64/ld-linux-x86-64.so.2 (0x00007f2d44586000) > $ tmp-rpb-glibc/sysroots-components/x86_64/go-md2man-native/usr/bin/go-md2man > --help > Usage of > tmp-rpb-glibc/sysroots-components/x86_64/go-md2man-native/usr/bin/go-md2man: > -in string > Path to file to be processed (default: stdin) > -out string > Path to output processed file (default: stdout) > > Signed-off-by: Dmitry Baryshkov <[email protected]> > --- > Changes since v1: > - Explicitly use UNINATIVE_LOADER if uninative is enabled. This is not > required (as the binaries will be patches anyway), but makes things > more obvious. > --- > meta/classes/go.bbclass | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/meta/classes/go.bbclass b/meta/classes/go.bbclass > index 1a9a0bc1d426..da3cab5da5bf 100644 > --- a/meta/classes/go.bbclass > +++ b/meta/classes/go.bbclass > @@ -45,7 +45,9 @@ GO_LINKMODE ?= "" > GO_LINKMODE:class-nativesdk = "--linkmode=external" > GO_LINKMODE:class-native = "--linkmode=external" > GO_EXTRA_LDFLAGS ?= "" > -GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} -I > ${@get_linuxloader(d)} ${GO_EXTRA_LDFLAGS} -extldflags '${GO_EXTLDFLAGS}'"' > +GO_LINUXLOADER ?= "-I ${@get_linuxloader(d)}" > +GO_LINUXLOADER:class-native = "${@ "-I " + d.getVar('UNINATIVE_LOADER') if > bb.data.inherits_class('uninative', d) else '' }" > +GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} ${GO_LINUXLOADER} > ${GO_EXTRA_LDFLAGS} -extldflags '${GO_EXTLDFLAGS}'"'
This will result in taskhash changes between uninative and non- uninative builds and I suspect will trip up some of the selftests as a result. I think your original patch is ok, we just need to mention it is for the non-uninative case in the commit message as that explains why people haven't seen some of the issues. That did confuse me initially! Cheers, Richard
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#166167): https://lists.openembedded.org/g/openembedded-core/message/166167 Mute This Topic: https://lists.openembedded.org/mt/91338740/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
