wip: build race detector on amd64

Related: RHEL-33421
This commit is contained in:
Derek Parker 2024-05-17 12:17:47 -04:00 committed by David Benoit
parent b53fd755a3
commit fa0e185f49
2 changed files with 27 additions and 0 deletions

5
Makefile Normal file
View File

@ -0,0 +1,5 @@
mockbuild:
centpkg mockbuild
spectool:
spectool -g golang.spec

View File

@ -97,6 +97,12 @@
%global version %{go_version} %global version %{go_version}
%global pkg_release 1 %global pkg_release 1
# LLVM source SHA for race detector build
%global compiler_rt_go_race_sha 51bfeff0e4b0757ff773da6882f4d538996c9b04
# For rpmdev-bumpspec and releng automation.
%global baserelease 3
Name: golang Name: golang
Version: %{version} Version: %{version}
Release: 1%{?dist} Release: 1%{?dist}
@ -114,6 +120,7 @@ Source0: https://github.com/golang/go/archive/refs/tags/go%{version}.tar.
Source1: https://github.com/golang-fips/go/archive/refs/tags/go%{version}-%{pkg_release}-openssl-fips.tar.gz Source1: https://github.com/golang-fips/go/archive/refs/tags/go%{version}-%{pkg_release}-openssl-fips.tar.gz
# make possible to override default traceback level at build time by setting build tag rpm_crashtraceback # make possible to override default traceback level at build time by setting build tag rpm_crashtraceback
Source2: fedora.go Source2: fedora.go
Source3: https://github.com/llvm/llvm-project/archive/%{compiler_rt_go_race_sha}.tar.gz
# The compiler is written in Go. Needs go(1.4+) compiler for build. # The compiler is written in Go. Needs go(1.4+) compiler for build.
# Actual Go based bootstrap compiler provided by above source. # Actual Go based bootstrap compiler provided by above source.
@ -132,6 +139,10 @@ BuildRequires: openssl-devel
# for tests # for tests
BuildRequires: pcre-devel, glibc-static, perl BuildRequires: pcre-devel, glibc-static, perl
# Necessary for building llvm address sanitizer for Go race detector
BuildRequires: libstdc++-devel
BuildRequires: clang
Provides: go = %{version}-%{release} Provides: go = %{version}-%{release}
Requires: %{name}-bin = %{version}-%{release} Requires: %{name}-bin = %{version}-%{release}
Requires: %{name}-src = %{version}-%{release} Requires: %{name}-src = %{version}-%{release}
@ -270,6 +281,7 @@ popd
sed -i '1s/$/ (%{?rhel:Red Hat} %{version}-%{release})/' VERSION sed -i '1s/$/ (%{?rhel:Red Hat} %{version}-%{release})/' VERSION
cp %{SOURCE2} ./src/runtime/ cp %{SOURCE2} ./src/runtime/
# If FIPS is enabled, install the FIPS source
%build %build
set -xe set -xe
@ -278,6 +290,16 @@ uname -a
cat /proc/cpuinfo cat /proc/cpuinfo
cat /proc/meminfo cat /proc/meminfo
# Build race detector .syso's from llvm sources
%global tsan_buildflags %(echo %{build_cflags} | sed 's/-mtls-dialect=gnu2//')
mkdir ../llvm
tar -xf %{SOURCE3} -C ../llvm
tsan_go_dir="../llvm/llvm-project-%{compiler_rt_go_race_sha}/compiler-rt/lib/tsan/go"
pushd "${tsan_go_dir}"
CFLAGS="${tsan_buildflags}" CC=clang GOAMD64=v3 ./buildgo.sh
popd
cp "${tsan_go_dir}"/race_linux_amd64.syso ./src/runtime/race/internal/amd64v3/race_linux.syso
# bootstrap compiler GOROOT # bootstrap compiler GOROOT
%if !%{golang_bootstrap} %if !%{golang_bootstrap}
export GOROOT_BOOTSTRAP=/ export GOROOT_BOOTSTRAP=/