e883db
From 024cf19e52544814cdee80693a6dc12b5a92943c Mon Sep 17 00:00:00 2001
6e8f39
From: Debarshi Ray <rishi@fedoraproject.org>
6e8f39
Date: Mon, 29 Jun 2020 17:57:47 +0200
6e8f39
Subject: [PATCH] build: Make the build flags match RHEL's %{gobuild} for PPC64
6e8f39
6e8f39
The Go toolchain doesn't play well with passing compiler and linker
6e8f39
flags via environment variables. The linker flags require a second
6e8f39
level of quoting, which leaves the build system without a quote level
6e8f39
to assign the flags to an environment variable like GOFLAGS.
6e8f39
6e8f39
This is one reason why RHEL doesn't have a RPM macro with only the
6e8f39
flags. The %{gobuild} RPM macro includes the entire 'go build ...'
6e8f39
invocation.
6e8f39
6e8f39
The Go toolchain also doesn't like the LDFLAGS environment variable as
6e8f39
exported by RHEL's %{meson} RPM macro, and RHEL's RPM toolchain doesn't
6e8f39
like the compressed DWARF data generated by the Go toolchain.
6e8f39
6e8f39
Note that these flags are only meant for the "ppc64" CPU architecture,
6e8f39
and should be kept updated to match RHEL's Go guidelines. Use
6e8f39
'rpm --eval "%{gobuild}"' to expand the %{gobuild} macro.
6e8f39
---
e883db
 src/go-build-wrapper | 13 +++++++++----
e883db
 1 file changed, 9 insertions(+), 4 deletions(-)
6e8f39
6e8f39
diff --git a/src/go-build-wrapper b/src/go-build-wrapper
e883db
index ef4aafc8b024..00d7e9fca0e0 100755
6e8f39
--- a/src/go-build-wrapper
6e8f39
+++ b/src/go-build-wrapper
e883db
@@ -32,9 +32,9 @@ if ! cd "$1"; then
6e8f39
     exit 1
6e8f39
 fi
6e8f39
 
e883db
-tags=""
e883db
+tags="-tags rpm_crashtraceback,${BUILDTAGS:-}"
e883db
 if $6; then
e883db
-    tags="-tags migration_path_for_coreos_toolbox"
e883db
+    tags="$tags,migration_path_for_coreos_toolbox"
e883db
 fi
e883db
 
e883db
 if ! libc_dir=$("$4" --print-file-name=libc.so); then
e883db
@@ -69,11 +69,16 @@ fi
e883db
 
e883db
 dynamic_linker="/run/host$dynamic_linker_canonical_dirname/$dynamic_linker_basename"
e883db
 
6e8f39
+unset LDFLAGS
e883db
+
e883db
 # shellcheck disable=SC2086
e883db
 go build \
e883db
+        -compiler gc \
e883db
         $tags \
e883db
-        -trimpath \
e883db
-        -ldflags "-extldflags '-Wl,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$3" \
e883db
+        -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,-dynamic-linker,$dynamic_linker -Wl,-rpath,/run/host$libc_dir_canonical_dirname' -linkmode external -X github.com/containers/toolbox/pkg/version.currentVersion=$3" \
e883db
+        -a \
e883db
+        -v \
e883db
+        -x \
e883db
         -o "$2/toolbox"
e883db
 
6e8f39
 exit "$?"
6e8f39
-- 
6e8f39
2.31.1
6e8f39