# lustre.spec
%define version @VERSION@
%define kversion @LINUXRELEASE@
-%define linuxdir @LINUX@
-%define enable_doc @ENABLE_DOC@
-%define enable_init_scripts @ENABLE_INIT_SCRIPTS@
-Summary: Lustre Lite File System
-Name: lustre-lite
+Summary: Lustre File System
+Name: lustre
Version: %{version}
Release: @RELEASE@
-Copyright: GPL
+License: GPL
Group: Utilities/System
-Requires: lustre-modules, PyXML
-Source: ftp://ftp.lustre.com/pub/lustre/lustre-%{version}.tar.gz
+Source: lustre-%{version}.tar.gz
+URL: http://clusterfs.com/
BuildRoot: /var/tmp/lustre-%{version}-root
+Obsoletes: lustre-lite, lustre-lite-utils, lustre-ldap
+Provides: lustre-lite = %{version}, lustre-lite-utils = %{version}, lustre-ldap = %{version}
%description
-The Lustre Lite Cluster File System: kernel drivers for file system,
-servers and utilities.
+Userspace tools and files for the Lustre file system.
-%package -n lustre-modules
-Summary: Kernel Lustre drivers for Linux %{kversion}
+%package modules
+Summary: Kernel Lustre modules for Linux %{kversion}
Requires: modutils >= 2.4.10
-Requires: /boot/System.map-%{kversion}
Group: Development/Kernel
-%description -n lustre-modules
-Lustre file System, server and network drivers for Linux %{kversion}.
+%description modules
+Lustre file system, server and network drivers for Linux %{kversion}.
-%package -n lustre-source
+%package source
Summary: Object-Based Disk storage driver source
Group: Development/Kernel
-%description -n lustre-source
-Lustre Lite Source for further development
-
-%package -n lustre-doc
-Summary: Documentation and sample configuration files
-Group: Documentation
-# FIXME: BuildArch overrides all the packages in rpm 4.0.4-7x
-#BuildArch: noarch
-
-%description -n lustre-doc
-Documentation and sample configuration files for Lustre
-
-%package -n lustre-ldap
-Summary: Configures openldap server for LDAP Lustre config database
-Group: Configuration
-Requires: openldap-servers, openldap-clients, python-ldap, 4Suite
-
-%description -n lustre-ldap
-Configures openldap server for LDAP Lustre config database
+%description source
+Lustre sources for further development
+
+# Since the RPMs we ship are to be used on both SLES and RHEL, we
+# can't include any dependency information (since the package names
+# are different on the two platforms).
+#
+# Instead, we can build these empty meta-packages that only include
+# dependency information. These let people get the correct
+# dependencies for their platform and lets them use tools like yum and
+# red carpet to install the correct files.
+#
+# Unfortunately I have not seen this come up on the lists much, so I
+# have disabled them (by commenting out their empty files section
+# below) until it's clear that they resolve more confusion than they
+# add.
+
+%package deps-sles
+Summary: Lustre dependencies meta-package for SLES
+Group: Utilities/System
+Provides: lustre-deps = %{version}
+Requires: lustre = %{version}, sles-release, python-xml
+Conflicts: lustre-deps-rhel
+%description deps-sles
+This package has RPM dependencies appropriate for SLES systems.
-#%package -n liblustre
-#Summary: Lustre Lib
-#Group: Development/Kernel
+%package deps-rhel
+Summary: Lustre dependencies meta-package for RHEL
+Group: Utilities/System
+Provides: lustre-deps = %{version}
+Requires: lustre = %{version}, redhat-release, PyXML
+Conflicts: lustre-deps-sles
-#%description -n liblustre
-#Lustre lib binary package.
+%description deps-rhel
+This package has RPM dependencies appropriate for RHEL, RHL, and FC
+systems.
%prep
%setup -qn lustre-%{version}
-#%setup -c -n lustre-%{version}-lib
-
-%if %{enable_doc}
- %define disable_doc ''
-%else
- %define disable_doc --disable-doc
-%endif
%build
# if RPM_BUILD_NCPUS unset, set it
if [ -z "$RPM_BUILD_NCPUS" ] ; then
- RPM_BUILD_NCPUS=$(egrep -c "^cpu[0-9]+" /proc/stat || :)
+ RPM_BUILD_NCPUS=$(egrep -c "^cpu[0-9]+" /proc/stat 2>/dev/null || echo 0 :)
if [ $RPM_BUILD_NCPUS -eq 0 ] ; then
RPM_BUILD_NCPUS=1
fi
# Set an explicit path to our Linux tree, if we can.
cd $RPM_BUILD_DIR/lustre-%{version}
-./configure \
- --with-linux='%{linuxdir}' \
- --with-linux-obj='@LINUX_OBJ@' \
- --with-linux-config=@LINUX_CONFIG@ \
- %{disable_doc} --disable-liblustre \
+./configure @ac_configure_args@ \
--sysconfdir=%{_sysconfdir} \
--mandir=%{_mandir} \
--libdir=%{_libdir}
make -j $RPM_BUILD_NCPUS -s
%install
-cd $RPM_BUILD_DIR/lustre-%{version}
make install DESTDIR=$RPM_BUILD_ROOT
# hack to avoid changing the libsysio code for "make install"
rm -f $RPM_BUILD_ROOT%{_libdir}/libsysio.a
-%ifarch alpha
-# this hurts me
- conf_flag=
- linuxdir=%{linuxdir}
- test -d $linuxdir && conf_flag=--with-linux=$linuxdir
- make clean
- ./configure --enable-rtscts-myrinet $conf_flag %{disable_doc}
- make
- cp linux/rtscts/rtscts.o $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/net/lustre/rtscts_myrinet.o
- cp user/myrinet_utils/mcpload $RPM_BUILD_ROOT/usr/sbin/mcpload
-%endif
-
# Create the pristine source directory.
cd $RPM_BUILD_DIR/lustre-%{version}
mkdir -p $RPM_BUILD_ROOT/usr/src
ln -s $RPM_BUILD_ROOT/usr/src lustre-source
make distdir distdir=lustre-source/lustre-%{version}
-# ldap database directory
-mkdir -p $RPM_BUILD_ROOT/var/lib/ldap/lustre
-
-%files
+cat >lustre.files <<EOF
%attr(-, root, root) /sbin/mount.lustre
-%attr(-, root, root) /usr/sbin/lmc
-%attr(-, root, root) /usr/sbin/lctl
-%attr(-, root, root) /usr/sbin/lconf
-%attr(-, root, root) /usr/sbin/lrun
-%attr(-, root, root) /usr/sbin/llmount
-%attr(-, root, root) /usr/sbin/lwizard
-%attr(-, root, root) /usr/sbin/wiretest
-%attr(-, root, root) /usr/sbin/lactive
-%attr(-, root, root) /usr/sbin/llanalyze
-%attr(-, root, root) /usr/sbin/gmnalnid
-%attr(-, root, root) /usr/sbin/llstat.pl
-%attr(-, root, root) /usr/sbin/llobdstat.pl
-%attr(-, root, root) /usr/sbin/load_ldap.sh
-%attr(-, root, root) /usr/sbin/acceptor
-%attr(-, root, root) /usr/sbin/ptlctl
-%attr(-, root, root) /usr/sbin/debugctl
-%attr(-, root, root) /usr/sbin/lload
-%attr(-, root, root) /usr/sbin/obdbarrier
-%attr(-, root, root) /usr/sbin/obdio
-%attr(-, root, root) /usr/sbin/routerstat
-%attr(-, root, root) /usr/sbin/wirecheck
-%attr(-, root, root) /usr/bin/lfs
-%attr(-, root, root) /usr/bin/lfind
-%attr(-, root, root) /usr/bin/lstripe
-%attr(-, root, root) /usr/bin/mcreate
-%attr(-, root, root) /usr/bin/munlink
+%attr(-, root, root) /usr/sbin/*
+%attr(-, root, root) /usr/bin/*
%attr(-, root, root) %{_libdir}/lustre/python
-%attr(-, root, root) /usr/share/lustre/examples
+%attr(-, root, root) /usr/share/lustre/*
-%if %{enable_init_scripts}
%attr(-, root, root) /etc/init.d/lustre
%attr(-, root, root) /etc/init.d/lustrefs
-%endif
%attr(-, root, root) %{_libdir}/libptlctl.a
%attr(-, root, root) %{_libdir}/liblustreapi.a
%attr(-, root, root) /usr/include/lustre
-%attr(-, root, root) /usr/include/linux/lustre_idl.h
-
-%attr(-, root, root) /usr/share/man/man?/*
-
-%ifarch alpha
-%attr(-, root, root) /usr/sbin/mcpload
-%endif
-
-%files -n lustre-doc
-%attr(-, root, root) %doc COPYING lustre/FDL
-%if %{enable_doc}
-%attr(-, root, root) %doc doc/lustre.pdf doc/lustre-HOWTO.txt
-%endif
-#%attr(-, root, root) %doc tests/client-echo.cfg tests/client-mount.cfg
-#%attr(-, root, root) %doc tests/client-mount2.cfg
-#%attr(-, root, root) %doc tests/elan-client.cfg tests/elan-server.cfg
-#%attr(-, root, root) %doc tests/ldlm.cfg tests/lustre.cfg
-#%attr(-, root, root) %doc tests/mds.cfg tests/net-client.cfg
-#%attr(-, root, root) %doc tests/net-local.cfg tests/net-server.cfg
-#%attr(-, root, root) %doc tests/obdecho.cfg tests/obdfilter.cfg
-
-%files -n lustre-modules
+
+%attr(-, root, root) %{_mandir}/man?/*
+
+%attr(-, root, root) /etc/openldap/slapd-lustre.conf
+%attr(-, root, root) /etc/openldap/schema/lustre.schema
+EOF
+if [ -f $RPM_BUILD_ROOT%{_libdir}/liblustre.so ] ; then
+ echo '%attr(-, root, root) %{_libdir}/liblustre.a' >>lustre.files
+ echo '%attr(-, root, root) %{_libdir}/liblustre.so' >>lustre.files
+fi
+
+if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/snmp ] ; then
+ echo '%attr(-, root, root) %{_libdir}/lustre/snmp' >>lustre.files
+ echo '%attr(-, root, root) %{_datadir}/lustre/snmp/mibs' >>lustre.files
+fi
+
+# Have universal lustre headers
+if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/lustre/lustre_idl.h ] ; then
+ echo '%attr(-, root, root) /usr/include/lustre/lustre_idl.h' >>lustre.files
+ echo '%attr(-, root, root) /usr/include/linux/lustre_types.h' >>lustre.files
+ echo '%attr(-, root, root) /usr/include/linux/lustre_user.h' >>lustre.files
+else
+ echo '%attr(-, root, root) /usr/include/linux/lustre_idl.h' >>lustre.files
+fi
+
+%files -f lustre.files
+
+%files modules
%attr(-, root, root) %doc COPYING
%attr(-, root, root) /lib/modules/%{kversion}/kernel/fs/lustre
-#portals modules
%attr(-, root, root) /lib/modules/%{kversion}/kernel/net/lustre
-%files -n lustre-source
+%files source
%attr(-, root, root) /usr/src/lustre-%{version}
-#%ifarch i386
-#%files -n liblustre
-#%attr(-, root, root) /lib/lustre
-#%attr(-, root, root) /usr/sbin/lctl
-#%attr(-, root, root) /usr/sbin/lfind
-#%attr(-, root, root) /usr/sbin/lstripe
-#%attr(-, root, root) /usr/sbin/obdio
-#%attr(-, root, root) /usr/sbin/obdbarrier
-#%attr(-, root, root) /usr/sbin/obdstat
-#%attr(-, root, root) /usr/sbin/lload
-#%attr(-, root, root) /usr/sbin/lconf
-#%attr(-, root, root) /usr/sbin/lmc
-#%attr(-, root, root) /usr/sbin/llanalyze
-#%endif
-
-
-%files -n lustre-ldap
-%attr(-, root, root) /etc/openldap/slapd-lustre.conf
-%attr(-, root, root) /etc/openldap/schema/lustre.schema
-%attr(-, root, root) /usr/share/lustre/lustre2ldif.xsl
-%attr(-, root, root) /usr/share/lustre/top.ldif
-#%dir /var/lib/ldap/lustre
-%attr(700, ldap, ldap) /var/lib/ldap/lustre
+# uncomment these lines to enable deps packages
+# %files deps-sles
+# %files deps-rhel
%post
if [ -f /etc/init.d/lustre ] ; then
/sbin/chkconfig --del lustre
/sbin/chkconfig --del lustrefs
fi
+rm -f %{_libdir}/lustre/python/Lustre/*.pyc
-%post -n lustre-modules
-if [ ! -e /dev/obd ]; then
- mknod /dev/obd c 10 241
-fi
-if [ ! -e /dev/portals ]; then
- mknod /dev/portals c 10 240
+%post modules
+if [ -f /boot/System.map-%{kversion} ]; then
+ depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
+else
+ depmod -ae %{kversion} || exit 0
fi
-depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
-%postun -n lustre-modules
-depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
+# for update from < v1.4.6
+
+for f in /etc/modules.conf /etc/modprobe.conf /etc/modprobe.conf.local ;
+do
+ if [ -f $f ]; then
+ if ! grep 'lustre llite' $f >/dev/null 2>/dev/null ; then
+ cat >> $f <<-EOF
+alias lustre llite
+EOF
+ fi
+ if egrep "^[^#]*(add below|install) ptlrpc" $f ; then
+ [ ! -f $f.rpmsave ] && cp $f $f.rpmsave
+ TMPFILE=`mktemp $f.XXXXXX` && \
+ sed -e "s/^[^#]*\(add below\|install\) ptlrpc.*/#&/" $f > $TMPFILE && \
+ mv $TMPFILE $f
+ fi
+ fi
+done
+
+
+%postun modules
+if [ -f /boot/System.map-%{kversion} ]; then
+ depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
+else
+ depmod -ae %{kversion} || exit 0
+fi
%clean
-#rm -rf $RPM_BUILD_ROOT
-
-# end of file
+rm -rf $RPM_BUILD_ROOT