2 %{!?version: %define version @VERSION@}
3 %{!?kdir: %define kdir %(dir=$(echo "%configure_args" | sed -ne 's/.*--with-linux=\\([^ ][^ ]*\\).*$/\\1/p'); if [ -n "$dir" ]; then echo "$dir"; else echo "/lib/modules/$(uname -r)/build"; fi)}
5 %{!?kobjdir: %define kobjdir %(dir=$(echo "%configure_args" | sed -ne 's/.*--with-linux-obj=\\([^ ][^ ]*\\).*$/\\1/p'); if [ -n "$dir" ]; then echo "$dir"; else echo "%kdir"; fi)}
7 # as an alternative to this implementation we could simply "make -C $kdir kernelversion"
8 %{!?kversion: %define kversion %(if test -s %kobjdir/include/linux/utsrelease.h ; then LINUXRELEASEHEADER=utsrelease.h; else LINUXRELEASEHEADER=version.h; fi; sed -ne '/^#define UTS_RELEASE/s/.*"\\(.*\\)"$/\\1/p' %kobjdir/include/linux/$LINUXRELEASEHEADER)}
10 %{!?downstream_release: %define downstream_release "@DOWNSTREAM_RELEASE@"}
12 %define buildid %(if [ -n "@BUILDID@" ]; then echo "_@BUILDID@"; fi)
14 %{!?myrelease: %define myrelease %(if [ -n "%downstream_release" ]; then echo -n "%{downstream_release}_"; fi; echo %kversion | tr '-' '_')}
16 # always append the buildid, even when the caller defines %release
17 %define fullrelease %{myrelease}%{buildid}
19 %{!?lustre_name: %define lustre_name lustre}
20 %{!?build_lustre_tests: %define build_lustre_tests 1}
22 # in order to get kernel symset and/or kernel module dependencies into
23 # the RPM, in order to support weak-modules, the internal dependency gen-
24 # erator needs to be disabled
25 # this is done with (reduce the double % down to a single %):
27 # %%global _use_internal_dependency_generator 0
29 # on SLES10, /usr/lib/rpm/macros already sets this, so no harm in also
30 # defining it here (until Suse changes their mind)
32 # on RHEL5, however, we do need to explicitly disable the internal dep-
33 # endency generator and allow the external one be used
34 # but since RedHat's kABI is only a subset of the total kernel ABI, it
35 # doesn't include all of the symbols we (or OFED for that matter) need
36 # until RedHat includes all of the symbols we need in their symsets we
37 # cannot support weak-modules
38 # we did e-mail the maintainer of all of this stuff @redhat but got no
40 #%%global _use_internal_dependency_generator 0
42 %define is_client %(bash -c "if [[ %{lustre_name} = *-client ]]; then echo -n '1'; else echo -n '0'; fi")
43 # for those uses that don't want the -smp/-bigsmp on the end of %kversion
44 %define krequires %(bash -c "echo %{kversion} | sed -e 's/.x86_64$//' -e 's/.i586$//' -e 's/-smp$//' -e 's/-bigsmp$//' -e 's/-ppc64$//' -e 's/-default$//'")
46 %define sles10 %(bash -c "if [ "%sles_version" = "10" ]; then echo -n '1'; else echo -n '0'; fi")
49 %define flavor %(bash -c "echo %{kversion} | sed -e 's/^.*-//'")
52 Summary: Lustre File System
55 Release: %{fullrelease}
57 Group: Utilities/System
58 Source: lustre-%{version}.tar.gz
59 URL: http://www.sun.com/software/products/lustre/index.xml
60 BuildRoot: %{_tmppath}/lustre-%{version}-root
61 Obsoletes: lustre-lite, lustre-lite-utils, lustre-ldap nfs-utils-lustre
62 Provides: lustre-lite = %{version}, lustre-lite-utils = %{version}
63 Requires: %{name}-modules = %{version}
64 # GSS requires this: BuildRequires: pkgconfig, libgssapi-devel >= 0.10
67 Userspace tools and files for the Lustre file system.
70 Summary: Kernel Lustre modules for Linux %{kversion}
71 # for RHEL5 and SLES11, we need nothing here
72 # for SLES10, we need (where %{flavor} is, i.e. smp):
74 Requires: kernel-%{flavor}
76 Group: Development/Kernel
79 Lustre file system, server and network drivers for Linux %{kversion}.
82 Summary: Object-Based Disk storage driver source
83 Group: Development/Kernel
86 Lustre sources for further development
88 # Since the RPMs we ship are to be used on both SLES and RHEL, we
89 # can't include any dependency information (since the package names
90 # are different on the two platforms).
92 # Instead, we can build these empty meta-packages that only include
93 # dependency information. These let people get the correct
94 # dependencies for their platform and lets them use tools like yum and
95 # red carpet to install the correct files.
97 # Unfortunately I have not seen this come up on the lists much, so I
98 # have disabled them (by commenting out their empty files section
99 # below) until it's clear that they resolve more confusion than they
103 Summary: Lustre dependencies meta-package for SLES
104 Group: Utilities/System
105 Provides: lustre-deps = %{version}
106 Requires: %{name} = %{version}, sles-release
107 Conflicts: %{name}-deps-rhel
109 %description deps-sles
110 This package has RPM dependencies appropriate for SLES systems.
113 Summary: Lustre dependencies meta-package for RHEL
114 Group: Utilities/System
115 Provides: lustre-deps = %{version}
116 Requires: %{name} = %{version}, redhat-release
117 Conflicts: %{name}-deps-sles
119 %description deps-rhel
120 This package has RPM dependencies appropriate for RHEL, RHL, and FC
124 Summary: Lustre testing framework
125 Group: Development/Kernel
126 Provides: %{name}-tests = %{version}
127 Requires: %{name} = %{version}, %{name}-modules = %{version}
130 This package contains a set of test binaries and scripts that are intended
131 to be used by the Lustre testing framework.
133 %if 0%{?suse_version}
137 %setup -qn lustre-%{version}
138 ln lustre/ChangeLog ChangeLog-lustre
139 ln lnet/ChangeLog ChangeLog-lnet
142 # if RPM_BUILD_NCPUS unset, set it
143 if [ -z "$RPM_BUILD_NCPUS" ] ; then
144 RPM_BUILD_NCPUS=$(egrep -c "^cpu[0-9]+" /proc/stat 2>/dev/null || echo 0 :)
145 if [ $RPM_BUILD_NCPUS -eq 0 ] ; then
148 if [ $RPM_BUILD_NCPUS -gt 8 ] ; then
153 rm -rf $RPM_BUILD_ROOT
155 # Set an explicit path to our Linux tree, if we can.
156 cd $RPM_BUILD_DIR/lustre-%{version}
157 # override %optflags so that the vendor's overzealous flags don't create
159 %define optflags -g -O2 -Werror
160 CONFIGURE_ARGS="%{?configure_args} --with-release=%release"
161 %if %{build_lustre_tests}
162 CONFIGURE_ARGS="$CONFIGURE_ARGS --enable-tests --enable-liblustre-tests"
164 CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-tests --disable-liblustre-tests"
167 # if %%kdir was given, make sure it's not in the configure arguments
168 if [ -n "%kdir" ]; then
169 CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux=[^ ][^ ]* \?//')
171 # ditto for %%kobjdir
172 if [ -n "%kobjdir" ]; then
173 CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux-obj=[^ ][^ ]* \?//')
176 # we need to eval "configure" because $CONFIGURE_ARGS could have a quoted
177 # string in it which we don't want word splitted by the shell
178 %define eval_configure %(echo '%configure' | sed -e 's#\./configure#eval ./configure#')
181 %{?kdir: --with-linux=%kdir} %{?kobjdir: --with-linux-obj=%kobjdir} \
183 make -j $RPM_BUILD_NCPUS -s
186 make install DESTDIR=$RPM_BUILD_ROOT
187 # hack to avoid changing the libsysio code for "make install"
188 rm -f $RPM_BUILD_ROOT%{_libdir}/libsysio.a
189 # Remove ldiskfs module(s) - they are packaged by the ldiskfs .spec.
190 rm -rf $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre-ldiskfs
192 # hack to include the llog_test module in lustre-tests
193 llog_base=$RPM_BUILD_DIR/lustre-%{version}/lustre/obdclass/llog_test
194 if [ -e ${llog_base}.ko ]; then
195 cp ${llog_base}.ko $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre
196 elif [ -e ${llog_base}.o ]; then
197 cp ${llog_base}.o $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre
200 # Create the pristine source directory.
201 cd $RPM_BUILD_DIR/lustre-%{version}
202 mkdir -p $RPM_BUILD_ROOT/usr/src
204 ln -s $RPM_BUILD_ROOT/usr/src lustre-source
205 make distdir distdir=lustre-source/lustre-%{version}
206 chmod -R go-w lustre-source/lustre-%{version}
208 cat >lustre.files <<EOF
209 %attr(-, root, root) /sbin/mount.lustre
210 %attr(-, root, root) /usr/sbin/*
211 %attr(-, root, root) /usr/bin/*
213 %attr(-, root, root) /usr/share/lustre
215 %attr(-, root, root) %{_libdir}/libptlctl.a
216 %attr(-, root, root) %{_libdir}/liblustreapi.a
217 %attr(-, root, root) /usr/include/lustre
219 %attr(-, root, root) %{_mandir}/man?/*
221 %attr(-, root, root) %{_libexecdir}/lustre/lc_common
223 %attr(-, root, root) %{_sysconfdir}/udev/rules.d/99-lustre.rules
226 if [ -f $RPM_BUILD_ROOT%{_libdir}/libcfsutil.a ] ; then
227 echo '%attr(-, root, root) %{_libdir}/libcfsutil.a' >>lustre.files
230 if [ -f $RPM_BUILD_ROOT%{_libdir}/liblustre.so ] ; then
231 echo '%attr(-, root, root) %{_libdir}/liblustre.a' >>lustre.files
232 echo '%attr(-, root, root) %{_libdir}/liblustre.so' >>lustre.files
235 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/utils/libiam.c ] ; then
236 echo '%attr(-, root, root) %{_libdir}/libiam.a' >>lustre.files
239 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/snmp ] ; then
240 echo '%attr(-, root, root) %{_libdir}/lustre/snmp' >>lustre.files
241 echo '%attr(-, root, root) %{_datadir}/lustre/snmp/mibs' >>lustre.files
244 # Have universal lustre headers
245 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/lustre/lustre_idl.h ] ; then
246 echo '%attr(-, root, root) /usr/include/linux/lustre_user.h' >>lustre.files
248 echo '%attr(-, root, root) /usr/include/linux/lustre_idl.h' >>lustre.files
251 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/linux/lustre_types.h ] ; then
252 echo '%attr(-, root, root) /usr/include/linux/lustre_types.h' >>lustre.files
255 %if %{build_lustre_tests}
256 echo '%attr(-, root, root) %{_libdir}/lustre/tests/*' >lustre-tests.files
257 echo '%attr(-, root, root) /lib/modules/%{kversion}/updates/kernel/fs/lustre/llog_test.*' >>lustre-tests.files
258 modules_excludes="|llog_test"
259 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/liblustre/tests ] ; then
260 echo '%attr(-, root, root) %{_libdir}/lustre/liblustre/tests/*' >>lustre-tests.files
264 pushd $RPM_BUILD_ROOT >/dev/null
265 > $RPM_BUILD_DIR/lustre-%{version}/lustre-modules.files
266 find lib/modules/%{kversion}/updates -type f | awk "!/(ZZZZZZZZZZ$modules_excludes)/ {print \"%attr(-, root, root) /\"\$0}" >>$RPM_BUILD_DIR/lustre-%{version}/lustre-modules.files
269 %files -f lustre.files
271 %files modules -f lustre-modules.files
272 %attr(-, root, root) %doc COPYING
273 %attr(-, root, root) %doc ChangeLog-lustre
274 %attr(-, root, root) %doc ChangeLog-lnet
277 %attr(-, root, root) /usr/src/lustre-%{version}
279 # uncomment these lines to enable deps packages
283 %if %{build_lustre_tests}
284 %files tests -f lustre-tests.files
288 if [ -f /boot/System.map-%{kversion} ]; then
289 depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
291 depmod -ae %{kversion} || exit 0
294 # "weak modules" support
296 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
297 rpm -ql %{name}-modules-%{version}-%{release} | grep '\.ko$' |
298 /usr/lib/module-init-tools/weak-modules --add-modules
301 if [ -x /sbin/weak-modules ]; then
302 rpm -ql %{name}-modules-%{version}-%{release} | grep '\.ko$' |
303 /sbin/weak-modules --add-modules
307 Congratulations on finishing your Lustre installation! To register
308 your copy of Lustre and find out more about Lustre Support, Service,
309 and Training offerings please visit
311 http://www.sun.com/software/products/lustre/lustre_reg.jsp
314 # for update from < v1.4.6
316 for f in /etc/modules.conf /etc/modprobe.conf /etc/modprobe.conf.local ;
319 if grep 'lustre llite' $f >/dev/null 2>/dev/null ; then
320 [ ! -f $f.rpmsave ] && cp $f $f.rpmsave
321 TMPFILE=`mktemp $f.XXXXXX` && \
322 rm -f $TMPFILE && touch $TMPFILE && \
323 grep -v 'lustre llite' $f >> $TMPFILE && \
326 if egrep "^[^#]*(add below|install) ptlrpc" $f ; then
327 [ ! -f $f.rpmsave ] && cp $f $f.rpmsave
328 TMPFILE=`mktemp $f.XXXXXX` && \
329 rm -f $TMPFILE && touch $TMPFILE && \
330 sed -e "s/^[^#]*\(add below\|install\) ptlrpc.*/#&/" $f >> $TMPFILE && \
336 # If the kernel was built to reject unsupported modules (e.g. not a Lustre
337 # kernel), and this hasn't been overridden in /etc/modprobe.d yet, then
338 # print a warning so that users are aware of this issue.
339 if sysctl kernel.unsupported >/dev/null 2>&1 &&
340 [ "$(sysctl -n kernel.unsupported 2>/dev/null)" = "0" ] &&
341 ! modprobe -c | grep -q "^allow_unsupported_modules[ \t]1" ; then
343 warning: the Lustre modules are not supported by Novell. To use Lustre
344 on this system, you should put
346 allow_unsupported_modules 1
348 into /etc/modprobe.d/unsupported_modules"
352 rpm -ql %{name}-modules-%{version}-%{release} | grep '\.ko$' > /var/run/%{name}-modules
355 if [ -f /boot/System.map-%{kversion} ]; then
356 depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
358 depmod -ae %{kversion} || exit 0
361 # "weak modules" support
363 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
364 cat /var/run/%{name}-modules | grep '\.ko$' |
365 /usr/lib/module-init-tools/weak-modules --remove-modules
368 if [ -x /sbin/weak-modules ]; then
369 cat /var/run/%{name}-modules | grep '\.ko$' |
370 /sbin/weak-modules --remove-modules
372 rm /var/run/%{name}-modules
374 %if %{build_lustre_tests}
376 if [ -f /boot/System.map-%{kversion} ]; then
377 depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
379 depmod -ae %{kversion} || exit 0
383 if [ -f /boot/System.map-%{kversion} ]; then
384 depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
386 depmod -ae %{kversion} || exit 0
391 rm -rf $RPM_BUILD_ROOT