Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/extra/go
diff options
context:
space:
mode:
Diffstat (limited to 'extra/go')
-rw-r--r--extra/go/PKGBUILD48
-rw-r--r--extra/go/go-x87.patch27
2 files changed, 75 insertions, 0 deletions
diff --git a/extra/go/PKGBUILD b/extra/go/PKGBUILD
new file mode 100644
index 00000000..a9fa58bd
--- /dev/null
+++ b/extra/go/PKGBUILD
@@ -0,0 +1,48 @@
+eval "$(
+ declare -f build | \
+ sed '
+ /install\( .*\)\? -race /d
+ '
+ declare -f package_go-pie package | \
+ sed '
+ s,\(/linux_\)amd64\([_/]\),\1386\2,g
+ '
+)"
+
+eval "$(
+ declare -f build check _package \
+ | sed '
+ s/\(export GOARCH=\)amd64/\1386 /
+ '
+)"
+
+# 1.16 dropped non-SSE2 floating point operations, so we must
+# use software floating points (see https://github.com/golang/go/issues/40255)
+if [ "$CARCH" = 'i686' -o "$CARCH" = 'i486' ]; then
+ eval "$(
+ declare -f build \
+ | sed '
+ 2 a export GO386='softfloat'
+ '
+ declare -f check \
+ | sed '
+ 2 a export GO386='softfloat'
+ '
+ )"
+fi
+
+# https://go-review.googlesource.com/c/go/+/257963
+source+=('go-x87.patch')
+sha256sums+=('10e036bb7b9c468485a4ea878343918160b914a51aad67ad75839c85bd492b54')
+eval "$(
+ {
+ declare -f prepare || \
+ printf 'prepare() { cd "$pkgname" \n}\n'
+ } \
+ | sed '
+ $i patch -Np1 -i ../go-x87.patch
+ '
+)"
+
+# tests are failing, ignore them
+unset check
diff --git a/extra/go/go-x87.patch b/extra/go/go-x87.patch
new file mode 100644
index 00000000..96da987c
--- /dev/null
+++ b/extra/go/go-x87.patch
@@ -0,0 +1,27 @@
+--- go/src/buildall.bash 2024-03-29 15:27:02.000000000 +0000
++++ buildall.bash 2024-04-07 22:22:43.457800687 +0000
+@@ -42,6 +42,7 @@
+ gettargets() {
+ ../bin/go tool dist list | sed -e 's|/|-|' |
+ egrep -v '^(android|ios)' # need C toolchain even for cross-compiling
++ echo linux-386-387
+ echo linux-arm-arm5
+ }
+
+@@ -68,11 +69,15 @@
+ echo "### Building $target"
+ export GOOS=$(echo $target | sed 's/-.*//')
+ export GOARCH=$(echo $target | sed 's/.*-//')
+- unset GOARM
++ unset GO386 GOARM
+ if [ "$GOARCH" = "arm5" ]; then
+ export GOARCH=arm
+ export GOARM=5
+ fi
++ if [ "$GOARCH" = "387" ]; then
++ export GOARCH=386
++ export GO386=387
++ fi
+
+ # Build and vet everything.
+ # cmd/go/internal/work/exec.go enables the same vet flags during go test of std cmd