X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre.spec.in;h=f23dca20bc033fb36f5ee7a8503ac9d14476c8ac;hp=b8d05bcead200568119d54fb84bca46e5f6480f5;hb=037840fb6b86d6083d55f3da5ad70d19d34cc5a5;hpb=4f4622c417429053bad7943da02b1965ae178a37 diff --git a/lustre.spec.in b/lustre.spec.in index b8d05bc..f23dca2 100644 --- a/lustre.spec.in +++ b/lustre.spec.in @@ -8,10 +8,21 @@ %bcond_without lustre_utils %bcond_without lustre_iokit %bcond_without lustre_modules -%bcond_with lnet_dlc +%bcond_with snmp +%bcond_with gss +%bcond_with gss_keyring %bcond_without manpages %bcond_without shared %bcond_without static +%bcond_with systemd + +# By default both gss and gss keyring are disabled. +# gss keyring requires the gss core. If the builder +# request gss_keyring we must enable gss core even if +# the builder attempts to disable gss. +%if %{with gss_keyring} + %define with_gss 1 +%endif %if %{without servers} # --without servers overrides --with {ldiskfs|zfs} @@ -79,12 +90,18 @@ %global modules_fs_path /lib/modules/%{kversion}/%{kmoddir} %if %{_vendor}=="redhat" || %{_vendor}=="fedora" + %global requires_yaml_name libyaml %global requires_kmod_name kmod-%{lustre_name} - %global requires_kmod_tests_name kmod-%{lustre_name}-tests + %if %{with lustre_tests} + %global requires_kmod_tests_name kmod-%{lustre_name}-tests + %endif %global requires_kmod_version %{version} %else #for Suse + %global requires_yaml_name libyaml-0-2 %global requires_kmod_name %{lustre_name}-kmp - %global requires_kmod_tests_name %{lustre_name}-tests-kmp + %if %{with lustre_tests} + %global requires_kmod_tests_name %{lustre_name}-tests-kmp + %endif %define krequires %(echo %{kversion} | sed -e 's/\.x86_64$//' -e 's/\.i[3456]86$//' -e 's/-smp$//' -e 's/-bigsmp$//' -e 's/[-.]ppc64$//' -e 's/\.aarch64$//' -e 's/-default$//') %if 0%{?suse_version} >= 1200 %global requires_kmod_version %{version}_k%(echo %{krequires} | sed -r 'y/-/_/; s/^(2\.6\.[0-9]+)_/\\1.0_/;') @@ -93,12 +110,29 @@ %endif %endif +# RHEL >= 7 comes with systemd +%if 0%{?rhel} >= 7 +%define with_systemd 1 +%endif + +# Fedora >= 15 comes with systemd, but only >= 18 has +# the proper macros +%if 0%{?fedora} >= 18 +%define with_systemd 1 +%endif + +# opensuse >= 12.1 comes with systemd, but only >= 13.1 +# has the proper macros +%if 0%{?suse_version} >= 1310 +%define with_systemd 1 +%endif + Summary: Lustre File System Name: %{lustre_name} Version: %{version} Release: 1%{?dist} License: GPL -Group: Utilities/System +Group: System Environment/Kernel Source: lustre-%{version}.tar.gz Source1: kmp-lustre.preamble Source2: kmp-lustre.files @@ -107,43 +141,80 @@ Source4: kmp-lustre-osd-ldiskfs.files Source5: kmp-lustre-osd-zfs.preamble Source6: kmp-lustre-osd-zfs.files Source7: kmp-lustre-tests.files -URL: https://wiki.hpdd.intel.com/ +URL: https://wiki.whamcloud.com/ BuildRoot: %{_tmppath}/lustre-%{version}-root -Obsoletes: lustre-lite, lustre-lite-utils, lustre-ldap nfs-utils-lustre -Provides: lustre-lite = %{version}, lustre-lite-utils = %{version} -Requires: %{requires_kmod_name} = %{requires_kmod_version} -BuildRequires: libtool +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 && %{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 %endif +%if %{with systemd} +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +BuildRequires: systemd +%endif + %description 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 -Group: Development/Kernel +Provides: lustre-osd-mount = %{version} +Group: System Environment/Kernel %description osd-ldiskfs-mount LDISKFS hooks for mount/mkfs into a dynamic library. @@ -156,8 +227,8 @@ 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 -Group: Development/Kernel +Provides: lustre-osd-mount = %{version} +Group: System Environment/Kernel %description osd-zfs-mount ZFS hooks for mount/mkfs into a dynamic library. @@ -167,14 +238,31 @@ ZFS hooks for mount/mkfs into a dynamic library. %endif # with lustre_modules +%if %{with servers} +%package resource-agents +Summary: HA Resuable Cluster Resource Scripts for Lustre +Group: System Environment/Base +Requires: lustre +Requires: resource-agents + +%description resource-agents +A set of scripts to operate Lustre resources in a High Availablity +environment for both Pacemaker and rgmanager. +%endif + +%if %{with lustre_tests} %package tests Summary: Lustre testing framework -Group: Development/Kernel +Group: System Environment/Kernel Provides: %{name}-tests = %{version} +%if %{with lustre_iokit} Requires: %{name} = %{version}, lustre-iokit +%else +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 @@ -183,12 +271,13 @@ to be used by the Lustre testing framework. %if %{with lustre_modules} %kernel_module_package -n %{name}-tests -f %SOURCE7 default %endif +%endif %if %{with lustre_iokit} %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: @@ -229,12 +318,32 @@ ln lustre/ChangeLog ChangeLog-lustre 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 @@ -263,8 +372,12 @@ fi %{!?with_ldiskfs:--disable-ldiskfs} \ %{!?with_servers:--disable-server} \ %{!?with_zfs:--without-zfs} \ - %{!?with_lnet_dlc:--disable-dlc} \ + %{!?with_snmp:--disable-snmp} \ + %{!?with_gss:--disable-gss} \ + %{!?with_gss_keyring:--disable-gss-keyring} \ %{!?with_manpages:--disable-manpages} \ + %{!?with_systemd:--with-systemdsystemunitdir=no} \ + %{?with_systemd:--with-systemdsystemunitdir=%{_unitdir}} \ --with-linux=%{kdir} \ --with-linux-obj=%{kobjdir} \ --with-kmp-moddir=%{kmoddir}/%{name} @@ -294,6 +407,8 @@ mv $basemodpath/fs/osd_zfs.ko $basemodpath-osd-zfs/fs/osd_zfs.ko %if %{with lustre_tests} mkdir -p $basemodpath-tests/fs mv $basemodpath/fs/llog_test.ko $basemodpath-tests/fs/llog_test.ko +mkdir -p $RPM_BUILD_ROOT%{_libdir}/lustre/tests/kernel/ +mv $basemodpath/fs/kinode.ko $RPM_BUILD_ROOT%{_libdir}/lustre/tests/kernel/ %endif :> lustre.files @@ -307,21 +422,33 @@ echo '%{_sysconfdir}/ha.d/resource.d/Lustre.ha_v2' >>lustre.files echo '%{_sysconfdir}/ha.d/resource.d/Lustre' >>lustre.files %endif +# systemd is on redhat, fedora, and suse +%if %{with systemd} +echo '%{_unitdir}/lnet.service' >>lustre.files +%endif + %if %{_vendor}=="redhat" # The following scripts are Red Hat specific %if %{with servers} -echo '%{_sysconfdir}/sysconfig/lustre' >>lustre.files -echo '%{_sysconfdir}/sysconfig/lsvcgss' >>lustre.files 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 '%config(noreplace) %{_sysconfdir}/sysconfig/lsvcgss' >>lustre.files +%endif %endif + +%if %{without systemd} echo '%{_sysconfdir}/init.d/lnet' >>lustre.files -echo '%{_sysconfdir}/init.d/lsvcgss' >>lustre.files +%endif +%endif +%if %{with gss_keyring} +echo '%config(noreplace) %{_sysconfdir}/request-key.d/lgssc.conf' >>lustre.files %endif # fc18 needs 'x' permission for library files find $RPM_BUILD_ROOT -name \*.so -type f -exec chmod +x {} \; -%if %{with lnet_dlc} rm -f $RPM_BUILD_ROOT%{_libdir}/liblnetconfig.la %if %{with static} echo '%attr(-, root, root) %{_libdir}/liblnetconfig.a' >>lustre.files @@ -330,18 +457,21 @@ echo '%attr(-, root, root) %{_libdir}/liblnetconfig.a' >>lustre.files echo '%attr(-, root, root) %{_libdir}/liblnetconfig.so' >>lustre.files echo '%attr(-, root, root) %{_libdir}/liblnetconfig.so.*' >>lustre.files %endif -%endif %if %{with ldiskfs} echo '%{_libdir}/libiam.a' >>lustre.files %endif -if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/snmp ] ; then - echo '%{_libdir}/lustre/snmp' >>lustre.files -fi +%if %{with snmp} +mkdir -p $RPM_BUILD_ROOT/%{_libdir}/lustre/snmp +echo '%{_libdir}/lustre/snmp' >>lustre.files +%endif %if %{with lustre_utils} -find $RPM_BUILD_ROOT%{_libdir}/@PACKAGE@ -name \*.la -type f -exec rm -f {} \; +mkdir -p $RPM_BUILD_ROOT/%{_datadir}/lustre +if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre ] ; then + find $RPM_BUILD_ROOT%{_libdir}/@PACKAGE@ -name \*.la -type f -exec rm -f {} \; +fi %endif %if %{with lustre_modules} @@ -349,21 +479,29 @@ find $RPM_BUILD_ROOT%{_libdir}/@PACKAGE@ -name \*.la -type f -exec rm -f {} \; find $RPM_BUILD_ROOT/lib/modules -name \*.ko -type f -exec chmod u+x {} \; %endif +rm -f $RPM_BUILD_ROOT%{_libdir}/liblustreapi.la + %if %{with lustre_tests} :> lustre-tests.files echo '%{_libdir}/lustre/tests/*' >>lustre-tests.files echo '%{_bindir}/mcreate' >>lustre-tests.files echo '%{_bindir}/munlink' >>lustre-tests.files -echo '%{_bindir}/req_layout' >>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 %defattr(-,root,root) %{_sbindir}/* +%if %{with lustre_tests} %exclude %{_sbindir}/wirecheck %exclude %{_sbindir}/wiretest +%endif %if %{with zfs} %exclude %{_sbindir}/zfsobj2fid %endif @@ -381,22 +519,37 @@ echo '%{_sbindir}/wiretest' >>lustre-tests.files %{_bindir}/lfs %{_bindir}/lfs_migrate /sbin/mount.lustre -%{_libdir}/libptlctl.a -%{_libdir}/libcfsutil.a +/sbin/mount.lustre_tgt +%if %{with static} %{_libdir}/liblustreapi.a -%{_libdir}/liblustreapi.so +%endif +%if %{with shared} +%{_libdir}/liblustreapi.so* +%endif %if %{with manpages} %{_mandir}/man?/* %endif +%{_datadir}/lustre +%{_datadir}/bash-completion/completions/* %{_includedir}/lustre +%{_includedir}/linux/lnet +%{_includedir}/linux/lustre %endif -%{_datadir}/lustre %{_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 +%config(noreplace) %{_sysconfdir}/lnet.conf %config(noreplace) %{_sysconfdir}/modprobe.d/ko2iblnd.conf - +%if %{with lustre_utils} +%config(noreplace) %{_sysconfdir}/lnet_routes.conf +%endif %if %{with lustre_modules} +%if %{with shared} %if %{with ldiskfs} %if %{with lustre_utils} %files osd-ldiskfs-mount @@ -404,17 +557,27 @@ echo '%{_sbindir}/wiretest' >>lustre-tests.files %{_libdir}/@PACKAGE@/mount_osd_ldiskfs.so %endif %endif +%endif +%if %{with shared} %if %{with zfs} %if %{with lustre_utils} %files osd-zfs-mount %defattr(-,root,root) %{_libdir}/@PACKAGE@/mount_osd_zfs.so +%{_sysconfdir}/zfs/zed.d/* +%endif %endif %endif %endif # with lustre_modules +%if %{with servers} +%files resource-agents +%defattr(0755,root,root) +%{_prefix}/lib/ocf/resource.d/lustre/ +%endif + %if %{with lustre_tests} %files tests -f lustre-tests.files %defattr(-,root,root) @@ -444,6 +607,21 @@ echo '%{_sbindir}/wiretest' >>lustre-tests.files %doc lustre-iokit/stats-collect/README.iokit-lstats %endif +%post +%if %{with systemd} +%systemd_post lnet.service +%endif + +%preun +%if %{with systemd} +%systemd_preun lnet.service +%endif + +%postun +%if %{with systemd} +%systemd_postun_with_restart lnet.service +%endif + %clean rm -rf $RPM_BUILD_ROOT rm -rf %{_tmppath}/kmp