Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package go1.18 for openSUSE:Factory checked in at 2022-03-16 20:20:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/go1.18 (Old) and /work/SRC/openSUSE:Factory/.go1.18.new.25692 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "go1.18" Wed Mar 16 20:20:37 2022 rev:5 rq:962260 version:1.18 Changes: -------- --- /work/SRC/openSUSE:Factory/go1.18/go1.18.changes 2022-02-18 23:03:20.569410968 +0100 +++ /work/SRC/openSUSE:Factory/.go1.18.new.25692/go1.18.changes 2022-03-16 20:20:42.948980977 +0100 @@ -1,0 +2,276 @@ +Tue Mar 15 17:42:07 UTC 2022 - Jeff Kowalczyk <jkowalc...@suse.com> + +- go1.18 (released 2022-03-15) is a major release of Go. + go1.18.x minor releases will be provided through February 2023. + https://github.com/golang/go/wiki/Go-Release-Cycle + Go 1.18 is a significant release, including changes to the + language, implementation of the toolchain, runtime, and + libraries. Go 1.18 arrives seven months after Go 1.17. 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#1193742 go1.18 release tracking + * See release notes https://golang.org/doc/go1.18. Excerpts + relevant to OBS environment and for SUSE/openSUSE follow: + * Go 1.18 includes an implementation of generic features as + described by the Type Parameters Proposal. This includes major + but fully backward-compatible changes to the language. + * The Go 1.18 compiler now correctly reports declared but not + used errors for variables that are set inside a function + literal but are never used. Before Go 1.18, the compiler did + not report an error in such cases. This fixes long-outstanding + compiler issue go#8560. + * The Go 1.18 compiler now reports an overflow when passing a + rune constant expression such as '1' << 32 as an argument to + the predeclared functions print and println, consistent with + the behavior of user-defined functions. Before Go 1.18, the + compiler did not report an error in such cases but silently + accepted such constant arguments if they fit into an + int64. Since go vet always pointed out this error, the number + of affected programs is likely very small. + * AMD64: Go 1.18 introduces the new GOAMD64 environment variable, + which selects at compile time a minimum target version of the + AMD64 architecture. Allowed values are v1, v2, v3, or v4. Each + higher level requires, and takes advantage of, additional + processor features. A detailed description can be found + here. The GOAMD64 environment variable defaults to v1. + * RISC-V: The 64-bit RISC-V architecture on Linux (the + linux/riscv64 port) now supports the c-archive and c-shared + build modes. + * Linux: Go 1.18 requires Linux kernel version 2.6.32 or later. + * Fuzzing: Go 1.18 includes an implementation of fuzzing as + described by the fuzzing proposal. See the fuzzing landing page + to get started. Please be aware that fuzzing can consume a lot + of memory and may impact your machine???s performance while it + runs. + * go get: go get no longer builds or installs packages in + module-aware mode. go get is now dedicated to adjusting + dependencies in go.mod. Effectively, the -d flag is always + enabled. To install the latest version of an executable outside + the context of the current module, use go install + example.com/cmd@latest. Any version query may be used instead + of latest. This form of go install was added in Go 1.16, so + projects supporting older versions may need to provide install + instructions for both go install and go get. go get now reports + an error when used outside a module, since there is no go.mod + file to update. In GOPATH mode (with GO111MODULE=off), go get + still builds and installs packages, as before. + * Automatic go.mod and go.sum updates: The go mod graph, go mod + vendor, go mod verify, and go mod why subcommands no longer + automatically update the go.mod and go.sum files. (Those files + can be updated explicitly using go get, go mod tidy, or go mod + download.) + * go version: The go command now embeds version control + information in binaries. It includes the currently checked-out + revision, commit time, and a flag indicating whether edited or + untracked files are present. Version control information is + embedded if the go command is invoked in a directory within a + Git, Mercurial, Fossil, or Bazaar repository, and the main + package and its containing main module are in the same + repository. This information may be omitted using the flag + -buildvcs=false. Additionally, the go command embeds + information about the build, including build and tool tags (set + with -tags), compiler, assembler, and linker flags (like + -gcflags), whether cgo was enabled, and if it was, the values + of the cgo environment variables (like CGO_CFLAGS). Both VCS + and build information may be read together with module + information using go version -m file or + runtime/debug.ReadBuildInfo (for the currently running binary) + or the new debug/buildinfo package. The underlying data format + of the embedded build information can change with new go + releases, so an older version of go may not handle the build + information produced with a newer version of go. To read the + version information from a binary built with go 1.18, use the + go version command and the debug/buildinfo package from go + 1.18+. + * go mod download: If the main module's go.mod file specifies go + 1.17 or higher, go mod download without arguments now downloads + source code for only the modules explicitly required in the + main module's go.mod file. (In a go 1.17 or higher module, that + set already includes all dependencies needed to build the + packages and tests in the main module.) To also download source + code for transitive dependencies, use go mod download all. + * go mod vendor: The go mod vendor subcommand now supports a -o + flag to set the output directory. (Other go commands still read + from the vendor directory at the module root when loading + packages with -mod=vendor, so the main use for this flag is for + third-party tools that need to collect package source code.) + * go mod tidy: The go mod tidy command now retains additional + checksums in the go.sum file for modules whose source code is + needed to verify that each imported package is provided by only + one module in the build list. Because this condition is rare + and failure to apply it results in a build error, this change + is not conditioned on the go version in the main module's + go.mod file. + * go work: The go command now supports a "Workspace" mode. If a + go.work file is found in the working directory or a parent + directory, or one is specified using the GOWORK environment + variable, it will put the go command into workspace mode. In + workspace mode, the go.work file will be used to determine the + set of main modules used as the roots for module resolution, + instead of using the normally-found go.mod file to specify the + single main module. For more information see the go work + documentation. + * go build -asan: The go build command and related commands now + support an -asan flag that enables interoperation with C (or + C++) code compiled with the address sanitizer (C compiler + option -fsanitize=address). + * //go:build lines: Go 1.17 introduced //go:build lines as a more + readable way to write build constraints, instead of // +build + lines. As of Go 1.17, gofmt adds //go:build lines to match + existing +build lines and keeps them in sync, while go vet + diagnoses when they are out of sync. Since the release of Go + 1.18 marks the end of support for Go 1.16, all supported + versions of Go now understand //go:build lines. In Go 1.18, go + fix now removes the now-obsolete // +build lines in modules + declaring go 1.17 or later in their go.mod files. For more + information, see https://go.dev/design/draft-gobuild. + * go vet: The vet tool is updated to support generic code. In + most cases, it reports an error in generic code whenever it + would report an error in the equivalent non-generic code after + substituting for type parameters with a type from their type + set. + * go vet: The cmd/vet checkers copylock, printf, sortslice, + testinggoroutine, and tests have all had moderate precision + improvements to handle additional code patterns. This may lead + to newly reported errors in existing packages. + * Runtime: The garbage collector now includes non-heap sources of + garbage collector work (e.g., stack scanning) when determining + how frequently to run. As a result, garbage collector overhead + is more predictable when these sources are significant. For + most applications these changes will be negligible; however, + some Go applications may now use less memory and spend more + time on garbage collection, or vice versa, than before. The + intended workaround is to tweak GOGC where necessary. The + runtime now returns memory to the operating system more + efficiently and has been tuned to work more aggressively as a + result. + * Compiler: Go 1.17 implemented a new way of passing function + arguments and results using registers instead of the stack on + 64-bit x86 architecture on selected operating systems. Go 1.18 + expands the supported platforms to include 64-bit ARM + (GOARCH=arm64), big- and little-endian 64-bit PowerPC + (GOARCH=ppc64, ppc64le), as well as 64-bit x86 architecture + (GOARCH=amd64) on all operating systems. On 64-bit ARM and + 64-bit PowerPC systems, benchmarking shows typical performance + improvements of 10% or more. As mentioned in the Go 1.17 + release notes, this change does not affect the functionality of + any safe Go code and is designed to have no impact on most + assembly code. See the Go 1.17 release notes for more details. + * Compiler: The compiler now can inline functions that contain + range loops or labeled for loops. + * Compiler: The new -asan compiler option supports the new go + command -asan option. + * Compiler: Because the compiler's type checker was replaced in + its entirety to support generics, some error messages now may + use different wording than before. In some cases, pre-Go 1.18 + error messages provided more detail or were phrased in a more + helpful way. We intend to address these cases in Go + 1.19. Because of changes in the compiler related to supporting + generics, the Go 1.18 compile speed can be roughly 15% slower + than the Go 1.17 compile speed. The execution time of the + compiled code is not affected. We intend to improve the speed + of the compiler in Go 1.19. + * Linker: The linker emits far fewer relocations. As a result, + most codebases will link faster, require less memory to link, + and generate smaller binaries. Tools that process Go binaries + should use Go 1.18's debug/gosym package to transparently + handle both old and new binaries. + * Linker: The new -asan linker option supports the new go command + -asan option. + * Bootstrap: When building a Go release from source and + GOROOT_BOOTSTRAP is not set, previous versions of Go looked for + a Go 1.4 or later bootstrap toolchain in the directory + $HOME/go1.4 (%HOMEDRIVE%%HOMEPATH%\go1.4 on Windows). Go now + looks first for $HOME/go1.17 or $HOME/sdk/go1.17 before falling + back to $HOME/go1.4. We intend for Go 1.19 to require Go 1.17 + or later for bootstrap, and this change should make the + transition smoother. For more details, see go#44505. + * The new debug/buildinfo package provides access to module + versions, version control information, and build flags embedded + in executable files built by the go command. The same + information is also available via runtime/debug.ReadBuildInfo + for the currently running binary and via go version -m on the + command line. + * The new net/netip package defines a new IP address type, + Addr. Compared to the existing net.IP type, the netip.Addr type + takes less memory, is immutable, and is comparable so it ++++ 79 more lines (skipped) ++++ between /work/SRC/openSUSE:Factory/go1.18/go1.18.changes ++++ and /work/SRC/openSUSE:Factory/.go1.18.new.25692/go1.18.changes Old: ---- go1.18rc1.src.tar.gz New: ---- dont-force-gold-on-arm64.patch go1.18.src.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ go1.18.spec ++++++ --- /var/tmp/diff_new_pack.7LSc1U/_old 2022-03-16 20:20:43.916981674 +0100 +++ /var/tmp/diff_new_pack.7LSc1U/_new 2022-03-16 20:20:43.920981677 +0100 @@ -135,7 +135,7 @@ %endif Name: go1.18 -Version: 1.18rc1 +Version: 1.18 Release: 0 Summary: A compiled, garbage-collected, concurrent programming language License: BSD-3-Clause @@ -147,6 +147,8 @@ 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 marguer...@opensuse.org - find /usr/bin/go-5 when bootstrapping with gcc5-go Patch8: gcc6-go.patch Patch9: gcc7-go.patch @@ -169,22 +171,8 @@ %endif #BNC#818502 debug edit tool of rpm fails on i586 builds BuildRequires: rpm >= 4.11.1 -# Needed on arm aarch64 to avoid -# collect2: fatal error: cannot find 'ld'- -%ifarch %arm aarch64 -BuildRequires: binutils-gold -%endif Requires(post): update-alternatives Requires(postun):update-alternatives -# Needed on arm aarch64 to avoid -# collect2: fatal error: cannot find 'ld'- -%ifarch %arm aarch64 -%if 0%{?is_opensuse} -Requires: binutils-gold -%else -Recommends: binutils-gold -%endif -%endif Requires: gcc Provides: go = %{version} Provides: go-devel = go%{version} @@ -234,6 +222,7 @@ %endif # go %setup -q -n go +%patch7 -p1 %if %{with gccgo} %if 0%{?gcc_go_version} == 6 %patch8 -p1 ++++++ dont-force-gold-on-arm64.patch ++++++ --- go/src/cmd/link/internal/ld/lib.go +++ go/src/cmd/link/internal/ld/lib.go @@ -1391,30 +1391,6 @@ // Use lld to avoid errors from default linker (issue #38838) altLinker = "lld" } - - if ctxt.Arch.InFamily(sys.ARM, sys.ARM64) && buildcfg.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. - 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("ARM external linker must be gold (issue #15696), but is not: %s", out) - } - } - } } if ctxt.Arch.Family == sys.ARM64 && buildcfg.GOOS == "freebsd" { // Switch to ld.bfd on freebsd/arm64. ++++++ go1.18rc1.src.tar.gz -> go1.18.src.tar.gz ++++++ /work/SRC/openSUSE:Factory/go1.18/go1.18rc1.src.tar.gz /work/SRC/openSUSE:Factory/.go1.18.new.25692/go1.18.src.tar.gz differ: char 15, line 1