diff --git a/.gitignore b/.gitignore index c2ad651..4541b61 100644 --- a/.gitignore +++ b/.gitignore @@ -133,43 +133,45 @@ /go1.20.3.src.tar.gz /go1.20.4.src.tar.gz /go1.20.5.src.tar.gz -/go1.20.5-1-openssl-fips.tar.gz -/go1.20.4-3-openssl-fips.tar.gz -/go1.20.5-2-openssl-fips.tar.gz /go1.20.6.src.tar.gz -/go1.20.6-1-openssl-fips.tar.gz +/go1.21rc1.src.tar.gz +/go1.21rc2.src.tar.gz +/go1.21rc3.src.tar.gz +/go1.21.0.src.tar.gz +/go1.21.1.src.tar.gz /go1.21.3.src.tar.gz -/go1.21.3-1-openssl-fips.tar.gz +/go1.21.4.src.tar.gz +/go1.21.5.src.tar.gz +/go1.21.6.src.tar.gz +/go1.22rc1.src.tar.gz +/go1.22rc2.src.tar.gz +/go1.22.0.src.tar.gz /go1.22.1.src.tar.gz -/go1.22.1-1-openssl-fips.tar.gz -/go1.22.1-2-openssl-fips.tar.gz /go1.22.2.src.tar.gz -/go1.22.2-1-openssl-fips.tar.gz /go1.22.3.src.tar.gz -/go1.22.3-1-openssl-fips.tar.gz -/go1.22.3-2-openssl-fips.tar.gz -/go1.22.3-3-openssl-fips.tar.gz /go1.22.4.src.tar.gz -/go1.22.4-1-openssl-fips.tar.gz -/go1.22.5.src.tar.gz -/go1.22.5-1-openssl-fips.tar.gz -/go1.22.5-2-openssl-fips.tar.gz -/go1.23.1-1-openssl-fips.tar.gz +/go1.23rc1.src.tar.gz +/go1.23rc2.src.tar.gz +/go1.23.0.src.tar.gz /go1.23.1.src.tar.gz -/go1.23.6.src.tar.gz -/go1.23.6-1-openssl-fips.tar.gz +/go1.23.2.src.tar.gz +/go1.23.3.src.tar.gz +/go1.23.4.src.tar.gz +/go1.24rc1.src.tar.gz +/go1.24rc2.src.tar.gz +/go1.24rc3.src.tar.gz +/go1.24.0.src.tar.gz +/go1.24.1.src.tar.gz +/go1.24.2.src.tar.gz /go1.24.3.src.tar.gz -/go1.24.3-1-openssl-fips.tar.gz -/compiler-rt-18.1.8.src.tar.xz -/go1.24.3-2-openssl-fips.tar.gz -/go1.24.3-3-openssl-fips.tar.gz /go1.24.4.src.tar.gz -/go1.24.4-1-openssl-fips.tar.gz -/go1.24.6.src.tar.gz -/go1.24.6-1-openssl-fips.tar.gz +/go1.24.5.src.tar.gz +/go1.25rc1.src.tar.gz +/go1.25rc2.src.tar.gz /go1.25.0.src.tar.gz -/go1.25.0-1-openssl-fips.tar.gz -/go1.25.1-1-openssl-fips.tar.gz /go1.25.1.src.tar.gz +/go1.25.2.src.tar.gz /go1.25.3.src.tar.gz -/go1.25.3-1-openssl-fips.tar.gz +/go1.25.4.src.tar.gz +/go1.25.5.src.tar.gz +/go1.26rc1.src.tar.gz diff --git a/.packit.yaml b/.packit.yaml new file mode 100644 index 0000000..ab570c5 --- /dev/null +++ b/.packit.yaml @@ -0,0 +1,41 @@ +specfile_path: golang.spec +files_to_sync: + - golang.spec + - .packit.yaml +upstream_package_name: go +upstream_project_url: https://github.com/golang/go +downstream_package_name: golang +upstream_tag_template: go{version} + +actions: + changelog-entry: + - bash -c "echo - New release ${PACKIT_PROJECT_VERSION}" + +jobs: + # Fedora 42 follows Go 1.24 + - job: pull_from_upstream + trigger: release + dist_git_branches: fedora-42 + upstream_tag_include: "^go1.24.+" + + # Fedora 43 follows Go 1.25 + - job: pull_from_upstream + trigger: release + dist_git_branches: fedora-43 + upstream_tag_include: "^go1.25.+" + + # Fedora Rawhide follows the latest version + - job: pull_from_upstream + trigger: release + dist_git_branches: fedora-rawhide + upstream_tag_include: "^go1.26.+" + + # Run Koji builds when Packit pull requests are merged + - job: koji_build + trigger: commit + dist_git_branches: fedora-all + + # Create Bodhi updates in all Fedora stable versions + - job: bodhi_update + trigger: commit + dist_git_branches: fedora-all diff --git a/0001-Modify-go.env.patch b/0001-Modify-go.env.patch index d50ce0e..6a458b2 100644 --- a/0001-Modify-go.env.patch +++ b/0001-Modify-go.env.patch @@ -1,31 +1,42 @@ -From fbcfe983cdeb723420d67364022fc91ac8c6be3c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Alejandro=20S=C3=A1ez?= -Date: Wed, 5 Jun 2024 12:30:46 +0200 -Subject: [PATCH] Modify environment variables defaults +From 39432f71436c41201450a523dc41035c92d27569 Mon Sep 17 00:00:00 2001 +From: Maxwell G +Date: Thu, 24 Jul 2025 12:23:59 -0500 +Subject: [PATCH] Modify go.env -- Set GOTOOLCHAIN to local -- Set GOAMD64 to v3 -- Set GOPPC64 to power9 --- - go.env | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + go.env | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/go.env b/go.env -index 6ff2b921d4..0bff84446c 100644 +index 6ff2b92..5508440 100644 --- a/go.env +++ b/go.env -@@ -9,4 +9,10 @@ GOSUMDB=sum.golang.org +@@ -4,9 +4,24 @@ + + # Use the Go module mirror and checksum database by default. + # See https://proxy.golang.org for details. ++# ++# NOTE(downstream): We used to disable the Google Go proxy with GOPROXY=direct and ++# disable the GOSUMDB for historical and priavcy reasons, but it caused severe ++# performance degradations, so we reverted to the default upstream configuration. ++# as of https://fedoraproject.org/wiki/Changes/golang1.25. ++# To preserve the previous behavior, set "GOPROXY=direct" and "GOSUMDB=off". + GOPROXY=https://proxy.golang.org,direct + GOSUMDB=sum.golang.org # Automatically download newer toolchains as directed by go.mod files. # See https://go.dev/doc/toolchain for details. -GOTOOLCHAIN=auto ++# ++# NOTE(downstream): We change this default from auto to local so that the ++# distribution-packaged Go toolchain is always used and go doesn't ++# automatically download pre-compiled alternative versions. +GOTOOLCHAIN=local + -+# The AMD64 baseline for RHEL10 is v3. -+GOAMD64=v3 -+# The PPC64LE baseline for RHEL10 is power9 -+GOPPC64=power9 -+ ++# NOTE(downstream): https://sourceware.org/bugzilla/show_bug.cgi?id=33204 ++# The dwarf5 data emitted by default in Go 1.25+ is incompatible with debugedit ++# and breaks debugdata collection. ++GOEXPERIMENT=nodwarf5 -- -2.45.1 +2.50.1 diff --git a/0005-Skip-TestCrashDumpsAllThreads.patch b/0005-Skip-TestCrashDumpsAllThreads.patch new file mode 100644 index 0000000..34a84b3 --- /dev/null +++ b/0005-Skip-TestCrashDumpsAllThreads.patch @@ -0,0 +1,28 @@ +From c0c22e2aa7d1901c97da04f834ce9c7b9e38be80 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Alejandro=20S=C3=A1ez?= +Date: Sun, 11 Feb 2024 12:08:35 +0100 +Subject: [PATCH] Skip TestCrashDumpsAllThreads + +See golang.org/issues/64650 +--- + src/runtime/crash_unix_test.go | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/runtime/crash_unix_test.go b/src/runtime/crash_unix_test.go +index 123a462423..a0034d6455 100644 +--- a/src/runtime/crash_unix_test.go ++++ b/src/runtime/crash_unix_test.go +@@ -74,6 +74,10 @@ func TestCrashDumpsAllThreads(t *testing.T) { + t.Skip("skipping; SIGQUIT is blocked, see golang.org/issue/19196") + } + ++ if runtime.GOOS == "linux" && runtime.GOARCH == "s390x" { ++ t.Skip("skipping; frequent TestCrashDumpsAllThreads failures on linux/s390x, see golang.org/issue/64650") ++ } ++ + testenv.MustHaveGoBuild(t) + + if strings.Contains(os.Getenv("GOFLAGS"), "mayMoreStackPreempt") { +-- +2.43.0 + diff --git a/README.packit b/README.packit new file mode 100644 index 0000000..b4b46e3 --- /dev/null +++ b/README.packit @@ -0,0 +1,3 @@ +This repository is maintained by packit. +https://packit.dev/ +The file was generated using packit 1.12.0.post1.dev20+g7d30dac21. diff --git a/bundled-deps.sh b/bundled-deps.sh index 51dd446..3d5d6b7 100755 --- a/bundled-deps.sh +++ b/bundled-deps.sh @@ -1,4 +1,4 @@ -#! /bin/bash +#!/bin/bash # Copyright (C) 2021 Jakub Čajka jcajka@redhat.com # # This program is free software; you can redistribute it and/or @@ -16,7 +16,14 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. provides="" + for bundle in $(find -name modules.txt); do -provides="$provides\n$(cat "$bundle" | grep "^# " | grep -v "# explicit" | sed -r s/"^#.* => "// | sed -r "s/# //" | sed -r "s:(.*) v(.*):Provides\: bundled(golang(\1)) = \2:")" -done + provides="$provides\n$(cat "$bundle" | + grep "^# " | + grep -v "# explicit" | + sed -r s/"^#.* => "// | + sed -r "s/# //" | + sed -r "s:(.*) v(.*):Provides\: bundled(golang(\1)) = \2:" | + sed '/= .*/s/-/./g')" + done echo -e "$provides" | sed 's/-/./g' | sort -u diff --git a/changelog b/changelog index 4b4b67d..f0b1671 100644 --- a/changelog +++ b/changelog @@ -1,26 +1,28 @@ -* Thu Sep 28 2023 Alejandro Sáez - 1.20.6-3 -- Migrated to SPDX license +* Tue Aug 08 2023 Packit - 1.21.0-1 +New release ${PACKIT_PROJECT_VERSION} -* Tue Sep 05 2023 Yaakov Selkowitz - 1.20.6-2 -- Drop unused pcre dependency +* Thu Jul 20 2023 Fedora Release Engineering - 1.21~rc3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild -* Tue Aug 01 2023 Alejandro Sáez - 1.20.6-1 +* Fri Jul 14 2023 Alejandro Sáez - 1.21~rc3-1 +- Update to go1.21rc3 +- Update bundled dependencies. +- Update pcre-devel to pcre2-devel +- Add go-filesystem +- Remove skipping tests, related: https://github.com/golang/go/issues/39466 +- Remove 0002-syscall-expose-IfInfomsg.X__ifi_pad-on-s390x.patch, already merged +- Rename 0003-cmd-go-disable-Google-s-proxy-and-sumdb.patch to 0001-Disable-Google-s-proxy-sumdb-and-toolchain.patch +- Update 0001-Disable-Google-s-proxy-sumdb-and-toolchain.patch +- Update 0004-cmd-link-use-gold-on-ARM-ARM64-only-if-gold-is-avail.patch +- Resolves: rhbz#2128303 +- Resolves: rhbz#2215635 +- Resolves: rhbz#2172392 + +* Tue Jul 11 2023 Mike Rochefort - 1.20.6-1 - Update to go 1.20.6 -* Wed Jun 28 2023 Yaakov Selkowitz - 1.20.5-4 -- Add go-toolset subpackage - -* Thu Jun 22 2023 Yaakov Selkowitz - 1.20.5-3 -- Add runtime requirement for openssl-devel - -* Wed Jun 14 2023 Alejandro Sáez - 1.20.5-2 -- Package bump up do to a mistake I made - -* Wed Jun 14 2023 Alejandro Sáez - 1.20.5-1 -- Update to go1.20.5 - -* Tue Jun 13 2023 Alejandro Sáez - 1.20.4-3 -- Add FIPS support for RHEL targets +* Tue Jun 06 2023 Alejandro Sáez - 1.20.5-1 +- Update to go 1.20.5 * Tue May 02 2023 Alejandro Sáez - 1.20.4-1 - Update to go1.20.4 diff --git a/fedora.go b/fedora.go index 60e460d..3ff4d3e 100644 --- a/fedora.go +++ b/fedora.go @@ -1,7 +1,6 @@ //go:build rpm_crashtraceback // +build rpm_crashtraceback - // Copyright 2017 The Fedora Project Contributors. All rights reserved. // Use of this source code is governed by the MIT license. diff --git a/fix_cgo_panic-with-gcc15-in-368.patch b/fix_cgo_panic-with-gcc15-in-368.patch new file mode 100644 index 0000000..372af28 --- /dev/null +++ b/fix_cgo_panic-with-gcc15-in-368.patch @@ -0,0 +1,25 @@ +From 5f566346b70403891cfc52d0c807d72335691708 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Alejandro=20S=C3=A1ez?= +Date: Wed, 15 Jan 2025 21:45:33 +0100 +Subject: [PATCH] Fix _cgo_panic with gcc15 in 368 + +--- + src/cmd/link/internal/x86/asm.go | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cmd/link/internal/x86/asm.go b/src/cmd/link/internal/x86/asm.go +index d535e5fb4d..c4253a8c08 100644 +--- a/src/cmd/link/internal/x86/asm.go ++++ b/src/cmd/link/internal/x86/asm.go +@@ -184,7 +184,7 @@ func adddynrel(target *ld.Target, ldr *loader.Loader, syms *ld.ArchSyms, s loade + return true + } + +- if r.Off() >= 2 && sData[r.Off()-2] == 0xff && sData[r.Off()-1] == 0xb3 { ++ if r.Off() >= 2 && sData[r.Off()-2] == 0xff && sData[r.Off()-1] >= 0xb0 && sData[r.Off()-1] <= 0xb7 { + su.MakeWritable() + // turn PUSHL of GOT entry into PUSHL of symbol itself. + // use unnecessary SS prefix to keep instruction same length. +-- +2.47.1 + diff --git a/gating.yaml b/gating.yaml index 89ec7b9..ce3cdc1 100644 --- a/gating.yaml +++ b/gating.yaml @@ -17,11 +17,3 @@ product_versions: decision_context: osci_compose_gate rules: - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} ---- !Policy -product_versions: - - rhel-10 -decision_context: osci_compose_gate -rules: - - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1-tmt-aarch64.functional} - - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1-tmt-ppc64le.functional} - - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1-tmt-x86_64.functional} diff --git a/golang-prelink.conf b/golang-prelink.conf deleted file mode 100644 index 471e8e6..0000000 --- a/golang-prelink.conf +++ /dev/null @@ -1,3 +0,0 @@ -# there are ELF files in src which are testdata and shouldn't be modified --b /usr/lib/golang/src --b /usr/lib64/golang/src diff --git a/golang.spec b/golang.spec index cd841f4..ba57da1 100644 --- a/golang.spec +++ b/golang.spec @@ -1,19 +1,4 @@ %bcond_with bootstrap -# temporalily ignore test failures -# due to https://github.com/golang/go/issues/39466 -%ifarch aarch64 -%bcond_without ignore_tests -%else -%bcond_with ignore_tests -%endif - -# Enable race by default -%global race 1 - -# Disable race on riscv64 as it's not supported -%ifarch riscv64 -%global race 0 -%endif # build ids are not currently generated: # https://code.google.com/p/go/issues/detail?id=5238 @@ -46,13 +31,6 @@ # Golang build options. -# Disable FIPS by default -%global fips 0 -# Enable FIPS by default in RHEL -%if 0%{?rhel} -%global fips 1 -%endif - # Build golang using external/internal(close to cgo disabled) linking. %ifarch %{ix86} x86_64 ppc64le %{arm} aarch64 s390x riscv64 %global external_linker 1 @@ -81,8 +59,16 @@ %global fail_on_tests 1 %endif -# shared mode is breaks Go 1.21 in ELN +# Build golang shared objects for stdlib +%ifarch %{ix86} x86_64 ppc64le %{arm} aarch64 +%global shared 1 +%else %global shared 0 +%endif + +# Pre build std lib with -race enabled +# Disabled due to 1.20 new cache usage, see 1.20 upstream release notes +%global race 0 # Fedora GOROOT %global goroot /usr/lib/%{name} @@ -112,40 +98,24 @@ %global gohostarch riscv64 %endif -%global go_api 1.25 -# Use only for prerelease versions -#global go_prerelease rc3 -%global go_patch 3 +# Comment out go_prerelease and go_patch as needed +%global go_api 1.26 +%global go_prerelease rc1 +#global go_patch 1 + %global go_version %{go_api}%{?go_patch:.%{go_patch}}%{?go_prerelease:~%{go_prerelease}} %global go_source %{go_api}%{?go_patch:.%{go_patch}}%{?go_prerelease} -# Go FIPS package release -%global pkg_release 1 - -# For rpmdev-bumpspec and releng automation. -%global baserelease 1 - -# LLVM compiler-rt version for race detector -%global llvm_compiler_rt_version 18.1.8 Name: golang -Version: %{go_version} +Version: %{go_version} Release: %autorelease Summary: The Go Programming Language # source tree includes several copies of Mark.Twain-Tom.Sawyer.txt under Public Domain License: BSD-3-Clause AND LicenseRef-Fedora-Public-Domain URL: https://go.dev Source0: https://go.dev/dl/go%{go_source}.src.tar.gz -# Go's FIPS mode bindings are now provided as a standalone -# module instead of in tree. This makes it easier to see -# the actual changes vs upstream Go. The module source is -# located at https://github.com/golang-fips/openssl-fips, -# And pre-genetated patches to set up the module for a given -# Go release are located at https://github.com/golang-fips/go. -# making a source conditional creates odd behaviors so for now, include FIPS always -Source1: https://github.com/golang-fips/go/archive/refs/tags/go%{go_source}-%{pkg_release}-openssl-fips.tar.gz # make possible to override default traceback level at build time by setting build tag rpm_crashtraceback -Source2: fedora.go -Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{llvm_compiler_rt_version}/compiler-rt-%{llvm_compiler_rt_version}.src.tar.xz +Source1: fedora.go # The compiler is written in Go. Needs go(1.4+) compiler for build. %if !%{golang_bootstrap} @@ -153,66 +123,41 @@ BuildRequires: gcc-go >= 5 %else BuildRequires: golang > 1.4 %endif - -# Install hostname(1) or net-tools(1) depending on the OS version -%if 0%{?rhel} > 6 || 0%{?fedora} > 0 BuildRequires: hostname -%else -BuildRequires: net-tools -%endif -# If FIPS is enabled, we need openssl-devel -%if %{fips} -BuildRequires: openssl-devel -Requires: openssl-devel -%endif - -BuildRequires: glibc-static - -# For running the tests on Fedora -%if 0%{?fedora} -BuildRequires: perl-interpreter, procps-ng -%endif - -# For running the tests on RHEL -%if 0%{?rhel} -BuildRequires: perl -%endif -# For building llvm address sanitizer for Go race detector -BuildRequires: libstdc++-devel -BuildRequires: clang +# for tests +BuildRequires: pcre2-devel, glibc-static, perl-interpreter, procps-ng Provides: go = %{version}-%{release} -%if 0%{?fedora} # Bundled/Vendored provides generated by bundled-deps.sh based on the in tree module data -Provides: bundled(golang(github.com/google/pprof)) = 0.0.0.20250208200701.d0013a598941 -Provides: bundled(golang(github.com/ianlancetaylor/demangle)) = 0.0.0.20240912202439.0a2b6291aafd -Provides: bundled(golang(golang.org/x/arch)) = 0.18.1.0.20250605182141.b2f4e2807dec -Provides: bundled(golang(golang.org/x/build)) = 0.0.0.20250606033421.8c8ff6f34a83 -Provides: bundled(golang(golang.org/x/crypto)) = 0.39.0 -Provides: bundled(golang(golang.org/x/mod)) = 0.25.0 -Provides: bundled(golang(golang.org/x/net)) = 0.41.0 -Provides: bundled(golang(golang.org/x/sync)) = 0.15.0 -Provides: bundled(golang(golang.org/x/sys)) = 0.33.0 -Provides: bundled(golang(golang.org/x/telemetry)) = 0.0.0.20250606142133.60998feb31a8 -Provides: bundled(golang(golang.org/x/term)) = 0.32.0 -Provides: bundled(golang(golang.org/x/text)) = 0.26.0 +Provides: bundled(golang(github.com/google/pprof)) = 0.0.0.20251114195745.4902fdda35c8 +Provides: bundled(golang(github.com/ianlancetaylor/demangle)) = 0.0.0.20250417193237.f615e6bd150b +Provides: bundled(golang(golang.org/x/arch)) = 0.23.0 +Provides: bundled(golang(golang.org/x/build)) = 0.0.0.20251128064159.b9bfd88b30e8 +Provides: bundled(golang(golang.org/x/crypto)) = 0.46.1.0.20251210140736.7dacc380ba00 +Provides: bundled(golang(golang.org/x/mod)) = 0.30.1.0.20251115032019.269c237cf350 +Provides: bundled(golang(golang.org/x/net)) = 0.47.1.0.20251128220604.7c360367ab7e +Provides: bundled(golang(golang.org/x/sync)) = 0.19.0 +Provides: bundled(golang(golang.org/x/sys)) = 0.39.0 +Provides: bundled(golang(golang.org/x/telemetry)) = 0.0.0.20251128220624.abf20d0e57ec +Provides: bundled(golang(golang.org/x/term)) = 0.38.0 +Provides: bundled(golang(golang.org/x/text)) = 0.32.0 Provides: bundled(golang(golang.org/x/tools)) = 0.27.0 -Provides: bundled(golang(golang.org/x/tools)) = 0.34.0 +Provides: bundled(golang(golang.org/x/tools)) = 0.39.1.0.20251205000126.062ef7b6ced2 Provides: bundled(golang(rsc.io/markdown)) = 0.0.0.20240306144322.0bf8f97ee8ef -%endif Requires: %{name}-bin = %{version}-%{release} Requires: %{name}-src = %{version}-%{release} -%if %{race} -Requires: %{name}-race = %{version}-%{release} -%endif +Requires: go-filesystem Patch1: 0001-Modify-go.env.patch +Patch5: 0005-Skip-TestCrashDumpsAllThreads.patch Patch6: 0006-Default-to-ld.bfd-on-ARM64.patch -# Related: https://sourceware.org/bugzilla/show_bug.cgi?id=33204 -Patch7: revert_dwarf5.patch +# Related to https://gcc.gnu.org/PR118497 +Patch8: fix_cgo_panic-with-gcc15-in-368.patch +# Related to https://github.com/golang/go/issues/74476 +Patch9: skip_lsan_tests.patch # Having documentation separate was broken Obsoletes: %{name}-docs < 1.1-4 @@ -224,11 +169,14 @@ Obsoletes: %{name}-data < 1.1.1-4 Obsoletes: %{name}-vim < 1.4 Obsoletes: emacs-%{name} < 1.4 +# We stopped building the golang-race subpackage, so we need to to maintain the +# update path. +Obsoletes: golang-race < 1.20~rc3-2 + # These are the only RHEL/Fedora architectures that we compile this package for ExclusiveArch: %{golang_arches} Source100: golang-gdbinit -Source101: golang-prelink.conf %description %{summary}. @@ -304,11 +252,8 @@ Requires(preun): %{_sbindir}/update-alternatives # This is an odd issue, still looking for a better fix. Requires: glibc Requires: gcc -%if 0%{?rhel} && 0%{?rhel} < 8 -Requires: git, subversion, mercurial -%else -Recommends: git, subversion, mercurial -%endif +Recommends: git-core, subversion, mercurial + %description bin %{summary} @@ -330,104 +275,27 @@ Summary: Golang shared object libraries %{summary}. %endif -%package -n go-toolset -Summary: Package that installs go-toolset -Requires: %{name} = %{version}-%{release} -%ifarch x86_64 aarch64 ppc64le -Requires: delve -%endif - -%description -n go-toolset -This is the main package for go-toolset. - %if %{race} -%package race -Summary: Race detetector library object files. +%package race +Summary: Golang std library with -race enabled + Requires: %{name} = %{version}-%{release} %description race -Binary library objects for Go's race detector. +%{summary} %endif - %prep %autosetup -p1 -n go -# Copy fedora.go to ./src/runtime/ -cp %{SOURCE2} ./src/runtime/ -sed -i '1s/$/ (%{?rhel:Red Hat} %{version}-%{release})/' VERSION -# Delete the bundled race detector objects. -find ./src/runtime/race/ -name "race_*.syso" -exec rm {} \; -# Delete the boring binary blob. We use the system OpenSSL instead. -rm -rf src/crypto/internal/boring/syso -# If FIPS is enabled, install the FIPS source -%if %{fips} - echo "Preparing FIPS patches" - pushd .. - tar -xf %{SOURCE1} - popd - # TODO Check here, this is failing due to the external linker flag? maybe, but it's clearly related to that according tho this commit: - # https://github.com/golang-fips/go/blob/main/patches/000-initial-setup.patch#L48 - # Add --no-backup-if-mismatch option to avoid creating .orig temp files - patch_dir="../go-go%{version}-%{pkg_release}-openssl-fips/patches" - for p in "$patch_dir"/*.patch; do - echo "Applying $p" - patch --no-backup-if-mismatch -p1 < $p - done - - # Configure crypto tests - echo "Configure crypto tests" - pushd ../go-go%{version}-%{pkg_release}-openssl-fips - ln -s ../go go - ./scripts/configure-crypto-tests.sh - popd -%endif +cp %{SOURCE1} ./src/runtime/ %build -# -x: print commands as they are executed -# -e: exit immediately if a command exits with a non-zero status -set -xe - # print out system information uname -a cat /proc/cpuinfo cat /proc/meminfo -# Build race detector .syso's from llvm sources -# The race detector requests a -fno-exceptions build. -%global tsan_buildflags %(rpm -D 'toolchain clang' -E '%{optflags}' | sed 's/-fexceptions//') -%global tsan_optflag -O1 -mkdir ../llvm - -tar -xf %{SOURCE3} -C ../llvm -tsan_go_dir="../llvm/compiler-rt-%{llvm_compiler_rt_version}.src/lib/tsan/go" - -# The script uses uname -a and grep to set the GOARCH. This -# is unreliable and can get the wrong architecture in -# circumstances like cross-architecture emulation. We fix it -# by just reading GOARCH directly from Go. -export GOARCH=$(go env GOARCH) - -%if %{race} -%ifarch x86_64 -pushd "${tsan_go_dir}" - CFLAGS="%{tsan_buildflags} %{tsan_optflag}" CC=clang GOAMD64=v3 ./buildgo.sh -popd -cp "${tsan_go_dir}"/race_linux_amd64.syso ./src/runtime/race/internal/amd64v3/race_linux.syso - -pushd "${tsan_go_dir}" - CFLAGS="%{tsan_buildflags} %{tsan_optflag}" CC=clang GOAMD64=v3 ./buildgo.sh -popd -cp "${tsan_go_dir}"/race_linux_amd64.syso ./src/runtime/race/internal/amd64v1/race_linux.syso - -%else -pushd "${tsan_go_dir}" - CFLAGS="%{tsan_buildflags} %{tsan_optflag}" CC=clang ./buildgo.sh -popd -cp "${tsan_go_dir}"/race_linux_%{gohostarch}.syso ./src/runtime/race/race_linux_%{gohostarch}.syso -%endif -%endif - # bootstrap compiler GOROOT %if !%{golang_bootstrap} export GOROOT_BOOTSTRAP=/ @@ -440,8 +308,6 @@ export GOROOT_FINAL=%{goroot} export GOHOSTOS=linux export GOHOSTARCH=%{gohostarch} -export GOAMD64=v3 -export GOPPC64='power9' pushd src # use our gcc options for this build, but store gcc as default for compiler @@ -451,24 +317,13 @@ export CC="gcc" export CC_FOR_TARGET="gcc" export GOOS=linux export GOARCH=%{gohostarch} -export GOAMD64=v3 -export GOPPC64='power9' - -DEFAULT_GO_LD_FLAGS="" %if !%{external_linker} -export GO_LDFLAGS="-linkmode internal $DEFAULT_GO_LD_FLAGS" -%else -# Only pass a select subset of the external hardening flags. We do not pass along -# the default $RPM_LD_FLAGS as on certain arches Go does not fully, correctly support -# building in PIE mode. -export GO_LDFLAGS="\"-extldflags=-Wl,-z,now,-z,relro\" $DEFAULT_GO_LD_FLAGS" +export GO_LDFLAGS="-linkmode internal" %endif - %if !%{cgo_enabled} export CGO_ENABLED=0 %endif - -./make.bash --no-clean -v +./make.bash -v popd # build shared std lib @@ -477,10 +332,11 @@ GOROOT=$(pwd) PATH=$(pwd)/bin:$PATH go install -buildmode=shared -v -x std %endif %if %{race} -GOROOT=$(pwd) PATH=$(pwd)/bin:$PATH go install -race std +GOROOT=$(pwd) PATH=$(pwd)/bin:$PATH go install -race -v -x std %endif %install +echo "== 1 ==" rm -rf $RPM_BUILD_ROOT # remove GC build cache rm -rf pkg/obj/go-build/* @@ -493,7 +349,7 @@ mkdir -p $RPM_BUILD_ROOT%{goroot} # https://code.google.com/p/go/issues/detail?id=5830 cp -apv api bin doc lib pkg src misc test go.env VERSION \ $RPM_BUILD_ROOT%{goroot} - +echo "== 2 ==" # bz1099206 find $RPM_BUILD_ROOT%{goroot}/src -exec touch -r $RPM_BUILD_ROOT%{goroot}/VERSION "{}" \; # and level out all the built archives @@ -510,11 +366,8 @@ docs_list=$cwd/go-docs.list tests_list=$cwd/go-tests.list rm -f $src_list $pkg_list $docs_list $misc_list $tests_list $shared_list $race_list touch $src_list $pkg_list $docs_list $misc_list $tests_list $shared_list $race_list - -################## -# Register files # -################## pushd $RPM_BUILD_ROOT%{goroot} + echo "== 3 ==" find src/ -type d -a \( ! -name testdata -a ! -ipath '*/testdata/*' \) -printf '%%%dir %{goroot}/%p\n' >> $src_list find src/ ! -type d -a \( ! -ipath '*/testdata/*' -a ! -name '*_test.go' \) -printf '%{goroot}/%p\n' >> $src_list @@ -528,6 +381,7 @@ pushd $RPM_BUILD_ROOT%{goroot} find misc/ ! -type d -printf '%{goroot}/%p\n' >> $misc_list %if %{shared} +echo "== 4 ==" mkdir -p %{buildroot}/%{_libdir}/ mkdir -p %{buildroot}/%{golibdir}/ for file in $(find . -iname "*.so" ); do @@ -543,6 +397,13 @@ pushd $RPM_BUILD_ROOT%{goroot} find pkg/*_dynlink/ -type d -printf '%%%dir %{goroot}/%p\n' >> $shared_list find pkg/*_dynlink/ ! -type d -printf '%{goroot}/%p\n' >> $shared_list %endif + +echo "== 5 ==" + +%if %{race} + find pkg/*_race/ -type d -printf '%%%dir %{goroot}/%p\n' >> $race_list + find pkg/*_race/ ! -type d -printf '%{goroot}/%p\n' >> $race_list +%endif find test/ -type d -printf '%%%dir %{goroot}/%p\n' >> $tests_list find test/ ! -type d -printf '%{goroot}/%p\n' >> $tests_list find src/ -type d -a \( -name testdata -o -ipath '*/testdata/*' \) -printf '%%%dir %{goroot}/%p\n' >> $tests_list @@ -551,6 +412,7 @@ pushd $RPM_BUILD_ROOT%{goroot} find lib/ -type d -printf '%%%dir %{goroot}/%p\n' >> $tests_list find lib/ ! -type d -printf '%{goroot}/%p\n' >> $tests_list popd +echo "== 6 ==" # remove the doc Makefile rm -rfv $RPM_BUILD_ROOT%{goroot}/doc/Makefile @@ -565,7 +427,7 @@ mkdir -p $RPM_BUILD_ROOT%{gopath}/src/github.com mkdir -p $RPM_BUILD_ROOT%{gopath}/src/bitbucket.org mkdir -p $RPM_BUILD_ROOT%{gopath}/src/code.google.com/p mkdir -p $RPM_BUILD_ROOT%{gopath}/src/golang.org/x - +echo "== 7 ==" # make sure these files exist and point to alternatives rm -f $RPM_BUILD_ROOT%{_bindir}/go ln -sf /etc/alternatives/go $RPM_BUILD_ROOT%{_bindir}/go @@ -576,79 +438,45 @@ ln -sf /etc/alternatives/gofmt $RPM_BUILD_ROOT%{_bindir}/gofmt mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d cp -av %{SOURCE100} $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d/golang.gdb -# prelink blacklist -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d -cp -av %{SOURCE101} $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d/golang.conf - -%if %{fips} -# Quick fix for the rhbz#2014704 -sed -i 's/const defaultGO_LDSO = `.*`/const defaultGO_LDSO = ``/' $RPM_BUILD_ROOT%{goroot}/src/internal/buildcfg/zbootstrap.go -%endif +echo "== END OF INSTALL ==" %check export GOROOT=$(pwd -P) export PATH="$GOROOT"/bin:"$PATH" cd src -# Add some sanity checks. -echo "GO VERSION:" -go version - -echo "GO ENVIRONMENT:" -go env - export CC="gcc" export CFLAGS="$RPM_OPT_FLAGS" export LDFLAGS="$RPM_LD_FLAGS" -export GOAMD64=v3 -export GOPPC64='power9' %if !%{external_linker} export GO_LDFLAGS="-linkmode internal" -%else -export GO_LDFLAGS="-extldflags '$RPM_LD_FLAGS'" %endif %if !%{cgo_enabled} || !%{external_linker} export CGO_ENABLED=0 %endif +# workaround for https://github.com/golang/go/issues/39466 until it gests fixed +# Commented until the patch is ready, this workaround suggested in the link above +# doesn't work properly +#ifarch aarch64 +#export CGO_CFLAGS="-mno-outline-atomics" +#endif # make sure to not timeout +%ifnarch riscv64 export GO_TEST_TIMEOUT_SCALE=2 - -export GO_TEST_RUN="" -%ifarch aarch64 - export GO_TEST_RUN="-run=!testshared" -%endif - -echo "=== Start testing ===" -%if %{fail_on_tests} - ./run.bash --no-rebuild -v -v -v -k $GO_TEST_RUN - %if %{fips} - echo "=== Running FIPS tests ===" - # tested25519vectors needs network connectivity but it should be cover by - # this test https://pkgs.devel.redhat.com/cgit/tests/golang/tree/regression/internal-testsuite/runtest.sh#n127 - - # run tests with fips enabled. - export GOLANG_FIPS=1 - export OPENSSL_FORCE_FIPS_MODE=1 - echo "=== Run all crypto test skipping tls ===" - pushd crypto - # run all crypto tests but skip tls, we will run fips specific tls tests later - go test $(go list ./... | grep -v tls) -v -skip="TestEd25519Vectors|TestACVP" - # check that signature functions have parity between boring and notboring - CGO_ENABLED=0 go test $(go list ./... | grep -v tls) -v -skip="TestEd25519Vectors|TestACVP" - popd - echo "=== Run tls tests ===" - # run all fips specific tls tests - pushd crypto/tls - go test -v -run "Boring" - popd - %endif %else - ./run.bash --no-rebuild -v -v -v -k || : +# NOTE(davidlt): 20 is probably too much, but it's only for riscv and it works +export GO_TEST_TIMEOUT_SCALE=20 +%endif + +%if %{fail_on_tests} +./run.bash --no-rebuild -v -v -v -k +%else +./run.bash --no-rebuild -v -v -v -k || : %endif -echo "=== End testing ===" cd .. + %post bin %{_sbindir}/update-alternatives --install %{_bindir}/go \ go %{goroot}/bin/go 90 \ @@ -670,6 +498,8 @@ fi %dir %{goroot} %{goroot}/api/ %{goroot}/lib/time/ +%{goroot}/lib/wasm/ +%{goroot}/lib/fips140/ # ensure directory ownership, so they are cleaned up if empty %dir %{gopath} @@ -681,21 +511,11 @@ fi %dir %{gopath}/src/golang.org %dir %{gopath}/src/golang.org/x + # gdbinit (for gdb debugging) %{_sysconfdir}/gdbinit.d -# prelink blacklist -%{_sysconfdir}/prelink.conf.d - %files src -f go-src.list -%if %{race} -%ifarch x86_64 -%exclude %{goroot}/src/runtime/race/internal/amd64v1/race_linux.syso -%exclude %{goroot}/src/runtime/race/internal/amd64v3/race_linux.syso -%else -%exclude %{goroot}/src/runtime/race/race_linux_%{gohostarch}.syso -%endif -%endif %files docs -f go-docs.list @@ -706,24 +526,16 @@ fi %files bin -f go-pkg.list %{_bindir}/go %{_bindir}/gofmt -%{goroot}/go.env %{goroot}/bin/linux_%{gohostarch}/go %{goroot}/bin/linux_%{gohostarch}/gofmt +%{goroot}/go.env %if %{shared} %files shared -f go-shared.list %endif -%files -n go-toolset - %if %{race} -%files race -%ifarch x86_64 -%{goroot}/src/runtime/race/internal/amd64v1/race_linux.syso -%{goroot}/src/runtime/race/internal/amd64v3/race_linux.syso -%else -%{goroot}/src/runtime/race/race_linux_%{gohostarch}.syso -%endif +%files race -f go-race.list %endif %changelog diff --git a/plans/ci.fmf b/plans/ci.fmf new file mode 100644 index 0000000..1dbcaef --- /dev/null +++ b/plans/ci.fmf @@ -0,0 +1,6 @@ +summary: CI Gating Plan +discover: + how: fmf + url: https://src.fedoraproject.org/tests/golang +execute: + how: tmt diff --git a/plans/tier0.fmf b/plans/tier0.fmf deleted file mode 100644 index 4b27223..0000000 --- a/plans/tier0.fmf +++ /dev/null @@ -1,12 +0,0 @@ -summary: tier0 tests -discover: - - name: rhel - how: fmf - url: https://gitlab.cee.redhat.com/toolchain-qe/tests/golang.git - filter: "tier:0" -execute: - how: tmt - -provision: - hardware: - memory: ">= 4 GB" diff --git a/revert_dwarf5.patch b/revert_dwarf5.patch deleted file mode 100644 index 80a58bb..0000000 --- a/revert_dwarf5.patch +++ /dev/null @@ -1,42 +0,0 @@ -From e90ae9076a108b83c645814f75a574c14a5a4b98 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Alejandro=20S=C3=A1ez?= -Date: Wed, 27 Aug 2025 16:18:09 +0200 -Subject: [PATCH] Revert DWARF5 as default, use DWARF4 - ---- - src/internal/buildcfg/exp.go | 13 +------------ - 1 file changed, 1 insertion(+), 12 deletions(-) - -diff --git a/src/internal/buildcfg/exp.go b/src/internal/buildcfg/exp.go -index 689ca8ce58..b2ea97481b 100644 ---- a/src/internal/buildcfg/exp.go -+++ b/src/internal/buildcfg/exp.go -@@ -67,24 +67,13 @@ func ParseGOEXPERIMENT(goos, goarch, goexp string) (*ExperimentFlags, error) { - regabiSupported = true - } - -- // Older versions (anything before V16) of dsymutil don't handle -- // the .debug_rnglists section in DWARF5. See -- // https://github.com/golang/go/issues/26379#issuecomment-2677068742 -- // for more context. This disables all DWARF5 on mac, which is not -- // ideal (would be better to disable just for cases where we know -- // the build will use external linking). In the GOOS=aix case, the -- // XCOFF format (as far as can be determined) doesn't seem to -- // support the necessary section subtypes for DWARF-specific -- // things like .debug_addr (needed for DWARF 5). -- dwarf5Supported := (goos != "darwin" && goos != "ios" && goos != "aix") -- - baseline := goexperiment.Flags{ - RegabiWrappers: regabiSupported, - RegabiArgs: regabiSupported, - AliasTypeParams: true, - SwissMap: true, - SyncHashTrieMap: true, -- Dwarf5: dwarf5Supported, -+ Dwarf5: false, - } - - // Start with the statically enabled set of experiments. --- -2.51.0 - diff --git a/rpminspect.yaml b/rpminspect.yaml deleted file mode 100644 index a2f17af..0000000 --- a/rpminspect.yaml +++ /dev/null @@ -1,33 +0,0 @@ ---- -debuginfo: - ignore: - # go binaries gained/contain debugging symbols: expected (rhbz#2175281 rhbz#2175677) - - /usr/lib/golang/bin/gofmt - - /usr/lib/golang/bin/go - - /usr/lib/golang/pkg/tool/linux_*/addr2line - - /usr/lib/golang/pkg/tool/linux_*/asm - - /usr/lib/golang/pkg/tool/linux_*/buildid - - /usr/lib/golang/pkg/tool/linux_*/cgo - - /usr/lib/golang/pkg/tool/linux_*/compile - - /usr/lib/golang/pkg/tool/linux_*/covdata - - /usr/lib/golang/pkg/tool/linux_*/cover - - /usr/lib/golang/pkg/tool/linux_*/dist - - /usr/lib/golang/pkg/tool/linux_*/distpack - - /usr/lib/golang/pkg/tool/linux_*/doc - - /usr/lib/golang/pkg/tool/linux_*/fix - - /usr/lib/golang/pkg/tool/linux_*/link - - /usr/lib/golang/pkg/tool/linux_*/nm - - /usr/lib/golang/pkg/tool/linux_*/objdump - - /usr/lib/golang/pkg/tool/linux_*/pack - - /usr/lib/golang/pkg/tool/linux_*/pprof - - /usr/lib/golang/pkg/tool/linux_*/preprofile - - /usr/lib/golang/pkg/tool/linux_*/test2json - - /usr/lib/golang/pkg/tool/linux_*/trace - - /usr/lib/golang/pkg/tool/linux_*/vet - # rpminspect: preprofile in golang package contains debugging symbols (RHEL-61237) - - /usr/lib/golang/pkg/tool/linux_*/preprofile - # go testdata - - /usr/lib/golang/src/debug/dwarf/testdata/*.elf - - /usr/lib/golang/src/debug/dwarf/testdata/*.elf5 - - /usr/lib/golang/src/debug/elf/testdata/* - - /usr/lib/golang/src/runtime/pprof/testdata/* diff --git a/skip_lsan_tests.patch b/skip_lsan_tests.patch new file mode 100644 index 0000000..9a47ee7 --- /dev/null +++ b/skip_lsan_tests.patch @@ -0,0 +1,25 @@ +From 958f06663d81dd4b946fce963b9f985f68da6212 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Alejandro=20S=C3=A1ez?= +Date: Wed, 16 Jul 2025 13:14:03 +0200 +Subject: [PATCH] Skip lsan_test.go in aarch64 + +Reference: https://github.com/golang/go/issues/74476 +--- + src/cmd/cgo/internal/testsanitizers/lsan_test.go | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cmd/cgo/internal/testsanitizers/lsan_test.go b/src/cmd/cgo/internal/testsanitizers/lsan_test.go +index 4dde3d20ec..3bcf0eba51 100644 +--- a/src/cmd/cgo/internal/testsanitizers/lsan_test.go ++++ b/src/cmd/cgo/internal/testsanitizers/lsan_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-//go:build linux || (freebsd && amd64) ++//go:build (linux && !(arm64 || riscv64)) || (freebsd && amd64) + + package sanitizers_test + +-- +2.50.1 diff --git a/sources b/sources index 7e43aca..dfecfe3 100644 --- a/sources +++ b/sources @@ -1,3 +1 @@ -SHA512 (go1.25.3.src.tar.gz) = 91d32bbff864c06b5ee7b914d3d95c59462352a4c395adba85eaab72704a8aa4d19ac2a361ed64774dce3c8e01a8d4feadf1a788814f6d7b4072a3bdfefbb3b4 -SHA512 (go1.25.3-1-openssl-fips.tar.gz) = 4eb308049af031123a8d9745ced4d3d296362b8a5a65cef9542841ce880b0c1e682476f70291192d7ddf7a006bb65f5672019d2508216a448eaeca026402b45c -SHA512 (compiler-rt-18.1.8.src.tar.xz) = fb8795bd51c9b005c2ad1975591e9e2715740d6407ccad41379f136ef2e8d24ded8b97b01165a3ae4bd377119a6a1049ca05d3220404fc12bee86114ff2bff0d +SHA512 (go1.26rc1.src.tar.gz) = 6696ee765dcde64b830b14e20a5fdf6324916211bff80a62d0db0cbef58bb0856f02e88e95b2f1a3ad6d9282ebd04a377a0b000d56849576caedbd526c9a7923