On Mon, Apr 22, 2024 at 1:47 PM Jose Quaresma <[email protected]> wrote:
> > > 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 > Yeah that’s ok for build time sizes but I wonder how does it do at runtime since this will use go runtime as dynamic libs > 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 (#198596): https://lists.openembedded.org/g/openembedded-core/message/198596 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]] -=-=-=-=-=-=-=-=-=-=-=-
