Sync from SUSE:SLFO:Main go1.16 revision df2d3c44ca9c68579cabda6113ad4dd4

This commit is contained in:
Adrian Schröter 2024-05-03 13:05:18 +02:00
commit 0a25503966
12 changed files with 1258 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

120
README.SUSE Normal file
View File

@ -0,0 +1,120 @@
Updated: 05.05.2012
Authors: Graham Anderson, <graham@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

15
_service Normal file
View File

@ -0,0 +1,15 @@
<services>
<service name="tar_scm" mode="disabled">
<param name="url">https://github.com/llvm/llvm-project.git</param>
<param name="scm">git</param>
<param name="include">compiler-rt</param>
<!-- [boo#1052528] Always make sure this is kept up to date with src/runtime/race/README. -->
<param name="revision">89f7ccea6f6488c443655880229c54db1f180153</param>
<param name="versionformat">%H</param>
<param name="filename">llvm</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">llvm-*.tar</param>
<param name="compression">xz</param>
</service>
</services>

4
_servicedata Normal file
View File

@ -0,0 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/golang/go</param>
<param name="changesrevision">a068054af141c01df5a4519844f4b77273605f4e</param></service></servicedata>

View File

@ -0,0 +1,33 @@
Index: go/src/cmd/link/internal/ld/lib.go
===================================================================
--- go.orig/src/cmd/link/internal/ld/lib.go
+++ go/src/cmd/link/internal/ld/lib.go
@@ -1389,28 +1389,6 @@ func (ctxt *Link) hostlink() {
// Use lld to avoid errors from default linker (issue #38838)
altLinker = "lld"
}
-
- if ctxt.Arch.InFamily(sys.ARM, sys.ARM64) && objabi.GOOS == "linux" {
- // On ARM, the GNU linker will generate COPY relocations
- // even with -znocopyreloc set.
- // https://sourceware.org/bugzilla/show_bug.cgi?id=19962
- //
- // On ARM64, the GNU linker will fail instead of
- // generating COPY relocations.
- //
- // In both cases, switch to gold.
- altLinker = "gold"
-
- // If gold is not installed, gcc will silently switch
- // back to ld.bfd. So we parse the version information
- // and provide a useful error if gold is missing.
- cmd := exec.Command(*flagExtld, "-fuse-ld=gold", "-Wl,--version")
- if out, err := cmd.CombinedOutput(); err == nil {
- if !bytes.Contains(out, []byte("GNU gold")) {
- log.Fatalf("ARM external linker must be gold (issue #15696), but is not: %s", out)
- }
- }
- }
}
if ctxt.Arch.Family == sys.ARM64 && objabi.GOOS == "freebsd" {
// Switch to ld.bfd on freebsd/arm64.

77
gcc-go.patch Normal file
View File

@ -0,0 +1,77 @@
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-$gcc_go_version", 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-$gcc_go_version 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-$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
@@ -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-$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)
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-$gcc_go_version){
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-$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
@@ -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='' 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)

9
go-rpmlintrc Normal file
View File

@ -0,0 +1,9 @@
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")

1
go.gdbinit Normal file
View File

@ -0,0 +1 @@
add-auto-load-safe-path /usr/lib/go/$go_label/src/runtime/runtime-gdb.py

BIN
go1.16.15.src.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

561
go1.16.changes Normal file
View File

