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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to