Sync from SUSE:SLFO:Main go1.23-openssl revision a035865ce6c3f37ee514812d9f0b756a
This commit is contained in:
commit
6154707991
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal 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
|
8
README.SUSE
Normal file
8
README.SUSE
Normal file
@ -0,0 +1,8 @@
|
||||
# Go Programming Language
|
||||
|
||||
OBS: https://build.opensuse.org/project/show/devel:languages:go
|
||||
|
||||
Maintainer: Jeff Kowalczyk
|
||||
|
||||
Wiki: http://en.opensuse.org/Go
|
||||
http://en.opensuse.org/openSUSE:Packaging_Go
|
7
_constraints
Normal file
7
_constraints
Normal file
@ -0,0 +1,7 @@
|
||||
<constraints>
|
||||
<hardware>
|
||||
<disk>
|
||||
<size unit="G">5</size>
|
||||
</disk>
|
||||
</hardware>
|
||||
</constraints>
|
16
_service
Normal file
16
_service
Normal file
@ -0,0 +1,16 @@
|
||||
<services>
|
||||
<service name="download_files" mode="manual"/>
|
||||
<service name="tar_scm" mode="manual">
|
||||
<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">51bfeff0e4b0757ff773da6882f4d538996c9b04</param>
|
||||
<param name="versionformat">%H</param>
|
||||
<param name="filename">llvm</param>
|
||||
</service>
|
||||
<service name="recompress" mode="manual">
|
||||
<param name="file">llvm-*.tar</param>
|
||||
<param name="compression">xz</param>
|
||||
</service>
|
||||
</services>
|
30
dont-force-gold-on-arm64.patch
Normal file
30
dont-force-gold-on-arm64.patch
Normal file
@ -0,0 +1,30 @@
|
||||
--- go/src/cmd/link/internal/ld/lib.go
|
||||
+++ go/src/cmd/link/internal/ld/lib.go
|
||||
@@ -1596,27 +1596,6 @@
|
||||
// Use lld to avoid errors from default linker (issue #38838)
|
||||
altLinker = "lld"
|
||||
}
|
||||
-
|
||||
- if ctxt.Arch.InFamily(sys.ARM64) && buildcfg.GOOS == "linux" {
|
||||
- // On ARM64, the GNU linker will fail with
|
||||
- // -znocopyreloc if it thinks a COPY relocation is
|
||||
- // required. Switch to gold.
|
||||
- // https://sourceware.org/bugzilla/show_bug.cgi?id=19962
|
||||
- // https://go.dev/issue/22040
|
||||
- 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.
|
||||
- name, args := flagExtld[0], flagExtld[1:]
|
||||
- args = append(args, "-fuse-ld=gold", "-Wl,--version")
|
||||
- cmd := exec.Command(name, args...)
|
||||
- if out, err := cmd.CombinedOutput(); err == nil {
|
||||
- if !bytes.Contains(out, []byte("GNU gold")) {
|
||||
- log.Fatalf("ARM64 external linker must be gold (issue #15696, 22040), but is not: %s", out)
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
}
|
||||
if ctxt.Arch.Family == sys.ARM64 && buildcfg.GOOS == "freebsd" {
|
||||
// Switch to ld.bfd on freebsd/arm64.
|
64
gcc-go.patch
Normal file
64
gcc-go.patch
Normal file
@ -0,0 +1,64 @@
|
||||
--- go.orig/src/cmd/dist/buildtool.go
|
||||
+++ go/src/cmd/dist/buildtool.go
|
||||
@@ -203,7 +203,7 @@
|
||||
// Use the purego build tag to disable other assembly code,
|
||||
// such as in cmd/internal/notsha256.
|
||||
cmd := []string{
|
||||
- pathf("%s/bin/go", goroot_bootstrap),
|
||||
+ pathf("%s/bin/go-$gcc_go_version", goroot_bootstrap),
|
||||
"install",
|
||||
"-tags=math_big_pure_go compiler_bootstrap purego",
|
||||
}
|
||||
--- go.orig/src/make.bash
|
||||
+++ go/src/make.bash
|
||||
@@ -175,8 +175,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 $bootgo." >&2
|
||||
exit 1
|
||||
fi
|
||||
@@ -194,7 +194,7 @@
|
||||
exit 1
|
||||
fi
|
||||
rm -f cmd/dist/dist
|
||||
-GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off GOEXPERIMENT="" GOENV=off GOFLAGS="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
|
||||
+GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off GOEXPERIMENT="" GOENV=off GOFLAGS="" "$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)
|
||||
--- go.orig/src/make.rc
|
||||
+++ go/src/make.rc
|
||||
@@ -58,7 +58,7 @@
|
||||
GOROOT_BOOTSTRAP = $home/$d
|
||||
}
|
||||
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){
|
||||
@@ -71,8 +71,8 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
-if(! test -x $GOROOT_BOOTSTRAP/bin/go){
|
||||
- echo 'ERROR: Cannot find '$GOROOT_BOOTSTRAP'/bin/go.' >[1=2]
|
||||
+if(! test -x $GOROOT_BOOTSTRAP/bin/go-$gcc_go_version){
|
||||
+ echo 'ERROR: Cannot find '$GOROOT_BOOTSTRAP'/bin/go-$gcc_go_version.' >[1=2]
|
||||
echo 'Set $GOROOT_BOOTSTRAP to a working Go tree >= Go '$bootgo'.' >[1=2]
|
||||
exit bootstrap
|
||||
}
|
||||
@@ -89,7 +89,7 @@
|
||||
echo 'Building Go cmd/dist using '$GOROOT_BOOTSTRAP'. ('$"GOROOT_BOOTSTRAP_VERSION')'
|
||||
if(~ $#vflag 1)
|
||||
echo cmd/dist
|
||||
-GOROOT=$GOROOT_BOOTSTRAP GOOS='' GOARCH='' GOEXPERIMENT='' GO111MODULE=off GOENV=off GOFLAGS='' $GOROOT_BOOTSTRAP/bin/go build -o cmd/dist/dist ./cmd/dist
|
||||
+GOROOT=$GOROOT_BOOTSTRAP GOOS='' GOARCH='' GOEXPERIMENT='' GO111MODULE=off GOENV=off GOFLAGS='' $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
9
go-rpmlintrc
Normal 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
1
go.gdbinit
Normal file
@ -0,0 +1 @@
|
||||
add-auto-load-safe-path /usr/lib/go/$go_label/src/runtime/runtime-gdb.py
|
484
go1.23-openssl.changes
Normal file
484
go1.23-openssl.changes
Normal file
@ -0,0 +1,484 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Oct 2 21:04:36 UTC 2024 - Jeff Kowalczyk <jkowalczyk@suse.com>
|
||||
|
||||
- Update to version 1.23.2.2 cut from the go1.23-fips-release
|
||||
branch at the revision tagged go1.23.2-2-openssl-fips.
|
||||
Refs jsc#SLE-18320
|
||||
* Update to Go 1.23.2 (#239)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 1 17:24:29 UTC 2024 - Jeff Kowalczyk <jkowalczyk@suse.com>
|
||||
|
||||
- go1.23.2 (released 2024-10-01) includes fixes to the compiler,
|
||||
cgo, the runtime, and the maps, os, os/exec, time, and unique
|
||||
packages.
|
||||
Refs boo#1229122 go1.23 release tracking
|
||||
* go#69119 os: double close pidfd if caller uses pidfd updated by os.StartProcess
|
||||
* go#69156 maps: segmentation violation in maps.Clone
|
||||
* go#69219 cmd/cgo: alignment issue with int128 inside of a struct
|
||||
* go#69240 unique: fatal error: found pointer to free object
|
||||
* go#69333 runtime,time: timer.Stop returns false even when no value is read from the channel
|
||||
* go#69383 unique: large string still referenced, after interning only a small substring
|
||||
* go#69402 os/exec: resource leak on exec failure
|
||||
* go#69511 cmd/compile: mysterious crashes and non-determinism with range over func
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 24 17:51:51 UTC 2024 - Jeff Kowalczyk <jkowalczyk@suse.com>
|
||||
|
||||
- Update to version 1.23.1.1 cut from the go1.23-fips-release
|
||||
branch at the revision tagged go1.23.1-1-openssl-fips.
|
||||
Refs jsc#SLE-18320
|
||||
* Update to Go 1.23.1 (#238)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Sep 5 15:20:23 UTC 2024 - Jeff Kowalczyk <jkowalczyk@suse.com>
|
||||
|
||||
- go1.23.1 (released 2024-09-05) includes security fixes to the
|
||||
encoding/gob, go/build/constraint, and go/parser packages, as
|
||||
well as bug fixes to the compiler, the go command, the runtime,
|
||||
and the database/sql, go/types, os, runtime/trace, and unique
|
||||
packages.
|
||||
Refs boo#1229122 go1.23 release tracking
|
||||
CVE-2024-34155 CVE-2024-34156 CVE-2024-34158
|
||||
- go#69143 go#69138 boo#1230252 security: fix CVE-2024-34155 go/parser: stack exhaustion in all Parse* functions
|
||||
- go#69145 go#69139 boo#1230253 security: fix CVE-2024-34156 encoding/gob: stack exhaustion in Decoder.Decode
|
||||
- go#69149 go#69141 boo#1230254 security: fix CVE-2024-34158 go/build/constraint: stack exhaustion in Parse
|
||||
- go#68812 os: TestChtimes failures
|
||||
- go#68894 go/types: 'under' panics on Alias type
|
||||
- go#68905 cmd/compile: error in Go 1.23.0 with generics, type aliases and indexing
|
||||
- go#68907 os: CopyFS overwrites existing file in destination.
|
||||
- go#68973 cmd/cgo: aix c-archive corrupting stack
|
||||
- go#68992 unique: panic when calling unique.Make with string casted as any
|
||||
- go#68994 cmd/go: any invocation creates read-only telemetry configuration file under GOMODCACHE
|
||||
- go#68995 cmd/go: multi-arch build via qemu fails to exec go binary
|
||||
- go#69041 database/sql: panic in database/sql.(*connRequestSet).deleteIndex
|
||||
- go#69087 runtime/trace: crash during traceAdvance when collecting call stack for cgo-calling goroutine
|
||||
- go#69094 cmd/go: breaking change in 1.23rc2 with version constraints in GOPATH mode
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 13 16:16:34 UTC 2024 - Jeff Kowalczyk <jkowalczyk@suse.com>
|
||||
|
||||
- go1.23 (released 2024-08-13) is a major release of Go.
|
||||
go1.23.x minor releases will be provided through August 2025.
|
||||
https://github.com/golang/go/wiki/Go-Release-Cycle
|
||||
go1.23 arrives six months after go1.22. Most of its 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#1229122 go1.23 release tracking
|
||||
* Language change: Go 1.23 makes the (Go 1.22) "range-over-func"
|
||||
experiment a part of the language. The "range" clause in a
|
||||
"for-range" loop now accepts iterator functions of the
|
||||
following types:
|
||||
func(func() bool)
|
||||
func(func(K) bool)
|
||||
func(func(K, V) bool)
|
||||
as range expressions. Calls of the iterator argument function
|
||||
produce the iteration values for the "for-range" loop. For
|
||||
details see the iter package documentation and the language
|
||||
spec. For motivation see the 2022 "range-over-func" discussion.
|
||||
* Language change: Go 1.23 includes preview support for generic
|
||||
type aliases. Building the toolchain with
|
||||
GOEXPERIMENT=aliastypeparams enables this feature within a
|
||||
package. (Using generic alias types across package boundaries
|
||||
is not yet supported.)
|
||||
* Opt-in Telemetry: Starting in Go 1.23, the Go toolchain can
|
||||
collect usage and breakage statistics that help the Go team
|
||||
understand how the Go toolchain is used and how well it is
|
||||
working. We refer to these statistics as Go telemetry.
|
||||
Go telemetry is an opt-in system, controlled by the go
|
||||
telemetry command. By default, the toolchain programs collect
|
||||
statistics in counter files that can be inspected locally but
|
||||
are otherwise unused (go telemetry local).
|
||||
To help us keep Go working well and understand Go usage, please
|
||||
consider opting in to Go telemetry by running go telemetry
|
||||
on. In that mode, anonymous counter reports are uploaded to
|
||||
telemetry.go.dev weekly, where they are aggregated into graphs
|
||||
and also made available for download by any Go contributors or
|
||||
users wanting to analyze the data. See "Go Telemetry" for more
|
||||
details about the Go Telemetry system.
|
||||
* go command: Setting the GOROOT_FINAL environment variable no
|
||||
longer has an effect (#62047). Distributions that install the
|
||||
go command to a location other than $GOROOT/bin/go should
|
||||
install a symlink instead of relocating or copying the go
|
||||
binary.
|
||||
* go command: The new go env -changed flag causes the command to
|
||||
print only those settings whose effective value differs from
|
||||
the default value that would be obtained in an empty
|
||||
environment with no prior uses of the -w flag.
|
||||
* go command: The new go mod tidy -diff flag causes the command
|
||||
not to modify the files but instead print the necessary changes
|
||||
as a unified diff. It exits with a non-zero code if updates are
|
||||
needed.
|
||||
* go command: The go list -m -json command now includes new Sum
|
||||
and GoModSum fields. This is similar to the existing behavior
|
||||
of the go mod download -json command.
|
||||
* go command: The new godebug directive in go.mod and go.work
|
||||
declares a GODEBUG setting to apply for the work module or
|
||||
workspace in use.
|
||||
* go vet: The go vet subcommand now includes the stdversion
|
||||
analyzer, which flags references to symbols that are too new
|
||||
for the version of Go in effect in the referring file. (The
|
||||
effective version is determined by the go directive in the
|
||||
file's enclosing go.mod file, and by any //go:build constraints
|
||||
in the file.)
|
||||
For example, it will report a diagnostic for a reference to the
|
||||
reflect.TypeFor function (introduced in go1.22) from a file in
|
||||
a module whose go.mod file specifies go 1.21.
|
||||
* cgo: cmd/cgo supports the new -ldflags flag for passing flags
|
||||
to the C linker. The go command uses it automatically, avoiding
|
||||
"argument list too long" errors with a very large CGO_LDFLAGS.
|
||||
* go trace: The trace tool now better tolerates partially broken
|
||||
traces by attempting to recover what trace data it can. This
|
||||
functionality is particularly helpful when viewing a trace that
|
||||
was collected during a program crash, since the trace data
|
||||
leading up to the crash will now be recoverable under most
|
||||
circumstances.
|
||||
* Runtime: The traceback printed by the runtime after an
|
||||
unhandled panic or other fatal error now indents the second and
|
||||
subsequent lines of the error message (for example, the
|
||||
argument to panic) by a single tab, so that it can be
|
||||
unambiguously distinguished from the stack trace of the first
|
||||
goroutine. See go#64590 for discussion.
|
||||
* Compiler: The build time overhead to building with Profile
|
||||
Guided Optimization has been reduced significantly. Previously,
|
||||
large builds could see 100%+ build time increase from enabling
|
||||
PGO. In Go 1.23, overhead should be in the single digit
|
||||
percentages.
|
||||
* Compiler: The compiler in Go 1.23 can now overlap the stack
|
||||
frame slots of local variables accessed in disjoint regions of
|
||||
a function, which reduces stack usage for Go applications.
|
||||
* Compiler: For 386 and amd64, the compiler will use information
|
||||
from PGO to align certain hot blocks in loops. This improves
|
||||
performance an additional 1-1.5% at a cost of an additional
|
||||
0.1% text and binary size. This is currently only implemented
|
||||
on 386 and amd64 because it has not shown an improvement on
|
||||
other platforms. Hot block alignment can be disabled with
|
||||
-gcflags=[<packages>=]-d=alignhot=0.
|
||||
* Linker: The linker now disallows using a //go:linkname
|
||||
directive to refer to internal symbols in the standard library
|
||||
(including the runtime) that are not marked with //go:linkname
|
||||
on their definitions. Similarly, the linker disallows
|
||||
references to such symbols from assembly code. For backward
|
||||
compatibility, existing usages of //go:linkname found in a
|
||||
large open-source code corpus remain supported. Any new
|
||||
references to standard library internal symbols will be
|
||||
disallowed.
|
||||
* Linker: A linker command line flag -checklinkname=0 can be used
|
||||
to disable this check, for debugging and experimenting
|
||||
purposes.
|
||||
* Linker: When building a dynamically linked ELF binary
|
||||
(including PIE binary), the new -bindnow flag enables immediate
|
||||
function binding.
|
||||
* Standard library changes:
|
||||
* timer: 1.23 makes two significant changes to the implementation
|
||||
of time.Timer and time.Ticker.
|
||||
First, Timers and Tickers that are no longer referred to by the
|
||||
program become eligible for garbage collection immediately,
|
||||
even if their Stop methods have not been called. Earlier
|
||||
versions of Go did not collect unstopped Timers until after
|
||||
they had fired and never collected unstopped Tickers.
|
||||
Second, the timer channel associated with a Timer or Ticker is
|
||||
now unbuffered, with capacity 0. The main effect of this change
|
||||
is that Go now guarantees that for any call to a Reset or Stop
|
||||
method, no stale values prepared before that call will be sent
|
||||
or received after the call. Earlier versions of Go used
|
||||
channels with a one-element buffer, making it difficult to use
|
||||
Reset and Stop correctly. A visible effect of this change is
|
||||
that len and cap of timer channels now returns 0 instead of 1,
|
||||
which may affect programs that poll the length to decide
|
||||
whether a receive on the timer channel will succeed. Such code
|
||||
should use a non-blocking receive instead.
|
||||
These new behaviors are only enabled when the main Go program
|
||||
is in a module with a go.mod go line using Go 1.23.0 or
|
||||
later. When Go 1.23 builds older programs, the old behaviors
|
||||
remain in effect. The new GODEBUG setting asynctimerchan=1 can
|
||||
be used to revert back to asynchronous channel behaviors even
|
||||
when a program names Go 1.23.0 or later in its go.mod file.
|
||||
* unique: The new unique package provides facilities for
|
||||
canonicalizing values (like "interning" or "hash-consing").
|
||||
Any value of comparable type may be canonicalized with the new
|
||||
Make[T] function, which produces a reference to a canonical
|
||||
copy of the value in the form of a Handle[T]. Two Handle[T] are
|
||||
equal if and only if the values used to produce the handles are
|
||||
equal, allowing programs to deduplicate values and reduce their
|
||||
memory footprint. Comparing two Handle[T] values is efficient,
|
||||
reducing down to a simple pointer comparison.
|
||||
* iter: The new iter package provides the basic definitions for
|
||||
working with user-defined iterators.
|
||||
* slices: The slices package adds several functions that work
|
||||
with iterators:
|
||||
- All returns an iterator over slice indexes and values.
|
||||
- Values returns an iterator over slice elements.
|
||||
- Backward returns an iterator that loops over a slice backward.
|
||||
- Collect collects values from an iterator into a new slice.
|
||||
- AppendSeq appends values from an iterator to an existing slice.
|
||||
- Sorted collects values from an iterator into a new slice, and then sorts the slice.
|
||||
- SortedFunc is like Sorted but with a comparison function.
|
||||
- SortedStableFunc is like SortFunc but uses a stable sort algorithm.
|
||||
- Chunk returns an iterator over consecutive sub-slices of up to n elements of a slice.
|
||||
* maps: The maps package adds several functions that work with
|
||||
iterators:
|
||||
- All returns an iterator over key-value pairs from a map.
|
||||
- Keys returns an iterator over keys in a map.
|
||||
- Values returns an iterator over values in a map.
|
||||
- Insert adds the key-value pairs from an iterator to an existing map.
|
||||
- Collect collects key-value pairs from an iterator into a new map and returns it.
|
||||
* structs: The new structs package provides types for struct
|
||||
fields that modify properties of the containing struct type
|
||||
such as memory layout.
|
||||
In this release, the only such type is HostLayout which
|
||||
indicates that a structure with a field of that type has a
|
||||
layout that conforms to host platform expectations.
|
||||
* Minor changes to the standard library: As always, there are
|
||||
various minor changes and updates to the library, made with the
|
||||
Go 1 promise of compatibility in mind.
|
||||
* archive/tar: If the argument to FileInfoHeader implements the
|
||||
new FileInfoNames interface, then the interface methods will be
|
||||
used to set the Uname/Gname of the file header. This allows
|
||||
applications to override the system-dependent Uname/Gname
|
||||
lookup.
|
||||
* crypto/tls: The TLS client now supports the Encrypted Client
|
||||
Hello draft specification. This feature can be enabled by
|
||||
setting the Config.EncryptedClientHelloConfigList field to an
|
||||
encoded ECHConfigList for the host that is being connected to.
|
||||
* crypto/tls: The QUICConn type used by QUIC implementations
|
||||
includes new events reporting on the state of session
|
||||
resumption, and provides a way for the QUIC layer to add data
|
||||
to session tickets and session cache entries.
|
||||
* crypto/tls: 3DES cipher suites were removed from the default
|
||||
list used when Config.CipherSuites is nil. The default can be
|
||||
reverted by adding tls3des=1 to the GODEBUG environment
|
||||
variable.
|
||||
* crypto/tls: The experimental post-quantum key exchange
|
||||
mechanism X25519Kyber768Draft00 is now enabled by default when
|
||||
Config.CurvePreferences is nil. The default can be reverted by
|
||||
adding tlskyber=0 to the GODEBUG environment variable.
|
||||
* crypto/tls: Go 1.23 changed the behavior of X509KeyPair and
|
||||
LoadX509KeyPair to populate the Certificate.Leaf field of the
|
||||
returned Certificate. The new x509keypairleaf GODEBUG setting
|
||||
is added for this behavior.
|
||||
* crypto/x509: CreateCertificateRequest now correctly supports
|
||||
RSA-PSS signature algorithms.
|
||||
* crypto/x509: CreateCertificateRequest and CreateRevocationList
|
||||
now verify the generated signature using the signer's public
|
||||
key. If the signature is invalid, an error is returned. This
|
||||
has been the behavior of CreateCertificate since Go 1.16.
|
||||
* crypto/x509: The x509sha1 GODEBUG setting will be removed in
|
||||
the next Go major release (Go 1.24). This will mean that
|
||||
crypto/x509 will no longer support verifying signatures on
|
||||
certificates that use SHA-1 based signature algorithms.
|
||||
* crypto/x509: The new ParseOID function parses a dot-encoded
|
||||
ASN.1 Object Identifier string. The OID type now implements the
|
||||
encoding.BinaryMarshaler, encoding.BinaryUnmarshaler,
|
||||
encoding.TextMarshaler, encoding.TextUnmarshaler interfaces.
|
||||
database/sql
|
||||
* crypto/x509: Errors returned by driver.Valuer implementations
|
||||
are now wrapped for improved error handling during operations
|
||||
like DB.Query, DB.Exec, and DB.QueryRow.
|
||||
* debug/elf: The debug/elf package now defines
|
||||
PT_OPENBSD_NOBTCFI. This ProgType is used to disable Branch
|
||||
Tracking Control Flow Integrity (BTCFI) enforcement on OpenBSD
|
||||
binaries.
|
||||
* debug/elf: Now defines the symbol type constants STT_RELC,
|
||||
STT_SRELC, and STT_GNU_IFUNC.
|
||||
* encoding/binary The new Encode and Decode functions are byte
|
||||
slice equivalents to Read and Write. Append allows marshaling
|
||||
multiple data into the same byte slice.
|
||||
* go/ast: The new Preorder function returns a convenient iterator
|
||||
over all the nodes of a syntax tree.
|
||||
* go/types: The Func type, which represents a function or method
|
||||
symbol, now has a Func.Signature method that returns the
|
||||
function's type, which is always a Signature.
|
||||
* go/types: The Alias type now has an Rhs method that returns the
|
||||
type on the right-hand side of its declaration: given type A =
|
||||
B, the Rhs of A is B. (go#66559)
|
||||
* go/types: The methods Alias.Origin, Alias.SetTypeParams,
|
||||
Alias.TypeParams, and Alias.TypeArgs have been added. They are
|
||||
needed for generic alias types.
|
||||
* go/types: By default, go/types now produces Alias type nodes
|
||||
for type aliases. This behavior can be controlled by the
|
||||
GODEBUG gotypesalias flag. Its default has changed from 0 in Go
|
||||
1.22 to 1 in Go 1.23.
|
||||
* math/rand/v2: The Uint function and Rand.Uint method have been
|
||||
added. They were inadvertently left out of Go 1.22.
|
||||
* math/rand/v2: The new ChaCha8.Read method implements the
|
||||
io.Reader interface.
|
||||
* net: The new type KeepAliveConfig permits fine-tuning the
|
||||
keep-alive options for TCP connections, via a new
|
||||
TCPConn.SetKeepAliveConfig method and new KeepAliveConfig
|
||||
fields for Dialer and ListenConfig.
|
||||
* net: The DNSError type now wraps errors caused by timeouts or
|
||||
cancellation. For example, errors.Is(someDNSErr,
|
||||
context.DeadlineExceedeed) will now report whether a DNS error
|
||||
was caused by a timeout.
|
||||
* net: The new GODEBUG setting netedns0=0 disables sending EDNS0
|
||||
additional headers on DNS requests, as they reportedly break
|
||||
the DNS server on some modems.
|
||||
* net/http: Cookie now preserves double quotes surrounding a
|
||||
cookie value. The new Cookie.Quoted field indicates whether the
|
||||
Cookie.Value was originally quoted.
|
||||
* net/http: The new Request.CookiesNamed method retrieves all
|
||||
cookies that match the given name.
|
||||
* net/http: The new Cookie.Partitioned field identifies cookies
|
||||
with the Partitioned attribute.
|
||||
* net/http: The patterns used by ServeMux now allow one or more
|
||||
spaces or tabs after the method name. Previously, only a single
|
||||
space was permitted.
|
||||
* net/http: The new ParseCookie function parses a Cookie header
|
||||
value and returns all the cookies which were set in it. Since
|
||||
the same cookie name can appear multiple times the returned
|
||||
Values can contain more than one value for a given key.
|
||||
* net/http: The new ParseSetCookie function parses a Set-Cookie
|
||||
header value and returns a cookie. It returns an error on
|
||||
syntax error.
|
||||
* net/http: ServeContent, ServeFile, and ServeFileFS now remove
|
||||
the Cache-Control, Content-Encoding, Etag, and Last-Modified
|
||||
headers when serving an error. These headers usually apply to
|
||||
the non-error content, but not to the text of errors.
|
||||
* net/http: Middleware which wraps a ResponseWriter and applies
|
||||
on-the-fly encoding, such as Content-Encoding: gzip, will not
|
||||
function after this change. The previous behavior of
|
||||
ServeContent, ServeFile, and ServeFileFS may be restored by
|
||||
setting GODEBUG=httpservecontentkeepheaders=1.
|
||||
Note that middleware which changes the size of the served
|
||||
content (such as by compressing it) already does not function
|
||||
properly when ServeContent handles a Range request. On-the-fly
|
||||
compression should use the Transfer-Encoding header instead of
|
||||
Content-Encoding.
|
||||
* net/http: For inbound requests, the new Request.Pattern field
|
||||
contains the ServeMux pattern (if any) that matched the
|
||||
request. This field is not set when GODEBUG=httpmuxgo121=1 is
|
||||
set.
|
||||
* net/http/httptest: The new NewRequestWithContext method creates
|
||||
an incoming request with a context.Context.
|
||||
* net/netip: In Go 1.22 and earlier, using reflect.DeepEqual to
|
||||
compare an Addr holding an IPv4 address to one holding the
|
||||
IPv4-mapped IPv6 form of that address incorrectly returned
|
||||
true, even though the Addr values were different when comparing
|
||||
with == or Addr.Compare. This bug is now fixed and all three
|
||||
approaches now report the same result.
|
||||
* os: The Stat function now sets the ModeSocket bit for files
|
||||
that are Unix sockets on Windows. These files are identified by
|
||||
having a reparse tag set to IO_REPARSE_TAG_AF_UNIX.
|
||||
* os: On Windows, the mode bits reported by Lstat and Stat for
|
||||
reparse points changed. Mount points no longer have ModeSymlink
|
||||
set, and reparse points that are not symlinks, Unix sockets, or
|
||||
dedup files now always have ModeIrregular set. This behavior is
|
||||
controlled by the winsymlink setting. For Go 1.23, it defaults
|
||||
to winsymlink=1. Previous versions default to winsymlink=0.
|
||||
* os: The CopyFS function copies an io/fs.FS into the local
|
||||
filesystem.
|
||||
* os: On Windows, Readlink no longer tries to normalize volumes
|
||||
to drive letters, which was not always even possible. This
|
||||
behavior is controlled by the winreadlinkvolume setting. For Go
|
||||
1.23, it defaults to winreadlinkvolume=1. Previous versions
|
||||
default to winreadlinkvolume=0.
|
||||
* os: On Linux with pidfd support (generally Linux v5.4+),
|
||||
Process-related functions and methods use pidfd (rather than
|
||||
PID) internally, eliminating potential mistargeting when a PID
|
||||
is reused by the OS. Pidfd support is fully transparent to a
|
||||
user, except for additional process file descriptors that a
|
||||
process may have.
|
||||
* path/filepath: The new Localize function safely converts a
|
||||
slash-separated path into an operating system path.
|
||||
* path/filepath: On Windows, EvalSymlinks no longer evaluates
|
||||
mount points, which was a source of many inconsistencies and
|
||||
bugs. This behavior is controlled by the winsymlink
|
||||
setting. For Go 1.23, it defaults to winsymlink=1. Previous
|
||||
versions default to winsymlink=0.
|
||||
* path/filepath: On Windows, EvalSymlinks no longer tries to
|
||||
normalize volumes to drive letters, which was not always even
|
||||
possible. This behavior is controlled by the winreadlinkvolume
|
||||
setting. For Go 1.23, it defaults to
|
||||
winreadlinkvolume=1. Previous versions default to
|
||||
winreadlinkvolume=0.
|
||||
* reflect: The new methods synonymous with the methods of the
|
||||
same name in Value are added to Type:
|
||||
- Type.OverflowComplex
|
||||
- Type.OverflowFloat
|
||||
- Type.OverflowInt
|
||||
- Type.OverflowUint
|
||||
* reflect: The new SliceAt function is analogous to NewAt, but
|
||||
for slices.
|
||||
* reflect: The Value.Pointer and Value.UnsafePointer methods now
|
||||
support values of kind String.
|
||||
* reflect: The new methods Value.Seq and Value.Seq2 return
|
||||
sequences that iterate over the value as though it were used in
|
||||
a for/range loop. The new methods Type.CanSeq and Type.CanSeq2
|
||||
report whether calling Value.Seq and Value.Seq2, respectively,
|
||||
will succeed without panicking.
|
||||
* runtime/debug: The SetCrashOutput function allows the user to
|
||||
specify an alternate file to which the runtime should write its
|
||||
fatal crash report. It may be used to construct an automated
|
||||
reporting mechanism for all unexpected crashes, not just those
|
||||
in goroutines that explicitly use recover.
|
||||
* runtime/pprof: The maximum stack depth for alloc, mutex, block,
|
||||
threadcreate and goroutine profiles has been raised from 32 to
|
||||
128 frames.
|
||||
* runtime/trace: The runtime now explicitly flushes trace data
|
||||
when a program crashes due to an uncaught panic. This means
|
||||
that more complete trace data will be available in a trace if
|
||||
the program crashes while tracing is active.
|
||||
* slices: The Repeat function returns a new slice that repeats
|
||||
the provided slice the given number of times.
|
||||
* sync: The Map.Clear method deletes all the entries, resulting
|
||||
in an empty Map. It is analogous to clear.
|
||||
* sync/atomic: The new And and Or operators apply a bitwise AND
|
||||
or OR to the given input, returning the old value.
|
||||
* syscall: The syscall package now defines WSAENOPROTOOPT on
|
||||
Windows.
|
||||
* syscall: The GetsockoptInt function is now supported on
|
||||
Windows.
|
||||
* testing/fstest: TestFS now returns a structured error that can
|
||||
be unwrapped (via method Unwrap() []error). This allows
|
||||
inspecting errors using errors.Is or errors.As.
|
||||
* text/template: Templates now support the new "else with"
|
||||
action, which reduces template complexity in some use cases.
|
||||
* time: Parse and ParseInLocation now return an error if the time
|
||||
zone offset is out of range.
|
||||
* unicode/utf16: The RuneLen function returns the number of
|
||||
16-bit words in the UTF-16 encoding of the rune. It returns -1
|
||||
if the rune is not a valid value to encode in UTF-16.
|
||||
* Port: Darwin: As announced in the Go 1.22 release notes, Go
|
||||
1.23 requires macOS 11 Big Sur or later; support for previous
|
||||
versions has been discontinued.
|
||||
* Port: Linux: Go 1.23 is the last release that requires Linux
|
||||
kernel version 2.6.32 or later. Go 1.24 will require Linux
|
||||
kernel version 3.17 or later, with an exception that systems
|
||||
running 3.10 or later will continue to be supported if the
|
||||
kernel has been patched to support the getrandom system call.
|
||||
* Port: OpenBSD: Go 1.23 adds experimental support for OpenBSD on
|
||||
64-bit RISC-V (GOOS=openbsd, GOARCH=riscv64).
|
||||
* Port: ARM64: Go 1.23 introduces a new GOARM64 environment
|
||||
variable, which specifies the minimum target version of the
|
||||
ARM64 architecture at compile time. Allowed values are v8.{0-9}
|
||||
and v9.{0-5}. This may be followed by an option specifying
|
||||
extensions implemented by target hardware. Valid options are
|
||||
,lse and ,crypto.
|
||||
The GOARM64 environment variable defaults to v8.0.
|
||||
* Port: RISC-V: Go 1.23 introduces a new GORISCV64 environment
|
||||
variable, which selects the RISC-V user-mode application
|
||||
profile for which to compile. Allowed values are rva20u64 and
|
||||
rva22u64.
|
||||
The GORISCV64 environment variable defaults to rva20u64.
|
||||
* Port: Wasm: The go_wasip1_wasm_exec script in GOROOT/misc/wasm
|
||||
has dropped support for versions of wasmtime < 14.0.0.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 16 15:33:13 UTC 2024 - Jeff Kowalczyk <jkowalczyk@suse.com>
|
||||
|
||||
- go1.23rc2 (released 2024-07-16) is a release candidate version of
|
||||
go1.23 cut from the master branch at the revision tagged
|
||||
go1.23rc2.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 21 16:32:19 UTC 2024 - Jeff Kowalczyk <jkowalczyk@suse.com>
|
||||
|
||||
- go1.23rc1 (released 2024-06-21) is a release candidate version of
|
||||
go1.23 cut from the master branch at the revision tagged
|
||||
go1.23rc1.
|
||||
* go1.23 now requires the final point release of go1.20 or later
|
||||
for bootstrap. Go upstream expects that go1.24 will require the
|
||||
final point release of Go 1.23 or later for bootstrap.
|
470
go1.23-openssl.spec
Normal file
470
go1.23-openssl.spec
Normal file
@ -0,0 +1,470 @@
|
||||
#
|
||||
# spec file for package go1.23-openssl
|
||||
#
|
||||
# Copyright (c) 2024 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/
|
||||
#
|
||||
|
||||
|
||||
# Specify Go toolchain version used to bootstrap this package's Go toolchain
|
||||
# go_bootstrap_version bootstrap go toolchain with specific existing go1.x package
|
||||
# gcc_go_version bootstrap go toolchain with specific version of gcc-go
|
||||
%if 0%{?suse_version} > 1500
|
||||
# openSUSE Tumbleweed
|
||||
# Usually ahead of bootstrap version specified by upstream Go
|
||||
# Use Tumbleweed default gccgo and N-1 go1.x for testing
|
||||
%define gcc_go_version 13
|
||||
%define go_bootstrap_version go1.20
|
||||
%else
|
||||
# Use gccgo and go1.x specified by upstream Go
|
||||
%define gcc_go_version 11
|
||||
%define go_bootstrap_version go1.20
|
||||
%endif
|
||||
|
||||
# Bootstrap go toolchain using existing go package go_bootstrap_version
|
||||
# To bootstrap using gccgo use '--with gccgo'
|
||||
%bcond_with gccgo
|
||||
|
||||
# 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 C++14 is supported (SLE-15)
|
||||
%if 0%{?suse_version} >= 1500 || 0%{?sle_version} >= 150000
|
||||
%define tsan_arch x86_64 aarch64 s390x ppc64le
|
||||
%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 51bfeff0e4b0757ff773da6882f4d538996c9b04
|
||||
|
||||
# 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.23
|
||||
|
||||
# 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}-openssl
|
||||
|
||||
# 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
|
||||
# set GOAMD64 consistently
|
||||
%define go_amd64 v1
|
||||
%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.23-openssl
|
||||
Version: 1.23.2.2
|
||||
# Drop our added final dot and digit to define upstream version
|
||||
%define shortversion 1.23.2
|
||||
Release: 0
|
||||
Summary: A compiled, garbage-collected, concurrent programming language
|
||||
License: BSD-3-Clause
|
||||
Group: Development/Languages/Go
|
||||
URL: https://go.dev/
|
||||
Source: https://go.dev/dl/go%{shortversion}.src.tar.gz
|
||||
Source1: go-rpmlintrc
|
||||
Source4: README.SUSE
|
||||
Source6: go.gdbinit
|
||||
Source10: go%{version}-openssl.src.tar.gz
|
||||
# We have to compile TSAN ourselves. boo#1052528
|
||||
# Preferred form when all arches share llvm race version
|
||||
# Source100: llvm-%{tsan_commit}.tar.xz
|
||||
Source100: llvm-51bfeff0e4b0757ff773da6882f4d538996c9b04.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
|
||||
Suggests: %{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
|
||||
BuildRequires: libopenssl-devel
|
||||
Requires: libopenssl-devel
|
||||
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
|
||||
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/Go
|
||||
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
|
||||
# Write go version into VERSION file in go source top level directory.
|
||||
# Needed for go build scripts to operate without assuming .git/ present.
|
||||
echo -n "go%{version}" > %{_builddir}/go/VERSION
|
||||
%patch -P 7 -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
|
||||
%patch -P 8 -p1
|
||||
%endif
|
||||
|
||||
cp %{SOURCE4} .
|
||||
|
||||
# Apply golang-fips OpenSSL patch set to upstream go1.x sources
|
||||
%setup -q -D -T -b 10 -n go
|
||||
# The patchset is comprised of two large primary patches plus accumulated fixes
|
||||
for file in patches/*.patch; do
|
||||
if [ -f "$file" ]; then
|
||||
patch -p1 <"$file"
|
||||
fi
|
||||
done
|
||||
|
||||
%build
|
||||
# Remove the pre-included .sysos, to avoid shipping things we didn't compile
|
||||
# (which is against the openSUSE guidelines for packaging).
|
||||
# FIPS: retain boringcrypto .syso for now, not in use case for FIPS mode
|
||||
# go/src/crypto/internal/boring/nboringcrypto/goboringcrypto_linux_amd64.syso
|
||||
find . -type f -name '*.syso' ! -name '*boring*.syso' -print -delete
|
||||
# TODO: Rebuild using
|
||||
# BuildRequire: boringssl-devel
|
||||
# GO_LDFLAGS pkg-config(libboringssl1) (spelling TBD)
|
||||
# boringssl packages are currently present in Factory, not in SLE
|
||||
|
||||
# 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
|
||||
%ifarch x86_64 %{?x86_64}
|
||||
# use the baseline defined above. Other option is GOAMD64=v3 for x86_64_v3 support
|
||||
export GOAMD64=%go_amd64
|
||||
%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
|
||||
|
||||
%check
|
||||
%ifarch %{tsan_arch}
|
||||
# Make sure that we have the right TSAN checked out.
|
||||
# As of go1.20, README x86_64 race_linux.syso
|
||||
# includes path prefix and omits arch in filename e.g.
|
||||
# internal/amd64v1/race_linux.syso
|
||||
%ifarch x86_64 %{?x86_64}
|
||||
grep "^internal/amd64%{go_amd64}/race_linux.syso built with LLVM %{tsan_commit}" src/runtime/race/README
|
||||
%else
|
||||
grep "^race_linux_%{go_arch}.syso built with LLVM %{tsan_commit}" src/runtime/race/README
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%install
|
||||
export GOROOT="%{buildroot}%{_libdir}/go/%{go_label}"
|
||||
|
||||
# remove pre-compiled .a package archives no longer used as of go1.20
|
||||
# find %{_builddir}/go/pkg -name "*.a" -type f |wc -l
|
||||
# 259
|
||||
# TODO isolate the build step where .a files are created and delete then
|
||||
find %{_builddir}/go/pkg -name "*.a" -type f -delete
|
||||
|
||||
# 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
|
||||
|
||||
# go.env sets defaults for: GOPROXY GOSUMDB GOTOOLCHAIN
|
||||
install -Dm644 go.env $GOROOT/
|
||||
|
||||
# Change go.env GOTOOLCHAIN default to "local" so Go app builds never
|
||||
# automatically download newer toolchains as specified by go.mod files.
|
||||
# When GOTOOLCHAIN is set to local, the go command always runs the bundled Go toolchain.
|
||||
# See https://go.dev/doc/toolchain for details.
|
||||
# The default behavior "auto":
|
||||
# a) Assumes network access that is not available in OBS
|
||||
# b) Downloads third-party toolchain binaries that would be used in build
|
||||
# Need for "auto" is rare as openSUSE and SUSE ship go1.x versions near their release date.
|
||||
# The user can override the defaults in ~/.config/go/env.
|
||||
sed -i "s/GOTOOLCHAIN=auto/GOTOOLCHAIN=local/" $GOROOT/go.env
|
||||
|
||||
# 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}/\{\} \;
|
||||
# VERSION file referenced by go tool dist and go tool distpack
|
||||
find . -name VERSION -exec install -Dm655 \{\} %{buildroot}%{_datadir}/go/%{go_label}/\{\} \;
|
||||
# Trace viewer html and javascript files have moved in recent Go versions
|
||||
# Prior to go1.19 misc/trace
|
||||
# go1.19 to go1.21 src/cmd/trace/static
|
||||
# go1.22 src/internal/trace/traceviewer/static
|
||||
# Static contains pprof trace viewer html javascript and markdown
|
||||
install -d %{buildroot}%{_datadir}/go/%{go_label}/src/internal/trace/traceviewer/static
|
||||
install -Dm644 src/internal/trace/traceviewer/static/* %{buildroot}%{_datadir}/go/%{go_label}/src/internal/trace/traceviewer/static
|
||||
# pprof viewer html templates are needed for import runtime/pprof
|
||||
install -d %{buildroot}%{_datadir}/go/%{go_label}/src/cmd/vendor/github.com/google/pprof/internal/driver/html
|
||||
install -Dm644 src/cmd/vendor/github.com/google/pprof/internal/driver/html/* %{buildroot}%{_datadir}/go/%{go_label}/src/cmd/vendor/github.com/google/pprof/internal/driver/html
|
||||
|
||||
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
|
||||
# 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 markdown doc source templates new in go1.23
|
||||
# templates do not appear to be rendered markdown content
|
||||
rm -rf doc/{initial,next}
|
||||
# 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 CONTRIBUTING.md LICENSE PATENTS README.md README.OpenSSL 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 $((21+$(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}/CONTRIBUTING.md
|
||||
%doc %{_docdir}/go/%{go_label}/PATENTS
|
||||
%doc %{_docdir}/go/%{go_label}/README.md
|
||||
%doc %{_docdir}/go/%{go_label}/README.SUSE
|
||||
%doc %{_docdir}/go/%{go_label}/README.OpenSSL
|
||||
%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
|
||||
|
||||
# We don't include libstd.so in the main Go package.
|
||||
%if %{with_shared}
|
||||
%if 0%{?suse_version} > 1500
|
||||
# openSUSE Tumbleweed
|
||||
# ./go/1.23/pkg/linux_amd64_dynlink/libstd.so
|
||||
%exclude %{_libdir}/go/%{go_label}/pkg/linux_%{go_arch}_dynlink/libstd.so
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%files doc
|
||||
# SLE-12 SP5 rpm macro environment does not work with single glob {*.html,godebug.md}
|
||||
%doc %{_docdir}/go/%{go_label}/*.html
|
||||
%doc %{_docdir}/go/%{go_label}/godebug.md
|
||||
|
||||
%ifarch %{tsan_arch}
|
||||
%files race
|
||||
%{_datadir}/go/%{go_label}/src/runtime/race/race_linux_%{go_arch}.syso
|
||||
%endif
|
||||
|
||||
%changelog
|
BIN
go1.23.2.2-openssl.src.tar.gz
(Stored with Git LFS)
Normal file
BIN
go1.23.2.2-openssl.src.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
go1.23.2.src.tar.gz
(Stored with Git LFS)
Normal file
BIN
go1.23.2.src.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
llvm-51bfeff0e4b0757ff773da6882f4d538996c9b04.tar.xz
(Stored with Git LFS)
Normal file
BIN
llvm-51bfeff0e4b0757ff773da6882f4d538996c9b04.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user