Whamcloud - gitweb
LU-2906 ldlm: use accessor macros for l_flags
[fs/lustre-release.git] / lustre.spec.in
1 # lustre.spec
2
3 # Declare rpmbuild --with/--without parameters
4 %bcond_without servers
5 %bcond_without ldiskfs
6 %bcond_with zfs
7 %bcond_without lustre_tests
8 %bcond_without lustre_iokit
9
10 %if %{without servers}
11     # --without servers overrides --with {ldiskfs|zfs}
12     # so undefine the internal variables set by bcond_*
13     %undefine with_ldiskfs
14     %undefine with_zfs
15 %endif
16
17 %{!?version: %global version @VERSION@}
18 %{!?kver: %global kver ""}
19 %{!?kdir: %global 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)}
20
21 %{!?kobjdir: %global 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)}
22
23 # as an alternative to this implementation we could simply "make -C $kdir kernelversion"
24 %{!?kversion: %global kversion %(if test -s %kobjdir/include/generated/utsrelease.h ; then LINUXRELEASEHEADER=%kobjdir/include/generated/utsrelease.h ; elif test -s %kobjdir/include/linux/utsrelease.h ; then LINUXRELEASEHEADER=%kobjdir/include/linux/utsrelease.h ; else LINUXRELEASEHEADER=%kobjdir/include/linux/version.h; fi; sed -ne '/^#define UTS_RELEASE/s/.*"\\(.*\\)"$/\\1/p' $LINUXRELEASEHEADER)}
25
26 %{!?downstream_release: %global downstream_release "@DOWNSTREAM_RELEASE@"}
27
28 %define buildid %(if [ -n "@BUILDID@" ]; then echo "_@BUILDID@"; fi)
29
30 %{!?myrelease: %global myrelease %(if [ -n "%downstream_release" ]; then echo -n "%{downstream_release}_"; fi; echo %kversion | tr '-' '_')}
31
32 # always append the buildid, even when the caller defines %release
33 %define fullrelease %{myrelease}%{buildid}
34
35 # in order to get kernel symset and/or kernel module dependencies into
36 # the RPM, in order to support weak-modules, the internal dependency gen-
37 # erator needs to be disabled
38 # this is done with (reduce the double % down to a single %):
39 #
40 # %%global _use_internal_dependency_generator 0
41 #
42 # on SLES10, /usr/lib/rpm/macros already sets this, so no harm in also
43 # defining it here (until Suse changes their mind)
44 #
45 # on RHEL5, however, we do need to explicitly disable the internal dep-
46 # endency generator and allow the external one be used
47 # but since RedHat's kABI is only a subset of the total kernel ABI, it
48 # doesn't include all of the symbols we (or OFED for that matter) need
49 # until RedHat includes all of the symbols we need in their symsets we
50 # cannot support weak-modules
51 # we did e-mail the maintainer of all of this stuff @redhat but got no
52 # response from them
53 #%%global _use_internal_dependency_generator 0
54
55 # for those uses that don't want the -smp/-bigsmp (or the .arch) on the end
56 # of %kversion
57 %define krequires %(bash -c "echo %{kversion} | sed -e 's/\.x86_64$//' -e 's/\.i[3456]86$//' -e 's/-smp$//' -e 's/-bigsmp$//' -e 's/-ppc64$//' -e 's/-default$//'")
58
59 # Set the package name prefix
60 %if %{undefined lustre_name}
61     %if %{with servers}
62         %global lustre_name lustre
63     %else
64         %global lustre_name lustre-client
65     %endif
66 %endif
67
68 %if %{defined cross_path} && %{defined post_script}
69 %define rpm_post_base %(echo $(dirname %{cross_path})/%{lustre_name})
70 %endif
71
72 Summary: Lustre File System
73 Name: %{lustre_name}
74 Version: %{version}
75 Release: %{fullrelease}
76 License: GPL
77 Group: Utilities/System
78 Source: lustre-%{version}.tar.gz
79 URL: http://wiki.whamcloud.com/
80 BuildRoot: %{_tmppath}/lustre-%{version}-root
81 Obsoletes: lustre-lite, lustre-lite-utils, lustre-ldap nfs-utils-lustre
82 Provides: lustre-lite = %{version}, lustre-lite-utils = %{version}
83 Requires: %{name}-modules = %{version}
84 %if %{with servers}
85 Requires: lustre-osd
86 %endif
87 %if %{defined cross_requires}
88 Requires: %{cross_requires}
89 AutoReqProv: no
90 %else
91 # GSS requires this: BuildRequires: pkgconfig, libgssapi-devel >= 0.10
92 %if %{_vendor}=="redhat" || %{_vendor}=="fedora"
93 #suse don't support selinux
94 BuildRequires: libselinux-devel
95 Requires: libselinux
96 %endif
97 %endif
98
99 %description
100 Userspace tools and files for the Lustre file system.
101
102 %package modules
103 Summary: Kernel Lustre modules for Linux %{kversion}
104 %if %{defined cross_requires}
105 Requires: %{cross_requires}
106 AutoReqProv: no
107 %else
108 # for SLES11, we need nothing here
109 %if %{_vendor}=="redhat" || %{_vendor}=="fedora"
110 # for RHEL we need to require the specific kernel still since weak-modules
111 # support on RH is, well, weak, to be punny about it
112 Requires: kernel = %{krequires}
113 %endif
114 %endif
115 Group: Development/Kernel
116
117 %description modules
118 Lustre file system, server and network drivers for Linux %{kversion}.
119
120 %if %{with ldiskfs}
121 %package osd-ldiskfs
122 Summary: osd-ldiskfs contains both ldiskfs and its osd interface in Lustre.
123 Requires: lustre-modules = %{version}
124 Requires: modutils >= 2.4.10
125 Requires: ldiskfsprogs >= 1.42.7.wc1
126 Provides: lustre-osd
127 Obsoletes: lustre-ldiskfs
128 Group: Development/Kernel
129
130 %description osd-ldiskfs
131 The Lustre Object Storage Device (OSD) API is the interface to access and
132 modify data that is supposed to be stored persistently. This API is the interface
133 to code that bridges individual file systems. This specific package provides an
134 implementation of the OSD API for using the Ldiskfs filesystem as the underlying
135 backing store of a Lustre server.
136 %endif
137
138 %if %{with zfs}
139 %package osd-zfs
140 Summary: osd-zfs is the mandatory glue for ZFS support in Lustre.
141 Requires: lustre-modules = %{version}, zfs-kmod
142 Provides: lustre-osd
143 Group: Development/Kernel
144
145 %description osd-zfs
146 The Lustre Object Storage Device (OSD) API is the interface to access and
147 modify data that is supposed to be stored persistently. This API is the interface
148 to code that bridges individual file systems. This specific package provides an
149 implementation of the OSD API for using the ZFS filesystem as the underlying
150 backing store of a Lustre server.
151 %endif
152
153 %package source
154 Summary: Object-Based Disk storage driver source
155 Group: Development/Kernel
156
157 %description source
158 Lustre sources for further development
159
160 # Since the RPMs we ship are to be used on both SLES and RHEL, we
161 # can't include any dependency information (since the package names
162 # are different on the two platforms).
163 #
164 # Instead, we can build these empty meta-packages that only include
165 # dependency information.  These let people get the correct
166 # dependencies for their platform and lets them use tools like yum and
167 # red carpet to install the correct files.
168 #
169 # Unfortunately I have not seen this come up on the lists much, so I
170 # have disabled them (by commenting out their empty files section
171 # below) until it's clear that they resolve more confusion than they
172 # add.
173
174 %package deps-sles
175 Summary: Lustre dependencies meta-package for SLES
176 Group: Utilities/System
177 Provides: lustre-deps = %{version}
178 Requires: %{name} = %{version}, sles-release
179 Conflicts: %{name}-deps-rhel
180
181 %description deps-sles
182 This package has RPM dependencies appropriate for SLES systems.
183
184 %package deps-rhel
185 Summary: Lustre dependencies meta-package for RHEL
186 Group: Utilities/System
187 Provides: lustre-deps = %{version}
188 Requires: %{name} = %{version}, redhat-release
189 Conflicts: %{name}-deps-sles
190
191 %description deps-rhel
192 This package has RPM dependencies appropriate for RHEL, RHL, and FC
193 systems.
194
195 %package tests
196 Summary: Lustre testing framework
197 Group: Development/Kernel
198 Provides: %{name}-tests = %{version}
199 Requires: %{name} = %{version}, %{name}-modules = %{version}, lustre-iokit
200
201 %description tests
202 This package contains a set of test binaries and scripts that are intended
203 to be used by the Lustre testing framework.
204
205 %if %{with lustre_iokit}
206 %package -n lustre-iokit
207 Summary: The Lustre IO-Kit is a collection of benchmark tools for a cluster with the Lustre file system.
208 Group: Applications/System
209 Requires: python > 2.2, sg3_utils
210
211 %description -n lustre-iokit
212 This package includes five tools:
213 sgpdd-survey:
214 A test of the 'bare metal' performance, bypassing as much of the kernel as we can. Uses the sgp_dd utility.
215
216 obdfilter-survey
217 This survey can be run in 3 modes to test disk I/O including the filesystem,
218 network I/O, and disk I/O via the network.  The script does sequential I/O
219 with varying numbers of threads and objects (files) by using lctl::test_brw
220 to drive the echo_client connected to local or remote obdfilter instances,
221 or remote obdecho instances.
222
223 ost-survey
224 This survey tests the client-to-disk performance of individual OSTs, and
225 ranks then for comparison.
226
227 stats-collect
228 This script will collect IO stats on a defined set of nodes.
229
230 ior-survey:
231 A script to run the IOR benchmark. The latest version can be downloaded from
232 http://www.llnl.gov/asci/purple/benchmarks/limited/ior/
233
234 mds-survey:
235 This survey tests the local metadata performance using the echo_client to drive
236 the MDD layer to perform operations. It is run with multiple threads (to
237 simulate MDT service threads) locally on the MDS node, and does not need Lustre
238 clients in order to run
239 %endif
240
241 %if 0%{?suse_version}
242 %debug_package
243 %endif
244 %prep
245 %setup -qn lustre-%{version}
246 ln lustre/ChangeLog ChangeLog-lustre
247 ln lnet/ChangeLog ChangeLog-lnet
248
249 %build
250 # if RPM_BUILD_NCPUS unset, set it
251 if [ -z "$RPM_BUILD_NCPUS" ] ; then
252     RPM_BUILD_NCPUS=$(egrep -c "^cpu[0-9]+" /proc/stat 2>/dev/null || echo 0 :)
253     if [ $RPM_BUILD_NCPUS -eq 0 ] ; then
254         RPM_BUILD_NCPUS=1
255     fi
256     if [ $RPM_BUILD_NCPUS -gt 8 ] ; then
257         RPM_BUILD_NCPUS=8
258     fi
259 fi
260
261 rm -rf $RPM_BUILD_ROOT
262
263 # Set an explicit path to our Linux tree, if we can.
264 cd $RPM_BUILD_DIR/lustre-%{version}
265 # override %optflags so that the vendor's overzealous flags don't create
266 # build failures
267 %define optflags -g -O2 -Werror
268 CONFIGURE_ARGS="%{?configure_args} --with-release=%release"
269 %if %{with lustre_tests}
270 CONFIGURE_ARGS="$CONFIGURE_ARGS --enable-tests --enable-liblustre-tests"
271 %else
272 CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-tests --disable-liblustre-tests"
273 %endif
274 %if %{without lustre_iokit}
275 CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-iokit"
276 %endif
277
278 # if %%kdir was given, make sure it's not in the configure arguments
279 if [ -n "%kdir" ]; then
280         CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux=[^ ][^ ]* \?//')
281 fi
282 # ditto for %%kobjdir
283 if [ -n "%kobjdir" ]; then
284         CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux-obj=[^ ][^ ]* \?//')
285 fi
286
287 # we need to eval "configure" because $CONFIGURE_ARGS could have a quoted
288 # string in it which we don't want word splitted by the shell
289 # also remove (build|host|target) options because they will be specified
290 # inside $CONFIGURE_ARGS
291 %define eval_configure %(echo '%configure' | sed -e 's#\./configure#eval ./configure#' -e 's/--\\(build\\|host\\|target\\)=[^ ][^ ]* //g')
292
293 %eval_configure \
294         %{?kdir: --with-linux=%kdir} %{?kobjdir: --with-linux-obj=%kobjdir} \
295         $CONFIGURE_ARGS
296 make -j $RPM_BUILD_NCPUS -s %{?make_args}
297
298 %install
299 make install DESTDIR=$RPM_BUILD_ROOT
300 # hack to avoid changing the libsysio code for "make install"
301 rm -f $RPM_BUILD_ROOT%{_libdir}/libsysio.a
302
303 # The .ha_v2 extension identifies the heartbeat resource agent as using
304 # legacy syntax. Install a compatibility symlink to avoid conflicts when
305 # newer-style agents are added.
306 ln -s Lustre.ha_v2 $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/Lustre
307
308 # Create the pristine source directory.
309 cd $RPM_BUILD_DIR/lustre-%{version}
310 mkdir -p $RPM_BUILD_ROOT%{_prefix}/src
311 rm -f lustre-source
312 ln -s $RPM_BUILD_ROOT%{_prefix}/src lustre-source
313 make distdir distdir=lustre-source/lustre-%{version}
314 chmod -R go-w lustre-source/lustre-%{version}
315 # fc18 needs 'x' permission for library files
316 find $RPM_BUILD_ROOT -name '*.so' | xargs chmod +x
317
318 cat >lustre.files <<EOF
319 %attr(-, root, root) %{?rootdir}/sbin/mount.lustre
320 %attr(-, root, root) %{_sbindir}/*
321 %attr(-, root, root) %{_bindir}/lfs
322 %attr(-, root, root) %{_bindir}/lfs_migrate
323 %attr(-, root, root) %{_bindir}/llbackup
324 %attr(-, root, root) %{_bindir}/llobdstat
325 %attr(-, root, root) %{_bindir}/llstat
326 %attr(-, root, root) %{_bindir}/lustre_req_history
327 %attr(-, root, root) %{_bindir}/plot-llstat
328 %attr(-, root, root) %{_bindir}/req_layout
329 %attr(-, root, root) %{_libdir}/libptlctl.a
330 %attr(-, root, root) %{_libdir}/liblustreapi.a
331 %attr(-, root, root) %{_libdir}/liblustreapi.so
332 %attr(-, root, root) %{_mandir}/man?/*
333 %attr(-, root, root) %{_datadir}/lustre
334 %attr(-, root, root) %{_includedir}/lustre
335 %attr(-, root, root) %{_includedir}/libcfs
336 %attr(-, root, root) %{_libexecdir}/lustre/lc_common
337 %attr(-, root, root) %{_sysconfdir}/udev/rules.d/99-lustre.rules
338 %attr(-, root, root) %{_sysconfdir}/init.d/lnet
339 %attr(-, root, root) %{_sysconfdir}/init.d/lustre
340 %attr(-, root, root) %config(noreplace) %{_sysconfdir}/ldev.conf
341 %attr(-, root, root) %{_sysconfdir}/sysconfig/lustre
342 %attr(-, root, root) %{_libexecdir}/lustre/haconfig
343 %attr(-, root, root) %{_sysconfdir}/ha.d/resource.d/Lustre.ha_v2
344 %attr(-, root, root) %{_sysconfdir}/ha.d/resource.d/Lustre
345 EOF
346
347 if [ -f $RPM_BUILD_ROOT%{_libdir}/libcfsutil.a ] ; then
348   echo '%attr(-, root, root) %{_libdir}/libcfsutil.a' >>lustre.files
349 fi
350
351 if [ -f $RPM_BUILD_ROOT%{_libdir}/liblustre.so ] ; then
352   echo '%attr(-, root, root) %{_libdir}/liblustre.a' >>lustre.files
353   echo '%attr(-, root, root) %{_libdir}/liblustre.so' >>lustre.files
354 fi
355
356 if [ -f $RPM_BUILD_ROOT%{_libdir}/libiam.a ] ; then
357   echo '%attr(-, root, root) %{_libdir}/libiam.a' >>lustre.files
358 fi
359
360 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/snmp ] ; then
361   echo '%attr(-, root, root) %{_libdir}/lustre/snmp' >>lustre.files
362   echo '%attr(-, root, root) %{_datadir}/lustre/snmp/mibs' >>lustre.files
363 fi
364
365 # Have universal lustre headers
366 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/lustre/lustre_idl.h ] ; then
367   echo '%attr(-, root, root) %{_includedir}/linux/lustre_user.h' >>lustre.files
368 else
369   echo '%attr(-, root, root) %{_includedir}/linux/lustre_idl.h' >>lustre.files
370 fi
371
372 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/linux/lustre_types.h ] ; then
373   echo '%attr(-, root, root) %{_includedir}/linux/lustre_types.h' >>lustre.files
374 fi
375
376 %if %{with lustre_tests}
377 echo '%attr(-, root, root) %{_libdir}/lustre/tests/*' >lustre-tests.files
378 echo '%attr(-, root, root) %{_bindir}/mcreate' >>lustre-tests.files
379 echo '%attr(-, root, root) %{_bindir}/munlink' >>lustre-tests.files
380 echo '%attr(-, root, root) %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/llog_test.*' >>lustre-tests.files
381 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/liblustre/tests ] ; then
382   echo '%attr(-, root, root) %{_libdir}/lustre/liblustre/tests/*' >>lustre-tests.files
383 fi
384 %endif
385
386 %if %{defined cross_path}
387 %if %{defined rpm_post_base}
388 POST_SCRIPT=$RPM_BUILD_DIR/lustre-%{version}/%{post_script}
389 if [ -f $POST_SCRIPT ]; then
390         cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}.sh
391         echo '%attr(0555, root, root) %{rpm_post_base}.sh' >>lustre.files
392         cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-modules.sh
393 %if %{with ldiskfs}
394         cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-osd-ldiskfs.sh
395 %endif
396 %if %{with zfs}
397         cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-osd-zfs.sh
398 %endif
399 %if %{with lustre_tests}
400         cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-tests.sh
401         echo '%attr(0555, root, root) %{rpm_post_base}-tests.sh' >>lustre-tests.files
402 %endif
403 fi
404 %endif
405 %else
406 # mark modules executable for find-debuginfo.sh
407 find $RPM_BUILD_ROOT%{?rootdir}/lib/modules/%{kversion}/updates -name "*.ko" -type f | \
408         xargs --no-run-if-empty chmod u+x
409 %endif
410
411 %files -f lustre.files
412
413 %files modules
414 %attr(-, root, root) %{?rootdir}/lib/modules/%{kversion}/updates/*
415 %if %{with lustre_tests}
416 %exclude %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/llog_test.ko
417 %endif
418 %if %{with ldiskfs}
419 %exclude %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/ldiskfs.ko
420 %exclude %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_ldiskfs.ko
421 %endif
422 %if %{with zfs}
423 %exclude %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_zfs.ko
424 %endif
425 %if %{defined rpm_post_base}
426 %attr(0555, root, root) %{rpm_post_base}-modules.sh
427 %endif
428 %attr(-, root, root) %doc COPYING
429 %attr(-, root, root) %doc ChangeLog-lustre
430 %attr(-, root, root) %doc ChangeLog-lnet
431
432 %if %{with ldiskfs}
433 %files osd-ldiskfs
434 %attr(-, root, root) %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/ldiskfs.ko
435 %attr(-, root, root) %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_ldiskfs.ko
436 %if %{defined rpm_post_base}
437 %attr(0555, root, root) %{rpm_post_base}-osd-ldiskfs.sh
438 %endif
439 %endif
440
441 %if %{with zfs}
442 %files osd-zfs
443 %attr(-, root, root) %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_zfs.ko
444 %if %{defined rpm_post_base}
445 %attr(0555, root, root) %{rpm_post_base}-osd-zfs.sh
446 %endif
447 %endif
448
449 %files source
450 %attr(-, root, root) %{_prefix}/src/lustre-%{version}
451
452 # uncomment these lines to enable deps packages
453 # %files deps-sles
454 # %files deps-rhel
455
456 %if %{with lustre_tests}
457 %files tests -f lustre-tests.files
458 %endif
459
460 %if %{with lustre_iokit}
461 %files -n lustre-iokit
462 %attr(-, root, root) %{_bindir}/ior-survey
463 %attr(-, root, root) %{_bindir}/parse-ior
464 %attr(-, root, root) %{_bindir}/libecho
465 %attr(-, root, root) %{_bindir}/obdfilter-survey
466 %attr(-, root, root) %{_bindir}/plot-obdfilter
467 %attr(-, root, root) %{_bindir}/plot-ost
468 %attr(-, root, root) %{_bindir}/ost-survey
469 %attr(-, root, root) %{_bindir}/sgpdd-survey
470 %attr(-, root, root) %{_bindir}/plot-sgpdd
471 %attr(-, root, root) %{_bindir}/lstats.sh
472 %attr(-, root, root) %{_bindir}/gather_stats_everywhere.sh
473 %attr(-, root, root) %{_bindir}/config.sh
474 %attr(-, root, root) %{_bindir}/mds-survey
475 %doc lustre-iokit/obdfilter-survey/README.obdfilter-survey
476 %doc lustre-iokit/ior-survey/README.ior-survey
477 %doc lustre-iokit/ost-survey/README.ost-survey
478 %doc lustre-iokit/mds-survey/README.mds-survey
479 %doc lustre-iokit/sgpdd-survey/README.sgpdd-survey
480 %doc lustre-iokit/stats-collect/README.lstats.sh
481 %endif
482
483 %if %{defined rpm_post_base}
484 %post
485 if [ -x %{rpm_post_base}.sh ]; then
486         %{rpm_post_base}.sh %{cross_path} create
487 fi
488
489 %preun
490 if [ -x %{rpm_post_base}.sh ]; then
491         %{rpm_post_base}.sh %{cross_path} remove
492 fi
493 %endif
494
495 %post modules
496 %if %{defined rpm_post_base}
497 if [ -x %{rpm_post_base}-modules.sh ]; then
498         %{rpm_post_base}-modules.sh %{cross_path} create
499 fi
500 %else
501 if [ -f /boot/System.map-%{kversion} ]; then
502         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
503 else
504         depmod -ae %{kversion} || exit 0
505 fi
506
507 MODULES_RPM_NAME=$(rpm -q %{name}-modules | grep "%{version}-%{release}")
508 # "weak modules" support
509 # Suse
510 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
511     rpm -ql $MODULES_RPM_NAME | grep '\.ko$' |
512         /usr/lib/module-init-tools/weak-modules --add-modules
513 fi
514 # RedHat
515 if [ -x /sbin/weak-modules ]; then
516     rpm -ql $MODULES_RPM_NAME | grep '\.ko$' |
517         /sbin/weak-modules --add-modules
518 fi
519
520 # If the kernel was built to reject unsupported modules (e.g. not a Lustre
521 # kernel), and this hasn't been overridden in /etc/modprobe.d yet, then
522 # print a warning so that users are aware of this issue.
523 if sysctl kernel.unsupported >/dev/null 2>&1 &&
524    [ "$(sysctl -n kernel.unsupported 2>/dev/null)" = "0" ] &&
525     ! modprobe -c | grep -q "^allow_unsupported_modules[ \t]1" ; then
526      echo "
527      warning: the Lustre modules are not supported by Novell. To use Lustre
528               on this system, you should put
529
530      allow_unsupported_modules 1
531
532      into /etc/modprobe.d/unsupported_modules"
533 fi
534 %endif
535
536 %if %{with ldiskfs}
537 %post osd-ldiskfs
538 %if %{defined rpm_post_base}
539 if [ -x %{rpm_post_base}-osd-ldiskfs.sh ]; then
540         %{rpm_post_base}-osd-ldiskfs.sh %{cross_path} create
541 fi
542 %else
543 if [ -f /boot/System.map-%{kversion} ]; then
544        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
545 else
546        depmod -ae %{kversion} || exit 0
547 fi
548
549 OSD_LDISKFS_RPM_NAME=$(rpm -q %{name}-osd-ldiskfs | grep "%{version}-%{release}")
550 # "weak modules" support
551 # Suse
552 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
553     rpm -ql $OSD_LDISKFS_RPM_NAME | grep '\.ko$' |
554         /usr/lib/module-init-tools/weak-modules --add-modules
555 fi
556 # RedHat
557 if [ -x /sbin/weak-modules ]; then
558     rpm -ql $OSD_LDISKFS_RPM_NAME | grep '\.ko$' |
559         /sbin/weak-modules --add-modules
560 fi
561
562 # If the kernel was built to reject unsupported modules (e.g. not a Lustre
563 # kernel), and this hasn't been overridden in /etc/modprobe.d yet, then
564 # print a warning so that users are aware of this issue.
565 if sysctl kernel.unsupported >/dev/null 2>&1 &&
566    [ "$(sysctl -n kernel.unsupported 2>/dev/null)" = "0" ] &&
567     ! modprobe -c | grep -q "^allow_unsupported_modules[ \t]1" ; then
568      echo "
569      warning: the Lustre modules are not supported by Novell. To use Lustre
570               on this system, you should put
571
572      allow_unsupported_modules 1
573
574      into /etc/modprobe.d/unsupported_modules"
575 fi
576 %endif
577 %endif
578
579 %if %{with zfs}
580 %post osd-zfs
581 %if %{defined rpm_post_base}
582 if [ -x %{rpm_post_base}-osd-zfs.sh ]; then
583         %{rpm_post_base}-osd-zfs.sh %{cross_path} create
584 fi
585 %else
586 if [ -f /boot/System.map-%{kversion} ]; then
587        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
588 else
589        depmod -ae %{kversion} || exit 0
590 fi
591
592 OSD_ZFS_RPM_NAME=$(rpm -q %{name}-osd-zfs | grep "%{version}-%{release}")
593 # "weak modules" support
594 # Suse
595 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
596     rpm -ql $OSD_ZFS_RPM_NAME | grep '\.ko$' |
597         /usr/lib/module-init-tools/weak-modules --add-modules
598 fi
599 # RedHat
600 if [ -x /sbin/weak-modules ]; then
601     rpm -ql $OSD_ZFS_RPM_NAME | grep '\.ko$' |
602         /sbin/weak-modules --add-modules
603 fi
604
605 # If the kernel was built to reject unsupported modules (e.g. not a Lustre
606 # kernel), and this hasn't been overridden in /etc/modprobe.d yet, then
607 # print a warning so that users are aware of this issue.
608 if sysctl kernel.unsupported >/dev/null 2>&1 &&
609    [ "$(sysctl -n kernel.unsupported 2>/dev/null)" = "0" ] &&
610     ! modprobe -c | grep -q "^allow_unsupported_modules[ \t]1" ; then
611      echo "
612      warning: the Lustre modules are not supported by Novell. To use Lustre
613               on this system, you should put
614
615      allow_unsupported_modules 1
616
617      into /etc/modprobe.d/unsupported_modules"
618 fi
619 %endif
620 %endif
621
622 %preun modules
623 %if %{defined rpm_post_base}
624 if [ -x %{rpm_post_base}-modules.sh ]; then
625         %{rpm_post_base}-modules.sh %{cross_path} remove
626 fi
627 %else
628 MODULES_RPM_NAME=$(rpm -q %{name}-modules | grep "%{version}-%{release}")
629 rpm -ql $MODULES_RPM_NAME | grep '\.ko$' > /var/run/%{name}-modules || true
630 %endif
631
632 %if %{with ldiskfs}
633 %preun osd-ldiskfs
634 %if %{defined rpm_post_base}
635 if [ -x %{rpm_post_base}-osd-ldiskfs.sh ]; then
636         %{rpm_post_base}-osd-ldiskfs.sh %{cross_path} remove
637 fi
638 %else
639 OSD_LDISKFS_RPM_NAME=$(rpm -q %{name}-osd-ldiskfs | grep "%{version}-%{release}")
640 rpm -ql $OSD_LDISKFS_RPM_NAME | grep '\.ko$' > /var/run/%{name}-osd-ldiskfs || true
641 %endif
642 %endif
643
644 %if %{with zfs}
645 %preun osd-zfs
646 %if %{defined rpm_post_base}
647 if [ -x %{rpm_post_base}-osd-zfs.sh ]; then
648         %{rpm_post_base}-osd-zfs.sh %{cross_path} remove
649 fi
650 %else
651 OSD_ZFS_RPM_NAME=$(rpm -q %{name}-osd-zfs | grep "%{version}-%{release}")
652 rpm -ql $OSD_ZFS_RPM_NAME | grep '\.ko$' > /var/run/%{name}-osd-zfs || true
653 %endif
654 %endif
655
656 %if %{undefined cross_path}
657 %postun modules
658 if [ -f /boot/System.map-%{kversion} ]; then
659         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
660 else
661         depmod -ae %{kversion} || exit 0
662 fi
663
664 # "weak modules" support
665 # Suse
666 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
667     cat /var/run/%{name}-modules |
668         /usr/lib/module-init-tools/weak-modules --remove-modules
669 fi
670 # RedHat
671 if [ -x /sbin/weak-modules ]; then
672     cat /var/run/%{name}-modules |
673         /sbin/weak-modules --remove-modules
674 fi
675 rm /var/run/%{name}-modules
676
677 %if %{with ldiskfs}
678 %postun osd-ldiskfs
679 if [ -f /boot/System.map-%{kversion} ]; then
680        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
681 else
682        depmod -ae %{kversion} || exit 0
683 fi
684
685 # "weak modules" support
686 # Suse
687 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
688     cat /var/run/%{name}-osd-ldiskfs |
689         /usr/lib/module-init-tools/weak-modules --remove-modules
690 fi
691 # RedHat
692 if [ -x /sbin/weak-modules ]; then
693     cat /var/run/%{name}-osd-ldiskfs |
694         /sbin/weak-modules --remove-modules
695 fi
696 rm /var/run/%{name}-osd-ldiskfs
697 %endif
698
699 %if %{with zfs}
700 %postun osd-zfs
701 if [ -f /boot/System.map-%{kversion} ]; then
702        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
703 else
704        depmod -ae %{kversion} || exit 0
705 fi
706
707 # "weak modules" support
708 # Suse
709 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
710     cat /var/run/%{name}-osd-zfs |
711         /usr/lib/module-init-tools/weak-modules --remove-modules
712 fi
713 # RedHat
714 if [ -x /sbin/weak-modules ]; then
715     cat /var/run/%{name}-osd-zfs |
716         /sbin/weak-modules --remove-modules
717 fi
718 rm /var/run/%{name}-osd-zfs
719 %endif
720 %endif
721
722 %if %{with lustre_tests}
723 %post tests
724 %if %{defined rpm_post_base}
725 if [ -x %{rpm_post_base}-tests.sh ]; then
726         %{rpm_post_base}-tests.sh %{cross_path} create
727 fi
728
729 %preun tests
730 if [ -x %{rpm_post_base}-tests.sh ]; then
731         %{rpm_post_base}-tests.sh %{cross_path} remove
732 fi
733 %else
734 if [ -f /boot/System.map-%{kversion} ]; then
735         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
736 else
737         depmod -ae %{kversion} || exit 0
738 fi
739
740 %postun tests
741 if [ -f /boot/System.map-%{kversion} ]; then
742         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
743 else
744         depmod -ae %{kversion} || exit 0
745 fi
746 %endif
747 %endif
748
749 %clean
750 rm -rf $RPM_BUILD_ROOT