From ca5a0d89bfaa0b3d932f18aa5ef110c0b628d6cb Mon Sep 17 00:00:00 2001 From: basebuilder_pel7x64builder0 Date: Mon, 18 Nov 2019 12:25:48 +0100 Subject: [PATCH] golang update to 1.13.4 Signed-off-by: basebuilder_pel7x64builder0 --- SOURCES/golang-ppc64-linker.patch | 80 +++++++++++++++++++++-------- SOURCES/golang-prelink.conf | 3 ++ SOURCES/macros.golang | 8 +++ SPECS/golang.spec | 83 +++++++++++++++++++++++++++++-- 4 files changed, 147 insertions(+), 27 deletions(-) create mode 100644 SOURCES/golang-prelink.conf create mode 100644 SOURCES/macros.golang diff --git a/SOURCES/golang-ppc64-linker.patch b/SOURCES/golang-ppc64-linker.patch index 6f4bce8d..17a4037c 100644 --- a/SOURCES/golang-ppc64-linker.patch +++ b/SOURCES/golang-ppc64-linker.patch @@ -1,30 +1,66 @@ ---- src/cmd/link/internal/ld/config.go 2019-03-14 20:43:37.000000000 +0100 -+++ src/cmd/link/internal/ld/config.go 2019-03-20 23:50:07.660000000 +0100 -@@ -247,9 +247,6 @@ - } - ctxt.LinkMode = LinkInternal - case "1": -- if objabi.GOARCH == "ppc64" { +--- src/cmd/link/internal/ld/config.go 2019-11-18 12:11:12.010000000 +0100 ++++ src/cmd/link/internal/ld/config.go 2019-11-18 12:16:23.420000000 +0100 +@@ -70,7 +70,7 @@ + *mode = BuildModeCArchive + case "c-shared": + switch objabi.GOARCH { +- case "386", "amd64", "arm", "arm64", "ppc64le", "s390x": ++ case "386", "amd64", "arm", "arm64", "ppc64", "ppc64le", "s390x": + default: + return badmode() + } +@@ -79,7 +79,7 @@ + switch objabi.GOOS { + case "linux": + switch objabi.GOARCH { +- case "386", "amd64", "arm", "arm64", "ppc64le", "s390x": ++ case "386", "amd64", "arm", "arm64", "ppc64", "ppc64le", "s390x": + default: + return badmode() + } +@@ -91,7 +91,7 @@ + switch objabi.GOOS { + case "linux": + switch objabi.GOARCH { +- case "386", "amd64", "arm", "arm64", "s390x", "ppc64le": ++ case "386", "amd64", "arm", "arm64", "s390x", "ppc64le", "ppc64": + default: + return badmode() + } +@@ -186,7 +186,7 @@ + // Internally linking cgo is incomplete on some architectures. + // https://golang.org/issue/14449 + // https://golang.org/issue/21961 +- if iscgo && ctxt.Arch.InFamily(sys.MIPS64, sys.MIPS, sys.PPC64) { ++ if iscgo && ctxt.Arch.InFamily(sys.MIPS64, sys.MIPS) { + return true, objabi.GOARCH + " does not support internal cgo" + } + +@@ -241,9 +241,6 @@ + } + ctxt.LinkMode = LinkInternal + case "1": +- if objabi.GOARCH == "ppc64" && objabi.GOOS != "aix" { - Exitf("external linking requested via GO_EXTLINK_ENABLED but not supported for %s/ppc64", objabi.GOOS) - } - ctxt.LinkMode = LinkExternal - default: - if needed, _ := mustLinkExternal(ctxt); needed { -@@ -261,17 +258,10 @@ - } else { - ctxt.LinkMode = LinkInternal - } -- if objabi.GOARCH == "ppc64" && ctxt.LinkMode == LinkExternal { + ctxt.LinkMode = LinkExternal + default: + if needed, _ := mustLinkExternal(ctxt); needed { +@@ -255,17 +252,10 @@ + } else { + ctxt.LinkMode = LinkInternal + } +- if objabi.GOARCH == "ppc64" && objabi.GOOS != "aix" && ctxt.LinkMode == LinkExternal { - Exitf("external linking is not supported for %s/ppc64", objabi.GOOS) - } - } - case LinkInternal: - if needed, reason := mustLinkExternal(ctxt); needed { - Exitf("internal linking requested but external linking required: %s", reason) - } + } + case LinkInternal: + if needed, reason := mustLinkExternal(ctxt); needed { + Exitf("internal linking requested but external linking required: %s", reason) + } - case LinkExternal: -- if objabi.GOARCH == "ppc64" { +- if objabi.GOARCH == "ppc64" && objabi.GOOS != "aix" { - Exitf("external linking not supported for %s/ppc64", objabi.GOOS) - } - } + } } diff --git a/SOURCES/golang-prelink.conf b/SOURCES/golang-prelink.conf new file mode 100644 index 00000000..471e8e64 --- /dev/null +++ b/SOURCES/golang-prelink.conf @@ -0,0 +1,3 @@ +# there are ELF files in src which are testdata and shouldn't be modified +-b /usr/lib/golang/src +-b /usr/lib64/golang/src diff --git a/SOURCES/macros.golang b/SOURCES/macros.golang new file mode 100644 index 00000000..de6c610d --- /dev/null +++ b/SOURCES/macros.golang @@ -0,0 +1,8 @@ +# Where to set GOPATH for builds. Like: +# export GOPATH=$(pwd)/_build:%{gopath} +%gopath %{_datadir}/gocode + +# for use like: +# ExclusiveArch: %{go_arches} +%go_arches %{ix86} x86_64 %{arm} aarch64 ppc64le + diff --git a/SPECS/golang.spec b/SPECS/golang.spec index 517bf25e..f0e2eba0 100644 --- a/SPECS/golang.spec +++ b/SPECS/golang.spec @@ -78,6 +78,10 @@ # Fedora GOROOT %global goroot /usr/lib/%{name} +%global gopath %{_datadir}/gocode +%global go_arches %{ix86} x86_64 %{arm} aarch64 ppc64 ppc64le +%global golibdir %{_libdir}/golang + %ifarch x86_64 %global gohostarch amd64 @@ -101,11 +105,11 @@ %global gohostarch s390x %endif -%global go_api 1.12.9 -%global go_version 1.12.9 +%global go_api 1.13 +%global go_version 1.13.4 Name: golang -Version: 1.12.9 +Version: 1.13.4 Release: 1%{?dist} Summary: The Go Programming Language # source tree includes several copies of Mark.Twain-Tom.Sawyer.txt under Public Domain @@ -127,9 +131,10 @@ BuildRequires: hostname BuildRequires: net-tools %endif # for tests -BuildRequires: pcre-devel, glibc-static, procps-ng +BuildRequires: pcre-devel, glibc-static, procps-ng, perl Provides: go = %{version}-%{release} +Provides: go-srpms-macros # Bundled/Vendored provides generated by # go list -f {{.ImportPath}} ./src/vendor/... | sed "s:_$PWD/src/vendor/::g;s:_:.:;s:.*:Provides\: bundled(golang(&)):" && go list -f {{.ImportPath}} ./src/cmd/vendor/... | sed "s:_$PWD/src/cmd/vendor/::g;s:_:.:;s:.*:Provides\: bundled(golang(&)):" @@ -137,7 +142,9 @@ Provides: bundled(golang(golang.org/x/crypto/chacha20poly1305)) Provides: bundled(golang(golang.org/x/crypto/cryptobyte)) Provides: bundled(golang(golang.org/x/crypto/cryptobyte/asn1)) Provides: bundled(golang(golang.org/x/crypto/curve25519)) +Provides: bundled(golang(golang.org/x/crypto/hkdf)) Provides: bundled(golang(golang.org/x/crypto/internal/chacha20)) +Provides: bundled(golang(golang.org/x/crypto/internal/subtle)) Provides: bundled(golang(golang.org/x/crypto/poly1305)) Provides: bundled(golang(golang.org/x/net/dns/dnsmessage)) Provides: bundled(golang(golang.org/x/net/http/httpguts)) @@ -147,6 +154,7 @@ Provides: bundled(golang(golang.org/x/net/idna)) Provides: bundled(golang(golang.org/x/net/internal/nettest)) Provides: bundled(golang(golang.org/x/net/nettest)) Provides: bundled(golang(golang.org/x/text/secure)) +Provides: bundled(golang(golang.org/x/sys/cpu)) Provides: bundled(golang(golang.org/x/text/secure/bidirule)) Provides: bundled(golang(golang.org/x/text/transform)) Provides: bundled(golang(golang.org/x/text/unicode)) @@ -163,6 +171,7 @@ Provides: bundled(golang(github.com/google/pprof/internal/proftest)) Provides: bundled(golang(github.com/google/pprof/internal/report)) Provides: bundled(golang(github.com/google/pprof/internal/symbolizer)) Provides: bundled(golang(github.com/google/pprof/internal/symbolz)) +Provides: bundled(golang(github.com/google/pprof/internal/transport)) Provides: bundled(golang(github.com/google/pprof/profile)) Provides: bundled(golang(github.com/google/pprof/third.party/d3)) Provides: bundled(golang(github.com/google/pprof/third.party/d3flamegraph)) @@ -176,6 +185,41 @@ Provides: bundled(golang(golang.org/x/crypto/ssh/terminal)) Provides: bundled(golang(golang.org/x/sys/unix)) Provides: bundled(golang(golang.org/x/sys/windows)) Provides: bundled(golang(golang.org/x/sys/windows/registry)) +Provides: bundled(golang(golang.org/x/tools/go/analysis)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/internal/analysisflags)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/internal/facts)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/asmdecl)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/assign)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/atomic)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/bools)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/buildtag)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/cgocall)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/composite)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/copylock)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/ctrlflow)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/errorsas)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/httpresponse)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/inspect)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/internal/analysisutil)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/loopclosure)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/lostcancel)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/nilfunc)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/printf)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/shift)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/stdmethods)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/structtag)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/tests)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/unmarshal)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/unreachable)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/unsafeptr)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/passes/unusedresult)) +Provides: bundled(golang(golang.org/x/tools/go/analysis/unitchecker)) +Provides: bundled(golang(golang.org/x/tools/go/ast/astutil)) +Provides: bundled(golang(golang.org/x/tools/go/ast/inspector)) +Provides: bundled(golang(golang.org/x/tools/go/cfg)) +Provides: bundled(golang(golang.org/x/tools/go/types/objectpath)) +Provides: bundled(golang(golang.org/x/tools/go/types/typeutil)) + Requires: %{name}-bin = %{version}-%{release} Requires: %{name}-src = %{version}-%{release} @@ -196,9 +240,12 @@ Obsoletes: %{name}-vim < 1.4 Obsoletes: emacs-%{name} < 1.4 # These are the only RHEL/Fedora architectures that we compile this package for -ExclusiveArch: %{golang_arches} +ExclusiveArch: %{go_arches} Source100: golang-gdbinit +Source101: golang-prelink.conf +Source102: macros.golang + %description %{summary}. @@ -267,6 +314,8 @@ Obsoletes: golang-cover < 0-12.1 Requires(post): %{_sbindir}/update-alternatives Requires(postun): %{_sbindir}/update-alternatives +Requires(preun): %{_sbindir}/update-alternatives + # We strip the meta dependency, but go does require glibc. # This is an odd issue, still looking for a better fix. @@ -459,6 +508,21 @@ ln -sf /etc/alternatives/gofmt $RPM_BUILD_ROOT%{_bindir}/gofmt mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d cp -av %{SOURCE100} $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d/golang.gdb +# prelink blacklist +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d +cp -av %{SOURCE101} $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d/golang.conf + +# rpm macros +mkdir -p %{buildroot} +%if 0%{?rhel} > 6 || 0%{?fedora} > 0 +mkdir -p $RPM_BUILD_ROOT%{_rpmconfigdir}/macros.d +cp -av %{SOURCE102} $RPM_BUILD_ROOT%{_rpmconfigdir}/macros.d/macros.golang +%else +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rpm +cp -av %{SOURCE102} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.golang +%endif + + %check export GOROOT=$(pwd -P) export PATH="$GOROOT"/bin:"$PATH" @@ -527,6 +591,15 @@ fi # gdbinit (for gdb debugging) %{_sysconfdir}/gdbinit.d +# prelink blacklist +%{_sysconfdir}/prelink.conf.d + +%if 0%{?rhel} > 6 || 0%{?fedora} > 0 +%{_rpmconfigdir}/macros.d/macros.golang +%else +%{_sysconfdir}/rpm/macros.golang +%endif + %files -f go-src.list src %files -f go-docs.list docs