2 %{!?version: %define version @VERSION@}
3 %{!?kver: %define kver ""}
4 %{!?kdir: %define kdir %(dir=$(echo "%configure_args" | sed -ne 's/.*--with-linux=\\([^ ][^ ]*\\).*$/\\1/p'); if [ -n "$dir" ]; then echo "$dir"; else if [ -n "%kver" ]; then kversion="%kver"; else kversion="$(uname -r)"; fi; echo "/lib/modules/$kversion/source"; fi)}
6 %{!?kobjdir: %define kobjdir %(dir=$(echo "%configure_args" | sed -ne 's/.*--with-linux-obj=\\([^ ][^ ]*\\).*$/\\1/p'); if [ -n "$dir" ]; then echo "$dir"; else if [ -n "%kver" ]; then kversion="%kver"; else kversion="$(uname -r)"; fi; if [ "%kdir" = "/lib/modules/$kversion/source" ]; then echo "/lib/modules/$kversion/build"; else echo "%kdir"; fi; fi)}
8 # as an alternative to this implementation we could simply "make -C $kdir kernelversion"
9 %{!?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)}
11 %{!?downstream_release: %define downstream_release "@DOWNSTREAM_RELEASE@"}
13 %define buildid %(if [ -n "@BUILDID@" ]; then echo "_@BUILDID@"; fi)
15 %{!?myrelease: %define myrelease %(if [ -n "%downstream_release" ]; then echo -n "%{downstream_release}_"; fi; echo %kversion | tr '-' '_')}
17 # always append the buildid, even when the caller defines %release
18 %define fullrelease %{myrelease}%{buildid}
20 %{!?lustre_name: %define lustre_name lustre}
21 %{!?build_lustre_tests: %define build_lustre_tests 1}
23 # in order to get kernel symset and/or kernel module dependencies into
24 # the RPM, in order to support weak-modules, the internal dependency gen-
25 # erator needs to be disabled
26 # this is done with (reduce the double % down to a single %):
28 # %%global _use_internal_dependency_generator 0
30 # on SLES10, /usr/lib/rpm/macros already sets this, so no harm in also
31 # defining it here (until Suse changes their mind)
33 # on RHEL5, however, we do need to explicitly disable the internal dep-
34 # endency generator and allow the external one be used
35 # but since RedHat's kABI is only a subset of the total kernel ABI, it
36 # doesn't include all of the symbols we (or OFED for that matter) need
37 # until RedHat includes all of the symbols we need in their symsets we
38 # cannot support weak-modules
39 # we did e-mail the maintainer of all of this stuff @redhat but got no
41 #%%global _use_internal_dependency_generator 0
43 %define is_client %(bash -c "if [[ %{lustre_name} = *-client ]]; then echo -n '1'; else echo -n '0'; fi")
45 %define sles10 %(bash -c "if [ "%sles_version" = "10" ]; then echo -n '1'; else echo -n '0'; fi")
48 %define flavor %(bash -c "echo %{kversion} | sed -e 's/^.*-//'")
51 Summary: Lustre File System
54 Release: %{fullrelease}
56 Group: Utilities/System
57 Source: lustre-%{version}.tar.gz
58 URL: http://www.sun.com/software/products/lustre/index.xml
59 BuildRoot: %{_tmppath}/lustre-%{version}-root
60 Obsoletes: lustre-lite, lustre-lite-utils, lustre-ldap nfs-utils-lustre
61 Provides: lustre-lite = %{version}, lustre-lite-utils = %{version}
62 Requires: %{name}-modules = %{version}
63 # GSS requires this: BuildRequires: pkgconfig, libgssapi-devel >= 0.10
66 Userspace tools and files for the Lustre file system.
69 Summary: Kernel Lustre modules for Linux %{kversion}
70 # for RHEL5 and SLES11, we need nothing here
71 # for SLES10, we need (where %{flavor} is, i.e. smp):
73 Requires: kernel-%{flavor}
75 Group: Development/Kernel
78 Lustre file system, server and network drivers for Linux %{kversion}.
81 Summary: Object-Based Disk storage driver source
82 Group: Development/Kernel
85 Lustre sources for further development
87 # Since the RPMs we ship are to be used on both SLES and RHEL, we
88 # can't include any dependency information (since the package names
89 # are different on the two platforms).
91 # Instead, we can build these empty meta-packages that only include
92 # dependency information. These let people get the correct
93 # dependencies for their platform and lets them use tools like yum and
94 # red carpet to install the correct files.
96 # Unfortunately I have not seen this come up on the lists much, so I
97 # have disabled them (by commenting out their empty files section
98 # below) until it's clear that they resolve more confusion than they
102 Summary: Lustre dependencies meta-package for SLES
103 Group: Utilities/System
104 Provides: lustre-deps = %{version}
105 Requires: %{name} = %{version}, sles-release
106 Conflicts: %{name}-deps-rhel
108 %description deps-sles
109 This package has RPM dependencies appropriate for SLES systems.
112 Summary: Lustre dependencies meta-package for RHEL
113 Group: Utilities/System
114 Provides: lustre-deps = %{version}
115 Requires: %{name} = %{version}, redhat-release
116 Conflicts: %{name}-deps-sles
118 %description deps-rhel
119 This package has RPM dependencies appropriate for RHEL, RHL, and FC
123 Summary: Lustre testing framework
124 Group: Development/Kernel
125 Provides: %{name}-tests = %{version}
126 Requires: %{name} = %{version}, %{name}-modules = %{version}
129 This package contains a set of test binaries and scripts that are intended
130 to be used by the Lustre testing framework.
132 %if 0%{?suse_version}
136 %setup -qn lustre-%{version}
137 ln lustre/ChangeLog ChangeLog-lustre
138 ln lnet/ChangeLog ChangeLog-lnet
141 # if RPM_BUILD_NCPUS unset, set it
142 if [ -z "$RPM_BUILD_NCPUS" ] ; then
143 RPM_BUILD_NCPUS=$(egrep -c "^cpu[0-9]+" /proc/stat 2>/dev/null || echo 0 :)
144 if [ $RPM_BUILD_NCPUS -eq 0 ] ; then
147 if [ $RPM_BUILD_NCPUS -gt 8 ] ; then
152 rm -rf $RPM_BUILD_ROOT
154 # Set an explicit path to our Linux tree, if we can.
155 cd $RPM_BUILD_DIR/lustre-%{version}
156 # override %optflags so that the vendor's overzealous flags don't create
158 %define optflags -g -O2 -Werror
159 CONFIGURE_ARGS="%{?configure_args} --with-release=%release"
160 %if %{build_lustre_tests}
161 CONFIGURE_ARGS="$CONFIGURE_ARGS --enable-tests --enable-liblustre-tests"
163 CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-tests --disable-liblustre-tests"
166 # if %%kdir was given, make sure it's not in the configure arguments
167 if [ -n "%kdir" ]; then
168 CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux=[^ ][^ ]* \?//')
170 # ditto for %%kobjdir
171 if [ -n "%kobjdir" ]; then
172 CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux-obj=[^ ][^ ]* \?//')
175 # we need to eval "configure" because $CONFIGURE_ARGS could have a quoted
176 # string in it which we don't want word splitted by the shell
177 %define eval_configure %(echo '%configure' | sed -e 's#\./configure#eval ./configure#')
180 %{?kdir: --with-linux=%kdir} %{?kobjdir: --with-linux-obj=%kobjdir} \
182 make -j $RPM_BUILD_NCPUS -s
185 make install DESTDIR=$RPM_BUILD_ROOT
186 # hack to avoid changing the libsysio code for "make install"
187 rm -f $RPM_BUILD_ROOT%{_libdir}/libsysio.a
188 # Remove ldiskfs module(s) - they are packaged by the ldiskfs .spec.
189 rm -rf $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre-ldiskfs
191 # hack to include the llog_test module in lustre-tests
192 llog_base=$RPM_BUILD_DIR/lustre-%{version}/lustre/obdclass/llog_test
193 if [ -e ${llog_base}.ko ]; then
194 cp ${llog_base}.ko $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre
195 elif [ -e ${llog_base}.o ]; then
196 cp ${llog_base}.o $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre
199 # Create the pristine source directory.
200 cd $RPM_BUILD_DIR/lustre-%{version}
201 mkdir -p $RPM_BUILD_ROOT/usr/src
203 ln -s $RPM_BUILD_ROOT/usr/src lustre-source
204 make distdir distdir=lustre-source/lustre-%{version}
205 chmod -R go-w lustre-source/lustre-%{version}
207 cat >lustre.files <<EOF
208 %attr(-, root, root) /sbin/mount.lustre
209 %attr(-, root, root) /usr/sbin/*
210 %attr(-, root, root) /usr/bin/*
212 %attr(-, root, root) /usr/share/lustre
214 %attr(-, root, root) %{_libdir}/libptlctl.a
215 %attr(-, root, root) %{_libdir}/liblustreapi.a
216 %attr(-, root, root) /usr/include/lustre
218 %attr(-, root, root) %{_mandir}/man?/*
220 %attr(-, root, root) %{_libexecdir}/lustre/lc_common
222 %attr(-, root, root) %{_sysconfdir}/udev/rules.d/99-lustre.rules
225 if [ -f $RPM_BUILD_ROOT%{_libdir}/libcfsutil.a ] ; then
226 echo '%attr(-, root, root) %{_libdir}/libcfsutil.a' >>lustre.files
229 if [ -f $RPM_BUILD_ROOT%{_libdir}/liblustre.so ] ; then
230 echo '%attr(-, root, root) %{_libdir}/liblustre.a' >>lustre.files
231 echo '%attr(-, root, root) %{_libdir}/liblustre.so' >>lustre.files
234 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/utils/libiam.c ] ; then
235 echo '%attr(-, root, root) %{_libdir}/libiam.a' >>lustre.files
238 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/snmp ] ; then
239 echo '%attr(-, root, root) %{_libdir}/lustre/snmp' >>lustre.files
240 echo '%attr(-, root, root) %{_datadir}/lustre/snmp/mibs' >>lustre.files
243 # Have universal lustre headers
244 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/lustre/lustre_idl.h ] ; then
245 echo '%attr(-, root, root) /usr/include/linux/lustre_user.h' >>lustre.files
247 echo '%attr(-, root, root) /usr/include/linux/lustre_idl.h' >>lustre.files
250 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/linux/lustre_types.h ] ; then
251 echo '%attr(-, root, root) /usr/include/linux/lustre_types.h' >>lustre.files
254 %if %{build_lustre_tests}
255 echo '%attr(-, root, root) %{_libdir}/lustre/tests/*' >lustre-tests.files
256 echo '%attr(-, root, root) /lib/modules/%{kversion}/updates/kernel/fs/lustre/llog_test.*' >>lustre-tests.files
257 modules_excludes="|llog_test"
258 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/liblustre/tests ] ; then
259 echo '%attr(-, root, root) %{_libdir}/lustre/liblustre/tests/*' >>lustre-tests.files
263 pushd $RPM_BUILD_ROOT >/dev/null
264 > $RPM_BUILD_DIR/lustre-%{version}/lustre-modules.files
265 find lib/modules/%{kversion}/updates -type f | awk "!/(ZZZZZZZZZZ$modules_excludes)/ {print \"%attr(-, root, root) /\"\$0}" >>$RPM_BUILD_DIR/lustre-%{version}/lustre-modules.files
268 %files -f lustre.files
270 %files modules -f lustre-modules.files
271 %attr(-, root, root) %doc COPYING
272 %attr(-, root, root) %doc ChangeLog-lustre
273 %attr(-, root, root) %doc ChangeLog-lnet
276 %attr(-, root, root) /usr/src/lustre-%{version}
278 # uncomment these lines to enable deps packages
282 %if %{build_lustre_tests}
283 %files tests -f lustre-tests.files
287 if [ -f /boot/System.map-%{kversion} ]; then
288 depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
290 depmod -ae %{kversion} || exit 0
293 # "weak modules" support
295 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
296 rpm -ql %{name}-modules-%{version}-%{release} | grep '\.ko$' |
297 /usr/lib/module-init-tools/weak-modules --add-modules
300 if [ -x /sbin/weak-modules ]; then
301 rpm -ql %{name}-modules-%{version}-%{release} | grep '\.ko$' |
302 /sbin/weak-modules --add-modules
306 Congratulations on finishing your Lustre installation! To register
307 your copy of Lustre and find out more about Lustre Support, Service,
308 and Training offerings please visit
310 http://www.sun.com/software/products/lustre/lustre_reg.jsp
313 # for update from < v1.4.6
315 for f in /etc/modules.conf /etc/modprobe.conf /etc/modprobe.conf.local ;
318 if grep 'lustre llite' $f >/dev/null 2>/dev/null ; then
319 [ ! -f $f.rpmsave ] && cp $f $f.rpmsave
320 TMPFILE=`mktemp $f.XXXXXX` && \
321 rm -f $TMPFILE && touch $TMPFILE && \
322 grep -v 'lustre llite' $f >> $TMPFILE && \
325 if egrep "^[^#]*(add below|install) ptlrpc" $f ; then
326 [ ! -f $f.rpmsave ] && cp $f $f.rpmsave
327 TMPFILE=`mktemp $f.XXXXXX` && \
328 rm -f $TMPFILE && touch $TMPFILE && \
329 sed -e "s/^[^#]*\(add below\|install\) ptlrpc.*/#&/" $f >> $TMPFILE && \
335 # If the kernel was built to reject unsupported modules (e.g. not a Lustre
336 # kernel), and this hasn't been overridden in /etc/modprobe.d yet, then
337 # print a warning so that users are aware of this issue.
338 if sysctl kernel.unsupported >/dev/null 2>&1 &&
339 [ "$(sysctl -n kernel.unsupported 2>/dev/null)" = "0" ] &&
340 ! modprobe -c | grep -q "^allow_unsupported_modules[ \t]1" ; then
342 warning: the Lustre modules are not supported by Novell. To use Lustre
343 on this system, you should put
345 allow_unsupported_modules 1
347 into /etc/modprobe.d/unsupported_modules"
351 rpm -ql %{name}-modules-%{version}-%{release} | grep '\.ko$' > /var/run/%{name}-modules
354 if [ -f /boot/System.map-%{kversion} ]; then
355 depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
357 depmod -ae %{kversion} || exit 0
360 # "weak modules" support
362 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
363 cat /var/run/%{name}-modules | grep '\.ko$' |
364 /usr/lib/module-init-tools/weak-modules --remove-modules
367 if [ -x /sbin/weak-modules ]; then
368 cat /var/run/%{name}-modules | grep '\.ko$' |
369 /sbin/weak-modules --remove-modules
371 rm /var/run/%{name}-modules
373 %if %{build_lustre_tests}
375 if [ -f /boot/System.map-%{kversion} ]; then
376 depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
378 depmod -ae %{kversion} || exit 0
382 if [ -f /boot/System.map-%{kversion} ]; then
383 depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
385 depmod -ae %{kversion} || exit 0
390 rm -rf $RPM_BUILD_ROOT