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