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