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