X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre.spec.in;h=380fe87c4762af15ed988b2e3c59e478a360ba3e;hp=fdd1026b9b0f88b3f86b269c4973785820ae6611;hb=6e26d2d715ee65079682f7823f986f61f80eb07c;hpb=605a139a193e4ef212560673b4bb93eec763d088 diff --git a/lustre.spec.in b/lustre.spec.in index fdd1026..380fe87 100644 --- a/lustre.spec.in +++ b/lustre.spec.in @@ -21,7 +21,7 @@ # request gss_keyring we must enable gss core even if # the builder attempts to disable gss. %if %{with gss_keyring} - %define with_gss + %define with_gss 1 %endif %if %{without servers} @@ -146,19 +146,31 @@ BuildRoot: %{_tmppath}/lustre-%{version}-root Requires: %{requires_kmod_name} = %{requires_kmod_version} zlib Requires: %{requires_yaml_name} BuildRequires: libtool libyaml-devel zlib-devel +%if %{_vendor}=="redhat" +BuildRequires: pkgconfig +%else +BuildRequires: pkg-config +%endif %if %{with servers} Requires: lustre-osd Requires: lustre-osd-mount Obsoletes: lustre-client < %{version} Provides: lustre-client = %{version}-%{release} %endif -# GSS requires this: BuildRequires: pkgconfig, libgssapi-devel >= 0.10 +# GSS requires this: BuildRequires: libgssapi-devel >= 0.10 %if %{_vendor}=="redhat" || %{_vendor}=="fedora" #suse don't support selinux BuildRequires: libselinux-devel Requires: libselinux %endif %if %{with lustre_modules} + +%if 0%{?rhel} >= 8 +%if %{undefined kernel_module_package_buildreqs} +BuildRequires: redhat-rpm-config kernel-rpm-macros elfutils-libelf-devel kmod +%endif +%endif + BuildRequires: %kernel_module_package_buildreqs %if %{_vendor}=="redhat" BuildRequires: redhat-rpm-config @@ -176,14 +188,34 @@ BuildRequires: systemd Userspace tools and files for the Lustre file system. %if %{with lustre_modules} -%kernel_module_package -n %{name} -p %SOURCE1 -f %SOURCE2 default +%if 0%{?rhel} == 7 +# until we have achieved full kABI compatibility we need to +# restrict the kernel range that can be used to the kernel +# version from the RHEL minor release +# this is supposed to be done for kmods automatically but +# RHBZ#1467319 seems to be getting in the way +# this is true for el7.0 through el7.4 +%define preamble %{expand:%( +TMPFILE=`mktemp` +cat %{SOURCE1} > $TMPFILE +kver=%{kversion} +linuxversion=${kver%%%%-*} +linuxrelease=${kver##*-} +kabiminor=${linuxrelease%%%%.*} +echo "Requires: kernel < $linuxversion-$((kabiminor+1)), kernel >= $linuxversion-$((kabiminor))" >> $TMPFILE +echo $TMPFILE +)} +%else +%define preamble %{SOURCE1} +%endif +%kernel_module_package -n %{name} -p %preamble -f %SOURCE2 default %if %{with ldiskfs} %kernel_module_package -n %{name}-osd-ldiskfs -p %SOURCE3 -f %SOURCE4 default %if %{with lustre_utils} %package osd-ldiskfs-mount Summary: osd-ldiskfs-mount contains mount's ldiskfs specific dso. -Provides: lustre-osd-mount = %{version}-%{fullrelease} +Provides: lustre-osd-mount = %{version} Group: System Environment/Kernel %description osd-ldiskfs-mount @@ -197,7 +229,7 @@ LDISKFS hooks for mount/mkfs into a dynamic library. %if %{with lustre_utils} %package osd-zfs-mount Summary: osd-zfs-mount contains mount's zfs specific dso. -Provides: lustre-osd-mount = %{version}-%{fullrelease} +Provides: lustre-osd-mount = %{version} Group: System Environment/Kernel %description osd-zfs-mount @@ -232,7 +264,7 @@ Requires: %{name} = %{version} %endif Requires: %{requires_kmod_name} = %{requires_kmod_version} Requires: %{requires_kmod_tests_name} = %{requires_kmod_version} -Requires: attr, rsync, perl, lsof, /usr/bin/getconf +Requires: attr, rsync, perl, lsof, libtool, /usr/bin/getconf %description tests This package contains a set of test binaries and scripts that are intended @@ -247,7 +279,7 @@ to be used by the Lustre testing framework. %package -n lustre-iokit Summary: The Lustre IO-Kit is a collection of benchmark tools for a cluster with the Lustre file system. Group: Applications/System -Requires: python > 2.2, sg3_utils +Requires: python2 > 2.2, sg3_utils %description -n lustre-iokit This package includes five tools: @@ -290,9 +322,30 @@ ln lnet/ChangeLog ChangeLog-lnet %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 @@ -383,8 +436,7 @@ echo '%{_sysconfdir}/init.d/lustre' >>lustre.files echo '%{_sysconfdir}/sysconfig/lustre' >>lustre.files %if %{with gss_keyring} echo '%{_sysconfdir}/init.d/lsvcgss' >>lustre.files -echo '%{_sysconfdir}/sysconfig/lsvcgss' >>lustre.files -echo '%config(noreplace) %{_sysconfdir}/request-key.d/lgssc.conf' >>lustre.files +echo '%config(noreplace) %{_sysconfdir}/sysconfig/lsvcgss' >>lustre.files %endif %endif @@ -392,10 +444,8 @@ echo '%config(noreplace) %{_sysconfdir}/request-key.d/lgssc.conf' >>lustre.files echo '%{_sysconfdir}/init.d/lnet' >>lustre.files %endif %endif - -%if %{with servers} -mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/ocf/resource.d/lustre/ -install -m 0755 contrib/scripts/pacemaker/* $RPM_BUILD_ROOT%{_prefix}/lib/ocf/resource.d/lustre/ +%if %{with gss_keyring} +echo '%config(noreplace) %{_sysconfdir}/request-key.d/lgssc.conf' >>lustre.files %endif # fc18 needs 'x' permission for library files @@ -440,6 +490,11 @@ echo '%{_bindir}/mcreate' >>lustre-tests.files echo '%{_bindir}/munlink' >>lustre-tests.files echo '%{_sbindir}/wirecheck' >>lustre-tests.files echo '%{_sbindir}/wiretest' >>lustre-tests.files +%if %{_vendor}=="redhat" +if [ -n "@MPI_BIN@" ]; then + echo '@MPI_BIN@/*' >>lustre-tests.files +fi +%endif %endif %files -f lustre.files @@ -466,6 +521,7 @@ echo '%{_sbindir}/wiretest' >>lustre-tests.files %{_bindir}/lfs %{_bindir}/lfs_migrate /sbin/mount.lustre +/sbin/mount.lustre_tgt %if %{with static} %{_libdir}/liblustreapi.a %endif @@ -476,11 +532,15 @@ echo '%{_sbindir}/wiretest' >>lustre-tests.files %{_mandir}/man?/* %endif %{_datadir}/lustre +%{_datadir}/bash-completion/completions/* %{_includedir}/lustre %{_includedir}/linux/lnet %{_includedir}/linux/lustre %endif %{_sysconfdir}/udev/rules.d/99-lustre.rules +%if %{with servers} +%{_sysconfdir}/udev/rules.d/99-lustre-server.rules +%endif %if %{with zfs} %config(noreplace) %{_sysconfdir}/ldev.conf %endif