done
;;
esac
+
+flavor=$(echo $3 | tr '-' '\n' | tail -1)
+# for non-suse distros flavor should be 'default'
+elcheck=$(echo ${flavor} | tr '.' '\n' | tail -1)
+[[ ${elcheck} == $5 ]] && flavor='default'
+
+# includes for this kapi module:
+rm -fr $7/$1/$2/$3/$5/kapi
+kapi=$7/$1/$2/$3/$5/kapi/include
+mkdir -p ${kapi}/$5/$flavor
+ln -s $7/$1/$2/$3/$5/config.h ${kapi}/$5/$flavor
+ln -s $7/$1/$2/$3/$5/Module.symvers ${kapi}/$5/$flavor
+
+# LNet headers:
+for fname in $(find lnet/include -type f -name \*.h); do
+ target=$(echo ${fname} | sed -e 's:^lnet/include/::g')
+ if [[ ${target} == uapi/* ]]; then
+ header=$(echo ${target} | sed -e 's:^uapi/linux/lnet/::g')
+ install -D -m 0644 ${fname} ${kapi}/uapi/linux/lnet/${header}
+ install -D -m 0644 ${fname} ${kapi}/linux/lnet/${header}
+ >&2 echo "installing ${fname} => ${kapi}/uapi/linux/lnet/${header}"
+ >&2 echo "installing ${fname} => ${kapi}/linux/lnet/${header}"
+ else
+ install -D -m 0644 ${fname} ${kapi}/${target}
+ >&2 echo "installing ${fname} => ${kapi}/${target}"
+ fi
+done
+
+## Lustre headers:
+for fname in $(find libcfs/include/libcfs -type f -name \*.h); do
+ target=$(echo ${fname} | sed -e 's:^libcfs/include/::g')
+ install -D -m 0644 ${fname} ${kapi}/${target}
+ >&2 echo "installing ${fname} => ${kapi}/${target}"
+done
+
+alternatives --install /usr/src/lustre lustre ${kapi} 90
+
%global requires_kmod_tests_name kmod-%{lustre_name}-tests
%endif
%global requires_kmod_version %{version}
+ %global kmod_devel_pkg kmod-%{lustre_name}-devel
#for Suse
%else
%global requires_kmod_name %{lustre_name}-kmp
%else
%global requires_kmod_version %{version}_%(echo %{krequires} | sed -r 'y/-/_/; s/^(2\.6\.[0-9]+)_/\\1.0_/;')
%endif
+ %global kmod_devel_pkg %{lustre_name}-kmp-devel
%endif
+%global requires_release_major_minor %(echo %version | cut -d. -f1).%(echo %version | cut -d. -f2)
%endif
# RHEL >= 7 comes with systemd
URL: https://wiki.whamcloud.com/
BuildRoot: %{_tmppath}/lustre-%{version}-root
%if %{with lustre_modules}
+%if 0%{?suse_version} < 1500 || 0%{?rhel} < 8 || 0%{?fedora} < 34
Requires: %{requires_kmod_name} = %{requires_kmod_version}
+%else
+Requires: (%{lustre_name}-dkms or %{requires_kmod_name} >= %{requires_release_major_minor})
+%endif
%endif
%if %{with lustre_tests_lutf}
Requires: python3 >= 3.6.0
Provides: %{name}-osd-mount = %{version}
Obsoletes: lustre-osd-mount < %{version}
%if 0%{confzfsdobjpath} != 0
+%if 0%{?suse_version} < 1500 || 0%{?rhel} < 8 || 0%{?fedora} < 34
+# 'or' is not available so default is assuming 'zfs' is defined
+BuildRequires: libzfs%{?zfs}-devel
+%else
BuildRequires: (libzfs-devel or libzfs4-devel or libzfs5-devel)
%endif
+%endif
# end confzfsdobjpath
# Tests also require zpool from zfs package:
Requires: zfs
Provides: lustre-devel = %{version}
Requires: %{lustre_name} = %{version}
%if %{with lustre_modules}
-Requires: %{requires_kmod_name} = %{requires_kmod_version}
+%if 0%{?suse_version} < 1500 || 0%{?rhel} < 8 || 0%{?fedora} < 34
+Requires: %{requires_kmod_name} >= %{requires_release_major_minor}
+%else
+Requires: (%{lustre_name}-dkms or %{requires_kmod_name} >= %{requires_release_major_minor})
+%endif
%endif
%description devel
Requires: python3 >= 3.6.0, python3-PyYAML
%endif
%if %{with lustre_modules}
+%if 0%{?suse_version} < 1500 || 0%{?rhel} < 8 || 0%{?fedora} < 34
Requires: %{requires_kmod_name} = %{requires_kmod_version}
-Requires: %{requires_kmod_tests_name} = %{requires_kmod_version}
+%else
+Requires: (%{lustre_name}-dkms or %{requires_kmod_name} >= %{requires_release_major_minor})
+%endif
+Requires: %{requires_kmod_tests_name} >= %{requires_release_major_minor}
%endif
%if %{with lustre_tests_lutf}
Requires: python3 >= 3.6.0
# end multiple_lnds
%endif
+%if %{with lustre_modules}
+%package -n %kmod_devel_pkg
+Summary: Includes and Module.symvers for kernel packages depending on Lustre/LNet
+
+%description -n %kmod_devel_pkg
+This package includes:
+ Module.symvers
+ package config file: lnet.pc
+ kernel headers
+%endif
+
%if %{with lustre_iokit}
%package -n %{lustre_name}-iokit
Summary: Collection of benchmark tools for a cluster with the Lustre file system
# kernel_module_path macro.
basemodpath=$RPM_BUILD_ROOT%{modules_fs_path}/%{name}
%{__install} -D -m 0644 ${PWD}/Module.symvers %{buildroot}/Module.symvers
+%if %{with lustre_modules}
+%{__install} -D -m 0644 ${PWD}/Module.symvers %{buildroot}/%{_usrsrc}/lustre-%{version}/%{_arch}/%{_flavor}/Module.symvers
+%{__install} -D -m 0644 ${PWD}/config.h %{buildroot}/%{_usrsrc}/lustre-%{version}/%{_arch}/%{_flavor}/config.h
+for fname in $(find lnet/include -type f -name \*.h); do
+ target=$(echo ${fname} | sed 's:^lnet/include/::g')
+ %{__install} -D -m 0644 ${fname} %{buildroot}/%{_usrsrc}/lustre-%{version}/${target}
+done
+for fname in $(find libcfs/include/libcfs -type f -name \*.h); do
+ target=$(echo ${fname} | sed -e 's:^libcfs/include/::g')
+ %{__install} -D -m 0644 ${fname} %{buildroot}/%{_usrsrc}/lustre-%{version}/${target}
+done
+%endif
%if %{with ldiskfs}
mkdir -p $basemodpath-osd-ldiskfs/fs
mv $basemodpath/fs/osd_ldiskfs.ko $basemodpath-osd-ldiskfs/fs/osd_ldiskfs.ko
%exclude %{_includedir}/linux/lustre
%endif
+%if %{with lustre_modules}
+%files -n %kmod_devel_pkg
+%{_libdir}/pkgconfig/lnet.pc
+%{_usrsrc}/lustre-%{version}
+%endif
+
%files -f lustre.files
%defattr(-,root,root)
%{_sbindir}/*
%systemd_postun_with_restart lsvcgss.service
%endif
+%if %{with lustre_modules}
+%post -n %kmod_devel_pkg
+alternatives --install %{_usrsrc}/lustre lustre %{_usrsrc}/lustre-%{version} 50
+
+%preun -n %kmod_devel_pkg
+alternatives --remove lustre %{_usrsrc}/lustre-%{version}
+%endif
+
%clean
rm -rf $RPM_BUILD_ROOT
rm -rf %{_tmppath}/kmp