Hello community, here is the log from the commit of package go1.12.13535 for openSUSE:Leap:15.2:Update checked in at 2020-07-30 10:25:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2:Update/go1.12.13535 (Old) and /work/SRC/openSUSE:Leap:15.2:Update/.go1.12.13535.new.3592 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "go1.12.13535" Thu Jul 30 10:25:35 2020 rev:1 rq:822934 version:1.12.17 Changes: -------- New Changes file: --- /dev/null 2020-07-16 02:54:20.700682797 +0200 +++ /work/SRC/openSUSE:Leap:15.2:Update/.go1.12.13535.new.3592/go1.12.changes 2020-07-30 10:25:37.332628377 +0200 @@ -0,0 +1,2239 @@ +------------------------------------------------------------------- +Wed Apr 29 13:09:22 UTC 2020 - Guillaume GARDET <guillaume.gar...@opensuse.org> + +- Requires binutils-gold for %arm and aarch64 - boo#1170826 + +------------------------------------------------------------------- +Thu Apr 16 20:07:04 UTC 2020 - Jeff Kowalczyk <jkowalc...@suse.com> + +- Revert truncate changelog for versions older than go1.12 + +------------------------------------------------------------------- +Thu Feb 13 19:43:56 UTC 2020 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.17 (released 2020/02/12) includes a fix to the runtime. + Refs boo#1141689. + * go#36574 runtime: "PowerRegisterSuspendResumeNotification failed with errno= 87" when running in Windows docker containers + * Truncate changelog for versions older than go1.12 + +------------------------------------------------------------------- +Wed Jan 29 00:14:49 UTC 2020 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.16 (released 2020/01/28) includes two security fixes to + the crypto/x509 package. + Refs boo#1141689. + * go#36839 crypto/x509, x/crypto/cryptobyte: panic in certificate parsing + * go#36836 crypto/x509: certificate validation bypass on Windows 10 + +------------------------------------------------------------------- +Fri Jan 10 08:24:15 UTC 2020 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.15 (released 2020/01/09) includes fixes to the runtime + and the net/http package. + Refs boo#1141689. + * go#36433 net/http: racing write to t.ProxyConnectHeader in dialConn when proxy URL includes auth credentials + * go#36377 runtime: "fatal error: PowerRegisterSuspendResumeNotification failure" when running in Windows docker containers + * go#36376 runtime: Timer buckets may get "stuck" for long periods of time after Windows 8/10 systems wake from sleep + * go#36367 runtime: sweep increased allocation count crash on arm64 + * go#36002 doc: release history webpage contains suboptimal links + +------------------------------------------------------------------- +Thu Dec 5 22:31:35 UTC 2019 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.14 (released 2019/12/04) includes a fix to the runtime. + Refs boo#1141689. + * go#35747 ensure that Go toolchain meets Apple's notarization requirements + * go#35210 runtime: function textOff returns incorrect value if multiple text sections are present + +------------------------------------------------------------------- +Fri Nov 1 16:14:29 UTC 2019 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.13 (released 2019/10/31) fixes an issue on macOS 10.15 + Catalina where the non-notarized installer and binaries were + being rejected by Gatekeeper. Only macOS users who hit this issue + need to update. + Refs boo#1141689. + +------------------------------------------------------------------- +Wed Oct 29 19:37:12 UTC 2019 - Jeff Kowalczyk <jkowalc...@suse.com> + +- Add %ifarch %arm aarch64 BuildRequires: binutils-gold to fix + /usr/lib64/go/{version}/pkg/tool/linux_arm64/link: running gcc failed: exit status 1 + collect2: fatal error: cannot find 'ld'- + +------------------------------------------------------------------- +Wed Oct 23 16:13:46 UTC 2019 - Stefan Brüns <stefan.bru...@rwth-aachen.de> + +- Remove unneeded systemd BuildRequires. + +------------------------------------------------------------------- +Mon Oct 21 14:05:35 UTC 2019 - Stefan Brüns <stefan.bru...@rwth-aachen.de> + +- Fix broken go_api evaluation (1.12 < 1.5, when evaluated as floats), + let RPM evaluate the expression, drop no longer required bc. +- Own the gdbinit.d directory, avoid the build dependency on gdb. + +------------------------------------------------------------------- +Fri Oct 18 05:11:29 UTC 2019 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.12 (released 2019/10/17) includes fixes to the go command, + runtime, syscall and net packages. + Refs boo#1141689. + * go#34881 net/http: Client.Do() panics when URL includes HTTP basic auth + * go#34789 cmd/go/internal/modconv: TestConvertLegacyConfig failing on release-branch.go1.12 + * go#34713 runtime, internal/poll: darwin: ensure that no thread is consumed, nor a syscall.Read if FD isn't yet ready for I/O + * go#34711 runtime: "program exceeds 50-thread limit" in test of os package on darwin-arm-mg912baios + * go#34661 net: infinite loop in LookupAddr() + * go#34641 syscall: (*LazyProc).Call does not keep arguments alive (anymore) + * go#33983 cmd/cover: cannot run in directory with no .go files + * go#33982 x/sys/unix: TestPassFD consistently failing in aix-ppc64 builder on release-branch.go1.12 + * go#33877 net/http: Transport leaks net.Conns if connections never become idle + * go#33758 x/build, cmd/go: TestGoGetInsecure failing in release-branch.go1.12 + * go#33757 x/build, runtime: linux-s390x-ibm regression in TestGdbPython on release-branch.go1.12 + * go#33756 x/build: skip `darwin-386-10_14` builder on release-branch.go1.12 + * go#33673 cmd/go: regression on the default of CGO_ENABLED to 0 for cross builds + * go#31887 cmd/go: downloads follow plain-HTTP redirects even when the -insecure flag is not set + * go#31305 x/arch/arm64/arm64asm: TestObjdumpARM64TestDecode{GNU,Go}Syntaxdata failing at Go 1.12.3 + +------------------------------------------------------------------- +Thu Oct 17 22:18:23 UTC 2019 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.11 (released 2019/10/17) includes security fixes to the + crypto/dsa package addressing the following CVE: + CVE-2019-17596 + Refs boo#1141689. + * boo#1154402 CVE-2019-17596 + * go#34961 crypto/dsa: invalid public key causes panic in dsa.Verify + +------------------------------------------------------------------- +Thu Sep 26 04:09:51 UTC 2019 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.10 (released 2019/09/25) includes security fixes to the + net/http package addressing the following CVE: + CVE-2019-16276 + Refs boo#1141689. + * boo#1152082 CVE-2019-16276 + * go#34540 net/http: invalid headers are normalized, allowing request smuggling + +------------------------------------------------------------------- +Thu Aug 15 23:44:35 UTC 2019 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.9 (released 2019/08/15) includes fixes to the linker and + the os and math/big packages. + Refs boo#1141689. + * go#33557 cmd/link: stack depth check too shallow + * go#33424 os.RemoveAll: openFdAt function without O_CLOEXEC and cause fd escape to child process + * go#33040 cmd/link: missing section for relocation target + * go#32940 math/big: arm64 assembly code for shlVU is incorrect + * go#30401 doc: syscall: document Setrlimit behavior change on Go 1.12 on macOS + +------------------------------------------------------------------- +Tue Aug 13 20:52:13 UTC 2019 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.8 (released 2019/08/13) includes security fixes to the + net/http and net/url packages addressing CVEs: + CVE-2019-9512 CVE-2019-9514 CVE-2019-14809 + Refs boo#1141689. + * bnc#1146111 VUL-0: CVE-2019-9512: go: HTTP/2: flood using PING frames results in unbounded memory growth + * bnc#1146115 VUL-0: CVE-2019-9514: go: HTTP/2 implementation is vulnerable to a reset flood, potentially leading to a denial of service + * bnc#1146123 VUL-0: CVE-2019-14809: go: malformed hosts in URLs leads to authorization bypass + * go#33633 net/url: URL.Parse Multiple Parsing Issues + * go#33631 net/http: Denial of Service vulnerabilities in the HTTP/2 implementation + +------------------------------------------------------------------- +Wed Jul 10 20:38:40 UTC 2019 - Martin Liška <mli...@suse.cz> + +- Set NO_BRP_AR in order to workaround issues when ar is used for + a Go ELF file. + +------------------------------------------------------------------- +Wed Jul 10 20:26:34 UTC 2019 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.7 (released 2019/07/08) includes fixes to cgo, the compiler, + and the linker. + Refs boo#1141689. + * go#32756 cmd/cgo: generates code with inappropriate array copy + * go#32712 cmd/compile: wrong calculation result for bit operation + that's inlined and has all constant shifts in rewrite rules + * go#32697 debug/dwarf: cgo produces malformed DWARF data + * go#32583 cmd/compile: `switch` statement on a custom `int32` type + with negative values behaves differently in two consecutive calls + +------------------------------------------------------------------- +Wed Jun 26 21:34:21 UTC 2019 - Jeff Kowalczyk <jkowalc...@suse.com> + +- Use gcc9 by default by updating define gcc_go_version 9 (was 8) + * drop unneeded patch gcc8-go.patch + +------------------------------------------------------------------- +Tue Jun 25 08:01:10 UTC 2019 - Pavol Cupka <pal...@liguros.net> + +- adding Web Assembly stuff from misc/wasm to fix boo#1139210 +- fixing some minor rpmlint warnings + +------------------------------------------------------------------- +Mon Jun 17 20:38:09 UTC 2019 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.12.6 (released 2019/06/11) includes fixes to the compiler, the linker, + the go command, and the crypto/x509, net/http, and os packages. + Refs boo#1141689. + * go#32484 cmd/link: fix deferreturn detector + * go#32367 net/http: make Transport ignore 408 timeout messages from server + * go#32295 cmd/go: tests failing on linux-amd64-longtest + * go#32282 crypto/x509: macos 10.14 SIGSEGV in crypto/x509._Cfunc_FetchPEMRoots + * go#32261 syscall: Windows user32 function (SendInput) behaves incorrectly when called within golang environment + * go#32168 cmd/go: accept -Wl,-R,path + * go#32081 os: windows processes started with foreign token inherit the wrong environment [CVE-2019-11888] + * go#32013 cmd/compile: sparse slices with struct items are not initialized + * go#30526 cmd/go: MacOS binaries invalid for eventual Apple Notary + +------------------------------------------------------------------- +Wed Jun 12 14:46:50 UTC 2019 - Dominique Leuenberger <dims...@opensuse.org> + +- BuildRequire pkgconfig(systemd) instead of systemd: allow OBS to + shortcut the build queues by allowing usage of systemd-mini + +------------------------------------------------------------------- +Thu May 16 07:12:19 UTC 2019 - Martin Liška <mli...@suse.cz> ++++ 2042 more lines (skipped) ++++ between /dev/null ++++ and /work/SRC/openSUSE:Leap:15.2:Update/.go1.12.13535.new.3592/go1.12.changes New: ---- README.SUSE _service allow-binary-only-packages.patch compiler-rt-gfe2c72c59aa7f4afa45e3f65a5d16a374b6cce26.tar.xz gcc6-go.patch gcc7-go.patch gcc9-rsp-clobber.patch go-rpmlintrc go.gdbinit go1.12.17.src.tar.gz go1.12.changes go1.12.spec tools-packaging.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ go1.12.spec ++++++ # # spec file for package go1.12 # # Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # # nodebuginfo # strip will cause Go's .a archives to become invalid because strip appears to # reassemble the archive incorrectly. This is a known issue upstream # (https://github.com/golang/go/issues/17890), but we have to deal with it in # the meantime. %undefine _build_create_debug %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 go_bootstrap_version go1.4 %else %define go_bootstrap_version go1.9 %if 0%{?sle_version} == 150000 # SLE15 or Leap 15.x %define gcc_go_version 7 %else %define gcc_go_version 9 %endif %endif # By default use go and not gccgo %bcond_with gccgo # The fallback boostrap method via %%{go_bootstrap_version} would work for Leap # but we don't have %%{go_bootstrap_version} in there. Same for SLE15+ #if ( 0%{?suse_version} < 1550 && 0%{?is_opensuse} ) || ( 0%{?suse_version} >= 1500 && ! 0%{?is_opensuse} ) #bcond_without gccgo #endif # The fallback bootstrap method via go1.4 doesn't work # for aarch64 nor ppc64le because go 1.4 did not support that architecture. %if 0%{?suse_version} == 1315 %ifarch aarch64 ppc64le ppc64 s390x %bcond_without gccgo %endif %endif # gccgo on ppc64le with default PIE enabled fails with: # error while loading shared libraries: # R_PPC64_ADDR16_HA re10143fb0c for symbol `' out of range # track https://github.com/golang/go/issues/28531 # linuxppc-dev discussion: # "PIE binaries are no longer mapped below 4 GiB on ppc64le" # https://lists.ozlabs.org/pipermail/linuxppc-dev/2018-November/180862.html %ifarch ppc64le #!BuildIgnore: gcc-PIE %endif # By default we don't include tsan. It's only supported on amd64. %define tsan_arch x86_64 # Go has precompiled versions of LLVM's compiler-rt inside their source code. # We cannot ship pre-compiled binaries so we have to recompile said source, # however they vendor specific commits from upstream. This value comes from # src/runtime/race/README (and we verify that it matches in check). # See boo#1052528 for more details. %define tsan_commit fe2c72c59aa7f4afa45e3f65a5d16a374b6cce26 %define go_api 1.12 # shared library support %if "%{rpm_vercmp %{go_api} 1.5}" > "0" %if %{with gccgo} %define with_shared 1 %else %ifarch %ix86 %arm x86_64 aarch64 %define with_shared 1 %else %define with_shared 0 %endif %endif %else %define with_shared 0 %endif %ifarch ppc64 %define with_shared 0 %endif # setup go_arch (BSD-like scheme) %ifarch %ix86 %define go_arch 386 %endif %ifarch x86_64 %define go_arch amd64 %endif %ifarch aarch64 %define go_arch arm64 %endif %ifarch %arm %define go_arch arm %endif %ifarch ppc64 %define go_arch ppc64 %endif %ifarch ppc64le %define go_arch ppc64le %endif %ifarch s390x %define go_arch s390x %endif Name: go1.12 Version: 1.12.17 Release: 0 Summary: A compiled, garbage-collected, concurrent programming language License: BSD-3-Clause Group: Development/Languages/Other URL: http://golang.org Source: http://golang.org/dl/go%{version}.src.tar.gz Source1: go-rpmlintrc Source4: README.SUSE Source6: go.gdbinit # We have to compile TSAN ourselves. boo#1052528 Source100: compiler-rt-g%{tsan_commit}.tar.xz # PATCH-FIX-OPENSUSE re-enable build binary only packages (we are binary distro) # see http://code.google.com/p/go/issues/detail?id=2775 & also issue 3268 Patch2: allow-binary-only-packages.patch # PATCH-FIX-OPENSUSE enable writing tools outside $GOROOT/pkg/tool for packaging Patch5: tools-packaging.patch # PATCH-FIX-UPSTREAM marguer...@opensuse.org - find /usr/bin/go-5 when bootstrapping with gcc5-go Patch8: gcc6-go.patch Patch9: gcc7-go.patch Patch11: gcc9-rsp-clobber.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # boostrap %if %{with gccgo} %ifnarch s390 s390x BuildRequires: binutils-gold %endif BuildRequires: gcc%{gcc_go_version}-go %else # no gcc-go BuildRequires: %{go_bootstrap_version} %endif BuildRequires: fdupes Recommends: %{name}-doc = %{version} %ifarch %{tsan_arch} # Needed to compile compiler-rt/TSAN. BuildRequires: gcc-c++ %endif #BNC#818502 debug edit tool of rpm fails on i586 builds BuildRequires: rpm >= 4.11.1 # Needed on arm aarch64 to avoid # collect2: fatal error: cannot find 'ld'- %ifarch %arm aarch64 BuildRequires: binutils-gold %endif Requires(post): update-alternatives Requires(postun): update-alternatives # Needed on arm aarch64 to avoid # collect2: fatal error: cannot find 'ld'- %ifarch %arm aarch64 Requires: binutils-gold %endif Requires: gcc Provides: go = %{version} Provides: go-devel = go%{version} Provides: go-devel-static = go%{version} Provides: golang(API) = %{go_api} Obsoletes: go-devel < go%{version} # go-vim/emacs were separate projects starting from 1.4 Obsoletes: go-emacs <= 1.3.3 Obsoletes: go-vim <= 1.3.3 ExclusiveArch: %ix86 x86_64 %arm aarch64 ppc64 ppc64le s390x %description Go is an expressive, concurrent, garbage collected systems programming language that is type safe and memory safe. It has pointers but no pointer arithmetic. Go has fast builds, clean syntax, garbage collection, methods for any type, and run-time reflection. It feels like a dynamic language but has the speed and safety of a static language. %package doc Summary: Go documentation Group: Documentation/Other Requires: %{name} = %{version} Provides: go-doc = %{version} %description doc Go examples and documentation. %ifarch %{tsan_arch} # boo#1052528 %package race Summary: Go runtime race detector Group: Development/Languages/Other URL: https://compiler-rt.llvm.org/ Requires: %{name} = %{version} Supplements: %{name} = %{version} ExclusiveArch: %{tsan_arch} %description race Go runtime race detector libraries. Install this package if you wish to use the -race option, in order to detect race conditions present in your Go programs. %endif %prep %ifarch %{tsan_arch} # compiler-rt %setup -q -T -b 100 -n compiler-rt-g%{tsan_commit} %patch11 -p1 %endif # go %setup -q -n go %patch2 -p1 %patch5 -p1 %if %{with gccgo} %if 0%{?gcc_go_version} == 6 %patch8 -p1 %endif %if 0%{?gcc_go_version} == 7 %patch9 -p1 %endif %endif cp %{SOURCE4} . %build # Remove the pre-included .sysos, to avoid shipping things we didn't compile # (which is against the openSUSE guidelines for packaging). find . -type f -name '*.syso' -print -delete # First, compile LLVM's TSAN, and replace the built-in with it. We can only do # this for amd64. %ifarch %{tsan_arch} pushd ../compiler-rt*/lib/tsan/go ./buildgo.sh popd cp ../compiler-rt*/lib/tsan/go/race_linux_%{go_arch}.syso src/runtime/race/race_linux_%{go_arch}.syso %endif # Now, compile Go. %if %{with gccgo} export GOROOT_BOOTSTRAP=%{_prefix} %else export GOROOT_BOOTSTRAP=%{_libdir}/%{go_bootstrap_version} %endif export GOROOT="`pwd`" export GOROOT_FINAL=%{_libdir}/go/%{go_api} export GOBIN="$GOROOT/bin" mkdir -p "$GOBIN" cd src HOST_EXTRA_CFLAGS="%{optflags} -Wno-error" ./make.bash -v cd ../ %ifarch %{tsan_arch} # Install TSAN-friendly version of the std libraries. bin/go install -race std %endif %if %{with_shared} bin/go install -buildmode=shared -linkshared std %endif %check %ifarch %{tsan_arch} # Make sure that we have the right TSAN checked out. grep "%{tsan_commit}" src/runtime/race/README %endif %install export GOROOT="%{buildroot}%{_libdir}/go/%{go_api}" # locations for third party libraries, see README-openSUSE for info about locations. install -d %{buildroot}%{_datadir}/go/%{go_api}/contrib install -d $GOROOT/contrib/pkg/linux_%{go_arch} ln -s %{_libdir}/go/%{go_api}/contrib/pkg/ %{buildroot}%{_datadir}/go/%{go_api}/contrib/pkg install -d %{buildroot}%{_datadir}/go/%{go_api}/contrib/cmd install -d %{buildroot}%{_datadir}/go/%{go_api}/contrib/src ln -s %{_datadir}/go/%{go_api}/contrib/src/ %{buildroot}%{_libdir}/go/%{go_api}/contrib/src install -Dm644 README.SUSE $GOROOT/contrib/ ln -s %{_libdir}/go/%{go_api}/contrib/README.SUSE %{buildroot}%{_datadir}/go/%{go_api}/contrib/README.SUSE # source files for go install, godoc, etc install -d %{buildroot}%{_datadir}/go/%{go_api} for ext in *.{go,c,h,s,S,py,syso}; do find src -name ${ext} -exec install -Dm644 \{\} %{buildroot}%{_datadir}/go/%{go_api}/\{\} \; done mkdir -p $GOROOT/src for i in $(ls %{buildroot}/usr/share/go/%{go_api}/src);do ln -s /usr/share/go/%{go_api}/src/$i $GOROOT/src/$i done # add lib files that are needed (such as the timezone database). install -d $GOROOT/lib find lib -type f -exec install -D -m644 {} $GOROOT/{} \; # copy document templates, packages, obj libs and command utilities mkdir -p $GOROOT/bin # remove bootstrap rm -rf pkg/bootstrap mv pkg $GOROOT mv bin/* $GOROOT/bin mkdir -p $GOROOT/misc/trace mv misc/trace/* $GOROOT/misc/trace # add wasm (Web Assembly) boo#1139210 mkdir -p $GOROOT/misc/wasm mv misc/wasm/* $GOROOT/misc/wasm rm -f %{buildroot}%{_bindir}/{hgpatch,quietgcc} # gdbinit install -Dm644 %{SOURCE6} $GOROOT/bin/gdbinit.d/go.gdb %if "%{_lib}" == "lib64" sed -i "s/lib/lib64/" $GOROOT/bin/gdbinit.d/go.gdb sed -i "s/\$go_api/%{go_api}/" $GOROOT/bin/gdbinit.d/go.gdb %endif # update-alternatives mkdir -p %{buildroot}%{_sysconfdir}/alternatives mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_sysconfdir}/profile.d mkdir -p %{buildroot}%{_sysconfdir}/gdbinit.d touch %{buildroot}%{_sysconfdir}/alternatives/{go,gofmt,go.gdb} ln -sf %{_sysconfdir}/alternatives/go %{buildroot}%{_bindir}/go ln -sf %{_sysconfdir}/alternatives/gofmt %{buildroot}%{_bindir}/gofmt ln -sf %{_sysconfdir}/alternatives/go.gdb %{buildroot}%{_sysconfdir}/gdbinit.d/go.gdb # documentation and examples # fix documetation permissions (rpmlint warning) find doc/ misc/ -type f -exec chmod 0644 '{}' + # remove unwanted arch-dependant binaries (rpmlint warning) rm -rf misc/cgo/test/{_*,*.o,*.out,*.6,*.8} # prepare go-doc mkdir -p %{buildroot}%{_docdir}/go/%{go_api} cp -r AUTHORS CONTRIBUTORS CONTRIBUTING.md LICENSE PATENTS README.md README.SUSE %{buildroot}%{_docdir}/go/%{go_api} cp -r doc/* %{buildroot}%{_docdir}/go/%{go_api} %fdupes -s %{buildroot}%{_prefix} %post update-alternatives \ --install %{_bindir}/go go %{_libdir}/go/%{go_api}/bin/go 30 \ --slave %{_bindir}/gofmt gofmt %{_libdir}/go/%{go_api}/bin/gofmt \ --slave %{_sysconfdir}/gdbinit.d/go.gdb go.gdb %{_libdir}/go/%{go_api}/bin/gdbinit.d/go.gdb %postun if [ $1 -eq 0 ] ; then update-alternatives --remove go %{_libdir}/go/%{go_api}/bin/go fi %files %defattr(-,root,root,-) %{_bindir}/go %{_bindir}/gofmt %dir %{_libdir}/go %{_libdir}/go/%{go_api} %dir %{_datadir}/go %{_datadir}/go/%{go_api} %dir %{_sysconfdir}/gdbinit.d/ %config %{_sysconfdir}/gdbinit.d/go.gdb %ghost %{_sysconfdir}/alternatives/go %ghost %{_sysconfdir}/alternatives/gofmt %ghost %{_sysconfdir}/alternatives/go.gdb %dir %{_docdir}/go %dir %{_docdir}/go/%{go_api} %doc %{_docdir}/go/%{go_api}/AUTHORS %doc %{_docdir}/go/%{go_api}/CONTRIBUTORS %doc %{_docdir}/go/%{go_api}/CONTRIBUTING.md %doc %{_docdir}/go/%{go_api}/LICENSE %doc %{_docdir}/go/%{go_api}/PATENTS %doc %{_docdir}/go/%{go_api}/README.md %doc %{_docdir}/go/%{go_api}/README.SUSE # We don't include TSAN in the main Go package. %ifarch %{tsan_arch} %exclude %{_datadir}/go/%{go_api}/src/runtime/race/race_linux_%{go_arch}.syso %endif %files doc %defattr(-,root,root,-) %doc %{_docdir}/go/%{go_api}/codewalk %doc %{_docdir}/go/%{go_api}/articles %doc %{_docdir}/go/%{go_api}/progs %doc %{_docdir}/go/%{go_api}/play %doc %{_docdir}/go/%{go_api}/gopher %doc %{_docdir}/go/%{go_api}/devel %doc %{_docdir}/go/%{go_api}/*.html %doc %{_docdir}/go/%{go_api}/*.css %doc %{_docdir}/go/%{go_api}/*.png %ifarch %{tsan_arch} %files race %defattr(-,root,root,-) %{_datadir}/go/%{go_api}/src/runtime/race/race_linux_%{go_arch}.syso %endif %changelog ++++++ README.SUSE ++++++ Updated: 05.05.2012 Authors: Graham Anderson, <gra...@andtech.eu> PROJECT DETAILS --------------- OBS: https://build.opensuse.org/project/show?project=devel:languages:go Maintainers: Sascha Peilicke (saschpe), Graham Anderson (andtecheu) Wiki: http://en.opensuse.org/Go http://en.opensuse.org/openSUSE:Packaging_Go GENERAL NOTES ------------- Go toolchain environmental variables are configured via go.sh, which is installed to /etc/profile.d/go.sh Packaging guidelines and an RPM spec file recipe for packaging third party Go libraries can be found on the openSUSE wiki: http://en.opensuse.org/openSUSE:Packaging_Go The openSUSE go package uses the standard Go distribution toolchain, with a a small patchset to modify a few of the toolchain commands to suit our environment and packaging needs. This means that many of the standard go toolchain commands are not inside a users PATH, but rather are invoked and used via the "go" command. Should you wish to script or manually use the commands, the install location on a 64 bit system is /usr/lib64/go/pkg/tool/linux_amd64 The "go" tool, the "godoc" document server are inside a users PATH. We currently don't support the gccgo implementation, this is not for any other reason than contributer and maintainer time constraints. GO DOCUMENTATION ---------------- As of yet, there are no man pages for the standard Go distribution toolchain, please see the documentation provided by the "godoc" command. Man pages are slated to be included in the release in future. One of the diffs from the maintained patchset adds the distro specific doc and source file locations of the *-doc RPM packages to the virtual filesystem of the "godoc" documentation server. That is to say, as long as packages follow the Go packaging guidelines, API and other documentation should always be available via the godoc server if the packages "doc" RPM is installed. PACKAGE INSTALL LOCATIONS ------------------------- Go standard library packages are installed to a location in $GOROOT, which is defined as /usr/lib64/go on 64bit systems. Third party package binaries are installed to the default system wide $GOPATH entry. On 64bit systems the location /usr/lib64/go/contrib is used. This is specified in the macros.go RPM macro definition file that is part of the main Go package and is used for packaging most third party Go libraries. The reasons binary packages are installed to a GOPATH entry instead of GOROOT are mainly to do with how the Go toolchain prioritises and behaves with packages installed to the same location as the Go std library. By installing third party packages to a system-wide GOPATH entry location, we can ensure that no packages clobber the standard library namespace or file tree. Additionally we can support binary only packages, which as of Go 1.1 will only be supported outside of the $GOROOT. There are additional benefits to this location; such as allowing users and developers to prioritise linking from their own user defined GOPATH, which defaults to $HOME/go configured via /etc/profile.d/go.sh config. This has particular benefit for development workflows. For Go 1.1 and beyond, building and linking with binary only pacakges will only be supported with the following caveat. Package source code must not exist in the same GOPATH segment as the binary package .a archive file. If both the binary archive (.a) and the package source are installed to the same GOPATH segment, then the "go build" or "go install" command will prioritise building the software using package sources before using package binary archives. A side effect of this is that is actually possible to have source code only third party packages. To summarise the priority of binary package linking and building: 1. Any source files or binary packages in $GOROOT are considered first. Any binary packages in $GOROOT that are considered "stale" by the build tools are ignored in favour of the package source. 2. $GOPATH is considered next for import statements. GOPATH is a colon delimited list of paths. GOPATH segments are examined by the build tools in a FIFO manner, left to right. Both a system wide and a user GOPATH segment are configured by default, the user GOPATH segment takes priority over the system segment to allow flexibility for development workflows. The default user GOPATH is: GOPATH=$HOME/go:$GOROOT/contrib The default root user GOPATH is: GOPATH=$GOROOT/contrib 3. For Go < 1.1, If both the source and binary archive is available for a package import in the same GOPATH segment, the binary archive will take precedence and will be linked during compilation. For Go >= 1.1 If the package source is avaiable in the GOPATH segment, it will always be used in preference to the binary ++++++ _service ++++++ <services> <service name="tar_scm" mode="disabled"> <param name="url">https://git.llvm.org/git/compiler-rt.git</param> <param name="scm">git</param> <param name="exclude">.git</param> <!-- [boo#1052528] Always make sure this is kept up to date with src/runtime/race/README. --> <param name="versionformat">g%H</param> <param name="revision">fe2c72c59aa7f4afa45e3f65a5d16a374b6cce26</param> </service> <service name="download_files" mode="disabled"> <param name="changesgenerate">enable</param> </service> <service name="recompress" mode="disabled"> <param name="file">compiler-rt-*.tar</param> <param name="compression">xz</param> </service> </services> ++++++ allow-binary-only-packages.patch ++++++ Index: go/src/cmd/go/internal/load/pkg.go =================================================================== --- go.orig/src/cmd/go/internal/load/pkg.go +++ go/src/cmd/go/internal/load/pkg.go @@ -541,7 +541,7 @@ func LoadImport(path, srcDir string, par // Not vendoring, or we already found the vendored path. buildMode |= build.IgnoreVendor } - bp, err = cfg.BuildContext.Import(path, srcDir, buildMode) + bp, err = cfg.BuildContext.Import(path, srcDir, build.AllowBinary|buildMode) } bp.ImportPath = importPath if cfg.GOBIN != "" { ++++++ gcc6-go.patch ++++++ 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-6", 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 @@ -57,7 +57,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-6 is missing, $(go env GOROOT) is # tried for all "go" in $PATH. $HOME/go1.4 by default. set -e @@ -152,8 +152,8 @@ echo "Building Go cmd/dist using $GOROOT if $verbose; then echo cmd/dist fi -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 echo "Set \$GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4." >&2 exit 1 fi @@ -163,7 +163,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; exit 1 fi rm -f cmd/dist/dist -GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$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 # -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-6){ 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-6){ 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='' $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 eval `{./cmd/dist/dist env -9} if(~ $#vflag 1) ++++++ gcc7-go.patch ++++++ 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 @@ -57,7 +57,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 @@ -152,8 +152,8 @@ echo "Building Go cmd/dist using $GOROOT if $verbose; then echo cmd/dist fi -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 @@ -163,7 +163,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; exit 1 fi rm -f cmd/dist/dist -GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$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 # -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='' $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) ++++++ gcc9-rsp-clobber.patch ++++++ --- a/lib/sanitizer_common/sanitizer_linux.cc 2018-01-11 23:53:30.000000000 +0100 +++ b/lib/sanitizer_common/sanitizer_linux.cc.new 2019-03-10 21:23:23.824919781 +0100 @@ -1243,7 +1243,7 @@ "d"(parent_tidptr), "r"(r8), "r"(r10) - : "rsp", "memory", "r11", "rcx"); + : "memory", "r11", "rcx"); return res; } #elif defined(__mips__) ++++++ go-rpmlintrc ++++++ addFilter("binaryinfo-readelf-failed") # go binaries are suposedly ELF-compliant addFilter("statically-linked-binary") # go doesn't yet support dynamic linking # .syso files are special. Note that while they are architecture-dependent, # they are named to avoid conflicts (and we make sure of that in the RPM # through go_arch). addFilter("unstripped-binary-or-object.*\.syso$") addFilter("arch-dependent-file-in-usr-share.*\.syso$") addFilter("W: position-independent-executable-suggested") ++++++ go.gdbinit ++++++ add-auto-load-safe-path /usr/lib/go/$go_api/src/runtime/runtime-gdb.py ++++++ tools-packaging.patch ++++++ Index: go/src/cmd/go/internal/load/pkg.go =================================================================== --- go.orig/src/cmd/go/internal/load/pkg.go +++ go/src/cmd/go/internal/load/pkg.go @@ -1281,7 +1281,13 @@ func (p *Package) load(stk *ImportStack, if cfg.BuildToolchainName == "gccgo" { p.Target = filepath.Join(base.ToolDir, elem) } else { - p.Target = filepath.Join(cfg.GOROOTpkg, "tool", full) + // If GOROOT_TARGET is set, then write to it for packaging purpose + gorootTarget := os.Getenv("GOROOT_TARGET") + if gorootTarget == "" { + p.Target = filepath.Join(cfg.GOROOTpkg, "tool", full) + } else { + p.Target = filepath.Join(gorootTarget, "pkg/tool", full) + } } } if p.Target != "" && cfg.BuildContext.GOOS == "windows" {