git: c70b0d4db4d2 - main - lang/go124: Add port

From: Adam Weinberger <adamw_at_FreeBSD.org>
Date: Thu, 06 Mar 2025 16:59:37 UTC
The branch main has been updated by adamw:

URL: https://cgit.FreeBSD.org/ports/commit/?id=c70b0d4db4d2f8ad4f6cdf5d5775ede4c3166220

commit c70b0d4db4d2f8ad4f6cdf5d5775ede4c3166220
Author:     Denis Shaposhnikov <dsh@bamus.cz>
AuthorDate: 2025-03-06 16:57:55 +0000
Commit:     Adam Weinberger <adamw@FreeBSD.org>
CommitDate: 2025-03-06 16:59:19 +0000

    lang/go124: Add port
    
    PR:             284764
---
 Mk/Uses/go.mk                                      |  2 +-
 Mk/bsd.default-versions.mk                         |  2 +-
 lang/Makefile                                      |  1 +
 lang/go124/Makefile                                | 29 ++++++++++++++++++++++
 lang/go124/distinfo                                | 13 ++++++++++
 lang/go124/files/patch-src_cmd_dist_build.go       | 23 +++++++++++++++++
 .../patch-src_cmd_go_internal_modload_vendor.go    | 11 ++++++++
 7 files changed, 79 insertions(+), 2 deletions(-)

diff --git a/Mk/Uses/go.mk b/Mk/Uses/go.mk
index d7e932daee73..421fd310847f 100644
--- a/Mk/Uses/go.mk
+++ b/Mk/Uses/go.mk
@@ -70,7 +70,7 @@ _INCLUDE_USES_GO_MK=	yes
 
 # When adding a version, please keep the comment in
 # Mk/bsd.default-versions.mk in sync.
-GO_VALID_VERSIONS=	1.20 1.21 1.22 1.23 1.24-devel
+GO_VALID_VERSIONS=	1.20 1.21 1.22 1.23 1.24 1.25-devel
 
 # Check arguments sanity
 .  if !empty(go_ARGS:N[1-9].[0-9][0-9]:N*-devel:Nmodules:Nno_targets:Nrun)
diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
index ce77f2597d4d..3272419f22e5 100644
--- a/Mk/bsd.default-versions.mk
+++ b/Mk/bsd.default-versions.mk
@@ -63,7 +63,7 @@ GCC_DEFAULT?=		13
 GHOSTSCRIPT_DEFAULT?=	10
 # Possible values: mesa-libs, mesa-devel
 GL_DEFAULT?=		mesa-libs
-# Possible values: 1.20, 1.21, 1.22, 1.23, 1.24-devel
+# Possible values: 1.20, 1.21, 1.22, 1.23, 1.24, 1.25-devel
 GO_DEFAULT?=		1.21
 # Possible values: 1.8, 2.2, 3.0
 GUILE_DEFAULT?=		2.2
diff --git a/lang/Makefile b/lang/Makefile
index 989ccb51f2d8..c1c3e20f5e8f 100644
--- a/lang/Makefile
+++ b/lang/Makefile
@@ -124,6 +124,7 @@
     SUBDIR += go121
     SUBDIR += go122
     SUBDIR += go123
+    SUBDIR += go124
     SUBDIR += gomacro
     SUBDIR += gprolog
     SUBDIR += gptscript
