%define preamble %{expand:%(
TMPFILE=`mktemp`
cat %{SOURCE1} > $TMPFILE
-kver=%{kver}
+kver=%{kversion}
linuxversion=${kver%%%%-*}
linuxrelease=${kver##*-}
kabiminor=${linuxrelease%%%%.*}
%build
# Set an explicit path to our Linux tree, if we can.
cd $RPM_BUILD_DIR/lustre-%{version}
-# override %optflags so that the vendor's overzealous flags don't create
-# build failures
+
+# Store the CFLAGS and LDFLAGS that would normally be used in the UTILS_CFLAGS
+# and UTILS_LDFLAGS environment variables so that we use can them when compiling
+# the user-space code in lustre/utils and lnet/utils. As of RHEL 8.0, the
+# __global_* variants are deprecated in favour of build_cflags, etc. If neither
+# style is available (e.g. on SLES), then these just end up as empty strings.
+export UTILS_CFLAGS="%{?build_cflags:%{build_cflags}}%{!?build_cflags:%{?__global_cflags:%{__global_cflags}}}"
+export UTILS_LDFLAGS="%{?build_ldflags:%{build_ldflags}}%{!?build_ldflags:%{?__global_ldflags:%{__global_ldflags}}}"
+
+# RHEL7 on PPC64 needs __SANE_USERSPACE_TYPES__ defined so that __s64 and __u64
+# are presented to user-land as long long instead of long long. Without this it
+# will fail the format check whenever such a variable is printed.
+%if 0%{?rhel}
+%ifarch ppc64
+export UTILS_CFLAGS="${UTILS_CFLAGS} -D__SANE_USERSPACE_TYPES__=1"
+%endif
+%endif
+
+# Disable any hardening or annotation since this doesn't make sense for
+# kernel code, and reset %optflags so that the vendor's overzealous flags don't
+# create build failures.
%define optflags -g -O2 -Werror
+%undefine _annotated_build
+%undefine _hardened_build
CONFIGURE_ARGS="%{?configure_args}"
if [ -n "$CONFIGURE_ARGS" ]; then
# systemd is on redhat, fedora, and suse
%if %{with systemd}
echo '%{_unitdir}/lnet.service' >>lustre.files
-echo '%{_unitdir}/lustre.service' >>lustre.files
%endif
%if %{_vendor}=="redhat"
# The following scripts are Red Hat specific
%if %{with servers}
+echo '%{_sysconfdir}/init.d/lustre' >>lustre.files
echo '%{_sysconfdir}/sysconfig/lustre' >>lustre.files
%if %{with gss_keyring}
echo '%{_sysconfdir}/init.d/lsvcgss' >>lustre.files
%if %{without systemd}
echo '%{_sysconfdir}/init.d/lnet' >>lustre.files
-echo '%{_sysconfdir}/init.d/lustre' >>lustre.files
%endif
%endif
%if %{with gss_keyring}
%post
%if %{with systemd}
%systemd_post lnet.service
-%systemd_post lustre.service
%endif
%preun
%if %{with systemd}
-%systemd_preun lustre.service
%systemd_preun lnet.service
%endif
%postun
%if %{with systemd}
-%systemd_postun_with_restart lustre.service
%systemd_postun_with_restart lnet.service
%endif