From a80af7e44347c50c745967c17f20c89385f1ea08 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Tue, 15 Aug 2023 11:57:28 +0800 Subject: [PATCH] golang: Update to 1.21.0, remove patch Upstream has updated the Go compiler to not use gold when building for arm, and is waiting for a fix to binutils (released in 2.41) before doing the same for aarch64.[1] Based on the above, it does not appear that https://github.com/golang/go/pull/49748 will be merged. This removes the patch from that pull request. [1]: https://github.com/golang/go/issues/22040 Signed-off-by: Jeffery To --- lang/golang/golang-compiler.mk | 3 +- lang/golang/golang-package.mk | 3 +- lang/golang/golang-values.mk | 3 +- lang/golang/golang/Makefile | 9 ++-- ...-ARM-ARM64-only-if-gold-is-available.patch | 48 ------------------- 5 files changed, 11 insertions(+), 55 deletions(-) delete mode 100644 lang/golang/golang/patches/001-cmd-link-use-gold-on-ARM-ARM64-only-if-gold-is-available.patch diff --git a/lang/golang/golang-compiler.mk b/lang/golang/golang-compiler.mk index 144f2a4af7..50cc449051 100644 --- a/lang/golang/golang-compiler.mk +++ b/lang/golang/golang-compiler.mk @@ -60,9 +60,10 @@ define GoCompiler/Default/Install/Bin $(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),api) + $(INSTALL_DATA) -p "$(1)/go.env" "$(2)/lib/go-$(3)/" $(INSTALL_DATA) -p "$(1)/VERSION" "$(2)/lib/go-$(3)/" - for file in AUTHORS CONTRIBUTING.md CONTRIBUTORS LICENSE PATENTS README.md SECURITY.md; do \ + for file in CONTRIBUTING.md LICENSE PATENTS README.md SECURITY.md; do \ if [ -f "$(1)/$$$$file" ]; then \ $(INSTALL_DATA) -p "$(1)/$$$$file" "$(2)/share/go-$(3)/" ; \ fi ; \ diff --git a/lang/golang/golang-package.mk b/lang/golang/golang-package.mk index 4f164c4c12..cc00505368 100644 --- a/lang/golang/golang-package.mk +++ b/lang/golang/golang-package.mk @@ -215,7 +215,8 @@ GO_PKG_BUILD_VARS= \ GOPATH="$(GO_PKG_BUILD_DIR)" \ GOCACHE="$(GO_BUILD_CACHE_DIR)" \ GOMODCACHE="$(GO_MOD_CACHE_DIR)" \ - GOENV=off + GOENV=off \ + GOTOOLCHAIN=local GO_PKG_VARS= \ $(GO_PKG_TARGET_VARS) \ diff --git a/lang/golang/golang-values.mk b/lang/golang/golang-values.mk index 469629b7e3..1584d22fc8 100644 --- a/lang/golang/golang-values.mk +++ b/lang/golang/golang-values.mk @@ -29,6 +29,7 @@ unexport \ GOOS \ GOPATH \ GOROOT \ + GOTOOLCHAIN \ GOTMPDIR \ GOWORK # Unmodified: @@ -219,7 +220,7 @@ GO_PIE_SUPPORTED_OS_ARCH:= \ \ aix_ppc64 \ \ - linux_ppc64le linux_riscv64 linux_s390x + linux_loong64 linux_ppc64le linux_riscv64 linux_s390x # From https://go.dev/src/cmd/go/internal/work/init.go go_pie_install_suffix=$(if $(filter $(1),aix_ppc64 windows_386 windows_amd64 windows_arm windows_arm64),,shared) diff --git a/lang/golang/golang/Makefile b/lang/golang/golang/Makefile index 0d89cea902..1022a64567 100644 --- a/lang/golang/golang/Makefile +++ b/lang/golang/golang/Makefile @@ -7,8 +7,8 @@ include $(TOPDIR)/rules.mk -GO_VERSION_MAJOR_MINOR:=1.20 -GO_VERSION_PATCH:=7 +GO_VERSION_MAJOR_MINOR:=1.21 +GO_VERSION_PATCH:=0 PKG_NAME:=golang PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH)) @@ -20,7 +20,7 @@ GO_SOURCE_URLS:=https://dl.google.com/go/ \ PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz PKG_SOURCE_URL:=$(GO_SOURCE_URLS) -PKG_HASH:=2c5ee9c9ec1e733b0dbbc2bdfed3f62306e51d8172bf38f4f4e542b27520f597 +PKG_HASH:=818d46ede85682dd551ad378ef37a4d247006f12ec59b5b755601d2ce114369a PKG_MAINTAINER:=Jeffery To PKG_LICENSE:=BSD-3-Clause @@ -62,6 +62,7 @@ HOST_GO_VALID_OS_ARCH:= \ \ aix_ppc64 \ js_wasm \ + wasip1_wasm \ \ freebsd_riscv64 \ \ @@ -296,7 +297,7 @@ $(eval $(call GoCompiler/AddProfile,Package,$(PKG_BUILD_DIR),$(PKG_GO_PREFIX),$( PKG_GO_ZBOOTSTRAP_MODS:= \ s/defaultGO386 = `[^`]*`/defaultGO386 = `$(or $(GO_386),sse2)`/; \ s/defaultGOAMD64 = `[^`]*`/defaultGOAMD64 = `$(or $(GO_AMD64),v1)`/; \ - s/defaultGOARM = `[^`]*`/defaultGOARM = `$(or $(GO_ARM),5)`/; \ + s/defaultGOARM = `[^`]*`/defaultGOARM = `$(or $(GO_ARM),7)`/; \ s/defaultGOMIPS = `[^`]*`/defaultGOMIPS = `$(or $(GO_MIPS),hardfloat)`/; \ s/defaultGOMIPS64 = `[^`]*`/defaultGOMIPS64 = `$(or $(GO_MIPS64),hardfloat)`/; \ s/defaultGOPPC64 = `[^`]*`/defaultGOPPC64 = `$(or $(GO_PPC64),power8)`/; diff --git a/lang/golang/golang/patches/001-cmd-link-use-gold-on-ARM-ARM64-only-if-gold-is-available.patch b/lang/golang/golang/patches/001-cmd-link-use-gold-on-ARM-ARM64-only-if-gold-is-available.patch deleted file mode 100644 index aecf5309f7..0000000000 --- a/lang/golang/golang/patches/001-cmd-link-use-gold-on-ARM-ARM64-only-if-gold-is-available.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 5ccf9f47bf4f5ba53e0ab7338a7fd4626714cfb2 Mon Sep 17 00:00:00 2001 -From: Jeffery To -Date: Tue, 23 Nov 2021 15:05:37 +0800 -Subject: [PATCH] cmd/link: use gold on ARM/ARM64 only if gold is available - -COPY relocation handling on ARM/ARM64 has been fixed in recent versions -of the GNU linker. This switches to gold only if gold is available. - -Fixes #22040. ---- - src/cmd/link/internal/ld/lib.go | 19 +++++++------------ - 1 file changed, 7 insertions(+), 12 deletions(-) - ---- a/src/cmd/link/internal/ld/lib.go -+++ b/src/cmd/link/internal/ld/lib.go -@@ -1548,25 +1548,20 @@ func (ctxt *Link) hostlink() { - } - - if ctxt.Arch.InFamily(sys.ARM, sys.ARM64) && buildcfg.GOOS == "linux" { -- // On ARM, the GNU linker will generate COPY relocations -- // even with -znocopyreloc set. -+ // On ARM, older versions of the GNU linker will generate -+ // COPY relocations even with -znocopyreloc set. - // https://sourceware.org/bugzilla/show_bug.cgi?id=19962 - // -- // On ARM64, the GNU linker will fail instead of -- // generating COPY relocations. -+ // On ARM64, older versions of the GNU linker will fail -+ // instead of generating COPY relocations. - // -- // In both cases, switch to gold. -- altLinker = "gold" -- -- // If gold is not installed, gcc will silently switch -- // back to ld.bfd. So we parse the version information -- // and provide a useful error if gold is missing. -+ // In both cases, switch to gold if gold is available. - name, args := flagExtld[0], flagExtld[1:] - args = append(args, "-fuse-ld=gold", "-Wl,--version") - cmd := exec.Command(name, args...) - if out, err := cmd.CombinedOutput(); err == nil { -- if !bytes.Contains(out, []byte("GNU gold")) { -- log.Fatalf("ARM external linker must be gold (issue #15696), but is not: %s", out) -+ if bytes.Contains(out, []byte("GNU gold")) { -+ altLinker = "gold" - } - } - } -- 2.30.2