On 21.08.21 22:26, Konrad Weihmann wrote:
I'd truly like to oppose the idea of static linking by default, how
juicy this idea may sound...
But if we switch to static linking, literary no one can be be sure about
licensing anymore (to me one of the major weak spots of go).
I see your point here. The main concern was to get rid of the 37MB go
std lib but I missed the licensing part. I'll have a deeper look into
the golang linking.
And I'm quite missing some numbers to back the claim that overall image
size decreases - for a certain component that might be true, but what
about the example of having a lot of go components in the system?
Judging from the commit message all I see as an advantage is that one
single module (which isn't even served by the core layer) is now building.
Could you please provide some numbers for the rest?
You are right that it depends on the amount of go components and their
usage of std-lib. Right now, I wasn't able to collect enough components
to reach the memory overhead of go-runtime. There should be a break-even
point.
So I can totally see the benefits of dynamic linking by default with an
opt-out option (which is given by GO_LINKSHARED) to respect the
licensing part here.
On 21.08.21 22:09, Oliver Kranz wrote:
Static linking has the following benefits:
- go-md2man (-> podman) compiles
- imagesize reduces, combined linking overhead needs
to be > 37643776 (go-runtime) for dynamic linking
to be beneficial
- reflects the default golang setup
User can still enable it, if they needs to.
docker-ce, k3s, skopeo are ignoring the flag anyways.
Signed-off-by: Oliver Kranz <[email protected]>
---
meta/classes/goarch.bbclass | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/meta/classes/goarch.bbclass b/meta/classes/goarch.bbclass
index 92fec16b82..6e9128e44a 100644
--- a/meta/classes/goarch.bbclass
+++ b/meta/classes/goarch.bbclass
@@ -31,15 +31,7 @@ BASE_GOARM:armv5 = '5'
# Go supports dynamic linking on a limited set of architectures.
# See the supportsDynlink function in
go/src/cmd/compile/internal/gc/main.go
-GO_DYNLINK = ""
-GO_DYNLINK:arm ?= "1"
-GO_DYNLINK:aarch64 ?= "1"
-GO_DYNLINK:x86 ?= "1"
-GO_DYNLINK:x86-64 ?= "1"
-GO_DYNLINK:powerpc64 ?= "1"
-GO_DYNLINK:powerpc64le ?= "1"
-GO_DYNLINK:class-native ?= ""
-GO_DYNLINK:class-nativesdk = ""
+GO_DYNLINK ?= ""
# define here because everybody inherits this class
#
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#155067):
https://lists.openembedded.org/g/openembedded-core/message/155067
Mute This Topic: https://lists.openembedded.org/mt/85048858/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-