summaryrefslogtreecommitdiff
path: root/devel/go/MAKEPKG
diff options
context:
space:
mode:
authorrawnix ports <ports@rawnix.org>2026-09-26 18:19:05 +0000
committerrawnix ports <ports@rawnix.org>2026-09-26 18:19:05 +0000
commitc82e88dd00d1b0b7fcfb4e5628d99611388cef6f (patch)
tree56d864b5a5c6c145edd96178ae219a8f90e191a6 /devel/go/MAKEPKG
downloadports-c82e88dd00d1b0b7fcfb4e5628d99611388cef6f.tar.gz
sync 2026-09-26 18:19 UTC
1672 files changed, 151396 insertions(+)
Diffstat (limited to 'devel/go/MAKEPKG')
-rw-r--r--devel/go/MAKEPKG148
1 files changed, 148 insertions, 0 deletions
diff --git a/devel/go/MAKEPKG b/devel/go/MAKEPKG
new file mode 100644
index 0000000..8df72c0
--- /dev/null
+++ b/devel/go/MAKEPKG
@@ -0,0 +1,148 @@
+#!/bin/mkpkg
+# description: The Go programming language compiler and tools
+# url: https://go.dev/
+
+# Note: Bootstrap binary (glibc-linked) is used only during build.
+# The final toolchain is pure Go — static binaries, no libc dependency.
+# linux/amd64 only — no cross-compilation support.
+
+name=go
+version=1.27.1
+release=1
+_bootver=1.26.6
+depends=()
+makedeps=()
+source=(
+ https://dl.google.com/go/go$version.src.tar.gz
+ https://dl.google.com/go/go$_bootver.linux-amd64.tar.gz
+)
+renames=(
+ $name-$version.src.tar.gz
+ $name-boot-$_bootver.tar.gz
+)
+sha256sums=(
+ "4e408abae126d916b6164627193f2c54f0e3ca1312d693b86db45f862ab238b1"
+ "708effb774be8237570d0add163225abbdfaf4fca28b2611df167beba4feef89"
+)
+
+extract() {
+ tar -xf $PKGMK_SOURCE_DIR/$name-$version.src.tar.gz -C $SRC
+ mkdir -p $SRC/go-boot
+ tar -xf $PKGMK_SOURCE_DIR/$name-boot-$_bootver.tar.gz -C $SRC/go-boot --strip-components=1
+}
+
+build() {
+ export GOROOT_BOOTSTRAP=$SRC/go-boot
+ export GOROOT_FINAL=/usr/lib/go
+ export GOROOT=$SRC/go
+ export GOBIN=$GOROOT/bin
+ export GOPATH=$SRC/.go
+
+ export CGO_ENABLED=0
+ export GOOS=linux
+ export GOARCH=amd64
+
+ cd $SRC/go/src
+ bash make.bash -v
+
+ # Install GOROOT
+ install -d $PKG/usr/lib/go
+
+ # Binaries
+ install -d $PKG/usr/lib/go/bin
+ install -m755 $SRC/go/bin/go $PKG/usr/lib/go/bin/
+ install -m755 $SRC/go/bin/gofmt $PKG/usr/lib/go/bin/
+
+ # Symlinks
+ install -d $PKG/usr/bin
+ ln -s /usr/lib/go/bin/go $PKG/usr/bin/go
+ ln -s /usr/lib/go/bin/gofmt $PKG/usr/bin/gofmt
+
+ # VERSION file — Go needs this to know its own version
+ cp $SRC/go/VERSION $PKG/usr/lib/go/
+
+ # go.env
+ install -m644 $SRC/go/go.env $PKG/usr/lib/go/
+
+ # Toolchain binaries (compiler, linker, assembler, etc.)
+ install -d $PKG/usr/lib/go/pkg/tool/linux_amd64
+ cp -a $SRC/go/pkg/tool/linux_amd64/* $PKG/usr/lib/go/pkg/tool/linux_amd64/
+ rm -f $PKG/usr/lib/go/pkg/tool/linux_amd64/api
+
+ # Include headers (amd64 only)
+ install -d $PKG/usr/lib/go/pkg/include
+ install -m644 $SRC/go/pkg/include/asm_amd64.h $PKG/usr/lib/go/pkg/include/
+ install -m644 $SRC/go/pkg/include/funcdata.h $PKG/usr/lib/go/pkg/include/
+ install -m644 $SRC/go/pkg/include/textflag.h $PKG/usr/lib/go/pkg/include/
+
+ # Standard library source (required — Go compiles stdlib on demand)
+ cp -a $SRC/go/src $PKG/usr/lib/go/
+
+ # Timezone data (needed at runtime)
+ install -d $PKG/usr/lib/go/lib/time
+ cp $SRC/go/lib/time/zoneinfo.zip $PKG/usr/lib/go/lib/time/
+
+ # --- Strip down for pkgtools ---
+
+ # Remove src/cmd/ — precompiled tools are in pkg/tool/linux_amd64/
+ rm -rf $PKG/usr/lib/go/src/cmd
+
+ # Remove all test files
+ find $PKG/usr/lib/go/src -name '*_test.go' -delete
+ find $PKG/usr/lib/go/src -type d -name 'testdata' -exec rm -rf {} + 2>/dev/null || true
+
+ # Remove non-linux OS source files
+ find $PKG/usr/lib/go/src \( \
+ -name '*_windows.*' -o \
+ -name '*_darwin.*' -o \
+ -name '*_freebsd.*' -o \
+ -name '*_openbsd.*' -o \
+ -name '*_netbsd.*' -o \
+ -name '*_plan9.*' -o \
+ -name '*_aix.*' -o \
+ -name '*_solaris.*' -o \
+ -name '*_illumos.*' -o \
+ -name '*_dragonfly.*' -o \
+ -name '*_hurd.*' -o \
+ -name '*_js.*' -o \
+ -name '*_wasip1.*' -o \
+ -name '*_wasip2.*' -o \
+ -name '*_ios.*' -o \
+ -name '*_android.*' -o \
+ -name '*_zos.*' \
+ \) -delete
+
+ # Remove non-amd64 arch source files
+ find $PKG/usr/lib/go/src \( \
+ -name '*_arm.*' -o \
+ -name '*_arm64.*' -o \
+ -name '*_mips.*' -o \
+ -name '*_mips64.*' -o \
+ -name '*_mips64x.*' -o \
+ -name '*_mipsx.*' -o \
+ -name '*_ppc64.*' -o \
+ -name '*_ppc64x.*' -o \
+ -name '*_ppc64le.*' -o \
+ -name '*_riscv64.*' -o \
+ -name '*_s390x.*' -o \
+ -name '*_wasm.*' -o \
+ -name '*_386.*' -o \
+ -name '*_loong64.*' \
+ \) -delete
+
+ # Remove Solaris-only vendored package
+ rm -rf $PKG/usr/lib/go/src/vendor/golang.org/x/net/lif
+
+ # Remove Windows/Plan9 build scripts (keep bash — needed at runtime)
+ find $PKG/usr/lib/go/src -maxdepth 1 \( -name '*.bat' -o -name '*.rc' \) -delete
+
+ # Remove empty directories
+ find $PKG/usr/lib/go/src -type d -empty -delete 2>/dev/null || true
+}
+
+signify() {
+ untrusted comment: public key
+ RWTZ9IduCSQ/mL8337TEUinPwT92xFEUpD92hkS7IxcOnzTt9QdpohT3
+}
+
+# vim: filetype=sh