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