%bcond_without shared
%bcond_without static
%bcond_with systemd
+%bcond_with mofed
+%bcond_without mpi
# By default both gss and gss keyring are disabled.
# gss keyring requires the gss core. If the builder
%define with_systemd 1
%endif
+%{!?mpi_name: %global mpi_name openmpi}
+
Summary: Lustre File System
Name: %{lustre_name}
Version: %{version}
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-server < %{version}
+Provides: lustre-server = %{version}-%{release}
+%endif
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 %{with mofed}
+BuildRequires: mlnx-ofa_kernel-devel
+%if %{_vendor} == "redhat"
+Requires: kmod-mlnx-ofa_kernel
+%else
+Requires: mlnx-ofa_kernel-kmp
+%endif
+%endif
+%if 0%{?rhel} >= 8 && %{undefined kernel_module_package_buildreqs}
+BuildRequires: redhat-rpm-config kernel-rpm-macros elfutils-libelf-devel kmod
+%else
BuildRequires: %kernel_module_package_buildreqs
+%endif
%if %{_vendor}=="redhat"
BuildRequires: redhat-rpm-config
%endif
%if %{with lustre_utils}
%package osd-ldiskfs-mount
Summary: osd-ldiskfs-mount contains mount's ldiskfs specific dso.
+BuildRequires: e2fsprogs-devel
+Requires: ldiskfsprogs
Provides: lustre-osd-mount = %{version}
+Obsoletes: lustre-osd-mount < %{version}
Group: System Environment/Kernel
%description osd-ldiskfs-mount
%package osd-zfs-mount
Summary: osd-zfs-mount contains mount's zfs specific dso.
Provides: lustre-osd-mount = %{version}
+Obsoletes: lustre-osd-mount < %{version}
Group: System Environment/Kernel
%description osd-zfs-mount
%package resource-agents
Summary: HA Resuable Cluster Resource Scripts for Lustre
Group: System Environment/Base
-Requires: lustre
+Requires: %{name}
Requires: resource-agents
%description resource-agents
%package tests
Summary: Lustre testing framework
Group: System Environment/Kernel
-Provides: %{name}-tests = %{version}
+Provides: lustre-tests = %{version}
%if %{with lustre_iokit}
-Requires: %{name} = %{version}, lustre-iokit
-%else
-Requires: %{name} = %{version}
+Requires: lustre-iokit
%endif
+Requires: lustre-client = %{version}
Requires: %{requires_kmod_name} = %{requires_kmod_version}
Requires: %{requires_kmod_tests_name} = %{requires_kmod_version}
Requires: attr, rsync, perl, lsof, libtool, /usr/bin/getconf
+%if %{with mpi}
+%if %{mpi_name} == "mpich"
+BuildRequires: mpich-devel
+%endif
+%if %{mpi_name} == "openmpi"
+%if %{_vendor} == "redhat" || 0%{?suse_version} < 1500
+BuildRequires: openmpi-devel
+%else
+BuildRequires: openmpi2-devel
+%endif
+%endif
+%endif
%description tests
This package contains a set of test binaries and scripts that are intended
%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:
# kmod tools/scripts require %{name} directory with kernel modules
%define eval_configure %(echo '%configure' | sed -e 's#\./configure#eval ./configure#' -e 's/--\\(build\\|host\\|target\\)=[^ ][^ ]* //g')
+%{?_openmpi_load}
+%{?_mpich_load}
+
%eval_configure $CONFIGURE_ARGS \
%{?with_lustre_tests:--enable-tests}%{!?with_lustre_tests:--disable-tests} \
%{?with_lustre_utils:--enable-utils}%{!?with_lustre_utils:--disable-utils} \
%{!?with_manpages:--disable-manpages} \
%{!?with_systemd:--with-systemdsystemunitdir=no} \
%{?with_systemd:--with-systemdsystemunitdir=%{_unitdir}} \
+ %{?with_mofed:--with-o2ib=/usr/src/ofa_kernel/default} \
--with-linux=%{kdir} \
--with-linux-obj=%{kobjdir} \
--with-kmp-moddir=%{kmoddir}/%{name}
make %{?_smp_mflags} -s %{?make_args}
%install
+%{?_openmpi_load}
+%{?_mpich_load}
+
make install DESTDIR=$RPM_BUILD_ROOT
# RHEL's kernel_module_path macro expects that all the modules
# RHEL, we handle this here in the spec file rather than in
# Lustre's build system. This is not expected to bother SLES's
# kernel_module_path macro.
-basemodpath=$RPM_BUILD_ROOT%{modules_fs_path}/%{lustre_name}
+basemodpath=$RPM_BUILD_ROOT%{modules_fs_path}/%{name}
%if %{with ldiskfs}
mkdir -p $basemodpath-osd-ldiskfs/fs
mv $basemodpath/fs/osd_ldiskfs.ko $basemodpath-osd-ldiskfs/fs/osd_ldiskfs.ko
echo '%{_bindir}/munlink' >>lustre-tests.files
echo '%{_sbindir}/wirecheck' >>lustre-tests.files
echo '%{_sbindir}/wiretest' >>lustre-tests.files
+if [ -n "$MPI_BIN" ]; then
+ echo "$MPI_BIN/*" >>lustre-tests.files
+fi
%endif
%files -f lustre.files
%{_bindir}/lfs
%{_bindir}/lfs_migrate
/sbin/mount.lustre
+/sbin/mount.lustre_tgt
%if %{with static}
%{_libdir}/liblustreapi.a
%endif
%{_mandir}/man?/*
%endif
%{_datadir}/lustre
+%{_datadir}/bash-completion/completions/*
%{_includedir}/lustre
%{_includedir}/linux/lnet
%{_includedir}/linux/lustre