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" {

Reply via email to