diff --git a/lang/go124/Makefile b/lang/go124/Makefile
new file mode 100644
index 000000000000..451733d48ec8
--- /dev/null
+++ b/lang/go124/Makefile
@@ -0,0 +1,29 @@
+DISTVERSION=	1.24.1
+# Always set PORTREVISION explicitly as otherwise they are inherited from lang/go-devel
+PORTREVISION=	0
+MASTER_SITES=	https://golang.org/dl/
+DISTFILES=	go${DISTVERSION}.src.tar.gz \
+		go1.23.7.${OPSYS:tl}-${GOARCH_${ARCH}}.tar.gz
+
+# Avoid conflicting patch files
+PATCHFILES=
+PATCHDIR=	${.CURDIR}/files
+
+COMMENT=	Go programming language
+
+MASTERDIR=	${.CURDIR}/../go-devel
+WRKSRC=		${WRKDIR}/go
+DISTINFO_FILE=	${.CURDIR}/distinfo
+EXTRACT_ONLY=	${DISTFILES:[1]}
+
+SHEBANG_FILES=	lib/wasm/go_js_wasm_exec lib/wasm/go_wasip1_wasm_exec
+
+BOOTSTRAP_WRKSRC=	${WRKDIR}/go-${OPSYS:tl}-${GOARCH_${ARCH}}${GOARM_${ARCH}}-bootstrap
+
+pre-extract:
+	${MKDIR} ${BOOTSTRAP_WRKSRC}
+	cd ${BOOTSTRAP_WRKSRC} && ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} \
+		${DISTDIR}/${DIST_SUBDIR}/${DISTFILES:[2]} \
+		--strip-components 1 ${EXTRACT_AFTER_ARGS}
+
+.include "${MASTERDIR}/Makefile"
diff --git a/lang/go124/distinfo b/lang/go124/distinfo
new file mode 100644
index 000000000000..e925427e56c7
--- /dev/null
+++ b/lang/go124/distinfo
@@ -0,0 +1,13 @@
+TIMESTAMP = 1741278429
+SHA256 (go1.24.1.src.tar.gz) = 8244ebf46c65607db10222b5806aeb31c1fcf8979c1b6b12f60c677e9a3c0656
+SIZE (go1.24.1.src.tar.gz) = 30777528
+SHA256 (go1.23.7.freebsd-arm64.tar.gz) = 2b51c940898fad6708609495b9a27b5869cf5195381fc4a31a013006aa4eb156
+SIZE (go1.23.7.freebsd-arm64.tar.gz) = 69903435
+SHA256 (go1.23.7.freebsd-amd64.tar.gz) = c0e7a5ff1875eb79d7c2acfa1616718ad892c0b2637d56594fdc3332e313efd4
+SIZE (go1.23.7.freebsd-amd64.tar.gz) = 73332706
+SHA256 (go1.23.7.freebsd-arm.tar.gz) = 311e69d052bb732bca74cb64cba2d7d648e9af7a5c5d0c5e84a11efb77d287d0
+SIZE (go1.23.7.freebsd-arm.tar.gz) = 71226717
+SHA256 (go1.23.7.freebsd-386.tar.gz) = 4bc9c3583236b13a9f1ec22c133fe4436714d56ebc0ee96733d4f6f0eb3c7ae1
+SIZE (go1.23.7.freebsd-386.tar.gz) = 71152629
+SHA256 (go1.23.7.freebsd-riscv64.tar.gz) = ab00bd1b61491be2d60ff41a88b3e59d812236484eaf6232513985a1287693ba
+SIZE (go1.23.7.freebsd-riscv64.tar.gz) = 70515235
diff --git a/lang/go124/files/patch-src_cmd_dist_build.go b/lang/go124/files/patch-src_cmd_dist_build.go
new file mode 100644
index 000000000000..59fd0c6539f8
--- /dev/null
+++ b/lang/go124/files/patch-src_cmd_dist_build.go
@@ -0,0 +1,23 @@
+--- src/cmd/dist/build.go.orig	2024-03-29 15:27:02 UTC
++++ src/cmd/dist/build.go
+@@ -891,6 +891,20 @@ func runInstall(pkg string, ch chan struct{}) {
+ 			asmArgs = append(asmArgs, "-D", "GOPPC64_power8")
+ 		}
+ 	}
++	if goarch == "arm" {
++		// Define GOARM_value from goarm, which can be either a version
++		// like "6", or a version and a FP mode, like "7,hardfloat".
++		switch {
++		case strings.Contains(goarm, "7"):
++			asmArgs = append(asmArgs, "-D", "GOARM_7")
++			fallthrough
++		case strings.Contains(goarm, "6"):
++			asmArgs = append(asmArgs, "-D", "GOARM_6")
++			fallthrough
++		default:
++			asmArgs = append(asmArgs, "-D", "GOARM_5")
++		}
++	}
+ 	goasmh := pathf("%s/go_asm.h", workdir)
+ 
+ 	// Collect symabis from assembly code.
diff --git a/lang/go124/files/patch-src_cmd_go_internal_modload_vendor.go b/lang/go124/files/patch-src_cmd_go_internal_modload_vendor.go
new file mode 100644
index 000000000000..ba3f97226624
--- /dev/null
+++ b/lang/go124/files/patch-src_cmd_go_internal_modload_vendor.go
@@ -0,0 +1,11 @@
+--- src/cmd/go/internal/modload/vendor.go.orig	2024-02-02 18:09:55 UTC
++++ src/cmd/go/internal/modload/vendor.go
+@@ -159,7 +159,7 @@ func checkVendorConsistency(indexes []*modFileIndex, m
+ 			panic(fmt.Errorf("not in workspace mode but number of indexes is %v, not 1", len(indexes)))
+ 		}
+ 		index := indexes[0]
+-		if gover.Compare(index.goVersion, "1.14") < 0 {
++		if gover.Compare(index.goVersion, "1.14") < 0 || os.Getenv("GO_NO_VENDOR_CHECKS") == "1" {
+ 			// Go versions before 1.14 did not include enough information in
+ 			// vendor/modules.txt to check for consistency.
+ 			// If we know that we're on an earlier version, relax the consistency check.