Whamcloud - gitweb
LU-4974 lod: add prefix to struct lod_pool_iterator
[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"
274 %else
275 CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-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
313 :> lustre.files
314
315 %if %{with servers}
316 # The .ha_v2 extension identifies the heartbeat resource agent as using
317 # legacy syntax. Install a compatibility symlink to avoid conflicts when
318 # newer-style agents are added.
319 ln -s Lustre.ha_v2 $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/Lustre
320 echo '%{_sysconfdir}/ha.d/resource.d/Lustre.ha_v2' >>lustre.files
321 echo '%{_sysconfdir}/ha.d/resource.d/Lustre' >>lustre.files
322
323 if [ -f $RPM_BUILD_ROOT%{_sysconfdir}/init.d/lustre ]; then
324         echo '%{_sysconfdir}/sysconfig/lustre' >>lustre.files
325         echo '%{_sysconfdir}/init.d/lustre' >>lustre.files
326 fi
327 %endif
328
329 if [ -f $RPM_BUILD_ROOT%{_sysconfdir}/init.d/lnet ]; then
330         echo '%{_sysconfdir}/init.d/lnet' >>lustre.files
331 fi
332
333 # Create the pristine source directory.
334 cd $RPM_BUILD_DIR/lustre-%{version}
335 mkdir -p $RPM_BUILD_ROOT%{_prefix}/src
336 rm -f lustre-source
337 ln -s $RPM_BUILD_ROOT%{_prefix}/src lustre-source
338 make distdir distdir=lustre-source/lustre-%{version}
339 chmod -R go-w lustre-source/lustre-%{version}
340 # fc18 needs 'x' permission for library files
341 find $RPM_BUILD_ROOT -name '*.so' | xargs chmod +x
342
343 if [ -f $RPM_BUILD_ROOT%{_libdir}/libiam.a ] ; then
344   echo '%{_libdir}/libiam.a' >>lustre.files
345 fi
346
347 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/snmp ] ; then
348   echo '%{_libdir}/lustre/snmp' >>lustre.files
349   echo '%{_datadir}/lustre/snmp/mibs' >>lustre.files
350 fi
351
352 %if %{with lustre_tests}
353 echo '%{_libdir}/lustre/tests/*' >>lustre-tests.files
354 echo '%{_bindir}/mcreate' >>lustre-tests.files
355 echo '%{_bindir}/munlink' >>lustre-tests.files
356 %if %{with lustre_modules}
357 echo '%{?rootdir}/lib/modules/%{kversion}/%{kmoddir}/kernel/fs/@PACKAGE@/llog_test.ko' >>lustre-tests.files
358 %endif
359 %endif
360
361 %if %{defined cross_path}
362 %if %{defined rpm_post_base}
363 POST_SCRIPT=$RPM_BUILD_DIR/lustre-%{version}/%{post_script}
364 if [ -f $POST_SCRIPT ]; then
365         cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}.sh
366         echo '%attr(0555, root, root) %{rpm_post_base}.sh' >>lustre.files
367         cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-modules.sh
368 %if %{with ldiskfs}
369         cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-osd-ldiskfs.sh
370 %endif
371 %if %{with zfs}
372         cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-osd-zfs.sh
373 %endif
374 %if %{with lustre_tests}
375         cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-tests.sh
376         echo '%attr(0555, root, root) %{rpm_post_base}-tests.sh' >>lustre-tests.files
377 %endif
378 fi
379 %endif
380 %else
381 # mark modules executable for find-debuginfo.sh
382 find $RPM_BUILD_ROOT%{?rootdir}/lib/modules/%{kversion}/%{kmoddir} -name "*.ko" -type f | \
383         xargs --no-run-if-empty chmod u+x
384 %endif
385
386 %files -f lustre.files
387 %defattr(-,root,root)
388 %{?rootdir}/sbin/mount.lustre
389 %{_sbindir}/*
390 %{_bindir}/lfs
391 %{_bindir}/lfs_migrate
392 %{_bindir}/llbackup
393 %{_bindir}/llobdstat
394 %{_bindir}/llstat
395 %{_bindir}/lustre_req_history
396 %{_bindir}/plot-llstat
397 %{_bindir}/req_layout
398 %{_libdir}/libptlctl.a
399 %{_libdir}/libcfsutil.a
400 %{_libdir}/liblustreapi.a
401 %{_libdir}/liblustreapi.so
402 %{_mandir}/man?/*
403 %{_datadir}/lustre
404 %{_includedir}/lustre
405 %{_includedir}/libcfs
406 %{_includedir}/linux/lustre_user.h
407 %{_libexecdir}/lustre/lc_common
408 %{_libexecdir}/lustre/haconfig
409 %{_sysconfdir}/udev/rules.d/99-lustre.rules
410 %config(noreplace) %{_sysconfdir}/ldev.conf
411
412 %if %{with lustre_modules}
413 %files modules
414 %defattr(-,root,root)
415 %{?rootdir}/lib/modules/%{kversion}/%{kmoddir}/*
416 %if %{with lustre_tests}
417 %exclude %{?rootdir}/lib/modules/%{kversion}/%{kmoddir}/kernel/fs/@PACKAGE@/llog_test.ko
418 %endif
419 %if %{with ldiskfs}
420 %exclude %{?rootdir}/lib/modules/%{kversion}/%{kmoddir}/kernel/fs/@PACKAGE@/ldiskfs.ko
421 %exclude %{?rootdir}/lib/modules/%{kversion}/%{kmoddir}/kernel/fs/@PACKAGE@/osd_ldiskfs.ko
422 %endif
423 %if %{with zfs}
424 %exclude %{?rootdir}/lib/modules/%{kversion}/%{kmoddir}/kernel/fs/@PACKAGE@/osd_zfs.ko
425 %endif
426 %if %{defined rpm_post_base}
427 %attr(0555, root, root) %{rpm_post_base}-modules.sh
428 %endif
429 %doc COPYING
430 %doc ChangeLog-lustre
431 %doc ChangeLog-lnet
432
433 %if %{with ldiskfs}
434 %files osd-ldiskfs
435 %defattr(-,root,root)
436 %{?rootdir}/lib/modules/%{kversion}/%{kmoddir}/kernel/fs/@PACKAGE@/ldiskfs.ko
437 %{?rootdir}/lib/modules/%{kversion}/%{kmoddir}/kernel/fs/@PACKAGE@/osd_ldiskfs.ko
438 %if %{defined rpm_post_base}
439 %attr(0555, root, root) %{rpm_post_base}-osd-ldiskfs.sh
440 %endif
441 %endif
442
443 %if %{with zfs}
444 %files osd-zfs
445 %defattr(-,root,root)
446 %{?rootdir}/lib/modules/%{kversion}/%{kmoddir}/kernel/fs/@PACKAGE@/osd_zfs.ko
447 %if %{defined rpm_post_base}
448 %attr(0555, root, root) %{rpm_post_base}-osd-zfs.sh
449 %endif
450 %endif
451 %endif # with lustre_modules
452
453 %files source
454 %defattr(-,root,root)
455 %{_prefix}/src/lustre-%{version}
456
457 # uncomment these lines to enable deps packages
458 # %files deps-sles
459 # %files deps-rhel
460
461 %if %{with lustre_tests}
462 %files tests -f lustre-tests.files
463 %defattr(-,root,root)
464 %endif
465
466 %if %{with lustre_iokit}
467 %files -n lustre-iokit
468 %defattr(-, root, root)
469 %{_bindir}/ior-survey
470 %{_bindir}/parse-ior
471 %{_bindir}/libecho
472 %{_bindir}/obdfilter-survey
473 %{_bindir}/plot-obdfilter
474 %{_bindir}/plot-ost
475 %{_bindir}/ost-survey
476 %{_bindir}/sgpdd-survey
477 %{_bindir}/plot-sgpdd
478 %{_bindir}/lstats.sh
479 %{_bindir}/gather_stats_everywhere.sh
480 %{_bindir}/config.sh
481 %{_bindir}/mds-survey
482 %doc lustre-iokit/obdfilter-survey/README.obdfilter-survey
483 %doc lustre-iokit/ior-survey/README.ior-survey
484 %doc lustre-iokit/ost-survey/README.ost-survey
485 %doc lustre-iokit/mds-survey/README.mds-survey
486 %doc lustre-iokit/sgpdd-survey/README.sgpdd-survey
487 %doc lustre-iokit/stats-collect/README.lstats.sh
488 %endif
489
490 %if %{defined rpm_post_base}
491 %post
492 if [ -x %{rpm_post_base}.sh ]; then
493         %{rpm_post_base}.sh %{cross_path} create
494 fi
495
496 %preun
497 if [ -x %{rpm_post_base}.sh ]; then
498         %{rpm_post_base}.sh %{cross_path} remove
499 fi
500 %endif
501
502 %if %{with lustre_modules}
503 %post modules
504 %if %{defined rpm_post_base}
505 if [ -x %{rpm_post_base}-modules.sh ]; then
506         %{rpm_post_base}-modules.sh %{cross_path} create
507 fi
508 %else
509 if [ -f /boot/System.map-%{kversion} ]; then
510         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
511 else
512         depmod -ae %{kversion} || exit 0
513 fi
514
515 MODULES_RPM_NAME=$(rpm -q %{name}-modules | grep "%{version}-%{release}")
516 # "weak modules" support
517 # Suse
518 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
519     rpm -ql $MODULES_RPM_NAME | grep '\.ko$' |
520         /usr/lib/module-init-tools/weak-modules --add-modules
521 fi
522 # RedHat
523 if [ -x /sbin/weak-modules ]; then
524     rpm -ql $MODULES_RPM_NAME | grep '\.ko$' |
525         /sbin/weak-modules --add-modules
526 fi
527
528 # If the kernel was built to reject unsupported modules (e.g. not a Lustre
529 # kernel), and this hasn't been overridden in /etc/modprobe.d yet, then
530 # print a warning so that users are aware of this issue.
531 if sysctl kernel.unsupported >/dev/null 2>&1 &&
532    [ "$(sysctl -n kernel.unsupported 2>/dev/null)" = "0" ] &&
533     ! modprobe -c | grep -q "^allow_unsupported_modules[ \t]1" ; then
534      echo "
535      warning: the Lustre modules are not supported by Novell. To use Lustre
536               on this system, you should put
537
538      allow_unsupported_modules 1
539
540      into /etc/modprobe.d/unsupported_modules"
541 fi
542 %endif
543
544 %if %{with ldiskfs}
545 %post osd-ldiskfs
546 %if %{defined rpm_post_base}
547 if [ -x %{rpm_post_base}-osd-ldiskfs.sh ]; then
548         %{rpm_post_base}-osd-ldiskfs.sh %{cross_path} create
549 fi
550 %else
551 if [ -f /boot/System.map-%{kversion} ]; then
552        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
553 else
554        depmod -ae %{kversion} || exit 0
555 fi
556
557 OSD_LDISKFS_RPM_NAME=$(rpm -q %{name}-osd-ldiskfs | grep "%{version}-%{release}")
558 # "weak modules" support
559 # Suse
560 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
561     rpm -ql $OSD_LDISKFS_RPM_NAME | grep '\.ko$' |
562         /usr/lib/module-init-tools/weak-modules --add-modules
563 fi
564 # RedHat
565 if [ -x /sbin/weak-modules ]; then
566     rpm -ql $OSD_LDISKFS_RPM_NAME | grep '\.ko$' |
567         /sbin/weak-modules --add-modules
568 fi
569
570 # If the kernel was built to reject unsupported modules (e.g. not a Lustre
571 # kernel), and this hasn't been overridden in /etc/modprobe.d yet, then
572 # print a warning so that users are aware of this issue.
573 if sysctl kernel.unsupported >/dev/null 2>&1 &&
574    [ "$(sysctl -n kernel.unsupported 2>/dev/null)" = "0" ] &&
575     ! modprobe -c | grep -q "^allow_unsupported_modules[ \t]1" ; then
576      echo "
577      warning: the Lustre modules are not supported by Novell. To use Lustre
578               on this system, you should put
579
580      allow_unsupported_modules 1
581
582      into /etc/modprobe.d/unsupported_modules"
583 fi
584 %endif
585 %endif
586
587 %if %{with zfs}
588 %post osd-zfs
589 %if %{defined rpm_post_base}
590 if [ -x %{rpm_post_base}-osd-zfs.sh ]; then
591         %{rpm_post_base}-osd-zfs.sh %{cross_path} create
592 fi
593 %else
594 if [ -f /boot/System.map-%{kversion} ]; then
595        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
596 else
597        depmod -ae %{kversion} || exit 0
598 fi
599
600 OSD_ZFS_RPM_NAME=$(rpm -q %{name}-osd-zfs | grep "%{version}-%{release}")
601 # "weak modules" support
602 # Suse
603 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
604     rpm -ql $OSD_ZFS_RPM_NAME | grep '\.ko$' |
605         /usr/lib/module-init-tools/weak-modules --add-modules
606 fi
607 # RedHat
608 if [ -x /sbin/weak-modules ]; then
609     rpm -ql $OSD_ZFS_RPM_NAME | grep '\.ko$' |
610         /sbin/weak-modules --add-modules
611 fi
612
613 # If the kernel was built to reject unsupported modules (e.g. not a Lustre
614 # kernel), and this hasn't been overridden in /etc/modprobe.d yet, then
615 # print a warning so that users are aware of this issue.
616 if sysctl kernel.unsupported >/dev/null 2>&1 &&
617    [ "$(sysctl -n kernel.unsupported 2>/dev/null)" = "0" ] &&
618     ! modprobe -c | grep -q "^allow_unsupported_modules[ \t]1" ; then
619      echo "
620      warning: the Lustre modules are not supported by Novell. To use Lustre
621               on this system, you should put
622
623      allow_unsupported_modules 1
624
625      into /etc/modprobe.d/unsupported_modules"
626 fi
627 %endif
628 %endif
629
630 %preun modules
631 %if %{defined rpm_post_base}
632 if [ -x %{rpm_post_base}-modules.sh ]; then
633         %{rpm_post_base}-modules.sh %{cross_path} remove
634 fi
635 %else
636 MODULES_RPM_NAME=$(rpm -q %{name}-modules | grep "%{version}-%{release}")
637 rpm -ql $MODULES_RPM_NAME | grep '\.ko$' > /var/run/%{name}-modules || true
638 %endif
639
640 %if %{with ldiskfs}
641 %preun osd-ldiskfs
642 %if %{defined rpm_post_base}
643 if [ -x %{rpm_post_base}-osd-ldiskfs.sh ]; then
644         %{rpm_post_base}-osd-ldiskfs.sh %{cross_path} remove
645 fi
646 %else
647 OSD_LDISKFS_RPM_NAME=$(rpm -q %{name}-osd-ldiskfs | grep "%{version}-%{release}")
648 rpm -ql $OSD_LDISKFS_RPM_NAME | grep '\.ko$' > /var/run/%{name}-osd-ldiskfs || true
649 %endif
650 %endif
651
652 %if %{with zfs}
653 %preun osd-zfs
654 %if %{defined rpm_post_base}
655 if [ -x %{rpm_post_base}-osd-zfs.sh ]; then
656         %{rpm_post_base}-osd-zfs.sh %{cross_path} remove
657 fi
658 %else
659 OSD_ZFS_RPM_NAME=$(rpm -q %{name}-osd-zfs | grep "%{version}-%{release}")
660 rpm -ql $OSD_ZFS_RPM_NAME | grep '\.ko$' > /var/run/%{name}-osd-zfs || true
661 %endif
662 %endif
663
664 %if %{undefined cross_path}
665 %postun modules
666 if [ -f /boot/System.map-%{kversion} ]; then
667         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
668 else
669         depmod -ae %{kversion} || exit 0
670 fi
671
672 # "weak modules" support
673 # Suse
674 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
675     cat /var/run/%{name}-modules |
676         /usr/lib/module-init-tools/weak-modules --remove-modules
677 fi
678 # RedHat
679 if [ -x /sbin/weak-modules ]; then
680     cat /var/run/%{name}-modules |
681         /sbin/weak-modules --remove-modules
682 fi
683 rm /var/run/%{name}-modules
684
685 %if %{with ldiskfs}
686 %postun osd-ldiskfs
687 if [ -f /boot/System.map-%{kversion} ]; then
688        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
689 else
690        depmod -ae %{kversion} || exit 0
691 fi
692
693 # "weak modules" support
694 # Suse
695 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
696     cat /var/run/%{name}-osd-ldiskfs |
697         /usr/lib/module-init-tools/weak-modules --remove-modules
698 fi
699 # RedHat
700 if [ -x /sbin/weak-modules ]; then
701     cat /var/run/%{name}-osd-ldiskfs |
702         /sbin/weak-modules --remove-modules
703 fi
704 rm /var/run/%{name}-osd-ldiskfs
705 %endif
706
707 %if %{with zfs}
708 %postun osd-zfs
709 if [ -f /boot/System.map-%{kversion} ]; then
710        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
711 else
712        depmod -ae %{kversion} || exit 0
713 fi
714
715 # "weak modules" support
716 # Suse
717 if [ -x /usr/lib/module-init-tools/weak-modules ]; then
718     cat /var/run/%{name}-osd-zfs |
719         /usr/lib/module-init-tools/weak-modules --remove-modules
720 fi
721 # RedHat
722 if [ -x /sbin/weak-modules ]; then
723     cat /var/run/%{name}-osd-zfs |
724         /sbin/weak-modules --remove-modules
725 fi
726 rm /var/run/%{name}-osd-zfs
727 %endif
728 %endif
729 %endif # with lustre_modules
730
731 %if %{with lustre_tests}
732 %if %{defined rpm_post_base}
733 %post tests
734 if [ -x %{rpm_post_base}-tests.sh ]; then
735         %{rpm_post_base}-tests.sh %{cross_path} create
736 fi
737
738 %preun tests
739 if [ -x %{rpm_post_base}-tests.sh ]; then
740         %{rpm_post_base}-tests.sh %{cross_path} remove
741 fi
742 %else
743 %if %{with lustre_modules}
744 %post tests
745 if [ -f /boot/System.map-%{kversion} ]; then
746         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
747 else
748         depmod -ae %{kversion} || exit 0
749 fi
750
751 %postun tests
752 if [ -f /boot/System.map-%{kversion} ]; then
753         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
754 else
755         depmod -ae %{kversion} || exit 0
756 fi
757 %endif
758 %endif
759 %endif
760
761 %clean
762 rm -rf $RPM_BUILD_ROOT