@ -0,0 +1,561 @@
-------------------------------------------------------------------
Thu Apr 13 04:58:20 UTC 2023 - Martin Liška <mliska@suse.cz>
- Use gcc13 compiler for Tumbleweed.
-------------------------------------------------------------------
Tue Aug 23 19:49:42 UTC 2022 - Andreas Schwab <schwab@suse.de>
- Don't build with shared on riscv64 for < go1.18
-------------------------------------------------------------------
Thu Aug 11 18:23:54 UTC 2022 - Dirk Müller <dmueller@suse.com>
- switch to gcc-go, bootstrap via gcc-go 11/12 which
should be available on leap, sle and factory
- add gcc-go.patch to bootstrap with gcc-go any version
- drop gcc6-go.patch, gcc7-go.patch: superseded by gcc-go.patch
-------------------------------------------------------------------
Fri Mar 11 23:37:41 UTC 2022 - Jeff Kowalczyk <jkowalczyk@suse.com>
- Add %define go_label as a configurable Go toolchain directory
* go_label can be used to package multiple Go toolchains with
the same go_api
* go_label should be defined as go_api with an optional suffix
e.g. %{go_api} or %{go_api}-foo
* Default go_label = go_api makes no changes to package layout
-------------------------------------------------------------------
Wed Mar 9 17:03:28 UTC 2022 - Dirk Müller <dmueller@suse.com>
- add dont-force-gold-on-arm64.patch (bsc#1183043)
- drop binutils-gold dependency
-------------------------------------------------------------------
Thu Mar 3 21:51:40 UTC 2022 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.15 (released 2022-03-03) includes a security fix to the
regexp/syntax package, as well as bug fixes to the compiler,
runtime, the go command, and to the net package
Refs boo#1182345 go1.16 release tracking
CVE-2022-24921
* boo#1196732 go#51112 CVE-2022-24921
* go#51117 regexp: stack overflow (process exit) handling deeply nested regexp
* go#51331 cmd/go/internal/modfetch: erroneously resolves a v2+incompatible version when a v2/go.mod file exists
* go#51198 cmd/compile: "runtime: bad pointer in frame" in riscv64 with complier optimizations
* go#51161 net: use EDNS to increase DNS packet size [freeze exception]
* go#50733 runtime/metrics: time histogram sub-bucket ranges are off by a factor of two
-------------------------------------------------------------------
Fri Feb 18 02:10:17 UTC 2022 - Jeff Kowalczyk <jkowalczyk@suse.com>
- Add missing .bin binary test data to packaging.
* Existing test data files added to packaging with mode 644:
src/compress/bzip2/testdata/pass-random2.bin
src/compress/bzip2/testdata/pass-random1.bin
src/debug/dwarf/testdata/line-gcc-win.bin
-------------------------------------------------------------------
Thu Feb 10 23:46:55 UTC 2022 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.14 (released 2022-02-10) includes security fixes to the
crypto/elliptic, math/big packages and to the go command, as well
as bug fixes to the compiler, linker, runtime, the go command,
and the debug/macho, debug/pe, net/http/httptest, and testing
packages.
Refs boo#1182345 go1.16 release tracking
CVE-2022-23806 CVE-2022-23772 CVE-2022-23773
* boo#1195838 go#50974 CVE-2022-23806
* go#50977 crypto/elliptic: IsOnCurve returns true for invalid field elements
* boo#1195835 go#50699 CVE-2022-23772
* go#50700 math/big: Rat.SetString may consume large amount of RAM and crash
* boo#1195834 go#35671 CVE-2022-23773
* go#50686 cmd/go: do not treat branches with semantic-version names as releases
* go#50866 cmd/compile: incorrect use of CMN on arm64
* go#50832 runtime/race: NoRaceMutexPureHappensBefore failures
* go#50811 cmd/go: remove bitbucket VCS probing
* go#50780 runtime: incorrect frame information in traceback traversal may hang the process.
* go#50721 debug/pe: reading debug_info section of PE files that use the DWARF5 form DW_FORM_line_strp causes error
* go#50682 cmd/compile: MOVWreg missing sign-extension following a Copy from a floating-point LoadReg
* go#50645 testing: surprising interaction of subtests with TempDir
* go#50585 net/http/httptest: add fipsonly compliant certificate in for NewTLSServer(), for dev.boringcrypto branch
* go#50245 runtime: intermittent os/exec.Command.Start() Hang on Darwin in Presence of "plugin" Package
-------------------------------------------------------------------
Thu Jan 6 20:38:08 UTC 2022 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.13 (released 2022-01-06) includes fixes to the compiler,
linker, runtime, and the net/http package.
Refs boo#1182345 go1.16 release tracking
* go#50449 x/net/http2: http.Server.WriteTimeout does not fire if the http2 stream's window is out of space.
* go#50296 cmd/link: does not set section type of .init_array correctly
* go#50194 runtime/race: building for iOS, but linking in object file built for macOS
* go#50072 runtime: race detector SIGABRT or SIGSEGV on macOS Monterey
* go#49923 cmd/link: support more load commands on Mach-O
* go#49412 cmd/compile: internal compiler error: Op...LECall and OpDereference have mismatched mem
* go#48115 runtime: mallocs cause "base outside usable address space" panic when running on iOS 14
-------------------------------------------------------------------
Thu Dec 9 17:31:00 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.12 (released 2021-12-09) includes security fixes to the
syscall and net/http packages.
Refs boo#1182345 go1.16 release tracking
CVE-2021-44716 CVE-2021-44717
* boo#1193598 go#50057 CVE-2021-44717
* go#50066 syscall: dont close fd 0 on ForkExec error
* boo#1193597 go#50058 CVE-2021-44716
* go#50064 net/http: limit growth of header canonicalization cache
-------------------------------------------------------------------
Fri Dec 3 02:15:02 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.11 (released 2021-12-02) includes fixes to the compiler,
runtime, and the net/http, net/http/httptest, and time packages.
Refs boo#1182345 go1.16 release tracking
* go#49910 x/net/http2: frequent failures in TestClientConnCloseAtBody
* go#49908 x/net/ipv6: TestPacketConnReadWriteMulticast{UDP,ICMP} failing with "i/o timeout" on OpenBSD 6.8 and 7.0
* go#49904 x/net/http2: Client doesn't send body until ExpectContinueTimeout expires
* go#49867 syscall: ntdll.dll errors in rtlGetNtVersionNumbers via os.StartProcess
* go#49851 net/http/httptest: Close does not wait for the underlying Server's ConnState callbacks to complete
* go#49728 runtime: "fatal error: unexpected signal during runtime execution" in cmd/go tests on darwin-amd64-race running macOS 12.0
* go#49661 x/net/http2: TestUnreadFlowControlReturned_Server failures with stream error "NO_ERROR" since 2021-10-05
* go#49623 net/http: Possible HTTP/2 busy loop regression in Go 1.17.3
* go#49567 net/http: server responds with Transfer-Encoding: identity
* go#49560 x/net/http2: setting Request.Close doesn't close TCP connections
* go#49558 net/http: HTTP/2 response body Close method sometimes returns spurious context cancelation error (1.17.3 regression)
* go#49406 time: ParseInLocation error
* go#49391 cmd/compile: internal compiler error: Expand calls interface data problem
-------------------------------------------------------------------
Thu Nov 4 21:23:39 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.10 (released 2021-11-04) includes security fixes to the
archive/zip and debug/macho packages, as well as bug fixes to the
compiler, linker, runtime, the misc/wasm directory, and to the
net/http package.
Refs boo#1182345 go1.16 release tracking
CVE-2021-41771 CVE-2021-41772
* boo#1192377 go#48990 CVE-2021-41771
* go#48991 debug/macho: invalid dynamic symbol table command can cause panic
* boo#1192378 go#48085 CVE-2021-41772
* go#48251 archive/zip: Reader.Open panics on empty string
* go#49153 misc/wasm, cmd/link: Go 1.17.2 causes WASM builds to throw command line too long with many environment variables
* go#49076 x/net/http2: backport critical fixes
* go#49009 net,runtime: apparent deadlock in (*net.conn).Close and runtime.netpollblock on arm64 platforms
* go#48822 x/net/http2: client can hang forever if headers' size exceeds connection's buffer size and server hangs past request time
* go#48649 x/net/http2: pool deadlock
* go#48478 cmd/compile: 64 bits shifts on arm get wrong results
* go#48474 cmd/compile: incorrect arm/arm64 simplification rules
-------------------------------------------------------------------
Fri Oct 8 00:41:43 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.9 (released 2021-10-07) includes a security fix to the
linker and misc/wasm directory, as well as bug fixes to the
runtime and to the text/template package.
Refs boo#1182345 go1.16 release tracking
CVE-2021-38297
* boo#1191468 go#48797 CVE-2021-38297
* go#48799 security: fix CVE-2021-38297 misc/wasm, cmd/link: do not let command line args overwrite global data
* go#48443 text/template: should t.init() be executed before t.muTmpl.Lock() in AddParseTree() method?
* go#47858 time: timer reset sometimes ignored, causing delayed ticks
-------------------------------------------------------------------
Fri Sep 10 02:44:03 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.8 (released 2021-09-09) includes a security fix to the
archive/zip package, as well as bug fixes to the archive/zip,
go/internal/gccgoimporter, html/template, net/http, and
runtime/pprof packages.
Refs boo#1182345 go1.16 release tracking
CVE-2021-39293
* boo#1190589 go#47801 CVE-2021-39293
* go#47985 archive/zip: overflow in preallocation check can cause OOM panic
* go#47691 x/net/http2: server sends RST_STREAM w/ PROTOCOL_ERROR to clients it incorrectly believes have violated max advertised num streams
* go#47675 runtime/pprof: apparent deadlock in TestGoroutineSwitch on linux-armv6l
* go#47610 go/internal/gccgoimporter: TestInstallationImporter broken with tip gccgo
* go#47535 net/http: TestCancelRequestWhenSharingConnection can cause port exhaustion
* go#47042 html/template: data race with concurrent ExecuteTemplate calls
-------------------------------------------------------------------
Thu Aug 12 20:48:30 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- Add bash scripts used by go tool commands to provide a more
complete cross-compiling go toolchain install.
* Fixes "go tool dist list" error "all.bash does not exist"
* Added to packaging:
/usr/lib64/go/1.16/lib/time/update.bash (already packaged)
/usr/lib64/go/1.16/src/all.bash
/usr/lib64/go/1.16/src/bootstrap.bash
/usr/lib64/go/1.16/src/buildall.bash
/usr/lib64/go/1.16/src/clean.bash
/usr/lib64/go/1.16/src/cmp.bash
/usr/lib64/go/1.16/src/make.bash
/usr/lib64/go/1.16/src/race.bash
/usr/lib64/go/1.16/src/run.bash
/usr/share/go/1.16/src/all.bash
/usr/share/go/1.16/src/bootstrap.bash
/usr/share/go/1.16/src/buildall.bash
/usr/share/go/1.16/src/clean.bash
/usr/share/go/1.16/src/cmd/compile/internal/ssa/gen/cover.bash
/usr/share/go/1.16/src/cmd/vendor/golang.org/x/sys/windows/mkerrors.bash
/usr/share/go/1.16/src/cmd/vendor/golang.org/x/sys/windows/mkknownfolderids.bash
/usr/share/go/1.16/src/cmp.bash
/usr/share/go/1.16/src/internal/trace/mkcanned.bash
/usr/share/go/1.16/src/make.bash
/usr/share/go/1.16/src/race.bash
/usr/share/go/1.16/src/run.bash
-------------------------------------------------------------------
Thu Aug 5 21:03:30 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.7 (released 2021-08-05) includes a security fix to the
net/http/httputil package, as well as bug fixes to the compiler,
the linker, the runtime, the go command, and the net/http
package.
CVE-2021-36221
Refs boo#1182345 go1.16 release tracking
* boo#1189162 go#46866 CVE-2021-36221
* go#47474 net/http: panic due to racy read of persistConn after handler panic
* go#47348 cmd/go: "go list -f '{{.Stale}}'" stack overflow with cyclic imports
* go#47332 time: Timer reset broken under heavy use since go1.16 timer optimizations added
* go#47289 cmd/link: build error with cgo in Windows, redefinition of go.map.zero
* go#47015 cmd/go: go mod vendor: open C:\Users\LICENSE: Access is denied.
* go#46928 cmd/compile: register conflict between external linker and duffzero on arm64
* go#46858 runtime: ppc64x binaries randomly segfault on linux 5.13rc6
* go#46551 cmd/go: unhelpful error message when running "go install" on a replaced-but-not-required package
-------------------------------------------------------------------
Thu Aug 5 20:51:24 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- Drop patch to fix crashes on PowerPC with kernel >= 5.13, fixed
in next upstream release:
* drop fix-ppc64-crashes.patch
-------------------------------------------------------------------
Mon Jul 19 12:40:37 UTC 2021 - Fabian Vogt <fvogt@suse.com>
- Add patch to fix crashes on PowerPC with kernel >= 5.13:
* fix-ppc64-crashes.patch
-------------------------------------------------------------------
Mon Jul 12 23:51:55 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.6 (released 2021-07-12) includes a security fix to the
crypto/tls package, as well as bug fixes to the compiler, and the
net and net/http packages.
CVE-2021-34558
Refs boo#1182345 go1.16 release tracking
* boo#1188229 go#47143 CVE-2021-34558
* go#47145 security: fix CVE-2021-34558
* go#46999 net: LookupMX behaviour broken
* go#46981 net: TestCVE202133195 fails if /etc/resolv.conf specifies ndots larger than 3
* go#46769 syscall: TestGroupCleanupUserNamespace test failure on Fedora
* go#46657 runtime: deeply nested struct initialized with non-zero values
* go#44984 net/http: server not setting Content-Length in certain cases
-------------------------------------------------------------------
Thu Jun 10 17:31:11 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- Fix extraneous trailing percent character %endif% in spec file.
-------------------------------------------------------------------
Thu Jun 3 22:46:45 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.5 (released 2021-06-03) includes security fixes to the
archive/zip, math/big, net, and net/http/httputil packages, as
well as bug fixes to the linker, the go command, and the net/http
package.
CVE-2021-33195 CVE-2021-33196 CVE-2021-33197 CVE-2021-33198
Refs boo#1182345 go1.16 release tracking
* boo#1187443 go#46241 CVE-2021-33195
* go#46357 net: Lookup functions may return invalid host names
* go#46530 net: Unix dnsclient test for CVE-2021-33195 assumes that 1.2.3.4 does not resolve
* boo#1186622 go#46242 CVE-2021-33196
* go#46397 archive/zip: malformed archive may cause panic or memory exhaustion
* boo#1187444 go#46313 CVE-2021-33197
* go#46315 net/http/httputil: ReverseProxy forwards Connection headers if first one is empty
* boo#1187445 go#45910 CVE-2021-33198
* go#46306 math/big: (*Rat).SetString with "1.770p02041010010011001001" crashes with "makeslice: len out of range"
* go#46214 cmd/go: make go mod download with no arguments leave go.sum alone
* go#46144 cmd/go: error out of 'go mod tidy' if the go.mod file specifies a newer-than-supported Go version
* go#46128 cmd/link: internal error when externally linking very large binaries
* go#45927 cmd/link: SIGSEGV running 'openshift-install version' for release-4.8 using external linking on PPC64LE
* go#45832 cmd/link: unexpected trampoline when cross-compiling to ppc64le
-------------------------------------------------------------------
Fri May 7 16:28:32 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.4 (released 2021-05-06) includes a security fix to the
net/http package, as well as bug fixes to the runtime, the
compiler, and the archive/zip, time, and syscall packages.
CVE-2021-31525
Refs boo#1182345 go1.16 release tracking
* boo#1185790 CVE-2021-31525
* go#45712 net/http: ReadRequest can stack overflow
* go#45636 cmd/compile: internal compiler error: Invalid PPC64 rotate mask
* go#45482 runtime: "invalid pc-encoded table" throw caused by bad cgo traceback (expandFinalInlineFrames)
* go#45385 time: Europe/Dublin timezone handling broken with embedded timezone database
* go#45347 archive/zip: duplicate entries in FS interface
* go#45307 os/signal: timeout in TestAllThreadsSyscallSignals
-------------------------------------------------------------------
Fri Apr 2 12:26:15 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.3 (released 2021-04-01) includes fixes to the compiler,
linker, runtime, the go command, and the testing and time
packages.
Refs boo#1182345 go1.16 release tracking
* go#45303 runtime: "invalid pc-encoded table" throw caused by bad cgo traceback
* go#45253 cmd/compile: fix long RMW bit operations on AMD64
* go#45240 all: run.{bash,bat,rc} sets GOPATH inconsistently
* go#45192 Strange behaviour with loops
* go#45030 cmd/link: go 1.16 plugin does not initialize global variables correctly when not used directly
* go#44888 testing: Helper line number has changed in 1.16
* go#44885 cmd/go: import paths ending with '+' are rejected (affects executable like g++ or clang++)
* go#44869 time, runtime: zero duration timer takes 2 minutes to fire
* go#44860 cmd/go: documentation at golang.org for cmd/go has confusing formatting
* go#44812 cmd/go: 'go get' does not add missing hash to go.sum when ziphash file missing from cache
* go#44640 cmd/link: fail to build when using time/tzdata on ARM
-------------------------------------------------------------------
Fri Mar 12 01:27:53 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.2 (released 2021-03-11) includes fixes to cgo, the
compiler, linker, the go command, and the syscall and time
packages.
Refs boo#1182345 go1.16 release tracking
* go#44793 cmd/go: mod tidy should ignore missing standard library packages
* go#44746 cmd/go: improve error message when outside a module from "working directory is not part of a module"
* go#44676 cmd/go: warning message when getting a retracted module version is missing a trailing newline
* go#44659 runtime: marked free object in span
* go#44647 cmd/go: "malformed import path" in Go 1.16 for packages with path elements containing a leading dot
* go#44638 cmd/link: runtime crash, unexpected fault address 0xffffffffffffffff, h2_bundle.go, when using plugin
* go#44618 time: LoadLocationFromTZData with slim tzdata uses incorrect zone
* go#44593 syscall & x/sys/windows: buffer overflow in GetQueuedCompletionStatus
* go#44498 cmd/go: 'go mod edit -exclude' erroneously rejects '+incompatible' versions
* go#44496 cmd/go: malformed module path with retract v2+
* go#44464 cmd/compile: ICE on deferred call to syscall.LazyDLL.Call
* go#44462 x/tools/go/analysis, syscall: ptrace redeclared in this block
* go#44433 cmd/compile: Compiler regression in Go 1.16 - internal compiler error: child dcl collision on symbol
* go#44402 doc: Broken image in readme
* go#44358 cmd/compile: internal compiler error: Value live at entry. It shouldn't be.
* go#44346 runtime/cgo: cannot build with -Wsign-compare
-------------------------------------------------------------------
Wed Mar 10 17:33:27 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16.1 (released 2021-03-10) includes security fixes to the
archive/zip and encoding/xml packages.
CVE-2021-27918 CVE-2021-27919
Refs boo#1182345 go1.16 release tracking
* boo#1183333 CVE-2021-27918
* go#44915 encoding/xml: infinite loop when using `xml.NewTokenDecoder` with a custom `TokenReader`
* boo#1183334 CVE-2021-27919
* go#44917 archive/zip: can panic when calling Reader.Open
-------------------------------------------------------------------
Thu Feb 18 23:21:47 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- gcc6-go.patch fix typo go-7 to go-6 for bootstrap on SLE-12 gcc6
-------------------------------------------------------------------
Tue Feb 16 22:42:14 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16 (released 2021-02-16) Go 1.16 is a major release of Go.
go1.16.x minor releases will be provided through February 2022.
https://github.com/golang/go/wiki/Go-Release-Cycle
Most changes are in the implementation of the toolchain, runtime,
and libraries. As always, the release maintains the Go 1 promise
of compatibility. We expect almost all Go programs to continue to
compile and run as before.
Refs boo#1182345 go1.16 release tracking
* See release notes https://golang.org/doc/go1.16. Excerpts
relevant to OBS environment and for SUSE/openSUSE follow:
* Module-aware mode is enabled by default, regardless of whether
a go.mod file is present in the current working directory or a
parent directory. More precisely, the GO111MODULE environment
variable now defaults to on. To switch to the previous
behavior, set GO111MODULE to auto.
* Build commands like go build and go test no longer modify
go.mod and go.sum by default. Instead, they report an error if
a module requirement or checksum needs to be added or updated
(as if the -mod=readonly flag were used). Module requirements
and sums may be adjusted with go mod tidy or go get.
* go install now accepts arguments with version suffixes (for
example, go install example.com/cmd@v1.0.0). This causes go
install to build and install packages in module-aware mode,
ignoring the go.mod file in the current directory or any parent
directory, if there is one. This is useful for installing
executables without affecting the dependencies of the main
module.
* go install, with or without a version suffix (as described
above), is now the recommended way to build and install
packages in module mode. go get should be used with the -d flag
to adjust the current module's dependencies without building
packages, and use of go get to build and install packages is
deprecated. In a future release, the -d flag will always be
enabled.
* retract directives may now be used in a go.mod file to indicate
that certain published versions of the module should not be
used by other modules. A module author may retract a version
after a severe problem is discovered or if the version was
published unintentionally.
* The go mod vendor and go mod tidy subcommands now accept the -e
flag, which instructs them to proceed despite errors in
resolving missing packages.
* The go command now ignores requirements on module versions
excluded by exclude directives in the main module. Previously,
the go command used the next version higher than an excluded
version, but that version could change over time, resulting in
non-reproducible builds.
* In module mode, the go command now disallows import paths that
include non-ASCII characters or path elements with a leading
dot character (.). Module paths with these characters were
already disallowed (see Module paths and versions), so this
change affects only paths within module subdirectories.
* The go command now supports including static files and file
trees as part of the final executable, using the new //go:embed
directive. See the documentation for the new embed package for
details.
* When using go test, a test that calls os.Exit(0) during
execution of a test function will now be considered to
fail. This will help catch cases in which a test calls code
that calls os.Exit(0) and thereby stops running all future
tests. If a TestMain function calls os.Exit(0) that is still
considered to be a passing test.
* go test reports an error when the -c or -i flags are used
together with unknown flags. Normally, unknown flags are passed
to tests, but when -c or -i are used, tests are not run.
* The go get -insecure flag is deprecated and will be removed in
a future version. This flag permits fetching from repositories
and resolving custom domains using insecure schemes such as
HTTP, and also bypasses module sum validation using the
checksum database. To permit the use of insecure schemes, use
the GOINSECURE environment variable instead. To bypass module
sum validation, use GOPRIVATE or GONOSUMDB. See go help
environment for details.
* go get example.com/mod@patch now requires that some version of
example.com/mod already be required by the main
module. (However, go get -u=patch continues to patch even
newly-added dependencies.)
* GOVCS is a new environment variable that limits which version
control tools the go command may use to download source
code. This mitigates security issues with tools that are
typically used in trusted, authenticated environments. By
default, git and hg may be used to download code from any
repository. svn, bzr, and fossil may only be used to download
code from repositories with module paths or package paths
matching patterns in the GOPRIVATE environment variable. See go
help vcs for details.
* When the main module's go.mod file declares go 1.16 or higher,
the all package pattern now matches only those packages that
are transitively imported by a package or test found in the
main module. (Packages imported by tests of packages imported
by the main module are no longer included.) This is the same
set of packages retained by go mod vendor since Go 1.11.
* When the -toolexec build flag is specified to use a program
when invoking toolchain programs like compile or asm, the
environment variable TOOLEXEC_IMPORTPATH is now set to the
import path of the package being built.
* The -i flag accepted by go build, go install, and go test is
now deprecated. The -i flag instructs the go command to install
packages imported by packages named on the command line. Since
the build cache was introduced in Go 1.10, the -i flag no
longer has a significant effect on build times, and it causes
errors when the install directory is not writable.
* When the -export flag is specified, the BuildID field is now
set to the build ID of the compiled package. This is equivalent
to running go tool buildid on go list -exported -f {{.Export}},
but without the extra step.
* The -overlay flag specifies a JSON configuration file
containing a set of file path replacements. The -overlay flag
may be used with all build commands and go mod subcommands. It
is primarily intended to be used by editor tooling such as
gopls to understand the effects of unsaved changes to source
files. The config file maps actual file paths to replacement
file paths and the go command and its builds will run as if the
actual file paths exist with the contents given by the
replacement file paths, or don't exist if the replacement file
paths are empty.
* The cgo tool will no longer try to translate C struct bitfields
into Go struct fields, even if their size can be represented in
Go. The order in which C bitfields appear in memory is
implementation dependent, so in some cases the cgo tool
produced results that were silently incorrect.
* The linux/riscv64 port now supports cgo and -buildmode=pie.
This release also includes performance optimizations and code
generation improvements for RISC-V.
* The new runtime/metrics package introduces a stable interface
for reading implementation-defined metrics from the Go
runtime. It supersedes existing functions like
runtime.ReadMemStats and debug.GCStats and is significantly
more general and efficient. See the package documentation for
more details.
* Setting the GODEBUG environment variable to inittrace=1 now
causes the runtime to emit a single line to standard error for
each package init, summarizing its execution time and memory
allocation. This trace can be used to find bottlenecks or
regressions in Go startup performance. The GODEBUG
documentation describes the format.
* On Linux, the runtime now defaults to releasing memory to the
operating system promptly (using MADV_DONTNEED), rather than
lazily when the operating system is under memory pressure
(using MADV_FREE). This means process-level memory statistics
like RSS will more accurately reflect the amount of physical
memory being used by Go processes. Systems that are currently
using GODEBUG=madvdontneed=1 to improve memory monitoring
behavior no longer need to set this environment variable.
* Go 1.16 fixes a discrepancy between the race detector and the
Go memory model. The race detector now more precisely follows
the channel synchronization rules of the memory model. As a
result, the detector may now report races it previously missed.
* linker: This release includes additional improvements to the Go
linker, reducing linker resource usage (both time and memory)
and improving code robustness/maintainability. These changes
form the second half of a two-release project to modernize the
Go linker.
* The linker changes in 1.16 extend the 1.15 improvements to all
supported architecture/OS combinations (the 1.15 performance
improvements were primarily focused on ELF-based OSes and amd64
architectures). For a representative set of large Go programs,
linking is 20-25% faster than 1.15 and requires 5-15% less
memory on average for linux/amd64, with larger improvements for
other architectures and OSes. Most binaries are also smaller as
a result of more aggressive symbol pruning.
* The new embed package provides access to files embedded in the
program during compilation using the new //go:embed directive.
* The new io/fs package defines the fs.FS interface, an
abstraction for read-only trees of files. The standard library
packages have been adapted to make use of the interface as
appropriate.
* For testing code that implements fs.FS, the new testing/fstest
package provides a TestFS function that checks for and reports
common mistakes. It also provides a simple in-memory file
system implementation, MapFS, which can be useful for testing
code that accepts fs.FS implementations.
* syscall: On Linux, Setgid, Setuid, and related calls are now
implemented. Previously, they returned an syscall.EOPNOTSUPP
error. On Linux, the new functions AllThreadsSyscall and
AllThreadsSyscall6 may be used to make a system call on all Go
threads in the process. These functions may only be used by
programs that do not use cgo; if a program uses cgo, they will
always return syscall.ENOTSUP.
* time/tzdata: The slim timezone data format is now used for the
timezone database in $GOROOT/lib/time/zoneinfo.zip and the
embedded copy in this package. This reduces the size of the
timezone database by about 350 KB.
-------------------------------------------------------------------
Thu Jan 28 17:20:09 UTC 2021 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16rc1 (released 2021-01-28) is a release candidate of go1.16
cut from the master branch at the revision tagged go1.16rc1.
-------------------------------------------------------------------
Thu Dec 17 23:00:42 UTC 2020 - Jeff Kowalczyk <jkowalczyk@suse.com>
- go1.16beta1 (released 2020-12-08) is a beta version of go1.16 cut
from the master branch at the revision tagged go1.16beta1.

409
go1.16.spec Normal file
View File

@ -0,0 +1,409 @@
#
# spec file for package go1.16
#
# Copyright (c) 2023 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 go_bootstrap_version go1.4
%else
%define go_bootstrap_version go1.14
%endif
%if 0%{?suse_version} > 1550
# openSUSE Tumbleweed
%define gcc_go_version 13
%else
%define gcc_go_version 11
%endif
# Bootstrap go toolchain using gccgo package gcc_go_version
# To bootstrap using go use '--without gccgo'
%bcond_without gccgo
# Boostrapping using existing go package can fail on certain SLE-12 architectures
# Override here as needed
%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
# Build go-race only on platforms where it's supported (both amd64 and aarch64
# requires SLE15-or-later because of C++14, and ppc64le doesn't build at all
# on openSUSE yet).
%if 0%{?suse_version} >= 1500 || 0%{?sle_version} >= 150000
%define tsan_arch x86_64 aarch64
%else
# Cannot use {nil} here (ifarch doesn't like it) so just make up a fake
# architecture that no build will ever match.
%define tsan_arch openSUSE_FAKE_ARCH
%endif
# 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).
#
# In order to update the TSAN version, modify _service. See boo#1052528 for
# more details.
%define tsan_commit 89f7ccea6f6488c443655880229c54db1f180153
# go_api is the major version of Go.
# Used by go1.x packages and go metapackage for:
# RPM Provides: golang(API), RPM Requires: and rpm_vercmp
# as well as derived variables such as go_label.
%define go_api 1.16
# go_label is the configurable Go toolchain directory name.
# Used for packaging multiple Go toolchains with the same go_api.
# go_label should be defined as go_api with optional suffix, e.g.
# go_api or go_api-foo
%define go_label %{go_api}
# 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 riscv64
%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
%ifarch riscv64
%define go_arch riscv64
%endif
Name: go1.16
Version: 1.16.15
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: 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-8 when bootstrapping with gcc8-go
Patch8: gcc-go.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# boostrap
%if %{with gccgo}
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
Requires(post): update-alternatives
Requires(postun):update-alternatives
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 riscv64
%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 (from LLVM)
%setup -q -T -b 100 -n llvm-%{tsan_commit}
%endif
# go
%setup -q -n go
%patch7 -p1
%if %{with gccgo}
# 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
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}
TSAN_DIR="../llvm-%{tsan_commit}/compiler-rt/lib/tsan/go"
pushd "$TSAN_DIR"
./buildgo.sh
popd
cp -v "$TSAN_DIR/race_linux_%{go_arch}.syso" src/runtime/race/
%endif
# Now, compile Go.
%if %{with gccgo}
export GOROOT_BOOTSTRAP=%{_prefix}
%else
export GOROOT_BOOTSTRAP=%{_libdir}/%{go_bootstrap_version}
%endif
# Ensure ARM arch is set properly - boo#1169832
%ifarch armv6l armv6hl
export GOARCH=arm
export GOARM=6
%endif
%ifarch armv7l armv7hl
export GOARCH=arm
export GOARM=7
%endif
export GOROOT="`pwd`"
export GOROOT_FINAL=%{_libdir}/go/%{go_label}
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 "^race_linux_%{go_arch}.syso built with LLVM %{tsan_commit}" src/runtime/race/README
%endif
%install
export GOROOT="%{buildroot}%{_libdir}/go/%{go_label}"
# locations for third party libraries, see README-openSUSE for info about locations.
install -d %{buildroot}%{_datadir}/go/%{go_label}/contrib
install -d $GOROOT/contrib/pkg/linux_%{go_arch}
ln -s %{_libdir}/go/%{go_label}/contrib/pkg/ %{buildroot}%{_datadir}/go/%{go_label}/contrib/pkg
install -d %{buildroot}%{_datadir}/go/%{go_label}/contrib/cmd
install -d %{buildroot}%{_datadir}/go/%{go_label}/contrib/src
ln -s %{_datadir}/go/%{go_label}/contrib/src/ %{buildroot}%{_libdir}/go/%{go_label}/contrib/src
install -Dm644 README.SUSE $GOROOT/contrib/
ln -s %{_libdir}/go/%{go_label}/contrib/README.SUSE %{buildroot}%{_datadir}/go/%{go_label}/contrib/README.SUSE
# source files for go install, godoc, etc
install -d %{buildroot}%{_datadir}/go/%{go_label}
for ext in *.{go,c,h,s,S,py,syso,bin}; do
find src -name ${ext} -exec install -Dm644 \{\} %{buildroot}%{_datadir}/go/%{go_label}/\{\} \;
done
# executable bash scripts called by go tool, etc
find src -name "*.bash" -exec install -Dm655 \{\} %{buildroot}%{_datadir}/go/%{go_label}/\{\} \;
mkdir -p $GOROOT/src
for i in $(ls %{buildroot}/usr/share/go/%{go_label}/src);do
ln -s /usr/share/go/%{go_label}/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_label/%{go_label}/" $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_label}
cp -r AUTHORS CONTRIBUTORS CONTRIBUTING.md LICENSE PATENTS README.md README.SUSE %{buildroot}%{_docdir}/go/%{go_label}
cp -r doc/* %{buildroot}%{_docdir}/go/%{go_label}
%fdupes -s %{buildroot}%{_prefix}
%post
update-alternatives \
--install %{_bindir}/go go %{_libdir}/go/%{go_label}/bin/go $((20+$(echo %{go_label} | cut -d. -f2))) \
--slave %{_bindir}/gofmt gofmt %{_libdir}/go/%{go_label}/bin/gofmt \
--slave %{_sysconfdir}/gdbinit.d/go.gdb go.gdb %{_libdir}/go/%{go_label}/bin/gdbinit.d/go.gdb
%postun
if [ $1 -eq 0 ] ; then
update-alternatives --remove go %{_libdir}/go/%{go_label}/bin/go
fi
%files
%{_bindir}/go
%{_bindir}/gofmt
%dir %{_libdir}/go
%{_libdir}/go/%{go_label}
%dir %{_datadir}/go
%{_datadir}/go/%{go_label}
%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_label}
%doc %{_docdir}/go/%{go_label}/AUTHORS
%doc %{_docdir}/go/%{go_label}/CONTRIBUTORS
%doc %{_docdir}/go/%{go_label}/CONTRIBUTING.md
%doc %{_docdir}/go/%{go_label}/PATENTS
%doc %{_docdir}/go/%{go_label}/README.md
%doc %{_docdir}/go/%{go_label}/README.SUSE
%if 0%{?suse_version} < 1500
%doc %{_docdir}/go/%{go_label}/LICENSE
%else
%license %{_docdir}/go/%{go_label}/LICENSE
%endif
# We don't include TSAN in the main Go package.
%ifarch %{tsan_arch}
%exclude %{_datadir}/go/%{go_label}/src/runtime/race/race_linux_%{go_arch}.syso
%endif
%files doc
%defattr(-,root,root,-)
%doc %{_docdir}/go/%{go_label}/*.html
%ifarch %{tsan_arch}
%files race
%{_datadir}/go/%{go_label}/src/runtime/race/race_linux_%{go_arch}.syso
%endif
%changelog

BIN
llvm-89f7ccea6f6488c443655880229c54db1f180153.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.