bab63a
From 05722d2861c23554b9741c059e853da9ab38282e Mon Sep 17 00:00:00 2001
bab63a
From: Debarshi Ray <rishi@fedoraproject.org>
bab63a
Date: Mon, 29 Jun 2020 17:57:47 +0200
bab63a
Subject: [PATCH] build: Make the build flags match RHEL's %{gobuild}
bab63a
bab63a
The Go toolchain doesn't play well with passing compiler and linker
bab63a
flags via environment variables. The linker flags require a second
bab63a
level of quoting, which leaves the build system without a quote level
bab63a
to assign the flags to an environment variable like GOFLAGS.
bab63a
bab63a
This is one reason why RHEL doesn't have a RPM macro with only the
bab63a
flags. The %{gobuild} RPM macro includes the entire 'go build ...'
bab63a
invocation.
bab63a
bab63a
The Go toolchain also doesn't like the LDFLAGS environment variable as
bab63a
exported by RHEL's %{meson} RPM macro, and RHEL's RPM toolchain doesn't
bab63a
like the compressed DWARF data generated by the Go toolchain.
bab63a
bab63a
Note that these flags are meant for every CPU architecture other than
bab63a
PPC64, and should be kept updated to match RHEL's Go guidelines. Use
bab63a
'rpm --eval "%{gobuild}"' to expand the %{gobuild} macro.
bab63a
---
bab63a
 src/go-build-wrapper | 3 ++-
bab63a
 1 file changed, 2 insertions(+), 1 deletion(-)
bab63a
bab63a
diff --git a/src/go-build-wrapper b/src/go-build-wrapper
bab63a
index 0d27120da052..f08f3218560a 100755
bab63a
--- a/src/go-build-wrapper
bab63a
+++ b/src/go-build-wrapper
bab63a
@@ -27,5 +27,6 @@ if ! cd "$1"; then
bab63a
     exit 1
bab63a
 fi
bab63a
 
bab63a
-go build -trimpath -ldflags "-extldflags '-Wl,--wrap,pthread_sigmask $4' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$3" -o "$2/toolbox"
bab63a
+unset LDFLAGS
bab63a
+go build -buildmode pie -compiler gc -tags="rpm_crashtraceback ${BUILDTAGS:-}" -ldflags "${LDFLAGS:-} -compressdwarf=false -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -extldflags '-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,--wrap,pthread_sigmask $4' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$3" -a -v -x -o "$2/toolbox"
bab63a
 exit "$?"
bab63a
-- 
bab63a
2.31.1
bab63a