Khem Raj <[email protected]> escreveu (sexta, 19/04/2024 à(s) 21:43):
> > > On Fri, Apr 19, 2024 at 11:28 AM Jose Quaresma <[email protected]> > wrote: > >> >> >> Khem Raj <[email protected]> escreveu (sexta, 19/04/2024 à(s) 19:17): >> >>> On Fri, Apr 19, 2024 at 10:53 AM Jose Quaresma via >>> lists.openembedded.org >>> <[email protected]> wrote: >>> > >>> > This will make possible to restore the default dynamic linking globally >>> > which is what we had before the 1.20.X release. >>> > >>> >>> Looks good overall. how do we support the static linking if user wanted ? >>> >> >> To disable the dynamic linking, which is the default, we need to unset >> the GO_DYNLINK >> but this needs to be done with a machine arch override otherwise has no >> effect. >> >> GO_DYNLINK:machine_arch = "" >> >> As an example the below patch enables the static linkiging for all the >> architectures >> >> https://git.yoctoproject.org/poky/commit/meta/classes-recipe/goarch.bbclass?id=fd2e5e0b89d9c69acc9f813f07cd052630596ad5 >> >> > > I wonder if it makes sense to have a variable for doing static linking now > that dynamic linking is default anyway and remove it > To do this, we would have to remove all the logic based on the GO_DYNLINK and add this new variable to the static linking. Just to clarify, the default upstream golang linking is the static way but in OE we prefer the dynamic linking maybe because the binary size but I did some tests and surprisingly the result can even be better in terms of binary size when we link statically as can be see on this https://github.com/foundriesio/lmp-manifest/pull/425 This toolchain is also a bit particular in the sense that the go-runtime conditions all other packages afterwards. For example, by having a static go-runtime we are conditioning everything to be linked in the same way, the opposite is no longer true and we can have the go-runtime dynamically but then have packages linked statically. The reason is because the /usr/lib/go/pkg/linux_amd64_dynlink/libstd.so only exists when the go-runtime is dynamically linked. Jose > > >> Jose >> >> >>> > Signed-off-by: Jose Quaresma <[email protected]> >>> > --- >>> > meta/classes-recipe/go.bbclass | 2 -- >>> > meta/recipes-devtools/go/go-runtime.inc | 2 +- >>> > 2 files changed, 1 insertion(+), 3 deletions(-) >>> > >>> > diff --git a/meta/classes-recipe/go.bbclass >>> b/meta/classes-recipe/go.bbclass >>> > index cc3564c36a..d32509aa6d 100644 >>> > --- a/meta/classes-recipe/go.bbclass >>> > +++ b/meta/classes-recipe/go.bbclass >>> > @@ -48,8 +48,6 @@ GO_RPATH:class-native = "${@'-r >>> ${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE >>> > GO_RPATH_LINK:class-native = >>> "${@'-Wl,-rpath-link=${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' >>> if d.getVar('GO_DYNLINK') else ''}" >>> > GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} >>> ${GO_RPATH_LINK} ${LDFLAGS}" >>> > GO_LINKMODE ?= "" >>> > -GO_LINKMODE:class-nativesdk = "--linkmode=external" >>> > -GO_LINKMODE:class-native = "--linkmode=external" >>> > GO_EXTRA_LDFLAGS ?= "" >>> > GO_LINUXLOADER ?= "-I ${@get_linuxloader(d)}" >>> > # Use system loader. If uninative is used, the uninative loader will >>> be patched automatically >>> > diff --git a/meta/recipes-devtools/go/go-runtime.inc >>> b/meta/recipes-devtools/go/go-runtime.inc >>> > index 3f1e795dd9..413cf6d33f 100644 >>> > --- a/meta/recipes-devtools/go/go-runtime.inc >>> > +++ b/meta/recipes-devtools/go/go-runtime.inc >>> > @@ -15,7 +15,7 @@ export CGO_LDFLAGS = "${@ ' '.join(filter(lambda f: >>> not f.startswith('-fdebug-pr >>> > export GOCACHE = "${B}/.cache" >>> > >>> > GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${LDFLAGS}" >>> > -GO_SHLIB_LDFLAGS ?= '-ldflags="--linkmode=external -extldflags >>> '${GO_EXTLDFLAGS}'"' >>> > +GO_SHLIB_LDFLAGS ?= '-ldflags="-extldflags '${GO_EXTLDFLAGS}'"' >>> > >>> > do_configure() { >>> > : >>> > -- >>> > 2.44.0 >>> > >>> > >>> > >>> > >>> >> >> >> -- >> Best regards, >> >> José Quaresma >> > -- Best regards, José Quaresma
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#198587): https://lists.openembedded.org/g/openembedded-core/message/198587 Mute This Topic: https://lists.openembedded.org/mt/105623011/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
