From 447c161c1ddf797545374d7ec8ca9c90396a62074b23fdca8dfd644b9becb85e Mon Sep 17 00:00:00 2001 From: Jeff Kowalczyk Date: Fri, 8 Apr 2022 02:33:27 +0000 Subject: [PATCH] Accepting request 967627 from home:jfkw:branches:devel:languages:go - Template gcc-go.patch to substitute gcc_go_version and eliminate multiple similar patches each with hardcoded gcc go binary name. gcc-go.patch inserts gcc-go binary name e.g. go-8 to compensate for current lack of gcc-go update-alternatives usage. * add gcc-go.patch * drop gcc6-go.patch * drop gcc7-go.patch - For SLE-12 set gcc_go_version to 8 to bootstrap using gcc8-go. gcc6-go and gcc7-go no longer successfully bootstrap go1.17 or go1.18 on SLE-12 aarch64 ppc64le or s390x. * gcc6-go fails with errors e.g. libnoder.a(_go_.o):(.toc+0x0): undefined reference to `__go_pimt__I4_DiagFrN4_boolee3 OBS-URL: https://build.opensuse.org/request/show/967627 OBS-URL: https://build.opensuse.org/package/show/devel:languages:go/go1.17?expand=0&rev=19 --- gcc6-go.patch => gcc-go.patch | 16 ++++---- gcc7-go.patch | 77 ----------------------------------- go1.17.changes | 22 +++++++++- go1.17.spec | 17 ++++---- 4 files changed, 37 insertions(+), 95 deletions(-) rename gcc6-go.patch => gcc-go.patch (80%) delete mode 100644 gcc7-go.patch diff --git a/gcc6-go.patch b/gcc-go.patch similarity index 80% rename from gcc6-go.patch rename to gcc-go.patch index 88753bd..c3906fa 100644 --- a/gcc6-go.patch +++ b/gcc-go.patch @@ -7,7 +7,7 @@ Index: go/src/cmd/dist/buildtool.go // or later we don't need to disable inlining to work around bugs in the Go 1.4 compiler. cmd := []string{ - pathf("%s/bin/go", goroot_bootstrap), -+ pathf("%s/bin/go-6", goroot_bootstrap), ++ pathf("%s/bin/go-$gcc_go_version", goroot_bootstrap), "install", "-gcflags=-l", "-tags=math_big_pure_go compiler_bootstrap", @@ -20,7 +20,7 @@ Index: go/src/make.bash # # GOROOT_BOOTSTRAP: A working Go tree >= Go 1.4 for bootstrap. -# If $GOROOT_BOOTSTRAP/bin/go is missing, $(go env GOROOT) is -+# If $GOROOT_BOOTSTRAP/bin/go-6 is missing, $(go env GOROOT) is ++# If $GOROOT_BOOTSTRAP/bin/go-$gcc_go_version is missing, $(go env GOROOT) is # tried for all "go" in $PATH. $HOME/go1.4 by default. set -e @@ -30,8 +30,8 @@ Index: go/src/make.bash done; unset IFS -if [ ! -x "$GOROOT_BOOTSTRAP/bin/go" ]; then - echo "ERROR: Cannot find $GOROOT_BOOTSTRAP/bin/go." >&2 -+if [ ! -x "$GOROOT_BOOTSTRAP/bin/go-6" ]; then -+ echo "ERROR: Cannot find $GOROOT_BOOTSTRAP/bin/go-6." >&2 ++if [ ! -x "$GOROOT_BOOTSTRAP/bin/go-$gcc_go_version" ]; then ++ echo "ERROR: Cannot find $GOROOT_BOOTSTRAP/bin/go-$gcc_go_version." >&2 echo "Set \$GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4." >&2 exit 1 fi @@ -40,7 +40,7 @@ Index: go/src/make.bash fi rm -f cmd/dist/dist -GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist -+GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off "$GOROOT_BOOTSTRAP/bin/go-6" build -o cmd/dist/dist ./cmd/dist ++GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off "$GOROOT_BOOTSTRAP/bin/go-$gcc_go_version" build -o cmd/dist/dist ./cmd/dist # -e doesn't propagate out of eval, so check success by hand. eval $(./cmd/dist/dist env -p || echo FAIL=true) @@ -53,7 +53,7 @@ Index: go/src/make.rc GOROOT_BOOTSTRAP = $home/go1.4 for(p in $path){ - if(! test -x $GOROOT_BOOTSTRAP/bin/go){ -+ if(! test -x $GOROOT_BOOTSTRAP/bin/go-6){ ++ if(! test -x $GOROOT_BOOTSTRAP/bin/go-$gcc_go_version){ if(go_exe = `{path=$p whatis go}){ goroot = `{GOROOT='' $go_exe env GOROOT} if(! ~ $goroot $GOROOT){ @@ -62,7 +62,7 @@ Index: go/src/make.rc } } -if(! test -x $GOROOT_BOOTSTRAP/bin/go){ -+if(! test -x $GOROOT_BOOTSTRAP/bin/go-6){ ++if(! test -x $GOROOT_BOOTSTRAP/bin/go-$gcc_go_version){ echo 'ERROR: Cannot find '$GOROOT_BOOTSTRAP'/bin/go.' >[1=2] echo 'Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.' >[1=2] exit bootstrap @@ -71,7 +71,7 @@ Index: go/src/make.rc if(~ $#vflag 1) echo cmd/dist -GOROOT=$GOROOT_BOOTSTRAP GOOS='' GOARCH='' GO111MODULE=off $GOROOT_BOOTSTRAP/bin/go build -o cmd/dist/dist ./cmd/dist -+GOROOT=$GOROOT_BOOTSTRAP GOOS='' GOARCH='' $GOROOT_BOOTSTRAP/bin/go-6 build -o cmd/dist/dist ./cmd/dist ++GOROOT=$GOROOT_BOOTSTRAP GOOS='' GOARCH='' GO111MODULE=off $GOROOT_BOOTSTRAP/bin/go-$gcc_go_version build -o cmd/dist/dist ./cmd/dist eval `{./cmd/dist/dist env -9} if(~ $#vflag 1) diff --git a/gcc7-go.patch b/gcc7-go.patch deleted file mode 100644 index 3826376..0000000 --- a/gcc7-go.patch +++ /dev/null @@ -1,77 +0,0 @@ -Index: go/src/cmd/dist/buildtool.go -=================================================================== ---- go.orig/src/cmd/dist/buildtool.go -+++ go/src/cmd/dist/buildtool.go -@@ -190,7 +190,7 @@ func bootstrapBuildTools() { - // only applies to the final cmd/go binary, but that's OK: if this is Go 1.10 - // or later we don't need to disable inlining to work around bugs in the Go 1.4 compiler. - cmd := []string{ -- pathf("%s/bin/go", goroot_bootstrap), -+ pathf("%s/bin/go-7", goroot_bootstrap), - "install", - "-gcflags=-l", - "-tags=math_big_pure_go compiler_bootstrap", -Index: go/src/make.bash -=================================================================== ---- go.orig/src/make.bash -+++ go/src/make.bash -@@ -60,7 +60,7 @@ - # time goes when these scripts run. - # - # GOROOT_BOOTSTRAP: A working Go tree >= Go 1.4 for bootstrap. --# If $GOROOT_BOOTSTRAP/bin/go is missing, $(go env GOROOT) is -+# If $GOROOT_BOOTSTRAP/bin/go-7 is missing, $(go env GOROOT) is - # tried for all "go" in $PATH. $HOME/go1.4 by default. - - set -e -@@ -162,8 +162,8 @@ - fi - fi - done; unset IFS --if [ ! -x "$GOROOT_BOOTSTRAP/bin/go" ]; then -- echo "ERROR: Cannot find $GOROOT_BOOTSTRAP/bin/go." >&2 -+if [ ! -x "$GOROOT_BOOTSTRAP/bin/go-7" ]; then -+ echo "ERROR: Cannot find $GOROOT_BOOTSTRAP/bin/go-7." >&2 - echo "Set \$GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4." >&2 - exit 1 - fi -@@ -181,7 +181,7 @@ - exit 1 - fi - rm -f cmd/dist/dist --GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist -+GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off "$GOROOT_BOOTSTRAP/bin/go-7" build -o cmd/dist/dist ./cmd/dist - - # -e doesn't propagate out of eval, so check success by hand. - eval $(./cmd/dist/dist env -p || echo FAIL=true) -Index: go/src/make.rc -=================================================================== ---- go.orig/src/make.rc -+++ go/src/make.rc -@@ -52,7 +52,7 @@ GOROOT = `{cd .. && pwd} - if(! ~ $#GOROOT_BOOTSTRAP 1) - GOROOT_BOOTSTRAP = $home/go1.4 - for(p in $path){ -- if(! test -x $GOROOT_BOOTSTRAP/bin/go){ -+ if(! test -x $GOROOT_BOOTSTRAP/bin/go-7){ - if(go_exe = `{path=$p whatis go}){ - goroot = `{GOROOT='' $go_exe env GOROOT} - if(! ~ $goroot $GOROOT){ -@@ -61,7 +61,7 @@ for(p in $path){ - } - } - } --if(! test -x $GOROOT_BOOTSTRAP/bin/go){ -+if(! test -x $GOROOT_BOOTSTRAP/bin/go-7){ - echo 'ERROR: Cannot find '$GOROOT_BOOTSTRAP'/bin/go.' >[1=2] - echo 'Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.' >[1=2] - exit bootstrap -@@ -75,7 +75,7 @@ if(~ $GOROOT_BOOTSTRAP $GOROOT){ - echo 'Building Go cmd/dist using '^$GOROOT_BOOTSTRAP - if(~ $#vflag 1) - echo cmd/dist --GOROOT=$GOROOT_BOOTSTRAP GOOS='' GOARCH='' GO111MODULE=off $GOROOT_BOOTSTRAP/bin/go build -o cmd/dist/dist ./cmd/dist -+GOROOT=$GOROOT_BOOTSTRAP GOOS='' GOARCH='' $GOROOT_BOOTSTRAP/bin/go-7 build -o cmd/dist/dist ./cmd/dist - - eval `{./cmd/dist/dist env -9} - if(~ $#vflag 1) diff --git a/go1.17.changes b/go1.17.changes index aac9384..08727e9 100644 --- a/go1.17.changes +++ b/go1.17.changes @@ -1,3 +1,23 @@ +------------------------------------------------------------------- +Thu Apr 7 23:57:47 UTC 2022 - Jeff Kowalczyk + +- Template gcc-go.patch to substitute gcc_go_version and eliminate + multiple similar patches each with hardcoded gcc go binary name. + gcc-go.patch inserts gcc-go binary name e.g. go-8 to compensate + for current lack of gcc-go update-alternatives usage. + * add gcc-go.patch + * drop gcc6-go.patch + * drop gcc7-go.patch + +------------------------------------------------------------------- +Thu Apr 7 17:51:56 UTC 2022 - Jeff Kowalczyk + +- For SLE-12 set gcc_go_version to 8 to bootstrap using gcc8-go. + gcc6-go and gcc7-go no longer successfully bootstrap go1.17 or + go1.18 on SLE-12 aarch64 ppc64le or s390x. + * gcc6-go fails with errors e.g. libnoder.a(_go_.o):(.toc+0x0): + undefined reference to `__go_pimt__I4_DiagFrN4_boolee3 + ------------------------------------------------------------------- Fri Mar 11 23:37:41 UTC 2022 - Jeff Kowalczyk @@ -12,7 +32,7 @@ Fri Mar 11 23:37:41 UTC 2022 - Jeff Kowalczyk Wed Mar 9 17:03:28 UTC 2022 - Dirk Müller - add dont-force-gold-on-arm64.patch (bsc#1183043) -- drop binutils-gold dependency +- drop binutils-gold dependency ------------------------------------------------------------------- Thu Mar 3 21:51:40 UTC 2022 - Jeff Kowalczyk diff --git a/go1.17.spec b/go1.17.spec index 7e980b5..d903642 100644 --- a/go1.17.spec +++ b/go1.17.spec @@ -25,7 +25,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true NO_BRP_AR=true %if 0%{?suse_version} == 1315 -%define gcc_go_version 6 +%define gcc_go_version 8 %define go_bootstrap_version go1.4 %else %ifarch riscv64 @@ -159,9 +159,8 @@ Source6: go.gdbinit Source100: llvm-%{tsan_commit}.tar.xz # PATCH-FIX-OPENSUSE: https://go-review.googlesource.com/c/go/+/391115 Patch7: dont-force-gold-on-arm64.patch -# PATCH-FIX-UPSTREAM marguerite@opensuse.org - find /usr/bin/go-5 when bootstrapping with gcc5-go -Patch8: gcc6-go.patch -Patch9: gcc7-go.patch +# PATCH-FIX-UPSTREAM marguerite@opensuse.org - find /usr/bin/go-8 when bootstrapping with gcc8-go +Patch8: gcc-go.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # boostrap %if %{with gccgo} @@ -234,13 +233,13 @@ Go runtime race detector libraries. Install this package if you wish to use the %setup -q -n go %patch7 -p1 %if %{with gccgo} -%if 0%{?gcc_go_version} == 6 +# Currently gcc-go does not manage an update-alternatives entry and will +# never be symlinked as "go", even if gcc-go is the only installed go toolchain. +# Patch go bootstrap scripts to find hardcoded go-(gcc-go-version) e.g. go-8 +# Substitute defined gcc_go_version into gcc-go.patch +sed -i "s/\$gcc_go_version/%{gcc_go_version}/" $RPM_SOURCE_DIR/gcc-go.patch %patch8 -p1 %endif -%if 0%{?gcc_go_version} == 7 -%patch9 -p1 -%endif -%endif cp %{SOURCE4} .