* [Buildroot] [PATCH 1/3] package/go: expose option to enable via configurator
@ 2024-06-10 15:40 Athaariq Ardhiansyah
2024-06-10 15:40 ` [Buildroot] [PATCH 2/3] package/go: move source-specific to go-src Athaariq Ardhiansyah
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Athaariq Ardhiansyah @ 2024-06-10 15:40 UTC (permalink / raw)
To: buildroot
Cc: Athaariq Ardhiansyah, Anisse Astier, Christian Stewart,
Thomas Perale
Just in case you forgot it, I re-exposed the configuration option for
enabling host-go virtual package before I'm adding host-go-bin
subpackage.
Signed-off-by: Athaariq Ardhiansyah <foss@athaariq.my.id>
---
package/go/Config.in.host | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package/go/Config.in.host b/package/go/Config.in.host
index 483393f8e4..32483871e7 100644
--- a/package/go/Config.in.host
+++ b/package/go/Config.in.host
@@ -34,7 +34,7 @@ config BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS
# Go packages should select BR2_PACKAGE_HOST_GO
config BR2_PACKAGE_HOST_GO
- bool
+ bool "host go"
depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS
if BR2_PACKAGE_HOST_GO
--
2.45.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 2/3] package/go: move source-specific to go-src
2024-06-10 15:40 [Buildroot] [PATCH 1/3] package/go: expose option to enable via configurator Athaariq Ardhiansyah
@ 2024-06-10 15:40 ` Athaariq Ardhiansyah
2024-09-14 16:27 ` Yann E. MORIN
2024-06-10 15:40 ` [Buildroot] [PATCH 3/3] package/go: add prebuilt Go compiler option Athaariq Ardhiansyah
2024-09-14 16:24 ` [Buildroot] [PATCH 1/3] package/go: expose option to enable via configurator Yann E. MORIN
2 siblings, 1 reply; 6+ messages in thread
From: Athaariq Ardhiansyah @ 2024-06-10 15:40 UTC (permalink / raw)
To: buildroot
Cc: Athaariq Ardhiansyah, Anisse Astier, Christian Stewart,
Thomas Perale
Some of package/go/go.mk includes source compilation specific
requirements, which are not effective for prebuilt Go compiler option.
Therefore, I moved some of source-specific conditionals and variables to
the host-go-src before adding host-go-bin support.
Signed-off-by: Athaariq Ardhiansyah <foss@athaariq.my.id>
---
package/go/go-src/go-src.mk | 68 +++++++++++++++++++++++++++++++++++
package/go/go.mk | 71 -------------------------------------
2 files changed, 68 insertions(+), 71 deletions(-)
diff --git a/package/go/go-src/go-src.mk b/package/go/go-src/go-src.mk
index 1e061e20bc..a0c903282f 100644
--- a/package/go/go-src/go-src.mk
+++ b/package/go/go-src/go-src.mk
@@ -16,6 +16,67 @@ HOST_GO_SRC_DEPENDENCIES = host-go-bootstrap-stage3
ifeq ($(BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS),y)
+ifeq ($(BR2_arm),y)
+GO_GOARCH = arm
+ifeq ($(BR2_ARM_CPU_ARMV5),y)
+GO_GOARM = 5
+else ifeq ($(BR2_ARM_CPU_ARMV6),y)
+GO_GOARM = 6
+else ifeq ($(BR2_ARM_CPU_ARMV7A),y)
+GO_GOARM = 7
+else ifeq ($(BR2_ARM_CPU_ARMV8A),y)
+# Go doesn't support 32-bit GOARM=8 (https://github.com/golang/go/issues/29373)
+# but can still benefit from armv7 optimisations
+GO_GOARM = 7
+endif
+else ifeq ($(BR2_aarch64),y)
+GO_GOARCH = arm64
+else ifeq ($(BR2_i386),y)
+GO_GOARCH = 386
+# i386: use softfloat if no SSE2: https://golang.org/doc/go1.16#386
+ifneq ($(BR2_X86_CPU_HAS_SSE2),y)
+GO_GO386 = softfloat
+endif
+else ifeq ($(BR2_x86_64),y)
+GO_GOARCH = amd64
+else ifeq ($(BR2_powerpc64),y)
+GO_GOARCH = ppc64
+else ifeq ($(BR2_powerpc64le),y)
+GO_GOARCH = ppc64le
+else ifeq ($(BR2_mips64),y)
+GO_GOARCH = mips64
+else ifeq ($(BR2_mips64el),y)
+GO_GOARCH = mips64le
+else ifeq ($(BR2_riscv),y)
+GO_GOARCH = riscv64
+else ifeq ($(BR2_s390x),y)
+GO_GOARCH = s390x
+endif
+
+# For the convienience of target packages.
+HOST_GO_TOOLDIR = $(HOST_GO_ROOT)/pkg/tool/linux_$(GO_GOARCH)
+HOST_GO_TARGET_ENV = \
+ $(HOST_GO_COMMON_ENV) \
+ GOOS="linux" \
+ GOARCH=$(GO_GOARCH) \
+ CC="$(TARGET_CC)" \
+ CXX="$(TARGET_CXX)" \
+ CGO_CFLAGS="$(TARGET_CFLAGS)" \
+ CGO_CXXFLAGS="$(TARGET_CXXFLAGS)" \
+ CGO_LDFLAGS="$(TARGET_LDFLAGS)" \
+ GOTOOLDIR="$(HOST_GO_TOOLDIR)"
+
+# The go compiler's cgo support uses threads. If BR2_TOOLCHAIN_HAS_THREADS is
+# set, build in cgo support for any go programs that may need it. Note that
+# any target package needing cgo support must include
+# 'depends on BR2_TOOLCHAIN_HAS_THREADS' in its config file.
+ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
+HOST_GO_DEPENDENCIES += toolchain
+HOST_GO_CGO_ENABLED = 1
+else
+HOST_GO_CGO_ENABLED = 0
+endif
+
HOST_GO_SRC_CROSS_ENV = \
CC_FOR_TARGET="$(TARGET_CC)" \
CXX_FOR_TARGET="$(TARGET_CXX)" \
@@ -25,6 +86,11 @@ HOST_GO_SRC_CROSS_ENV = \
$(if $(GO_GOARM),GOARM=$(GO_GOARM)) \
GO_ASSUME_CROSSCOMPILING=1
+else # !BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
+# host-go can still be used to build packages for the host. No need to set all
+# the arch stuff since we will not be cross-compiling.
+HOST_GO_CGO_ENABLED = 1
+
endif
# The go build system is not compatible with ccache, so use
@@ -52,3 +118,5 @@ define HOST_GO_SRC_INSTALL_CMDS
endef
$(eval $(host-generic-package))
+
+include $(sort $(wildcard package/go/go-bootstrap-*/*.mk))
diff --git a/package/go/go.mk b/package/go/go.mk
index dfcb633aa7..489d749d46 100644
--- a/package/go/go.mk
+++ b/package/go/go.mk
@@ -26,75 +26,6 @@ HOST_GO_COMMON_ENV = \
GOBIN= \
CGO_ENABLED=$(HOST_GO_CGO_ENABLED)
-ifeq ($(BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS),y)
-
-ifeq ($(BR2_arm),y)
-GO_GOARCH = arm
-ifeq ($(BR2_ARM_CPU_ARMV5),y)
-GO_GOARM = 5
-else ifeq ($(BR2_ARM_CPU_ARMV6),y)
-GO_GOARM = 6
-else ifeq ($(BR2_ARM_CPU_ARMV7A),y)
-GO_GOARM = 7
-else ifeq ($(BR2_ARM_CPU_ARMV8A),y)
-# Go doesn't support 32-bit GOARM=8 (https://github.com/golang/go/issues/29373)
-# but can still benefit from armv7 optimisations
-GO_GOARM = 7
-endif
-else ifeq ($(BR2_aarch64),y)
-GO_GOARCH = arm64
-else ifeq ($(BR2_i386),y)
-GO_GOARCH = 386
-# i386: use softfloat if no SSE2: https://golang.org/doc/go1.16#386
-ifneq ($(BR2_X86_CPU_HAS_SSE2),y)
-GO_GO386 = softfloat
-endif
-else ifeq ($(BR2_x86_64),y)
-GO_GOARCH = amd64
-else ifeq ($(BR2_powerpc64),y)
-GO_GOARCH = ppc64
-else ifeq ($(BR2_powerpc64le),y)
-GO_GOARCH = ppc64le
-else ifeq ($(BR2_mips64),y)
-GO_GOARCH = mips64
-else ifeq ($(BR2_mips64el),y)
-GO_GOARCH = mips64le
-else ifeq ($(BR2_riscv),y)
-GO_GOARCH = riscv64
-else ifeq ($(BR2_s390x),y)
-GO_GOARCH = s390x
-endif
-
-# For the convienience of target packages.
-HOST_GO_TOOLDIR = $(HOST_GO_ROOT)/pkg/tool/linux_$(GO_GOARCH)
-HOST_GO_TARGET_ENV = \
- $(HOST_GO_COMMON_ENV) \
- GOOS="linux" \
- GOARCH=$(GO_GOARCH) \
- CC="$(TARGET_CC)" \
- CXX="$(TARGET_CXX)" \
- CGO_CFLAGS="$(TARGET_CFLAGS)" \
- CGO_CXXFLAGS="$(TARGET_CXXFLAGS)" \
- CGO_LDFLAGS="$(TARGET_LDFLAGS)" \
- GOTOOLDIR="$(HOST_GO_TOOLDIR)"
-
-# The go compiler's cgo support uses threads. If BR2_TOOLCHAIN_HAS_THREADS is
-# set, build in cgo support for any go programs that may need it. Note that
-# any target package needing cgo support must include
-# 'depends on BR2_TOOLCHAIN_HAS_THREADS' in its config file.
-ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
-HOST_GO_DEPENDENCIES += toolchain
-HOST_GO_CGO_ENABLED = 1
-else
-HOST_GO_CGO_ENABLED = 0
-endif
-
-else # !BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
-# host-go can still be used to build packages for the host. No need to set all
-# the arch stuff since we will not be cross-compiling.
-HOST_GO_CGO_ENABLED = 1
-endif # BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
-
# For the convenience of host golang packages
HOST_GO_HOST_ENV = \
$(HOST_GO_COMMON_ENV) \
@@ -130,5 +61,3 @@ define GO_BINARIES_INSTALL
endef
$(eval $(host-virtual-package))
-
-include $(sort $(wildcard package/go/*/*.mk))
--
2.45.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 3/3] package/go: add prebuilt Go compiler option
2024-06-10 15:40 [Buildroot] [PATCH 1/3] package/go: expose option to enable via configurator Athaariq Ardhiansyah
2024-06-10 15:40 ` [Buildroot] [PATCH 2/3] package/go: move source-specific to go-src Athaariq Ardhiansyah
@ 2024-06-10 15:40 ` Athaariq Ardhiansyah
2024-09-14 16:31 ` Yann E. MORIN
2024-09-14 16:24 ` [Buildroot] [PATCH 1/3] package/go: expose option to enable via configurator Yann E. MORIN
2 siblings, 1 reply; 6+ messages in thread
From: Athaariq Ardhiansyah @ 2024-06-10 15:40 UTC (permalink / raw)
To: buildroot
Cc: Christian Stewart, Athaariq Ardhiansyah, Thomas Perale,
Thomas Petazzoni, Anisse Astier
According to the TO-DO list, the prebuilt Go compiler is considered as
important to be implemented. So, I'm trying to help you to add the
prebuilt Go compiler support into Buildroot.
Signed-off-by: Athaariq Ardhiansyah <foss@athaariq.my.id>
---
package/go/Config.in.host | 22 +++++++++++++++-
package/go/go-bin/go-bin.hash | 8 ++++++
package/go/go-bin/go-bin.mk | 47 +++++++++++++++++++++++++++++++++++
3 files changed, 76 insertions(+), 1 deletion(-)
create mode 100644 package/go/go-bin/go-bin.hash
create mode 100644 package/go/go-bin/go-bin.mk
diff --git a/package/go/Config.in.host b/package/go/Config.in.host
index 32483871e7..ffd2594a80 100644
--- a/package/go/Config.in.host
+++ b/package/go/Config.in.host
@@ -32,6 +32,16 @@ config BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS
default y
depends on BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE3_ARCH_SUPPORTS
+# Only required for prebuilt Go compiler
+config BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
+ bool
+ default y if (BR2_HOSTARCH = "arm" && BR2_TOOLCHAIN_SUPPORTS_PIE)
+ default y if BR2_HOSTARCH = "aarch64"
+ default y if BR2_HOSTARCH = "powerpc64le"
+ default y if BR2_HOSTARCH = "s390x"
+ default y if BR2_HOSTARCH = "x86"
+ default y if BR2_HOSTARCH = "x86_64"
+
# Go packages should select BR2_PACKAGE_HOST_GO
config BR2_PACKAGE_HOST_GO
bool "host go"
@@ -52,12 +62,22 @@ config BR2_PACKAGE_HOST_GO_SRC
help
This package will build the go compiler for the host.
+config BR2_PACKAGE_HOST_GO_BIN
+ bool "host go (prebuilt)"
+ depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
+ help
+ This package will download the go compiler binary for
+ the host without build process.
+
+comment "host-go-bin doesn't support $(BR2_HOSTARCH) host architecture."
+ depends on !BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
+
endchoice
config BR2_PACKAGE_PROVIDES_HOST_GO
string
- # Default to host-go-src
default "host-go-src" if BR2_PACKAGE_HOST_GO_SRC
+ default "host-go-bin" if BR2_PACKAGE_HOST_GO_BIN
endif
diff --git a/package/go/go-bin/go-bin.hash b/package/go/go-bin/go-bin.hash
new file mode 100644
index 0000000000..52b6c6355f
--- /dev/null
+++ b/package/go/go-bin/go-bin.hash
@@ -0,0 +1,8 @@
+# From https://go.dev/dl
+sha256 fefba30bb0d3dd1909823ee38c9f1930c3dc5337a2ac4701c2277a329a386b57 go1.22.3.linux-386.tar.gz
+sha256 8920ea521bad8f6b7bc377b4824982e011c19af27df88a815e3586ea895f1b36 go1.22.3.linux-amd64.tar.gz
+sha256 6c33e52a5b26e7aa021b94475587fce80043a727a54ceb0eee2f9fc160646434 go1.22.3.linux-arm64.tar.gz
+sha256 f2bacad20cd2b96f23a86d4826525d42b229fd431cc6d0dec61ff3bc448ef46e go1.22.3.linux-armv6l.tar.gz
+sha256 04b7b05283de30dd2da20bf3114b2e22cc727938aed3148babaf35cc951051ac go1.22.3.linux-ppc64le.tar.gz
+sha256 2aba796417a69be5f3ed489076bac79c1c02b36e29422712f9f3bf51da9cf2d4 go1.22.3.linux-s390x.tar.gz
+sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 LICENSE
diff --git a/package/go/go-bin/go-bin.mk b/package/go/go-bin/go-bin.mk
new file mode 100644
index 0000000000..cb320f44fa
--- /dev/null
+++ b/package/go/go-bin/go-bin.mk
@@ -0,0 +1,47 @@
+################################################################################
+#
+# go-bin
+#
+################################################################################
+
+# Translate Buildroot's arch enumeration to Go's arch
+ifeq ($(BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS), y)
+
+ifeq ($(BR2_HOSTARCH), "arm")
+GO_GOARCH = "armv6l"
+else ifeq ($(BR2_HOSTARCH), "aarch64")
+GO_GOARCH = "arm64"
+else ifeq ($(BR2_HOSTARCH), "powerpc64le")
+GO_GOARCH = "ppc64le"
+else ifeq ($(BR2_HOSTARCH), "powerpc64le")
+GO_GOARCH = "ppc64le"
+else ifeq ($(BR2_HOSTARCH), "x86")
+GO_GOARCH = "386"
+else ifeq ($(BR2_HOSTARCH), "x86_64")
+GO_GOARCH = "amd64"
+else
+GO_GOARCH = $(BR2_HOSTARCH)
+endif
+
+endif # BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
+
+GO_BIN_SITE = https://storage.googleapis.com/golang
+GO_BIN_SOURCE = go$(GO_VERSION).linux-$(GO_GOARCH).tar.gz
+
+GO_BIN_LICENSE = BSD-3-Clause
+GO_BIN_LICENSE_FILES = LICENSE
+GO_BIN_CPE_ID_VENDOR = golang
+
+HOST_GO_SRC_PROVIDES = host-go
+
+ifeq ($(BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS),y)
+ifeq ($(BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS), y)
+
+define HOST_GO_BIN_INSTALL_CMDS
+ $(GO_BINARIES_INSTALL)
+endef
+
+endif # BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
+endif # BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
+
+$(eval $(host-generic-package))
--
2.45.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Buildroot] [PATCH 1/3] package/go: expose option to enable via configurator
2024-06-10 15:40 [Buildroot] [PATCH 1/3] package/go: expose option to enable via configurator Athaariq Ardhiansyah
2024-06-10 15:40 ` [Buildroot] [PATCH 2/3] package/go: move source-specific to go-src Athaariq Ardhiansyah
2024-06-10 15:40 ` [Buildroot] [PATCH 3/3] package/go: add prebuilt Go compiler option Athaariq Ardhiansyah
@ 2024-09-14 16:24 ` Yann E. MORIN
2 siblings, 0 replies; 6+ messages in thread
From: Yann E. MORIN @ 2024-09-14 16:24 UTC (permalink / raw)
To: Athaariq Ardhiansyah
Cc: Thomas Perale, Anisse Astier, Christian Stewart, buildroot
Athaariq, All,
On 2024-06-10 22:40 +0700, Athaariq Ardhiansyah spake thusly:
> Just in case you forgot it, I re-exposed the configuration option for
> enabling host-go virtual package before I'm adding host-go-bin
> subpackage.
Thank you for your patch.
I reworded the entire commit log when aplying: we want the commit log to
be in a neutral tense (no "I'), and explain why the patch is needed on
tehcnical grounds. You can check what I wrote:
https://gitlab.com/buildroot.org/buildroot/-/commit/7cac7bc3c98c5008b646d2f33b386a45c0271a34
Thank you!
Regards,
Yann E. MORIN.
> Signed-off-by: Athaariq Ardhiansyah <foss@athaariq.my.id>
> ---
> package/go/Config.in.host | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/package/go/Config.in.host b/package/go/Config.in.host
> index 483393f8e4..32483871e7 100644
> --- a/package/go/Config.in.host
> +++ b/package/go/Config.in.host
> @@ -34,7 +34,7 @@ config BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS
>
> # Go packages should select BR2_PACKAGE_HOST_GO
> config BR2_PACKAGE_HOST_GO
> - bool
> + bool "host go"
> depends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS
>
> if BR2_PACKAGE_HOST_GO
> --
> 2.45.2
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Buildroot] [PATCH 2/3] package/go: move source-specific to go-src
2024-06-10 15:40 ` [Buildroot] [PATCH 2/3] package/go: move source-specific to go-src Athaariq Ardhiansyah
@ 2024-09-14 16:27 ` Yann E. MORIN
0 siblings, 0 replies; 6+ messages in thread
From: Yann E. MORIN @ 2024-09-14 16:27 UTC (permalink / raw)
To: Athaariq Ardhiansyah
Cc: Thomas Perale, Anisse Astier, Christian Stewart, buildroot
Athaariq, All,
On 2024-06-10 22:40 +0700, Athaariq Ardhiansyah spake thusly:
> Some of package/go/go.mk includes source compilation specific
> requirements, which are not effective for prebuilt Go compiler option.
> Therefore, I moved some of source-specific conditionals and variables to
> the host-go-src before adding host-go-bin support.
In fact, a lot of those variables are going to be needed for both cases,
like GO_GOARCH, GO_GOARM, et al, so we do want to keep a songle place
where they aredefined, even if some of them are only used once in the
go-src case.
Regards,
Yann E. MORIN.
> Signed-off-by: Athaariq Ardhiansyah <foss@athaariq.my.id>
> ---
> package/go/go-src/go-src.mk | 68 +++++++++++++++++++++++++++++++++++
> package/go/go.mk | 71 -------------------------------------
> 2 files changed, 68 insertions(+), 71 deletions(-)
>
> diff --git a/package/go/go-src/go-src.mk b/package/go/go-src/go-src.mk
> index 1e061e20bc..a0c903282f 100644
> --- a/package/go/go-src/go-src.mk
> +++ b/package/go/go-src/go-src.mk
> @@ -16,6 +16,67 @@ HOST_GO_SRC_DEPENDENCIES = host-go-bootstrap-stage3
>
> ifeq ($(BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS),y)
>
> +ifeq ($(BR2_arm),y)
> +GO_GOARCH = arm
> +ifeq ($(BR2_ARM_CPU_ARMV5),y)
> +GO_GOARM = 5
> +else ifeq ($(BR2_ARM_CPU_ARMV6),y)
> +GO_GOARM = 6
> +else ifeq ($(BR2_ARM_CPU_ARMV7A),y)
> +GO_GOARM = 7
> +else ifeq ($(BR2_ARM_CPU_ARMV8A),y)
> +# Go doesn't support 32-bit GOARM=8 (https://github.com/golang/go/issues/29373)
> +# but can still benefit from armv7 optimisations
> +GO_GOARM = 7
> +endif
> +else ifeq ($(BR2_aarch64),y)
> +GO_GOARCH = arm64
> +else ifeq ($(BR2_i386),y)
> +GO_GOARCH = 386
> +# i386: use softfloat if no SSE2: https://golang.org/doc/go1.16#386
> +ifneq ($(BR2_X86_CPU_HAS_SSE2),y)
> +GO_GO386 = softfloat
> +endif
> +else ifeq ($(BR2_x86_64),y)
> +GO_GOARCH = amd64
> +else ifeq ($(BR2_powerpc64),y)
> +GO_GOARCH = ppc64
> +else ifeq ($(BR2_powerpc64le),y)
> +GO_GOARCH = ppc64le
> +else ifeq ($(BR2_mips64),y)
> +GO_GOARCH = mips64
> +else ifeq ($(BR2_mips64el),y)
> +GO_GOARCH = mips64le
> +else ifeq ($(BR2_riscv),y)
> +GO_GOARCH = riscv64
> +else ifeq ($(BR2_s390x),y)
> +GO_GOARCH = s390x
> +endif
> +
> +# For the convienience of target packages.
> +HOST_GO_TOOLDIR = $(HOST_GO_ROOT)/pkg/tool/linux_$(GO_GOARCH)
> +HOST_GO_TARGET_ENV = \
> + $(HOST_GO_COMMON_ENV) \
> + GOOS="linux" \
> + GOARCH=$(GO_GOARCH) \
> + CC="$(TARGET_CC)" \
> + CXX="$(TARGET_CXX)" \
> + CGO_CFLAGS="$(TARGET_CFLAGS)" \
> + CGO_CXXFLAGS="$(TARGET_CXXFLAGS)" \
> + CGO_LDFLAGS="$(TARGET_LDFLAGS)" \
> + GOTOOLDIR="$(HOST_GO_TOOLDIR)"
> +
> +# The go compiler's cgo support uses threads. If BR2_TOOLCHAIN_HAS_THREADS is
> +# set, build in cgo support for any go programs that may need it. Note that
> +# any target package needing cgo support must include
> +# 'depends on BR2_TOOLCHAIN_HAS_THREADS' in its config file.
> +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
> +HOST_GO_DEPENDENCIES += toolchain
> +HOST_GO_CGO_ENABLED = 1
> +else
> +HOST_GO_CGO_ENABLED = 0
> +endif
> +
> HOST_GO_SRC_CROSS_ENV = \
> CC_FOR_TARGET="$(TARGET_CC)" \
> CXX_FOR_TARGET="$(TARGET_CXX)" \
> @@ -25,6 +86,11 @@ HOST_GO_SRC_CROSS_ENV = \
> $(if $(GO_GOARM),GOARM=$(GO_GOARM)) \
> GO_ASSUME_CROSSCOMPILING=1
>
> +else # !BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
> +# host-go can still be used to build packages for the host. No need to set all
> +# the arch stuff since we will not be cross-compiling.
> +HOST_GO_CGO_ENABLED = 1
> +
> endif
>
> # The go build system is not compatible with ccache, so use
> @@ -52,3 +118,5 @@ define HOST_GO_SRC_INSTALL_CMDS
> endef
>
> $(eval $(host-generic-package))
> +
> +include $(sort $(wildcard package/go/go-bootstrap-*/*.mk))
> diff --git a/package/go/go.mk b/package/go/go.mk
> index dfcb633aa7..489d749d46 100644
> --- a/package/go/go.mk
> +++ b/package/go/go.mk
> @@ -26,75 +26,6 @@ HOST_GO_COMMON_ENV = \
> GOBIN= \
> CGO_ENABLED=$(HOST_GO_CGO_ENABLED)
>
> -ifeq ($(BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS),y)
> -
> -ifeq ($(BR2_arm),y)
> -GO_GOARCH = arm
> -ifeq ($(BR2_ARM_CPU_ARMV5),y)
> -GO_GOARM = 5
> -else ifeq ($(BR2_ARM_CPU_ARMV6),y)
> -GO_GOARM = 6
> -else ifeq ($(BR2_ARM_CPU_ARMV7A),y)
> -GO_GOARM = 7
> -else ifeq ($(BR2_ARM_CPU_ARMV8A),y)
> -# Go doesn't support 32-bit GOARM=8 (https://github.com/golang/go/issues/29373)
> -# but can still benefit from armv7 optimisations
> -GO_GOARM = 7
> -endif
> -else ifeq ($(BR2_aarch64),y)
> -GO_GOARCH = arm64
> -else ifeq ($(BR2_i386),y)
> -GO_GOARCH = 386
> -# i386: use softfloat if no SSE2: https://golang.org/doc/go1.16#386
> -ifneq ($(BR2_X86_CPU_HAS_SSE2),y)
> -GO_GO386 = softfloat
> -endif
> -else ifeq ($(BR2_x86_64),y)
> -GO_GOARCH = amd64
> -else ifeq ($(BR2_powerpc64),y)
> -GO_GOARCH = ppc64
> -else ifeq ($(BR2_powerpc64le),y)
> -GO_GOARCH = ppc64le
> -else ifeq ($(BR2_mips64),y)
> -GO_GOARCH = mips64
> -else ifeq ($(BR2_mips64el),y)
> -GO_GOARCH = mips64le
> -else ifeq ($(BR2_riscv),y)
> -GO_GOARCH = riscv64
> -else ifeq ($(BR2_s390x),y)
> -GO_GOARCH = s390x
> -endif
> -
> -# For the convienience of target packages.
> -HOST_GO_TOOLDIR = $(HOST_GO_ROOT)/pkg/tool/linux_$(GO_GOARCH)
> -HOST_GO_TARGET_ENV = \
> - $(HOST_GO_COMMON_ENV) \
> - GOOS="linux" \
> - GOARCH=$(GO_GOARCH) \
> - CC="$(TARGET_CC)" \
> - CXX="$(TARGET_CXX)" \
> - CGO_CFLAGS="$(TARGET_CFLAGS)" \
> - CGO_CXXFLAGS="$(TARGET_CXXFLAGS)" \
> - CGO_LDFLAGS="$(TARGET_LDFLAGS)" \
> - GOTOOLDIR="$(HOST_GO_TOOLDIR)"
> -
> -# The go compiler's cgo support uses threads. If BR2_TOOLCHAIN_HAS_THREADS is
> -# set, build in cgo support for any go programs that may need it. Note that
> -# any target package needing cgo support must include
> -# 'depends on BR2_TOOLCHAIN_HAS_THREADS' in its config file.
> -ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
> -HOST_GO_DEPENDENCIES += toolchain
> -HOST_GO_CGO_ENABLED = 1
> -else
> -HOST_GO_CGO_ENABLED = 0
> -endif
> -
> -else # !BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
> -# host-go can still be used to build packages for the host. No need to set all
> -# the arch stuff since we will not be cross-compiling.
> -HOST_GO_CGO_ENABLED = 1
> -endif # BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
> -
> # For the convenience of host golang packages
> HOST_GO_HOST_ENV = \
> $(HOST_GO_COMMON_ENV) \
> @@ -130,5 +61,3 @@ define GO_BINARIES_INSTALL
> endef
>
> $(eval $(host-virtual-package))
> -
> -include $(sort $(wildcard package/go/*/*.mk))
> --
> 2.45.2
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Buildroot] [PATCH 3/3] package/go: add prebuilt Go compiler option
2024-06-10 15:40 ` [Buildroot] [PATCH 3/3] package/go: add prebuilt Go compiler option Athaariq Ardhiansyah
@ 2024-09-14 16:31 ` Yann E. MORIN
0 siblings, 0 replies; 6+ messages in thread
From: Yann E. MORIN @ 2024-09-14 16:31 UTC (permalink / raw)
To: Athaariq Ardhiansyah
Cc: Thomas Petazzoni, Anisse Astier, Thomas Perale, Christian Stewart,
buildroot
Athaariq, All,
On 2024-06-10 22:40 +0700, Athaariq Ardhiansyah spake thusly:
> According to the TO-DO list, the prebuilt Go compiler is considered as
> important to be implemented. So, I'm trying to help you to add the
> prebuilt Go compiler support into Buildroot.
>
> Signed-off-by: Athaariq Ardhiansyah <foss@athaariq.my.id>
Thank you for your proposal. However, Thomas Perale had been working on
his series and just respun a new iterartion of their patch, that is
musch closer to a solution we were expecting.
Thank you for the effort nonetheless, it is still much appreciated!
Maybe there are a few other, maybe-simpler topics you can have a look
into.
Thanks!
Regards,
Yann E. MORIN.
> ---
> package/go/Config.in.host | 22 +++++++++++++++-
> package/go/go-bin/go-bin.hash | 8 ++++++
> package/go/go-bin/go-bin.mk | 47 +++++++++++++++++++++++++++++++++++
> 3 files changed, 76 insertions(+), 1 deletion(-)
> create mode 100644 package/go/go-bin/go-bin.hash
> create mode 100644 package/go/go-bin/go-bin.mk
>
> diff --git a/package/go/Config.in.host b/package/go/Config.in.host
> index 32483871e7..ffd2594a80 100644
> --- a/package/go/Config.in.host
> +++ b/package/go/Config.in.host
> @@ -32,6 +32,16 @@ config BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS
> default y
> depends on BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE3_ARCH_SUPPORTS
>
> +# Only required for prebuilt Go compiler
> +config BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
> + bool
> + default y if (BR2_HOSTARCH = "arm" && BR2_TOOLCHAIN_SUPPORTS_PIE)
> + default y if BR2_HOSTARCH = "aarch64"
> + default y if BR2_HOSTARCH = "powerpc64le"
> + default y if BR2_HOSTARCH = "s390x"
> + default y if BR2_HOSTARCH = "x86"
> + default y if BR2_HOSTARCH = "x86_64"
> +
> # Go packages should select BR2_PACKAGE_HOST_GO
> config BR2_PACKAGE_HOST_GO
> bool "host go"
> @@ -52,12 +62,22 @@ config BR2_PACKAGE_HOST_GO_SRC
> help
> This package will build the go compiler for the host.
>
> +config BR2_PACKAGE_HOST_GO_BIN
> + bool "host go (prebuilt)"
> + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
> + help
> + This package will download the go compiler binary for
> + the host without build process.
> +
> +comment "host-go-bin doesn't support $(BR2_HOSTARCH) host architecture."
> + depends on !BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
> +
> endchoice
>
> config BR2_PACKAGE_PROVIDES_HOST_GO
> string
> - # Default to host-go-src
> default "host-go-src" if BR2_PACKAGE_HOST_GO_SRC
> + default "host-go-bin" if BR2_PACKAGE_HOST_GO_BIN
>
> endif
>
> diff --git a/package/go/go-bin/go-bin.hash b/package/go/go-bin/go-bin.hash
> new file mode 100644
> index 0000000000..52b6c6355f
> --- /dev/null
> +++ b/package/go/go-bin/go-bin.hash
> @@ -0,0 +1,8 @@
> +# From https://go.dev/dl
> +sha256 fefba30bb0d3dd1909823ee38c9f1930c3dc5337a2ac4701c2277a329a386b57 go1.22.3.linux-386.tar.gz
> +sha256 8920ea521bad8f6b7bc377b4824982e011c19af27df88a815e3586ea895f1b36 go1.22.3.linux-amd64.tar.gz
> +sha256 6c33e52a5b26e7aa021b94475587fce80043a727a54ceb0eee2f9fc160646434 go1.22.3.linux-arm64.tar.gz
> +sha256 f2bacad20cd2b96f23a86d4826525d42b229fd431cc6d0dec61ff3bc448ef46e go1.22.3.linux-armv6l.tar.gz
> +sha256 04b7b05283de30dd2da20bf3114b2e22cc727938aed3148babaf35cc951051ac go1.22.3.linux-ppc64le.tar.gz
> +sha256 2aba796417a69be5f3ed489076bac79c1c02b36e29422712f9f3bf51da9cf2d4 go1.22.3.linux-s390x.tar.gz
> +sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 LICENSE
> diff --git a/package/go/go-bin/go-bin.mk b/package/go/go-bin/go-bin.mk
> new file mode 100644
> index 0000000000..cb320f44fa
> --- /dev/null
> +++ b/package/go/go-bin/go-bin.mk
> @@ -0,0 +1,47 @@
> +################################################################################
> +#
> +# go-bin
> +#
> +################################################################################
> +
> +# Translate Buildroot's arch enumeration to Go's arch
> +ifeq ($(BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS), y)
> +
> +ifeq ($(BR2_HOSTARCH), "arm")
> +GO_GOARCH = "armv6l"
> +else ifeq ($(BR2_HOSTARCH), "aarch64")
> +GO_GOARCH = "arm64"
> +else ifeq ($(BR2_HOSTARCH), "powerpc64le")
> +GO_GOARCH = "ppc64le"
> +else ifeq ($(BR2_HOSTARCH), "powerpc64le")
> +GO_GOARCH = "ppc64le"
> +else ifeq ($(BR2_HOSTARCH), "x86")
> +GO_GOARCH = "386"
> +else ifeq ($(BR2_HOSTARCH), "x86_64")
> +GO_GOARCH = "amd64"
> +else
> +GO_GOARCH = $(BR2_HOSTARCH)
> +endif
> +
> +endif # BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
> +
> +GO_BIN_SITE = https://storage.googleapis.com/golang
> +GO_BIN_SOURCE = go$(GO_VERSION).linux-$(GO_GOARCH).tar.gz
> +
> +GO_BIN_LICENSE = BSD-3-Clause
> +GO_BIN_LICENSE_FILES = LICENSE
> +GO_BIN_CPE_ID_VENDOR = golang
> +
> +HOST_GO_SRC_PROVIDES = host-go
> +
> +ifeq ($(BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS),y)
> +ifeq ($(BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS), y)
> +
> +define HOST_GO_BIN_INSTALL_CMDS
> + $(GO_BINARIES_INSTALL)
> +endef
> +
> +endif # BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
> +endif # BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
> +
> +$(eval $(host-generic-package))
> --
> 2.45.2
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-09-14 16:31 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-10 15:40 [Buildroot] [PATCH 1/3] package/go: expose option to enable via configurator Athaariq Ardhiansyah
2024-06-10 15:40 ` [Buildroot] [PATCH 2/3] package/go: move source-specific to go-src Athaariq Ardhiansyah
2024-09-14 16:27 ` Yann E. MORIN
2024-06-10 15:40 ` [Buildroot] [PATCH 3/3] package/go: add prebuilt Go compiler option Athaariq Ardhiansyah
2024-09-14 16:31 ` Yann E. MORIN
2024-09-14 16:24 ` [Buildroot] [PATCH 1/3] package/go: expose option to enable via configurator Yann E. MORIN
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.