Whamcloud - gitweb
LU-19098 hsm: don't print progname twice with lhsmtool
[fs/lustre-release.git] / lustre.spec.in
1 # SPDX-License-Identifier: GPL-2.0
2
3 #
4 # This file is part of Lustre, http://www.lustre.org/
5 #
6 # lustre.spec.in
7 #
8 # spec file template for RHEL package builds
9 #
10
11 # Declare rpmbuild --with/--without parameters
12 %bcond_without servers
13 %bcond_without ldiskfs
14 %bcond_with zfs
15 %bcond_without lustre_tests
16 %bcond_without lustre_utils
17 %bcond_without lustre_iokit
18 %bcond_without lustre_modules
19 %bcond_with gss
20 %bcond_with gss_keyring
21 %bcond_without manpages
22 %bcond_without shared
23 %bcond_without static
24 %bcond_with systemd
25 %bcond_without mpi
26 %bcond_with kabi
27 %bcond_with multiple_lnds
28 %bcond_with mofed
29 %bcond_without o2ib
30 %bcond_with kfi
31 %bcond_with gni
32 %bcond_without l_getsepol
33
34 %if %{with multiple_lnds}
35 %global enable_multi_lnds 1
36 %endif
37
38 # LUTF Turn off brp-python-precompile script as we don't want the python files
39 # to be compiled on installation
40 %global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
41
42 # By default both gss and gss keyring are disabled.
43 # gss keyring requires the gss core. If the builder
44 # request gss_keyring we must enable gss core even if
45 # the builder attempts to disable gss.
46 %if %{with gss_keyring}
47     %define with_gss 1
48 %endif
49
50 %if %{without servers}
51     # --without servers overrides --with {ldiskfs|zfs}
52     # so undefine the internal variables set by bcond_*
53     %undefine with_ldiskfs
54     %undefine with_zfs
55 %endif
56
57 %if %{without shared} && %{without static}
58 # need exit to stop build because error only displays a message
59 %{error: you can't disable both library types}
60 %{exit 1}
61 %endif
62
63 # lustre_tests depends on lustre_utils
64 %if %{without lustre_utils}
65 %undefine with_lustre_tests
66 %endif
67
68 %{!?version: %global version @VERSION@}
69 # if you want a custom kernel version set it variable with $ver.$arch
70 %{!?kver:    %global kver    @LINUXRELEASE@}
71 # cut epoch for kmodtool
72 %define _kver %(echo %{kver} | sed -e 's/^[0-9]*://')
73 # trust version from kdir - but it can lost 'epoch'
74 %if %{defined kdir}
75         %define _take_kver 1
76 %endif
77 %if %{defined kobjdir}
78         %define _take_kobj 1
79 %endif
80 %{!?kdir:    %global kdir    /lib/modules/%{_kver}/source}
81 %{!?kobjdir: %global kobjdir %(if [ "%{kdir}" = "/lib/modules/%{_kver}/source" ]; then echo "/lib/modules/%{_kver}/build"; else echo "%{kdir}"; fi)}
82
83 %if %{defined _take_kver}
84 # as an alternative to this implementation we could simply "make -C $kdir kernelversion"
85 %global kver %(files="include/generated/utsrelease.h include/linux/utsrelease.h include/linux/version.h"; for f in $files; do if test -r %{kobjdir}/$f && grep UTS_RELEASE %{kobjdir}/$f >/dev/null; then sed -ne '/^#define UTS_RELEASE/s/.*"\\(.*\\)"$/\\1/p' %{kobjdir}/$f; break; fi; done)
86 %define _kver %kver
87 %endif
88
89 %if %{undefined _flavor}
90 %if 0%{?suse_version} >= 1310 && %{defined _take_kobj}
91         %global _flavor %(echo %{_kver} | sed -e 's/^.*-//')
92 %else
93         %global _flavor default
94 %endif
95 %endif
96
97 # We set this because kernel_module_package has its own method of identifying
98 # which kernel to build against, and it is unlikely that its decision will
99 # match with Lustre's method of selecting which kernel to build against.
100 # By setting this variable, we override kernel_module_package's kernel
101 # selection with our selection.
102 # kmodtool failed to take a version if epoch set
103 %global kernel_version %_kver
104
105 # in order to get kernel symset and/or kernel module dependencies into
106 # the RPM, in order to support weak-modules, the internal dependency gen-
107 # erator needs to be disabled
108 # this is done with (reduce the double % down to a single %):
109 #
110 # %%global _use_internal_dependency_generator 0
111 #
112 # on SLES10, /usr/lib/rpm/macros already sets this, so no harm in also
113 # defining it here (until Suse changes their mind)
114 #
115 # on RHEL5, however, we do need to explicitly disable the internal dep-
116 # endency generator and allow the external one be used
117 # but since RedHat's kABI is only a subset of the total kernel ABI, it
118 # doesn't include all of the symbols we (or OFED for that matter) need
119 # until RedHat includes all of the symbols we need in their symsets we
120 # cannot support weak-modules
121 # we did e-mail the maintainer of all of this stuff @redhat but got no
122 # response from them
123 #%%global _use_internal_dependency_generator 0
124
125 %if 0%{?rhel} > 7 || 0%{?fedora} > 33
126 ## SUSE uses another tool for provides:
127 ## https://github.com/openSUSE/kernel-source/blob/master/patches.rpmify/Add-ksym-provides-tool.patch
128 %global __find_provides   %{_sourcedir}/find-provides
129 %endif
130
131 # Set the package name prefix
132 %if %{undefined lustre_name}
133     %if %{with servers}
134         %global lustre_name lustre
135     %else
136         %global lustre_name lustre-client
137     %endif
138 %endif
139
140 %if %{with lustre_modules}
141 %if %{undefined kmoddir}
142     %if %{defined kernel_module_package_moddir}
143         %global kmoddir %{kernel_module_package_moddir}
144     %else
145         %if %{defined suse_kernel_module_package}
146             %global kmoddir updates
147         %else
148             %global kmoddir extra
149         %endif
150     %endif
151 %endif
152
153 %global modules_fs_path /lib/modules/%{_kver}/%{kmoddir}
154 # requires want to set a version including epoch
155 %global krequires %(echo %{kver} | sed -e 's/\.x86_64$//' -e 's/\.i[3456]86$//' -e 's/-smp$//' -e 's/-bigsmp$//' -e 's/[-.]ppc64$//' -e 's/\.aarch64$//' -e 's/-default$//' -e 's/-%{_flavor}//')
156
157 %if "%{_vendor}" == "redhat" || "%{_vendor}" == "fedora" || 0%{?openEuler}
158         %global kmod_prefix kmod-
159         %global kmod_postfix %{nil}
160         %global kmod_flavor %{nil}
161         %global requires_kmod_version %{version}
162 #for Suse
163 %else
164         %global kmod_prefix %{nil}
165         %global kmod_postfix -kmp
166         %global kmod_flavor -%{_flavor}
167         %if 0%{?suse_version} >= 1200
168                 %global requires_kmod_version %{version}_k%(echo %{krequires} | sed -r 'y/-/_/; s/^(2\.6\.[0-9]+)_/\\1.0_/;')
169         %else
170                 %global requires_kmod_version %{version}_%(echo %{krequires} | sed -r 'y/-/_/; s/^(2\.6\.[0-9]+)_/\\1.0_/;')
171         %endif
172 %endif
173 %global requires_kmod_name %{kmod_prefix}%{lustre_name}%{kmod_postfix}
174 %global requires_kmod_osd_zfs_name %{kmod_prefix}%{lustre_name}-osd-zfs%{kmod_postfix}
175 %if %{with lustre_tests}
176         %global requires_kmod_tests_name %{kmod_prefix}%{lustre_name}-tests%{kmod_postfix}
177 %endif
178 %global kmod_devel_pkg %{kmod_prefix}%{lustre_name}%{kmod_postfix}-devel
179 %global requires_release_major_minor %(echo %version | cut -d. -f1).%(echo %version | cut -d. -f2)
180 %endif
181
182 # RHEL >= 7 comes with systemd
183 %if 0%{?rhel} >= 7
184 %define with_systemd 1
185 %endif
186
187 # Fedora >= 15 comes with systemd, but only >= 18 has
188 # the proper macros
189 %if 0%{?fedora} >= 18
190 %define with_systemd 1
191 %endif
192
193 # opensuse >= 12.1 comes with systemd, but only >= 13.1
194 # has the proper macros
195 %if 0%{?suse_version} >= 1310
196 %define with_systemd 1
197 %endif
198
199 # openEuler comes with systemd
200 %if 0%{?openEuler}
201 %define with_systemd 1
202 %endif
203
204 # Detect when mlnx-ofa_kernel-devel contents exist and mofed_source to 0
205 %define mofed_src_path  $(echo %{?configure_args} | tr ' ' '\\n' | grep -- '--with-o2ib=' | cut -c 13-)
206 %define mofed_source    %(test -f %mofed_src_path/Module.symvers; echo $?)
207 # Update the search path for mofed_scripts
208 %if 0%{?mofed_source} > 0
209 %define mofed_default_path      /usr/src/ofa_kernel/
210 %else
211 %define mofed_default_path      %{mofed_src_path}
212 %endif
213
214 %{!?mpi_name: %global mpi_name openmpi}
215
216 Summary: Lustre File System
217 Name: %{lustre_name}
218 Version: %{version}
219 Release: 1%{?dist}
220 License: GPL-2.0-only AND LGPL-2.1-or-later
221 %if 0%{?suse_version} >= 1310
222 # SUSE needs Group for the kernel_module_package macro
223 Group: System/Kernel
224 %endif
225 Source: lustre-%{version}.tar.gz
226 Source1: kmp-lustre.preamble
227 Source2: kmp-lustre.files
228 Source3: kmp-lustre-osd-ldiskfs.preamble
229 Source4: kmp-lustre-osd-ldiskfs.files
230 Source5: kmp-lustre-osd-zfs.preamble
231 Source6: kmp-lustre-osd-zfs.files
232 Source7: kmp-lustre-tests.preamble
233 Source8: kmp-lustre-tests.files
234 Source9: find-provides
235 Source10: find-provides.ksyms
236 Source11: kmp-lnet-socklnd.preamble
237 Source12: kmp-lnet-socklnd.files
238 Source13: kmp-lnet-o2iblnd.preamble
239 Source14: kmp-lnet-o2iblnd.files
240 Source15: kmp-lnet-gnilnd.preamble
241 Source16: kmp-lnet-gnilnd.files
242 Source17: kmp-lnet-kfilnd.preamble
243 Source18: kmp-lnet-kfilnd.files
244 Source19: kmp-lnet-in-kernel-o2iblnd.preamble
245 Source20: kmp-lnet-in-kernel-o2iblnd.files
246 Source21: kmp-lustre-osd-wbcfs.preamble
247 Source22: kmp-lustre-osd-wbcfs.files
248 URL: https://wiki.whamcloud.com/
249 BuildRoot: %{_tmppath}/lustre-%{version}-root
250 BuildRequires: libtool pkgconfig(yaml-0.1) pkgconfig(zlib) pkgconfig(libnl-3.0) flex bison
251 Obsoletes: lustre-client < %{version}
252 Provides: lustre-client = %{version}-%{release}
253 # Lustre modules
254 %if %{with lustre_modules}
255 #
256 %if 0%{?suse_version} >= 1500 || 0%{?rhel} >= 8 || 0%{?fedora} >= 34
257 Requires: (%{lustre_name}-dkms or %{requires_kmod_name} >= %{requires_release_major_minor})
258 %else
259 Requires: %{requires_kmod_name} >= %{requires_release_major_minor}
260 %endif
261 #
262 # abuild (auto-build) used by SUSE Open Build Service needs kernel-source as
263 # a build requirement, but the code which extracts these requirements does not
264 # understand the percent-open-close-paren construct aka %%()
265 #  [NOTE: a percent abovie is doubled to avoid yet another rpmbuild warning]
266 # such occurances as failures.  So the following dance allows the requirements
267 # to be seen by abuild, but ignored by lbuild.
268 %if "%(echo $USER)" == "abuild"
269 BuildRequires: kernel-source
270 %endif
271 #
272 # KMP buildreqs
273 %if %{defined kernel_module_package_buildreqs}
274 BuildRequires: %kernel_module_package_buildreqs
275 %else
276 %if 0%{?rhel} >= 8 || 0%{?openEuler}
277 BuildRequires: kernel-rpm-macros
278 %endif
279 %if 0%{?sle_version} >= 150300
280 BuildRequires: rpm-build >= 4.14.3
281 %endif
282 %endif
283 # End: KMP buildreqs
284 #
285 # need to provide a /usr/lib/${uname -r)/build dir
286 BuildRequires: kernel >= 3.10
287 #
288 # RHEL w/KABI
289 %if "%{_vendor}" == "redhat"
290 %if %{with kabi}
291 BuildRequires: kernel-abi-whitelists
292 %endif
293 %endif
294 # End: KABI
295 %endif
296 # End: Lustre modules
297 #
298 # Options: lutf, gss, servers, systemd
299 #
300 %if %{with lustre_tests_lutf}
301 Requires: python3 >= 3.6.0
302 BuildRequires: python3-devel >= 3.6.0, swig
303 %endif
304 #
305 %if %{with gss}
306 BuildRequires: krb5-devel openssl-devel
307 %endif
308 #
309 %if %{with servers}
310 Requires: %{name}-osd
311 Requires: %{name}-osd-mount
312 Obsoletes: lustre-server < %{version}
313 Provides: lustre-server = %{version}-%{release}
314 %endif
315 #
316 %if %{with systemd}
317 Requires(post): systemd
318 Requires(preun): systemd
319 Requires(postun): systemd
320 BuildRequires: pkgconfig(systemd)
321 %endif
322 #
323 %if %{with l_getsepol}
324 BuildRequires: pkgconfig(libselinux) openssl-devel
325 %endif
326 #
327 # Vendor specifics:
328 #
329 %if "%{_vendor}" == "redhat" || "%{_vendor}" == "fedora" || 0%{?openEuler}
330 # selinux is used by default
331 BuildRequires: pkgconfig(libselinux)
332 %if 0%{?rhel} > 7 || 0%{?fedora} > 33 || 0%{?rhel} < 1
333 Suggests: bash-completion
334 %endif
335 %if "%{_vendor}" == "redhat" || "%{_vendor}" == "fedora"
336 BuildRequires: redhat-rpm-config
337 %endif
338 #
339 %if 0%{?openEuler}
340 %if %{with ldiskfs}
341 BuildRequires: kernel-debugsource
342 %endif
343 BuildRequires: openEuler-rpm-config
344 %endif
345
346 %endif
347 # End: RHEL
348
349 %description
350 Userspace tools and files for the Lustre file system.
351
352 %if %{with lustre_modules}
353 %if 0%{?rhel} == 7
354 # until we have achieved full kABI compatibility we need to
355 # restrict the kernel range that can be used to the kernel
356 # version from the RHEL minor release
357 # this is supposed to be done for kmods automatically but
358 # RHBZ#1467319 seems to be getting in the way
359 # this is true for el7.0 through el7.4
360 %define preamble %{expand:%(
361 TMPFILE=`mktemp`
362 cat %{SOURCE1} > $TMPFILE
363 kver=%{kernel_version}
364 linuxversion=${kver%%%%-*}
365 linuxrelease=${kver##*-}
366 kabiminor=${linuxrelease%%%%.*}
367 echo "Requires:       kernel < $linuxversion-$((kabiminor+1)), kernel >= $linuxversion-$((kabiminor))" >> $TMPFILE
368 echo $TMPFILE
369 )}
370 %else
371 %define preamble %{SOURCE1}
372 %endif
373 %kernel_module_package -n %{name} -p %preamble -f %SOURCE2 %{_flavor}
374
375 %if %{with ldiskfs}
376 %kernel_module_package -n %{name}-osd-ldiskfs -p %SOURCE3 -f %SOURCE4 %{_flavor}
377 %if %{with lustre_utils}
378 %package osd-ldiskfs-mount
379 Summary: Lustre mount's ldiskfs-specific helper library
380 BuildRequires: e2fsprogs-devel >= 1.44.3 pkgconfig(mount)
381 Requires: ldiskfsprogs > 1.45.6
382 Provides: lustre-osd-mount = %{version}
383 Provides: %{name}-osd-mount = %{version}
384 Obsoletes: %{name}-osd-mount < %{version}
385 Obsoletes: lustre-osd-mount < %{version}
386
387 %description osd-ldiskfs-mount
388 Provide a shared library (dso) that can be loaded into various
389 lustre tools (mount/mkfs) to provide support for ldisfs
390
391 # with lustre_utils
392 %endif
393 # with ldiskfs
394 %endif
395
396 %if %{with zfs}
397 %global confzfsdobjpath %(echo '%configure_args' | grep -q -- --with-zfs-obj= ; echo $?)
398 %kernel_module_package -n %{name}-osd-zfs -p %SOURCE5 -f %SOURCE6 %{_flavor}
399 %if %{with lustre_utils}
400 %package osd-zfs-mount
401 Summary: Lustre mount's zfs-specific helper library
402 BuildRequires: pkgconfig(mount)
403 Provides: %{name}-osd-mount = %{version}
404 Obsoletes: lustre-osd-mount < %{version}
405 %if 0%{confzfsdobjpath} != 0
406 %if 0%{?suse_version} >= 1500 || 0%{?rhel} >= 8 || 0%{?fedora} >= 34
407 BuildRequires: (libzfs-devel or libzfs4-devel or libzfs5-devel or libzfs6-devel)
408 %else
409 # 'or' is not available, Use: --define 'zfs 5' or 'zfs 4'
410 BuildRequires: libzfs%{?zfs}-devel
411 %endif
412 %endif
413 # end confzfsdobjpath
414 # Tests also require zpool from zfs package:
415 Requires: zfs
416 Requires: %{requires_kmod_osd_zfs_name}
417 Provides: %{name}-osd-mount = %{version}
418 Provides: %{name}-osd-zfs-mount = %{version}
419 Requires: %{name}-osd-zfs = %{version}
420
421 %description osd-zfs-mount
422 Provide a shared library (dso) that can be loaded into various
423 lustre tools (mount/mkfs) to provide support for ZFS.
424
425 # with lustre_utils
426 %endif
427 # with zfs
428 %endif
429
430 %if 0%{?suse_version:1}
431 %else
432 %if %{with servers}
433 %kernel_module_package -n %{name}-osd-wbcfs -p %SOURCE21 -f %SOURCE22 %{_flavor}
434 %if %{with lustre_utils}
435 %package osd-wbcfs-mount
436 Summary: Lustre mount's wbcfs-specific helper library
437 BuildRequires: pkgconfig(mount)
438 Provides: %{name}-osd-mount = %{version}
439 Obsoletes: lustre-osd-mount < %{version}
440 Provides: %{name}-osd-mount = %{version}
441 Provides: %{name}-osd-wbcfs-mount = %{version}
442 Requires: %{name}-osd-wbcfs = %{version}
443
444 %description osd-wbcfs-mount
445 Provide a shared library (dso) that can be loaded into various
446 lustre tools (mount/mkfs) to provide support for in-memory OSD
447 with writeback support.
448
449 # with lustre_utils
450 %endif
451 # with servers
452 %endif
453 # with lustre_modules
454 %endif
455 # suse
456 %endif
457
458 %if %{with servers}
459 %package resource-agents
460 Summary: HA Resuable Cluster Resource Scripts for Lustre
461 Requires: %{name}
462 Requires: resource-agents
463
464 %description resource-agents
465 A set of scripts to operate Lustre resources in a High Availablity
466 environment for both Pacemaker and rgmanager.
467 %endif
468
469 %package devel
470 Summary: Lustre include headers
471 Provides: lustre-devel = %{version}
472 Requires: %{lustre_name} = %{version}
473 %if %{with lustre_modules}
474 %if 0%{?suse_version} >= 1500 || 0%{?rhel} >= 8 || 0%{?fedora} >= 34
475 Requires: (%{lustre_name}-dkms or %{requires_kmod_name} >= %{requires_release_major_minor})
476 %else
477 Requires: %{requires_kmod_name} >= %{requires_release_major_minor}
478 %endif
479 %endif
480
481 %description devel
482 This package contains the header files needed for building additional
483 applications against the Lustre / LNet utilities libraries.
484
485 :> lustre-devel.files
486
487 %if %{with lustre_tests}
488 %package tests
489 Summary: Lustre testing framework
490 Provides: %{name}-tests = %{version}
491 %if %{with lustre_iokit}
492 Requires: %{name} = %{version}, %{lustre_name}-iokit
493 %else
494 Requires: %{name} = %{version}
495 %endif
496 Requires: lustre-devel = %{version}
497 %if 0%{?rhel} >= 8 || 0%{?suse_version} >= 1500 || 0%{?openEuler}
498 Requires: python3 >= 3.6.0, python3-PyYAML
499 %endif
500 %if %{with lustre_modules}
501 %if 0%{?suse_version} >= 1500 || 0%{?rhel} >= 8 || 0%{?fedora} >= 34
502 Requires: (%{lustre_name}-dkms or %{requires_kmod_name} >= %{requires_release_major_minor})
503 %else
504 Requires: %{requires_kmod_name} >= %{requires_release_major_minor}
505 %endif
506 Requires: %{requires_kmod_tests_name} >= %{requires_release_major_minor}
507 %endif
508 %if %{with lustre_tests_lutf}
509 Requires: python3 >= 3.6.0
510 %endif
511 Requires: attr, rsync, lsof, /usr/bin/getconf
512 Requires: /usr/sbin/getenforce, acl, /usr/bin/killall, /usr/bin/ping, bc
513 # Of the supported targets, only rhel7 doesn't support Recommends.
514 %if 0%{?rhel} > 7 || 0%{?fedora} > 33 || 0%{?rhel} < 1
515 Recommends: perl, dbench, iozone, vmtouch
516 # Either of these is sufficient
517 Suggests: pdsh, clush
518 %endif
519 %if %{with mpi}
520 %if "%{mpi_name}" == "mpich"
521 BuildRequires: mpich-devel
522 %endif
523 %if "%{mpi_name}" == "openmpi"
524 %if "%{_vendor}" == "redhat" || 0%{?openEuler} || 0%{?suse_version} < 1500
525 BuildRequires: openmpi-devel
526 %else
527 %if 0%{?sle_version} && 0%{?sle_version} >= 150600
528 BuildRequires: openmpi4-devel
529 %else
530 BuildRequires: openmpi2-devel
531 %endif
532 # openmpi-devel
533 %endif
534 # openmpi
535 %endif
536 # mpi
537 %endif
538
539 %description tests
540 This package contains a set of test binaries and scripts that are intended
541 to be used by the Lustre testing framework.
542
543 %if %{with lustre_modules}
544 %kernel_module_package -n %{name}-tests -p %SOURCE7 -f %SOURCE8 %{_flavor}
545 %endif
546 %endif
547
548 %if %{with multiple_lnds}
549 # begin multiple_lnds
550 %kernel_module_package -n %{name}-lnet-socklnd -p %SOURCE11 -f %SOURCE12 %{_flavor}
551 %if %{with o2ib}
552 ## in-kernel: re-write post/preun generated by kmodtool [ls -s and rm -f]
553 %define inkernmod %{modules_fs_path}/%{lustre_name}/net/in-kernel-ko2iblnd.ko
554 %define inkernsym %{modules_fs_path}/%{lustre_name}/net/ko2iblnd.ko
555 %if 0%{?rhel} >= 8 || 0%{?fedora} >= 34
556 %define inkernpost %%posttrans -n %{kmod_prefix}%{name}-lnet-in-kernel-o2iblnd%{kmod_postfix}%{kmod_flavor}
557 %define inkernaction ln -sf %{inkernmod} %{inkernsym}
558 %else
559 %define inkernpost %{nil}
560 %define inkernaction %{nil}
561 %endif
562 %define ofed_module_package %{expand:%(
563 TMPFILE=`mktemp`
564 cat <<EOF > $TMPFILE
565 %kernel_module_package -n %{name}-lnet-in-kernel-o2iblnd -p %SOURCE19 -f %SOURCE20 %{_flavor}
566 %inkernpost
567 %inkernaction
568 EOF
569 sed -i -e '/^%%post .*/a ln -sf %{inkernmod} %{inkernsym}' -e '/^%%preun.*/a if test -L %{inkernsym}; then rm -f %{inkernsym} ; fi' $TMPFILE
570 echo $TMPFILE
571 )}
572 %{expand:%(cat '%{ofed_module_package}')}
573 %endif
574 ## mofed: add a posttrans rule on el8 and later
575 %if %{with mofed}
576 %if 0%{?rhel} >= 8 || 0%{?fedora} >= 34
577 %define exkernmod %{modules_fs_path}/%{lustre_name}/net/ko2iblnd.ko
578 %define exkernpost %%posttrans -n %{kmod_prefix}%{name}-lnet-o2iblnd%{kmod_postfix}%{kmod_flavor}
579 %define exkernaction if test -L %{exkernmod}; then rm -f %{exkernmod}; fi
580 %else
581 %define exkernpost %{nil}
582 %define exkernaction %{nil}
583 %endif
584 %define ext_ofed_module_package %{expand:%(
585 TMPEXT=`mktemp`
586 cat <<EOF > $TMPEXT
587 %kernel_module_package -n %{name}-lnet-o2iblnd -p %SOURCE13 -f %SOURCE14 %{_flavor}
588 %exkernpost
589 %exkernaction
590 EOF
591 echo $TMPEXT
592 )}
593 %{expand:%(cat '%{ext_ofed_module_package}')}
594 %endif
595 %if %{with gni}
596 %kernel_module_package -n %{name}-lnet-gnilnd -p %SOURCE15 -f %SOURCE16 %{_flavor}
597 %endif
598 %if %{with kfi}
599 %kernel_module_package -n %{name}-lnet-kfilnd -p %SOURCE17 -f %SOURCE18 %{_flavor}
600 %endif
601 # end multiple_lnds
602 %endif
603
604 %if %{with lustre_modules}
605 %package -n %kmod_devel_pkg
606 Summary: Includes and Module.symvers for kernel packages depending on Lustre/LNet
607
608 %description -n %kmod_devel_pkg
609 This package includes:
610   Module.symvers
611   package config file: lnet.pc
612   kernel headers
613 %endif
614
615 %if %{with lustre_iokit}
616 %package -n %{lustre_name}-iokit
617 Summary: Collection of benchmark tools for a cluster with the Lustre file system
618 Requires: sg3_utils
619 %if 0%{?rhel} > 7 || 0%{?fedora} > 33 || 0%{?rhel} < 1
620 Recommends: perl
621 %endif
622
623 %description -n %{lustre_name}-iokit
624 This package includes five tools:
625 sgpdd-survey:
626 A test of the 'bare metal' performance, bypassing as much of the kernel as we can. Uses the sgp_dd utility.
627
628 obdfilter-survey
629 This survey can be run in 3 modes to test disk I/O including the filesystem,
630 network I/O, and disk I/O via the network.  The script does sequential I/O
631 with varying numbers of threads and objects (files) by using lctl::test_brw
632 to drive the echo_client connected to local or remote obdfilter instances,
633 or remote obdecho instances.
634
635 ost-survey
636 This survey tests the client-to-disk performance of individual OSTs, and
637 ranks then for comparison.
638
639 stats-collect
640 This script will collect IO stats on a defined set of nodes.
641
642 ior-survey:
643 A script to run the IOR benchmark. The latest version can be downloaded from
644 https://github.com/hpc/ior/
645
646 mds-survey:
647 This survey tests the local metadata performance using the echo_client to drive
648 the MDD layer to perform operations. It is run with multiple threads (to
649 simulate MDT service threads) locally on the MDS node, and does not need Lustre
650 clients in order to run
651
652 lst-survey:
653 This survey tests LNet performance between a group of clients and servers.
654 %endif
655
656 %if 0%{?suse_version}
657 %debug_package
658 %endif
659 %prep
660 %setup -qn lustre-%{version}
661 ln lustre/ChangeLog ChangeLog-lustre
662 ln lnet/ChangeLog ChangeLog-lnet
663
664 %build
665 # Set an explicit path to our Linux tree, if we can.
666 cd $RPM_BUILD_DIR/lustre-%{version}
667
668 # Store the CFLAGS and LDFLAGS that would normally be used in the UTILS_CFLAGS
669 # and UTILS_LDFLAGS environment variables so that we use can them when compiling
670 # the user-space code in lustre/utils and lnet/utils. As of RHEL 8.0, the
671 # __global_* variants are deprecated in favour of build_cflags, etc. If neither
672 # style is available (e.g. on SLES), then these just end up as empty strings.
673 export UTILS_CFLAGS="%{?build_cflags:%{build_cflags}}%{!?build_cflags:%{?__global_cflags:%{__global_cflags}}}"
674 export UTILS_LDFLAGS="%{?build_ldflags:%{build_ldflags}}%{!?build_ldflags:%{?__global_ldflags:%{__global_ldflags}}}"
675
676 # RHEL7 on PPC64 needs __SANE_USERSPACE_TYPES__ defined so that __s64 and __u64
677 # are presented to user-land as long long instead of long long. Without this it
678 # will fail the format check whenever such a variable is printed.
679 %if 0%{?rhel}
680 %ifarch ppc64
681 export UTILS_CFLAGS="${UTILS_CFLAGS} -D__SANE_USERSPACE_TYPES__=1"
682 %endif
683 %endif
684
685 # Disable any hardening or annotation since this doesn't make sense for
686 # kernel code, and reset "optflags" so that the vendor's overzealous flags don't
687 # create build failures.
688 %define optflags -g -O2 -Werror
689 %undefine _annotated_build
690 %undefine _hardened_build
691
692 CONFIGURE_ARGS="%{?configure_args}"
693 if [ -n "$CONFIGURE_ARGS" ]; then
694         # make sure %%kdir and %%kobjdir are not in the configure arguments
695         CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux=[^ ][^ ]* \?//')
696         CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux-obj=[^ ][^ ]* \?//')
697         # remove --with-kmp-moddir from configure arguments,
698         # it will be set --with-kmp-moddir=%%kmoddir
699         CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-kmp-moddir=[^ ][^ ]* \?//')
700         # remove env variables from config cache built by initial configure,
701         # and create dedicated cache in temporary build directory
702         if [ -f "$CONFIG_CACHE_FILE" ]; then
703                 TMP_CONFIG_CACHE="$(mktemp --tmpdir newconfig-XXXXXXXX.cache)"
704                 sed -e "/ac_cv_env/d" \
705                     -e "/am_cv_CC_dependencies_compiler_type/d" \
706                     -e "/lb_cv_mpi_tests/d" \
707                        "$CONFIG_CACHE_FILE" > $TMP_CONFIG_CACHE
708                 CONFIGURE_ARGS="$CONFIGURE_ARGS --cache-file=$TMP_CONFIG_CACHE"
709         fi
710 fi
711
712 # we need to eval "configure" because $CONFIGURE_ARGS could have a quoted
713 # string in it which we don't want word splitted by the shell
714 # also remove (build|host|target) options because they will be specified
715 # inside $CONFIGURE_ARGS
716 # kmod tools/scripts require "name" directory with kernel modules
717
718 %if 0%{?rhel} >= 9
719 %define _configure eval ./configure
720 %define eval_configure %configure
721 %else
722 %define eval_configure %(echo -n '%configure' | sed -e 's#\./configure#eval ./configure#' -e 's/--\\(build\\|host\\|target\\)=[^ ][^ ]* //g')
723 %endif
724
725 %if %{with mpi}
726 %if "%{mpi_name}" == "mpich"
727 %{?_mpich_load}
728 %endif
729 %if "%{mpi_name}" == "openmpi"
730 %{?_openmpi_load}
731 %endif
732 # mpi
733 %endif
734
735 # kfabric can be either cray-kfabric or kfabric
736 WITH_KFI=""
737 %if %{with kfi}
738         for kfabric in cray-kfabric kfabric
739         do
740                 path=/usr/src/${kfabric}/default/Module.symvers
741                 if [ -f $path ]; then
742                         WITH_KFI="--with-kfi=$(dirname $path)"
743                         break;
744                 fi
745         done
746 %endif
747
748 WITH_O2IB=""
749 %if %{with mofed}
750         o2ib_path=$(find -H %{mofed_default_path} -type d -name ofed_scripts | xargs dirname)
751         if [ -z "$o2ib_path" ]; then
752                 echo "ERROR: could not find OFED devel headers"
753                 exit 1
754         fi
755         if [ $(echo $o2ib_path | wc -w) -ge 2 ]; then
756                 echo "ERROR: multiple OFED versions installed"
757                 exit 1
758         fi
759         WITH_O2IB="--with-o2ib=${o2ib_path}"
760 %else
761 %if %{without o2ib}
762         WITH_O2IB="--with-o2ib=no"
763 %endif
764 %endif
765
766 %eval_configure $CONFIGURE_ARGS \
767         %{?with_lustre_tests:--enable-tests}%{!?with_lustre_tests:--disable-tests} \
768         %{?with_lustre_utils:--enable-utils}%{!?with_lustre_utils:--disable-utils} \
769         %{?with_lustre_modules:--enable-modules}%{!?with_lustre_modules:--disable-modules} \
770         %{!?with_shared:--disable-shared} \
771         %{!?with_static:--disable-static} \
772         %{!?with_lustre_iokit:--disable-iokit} \
773         %{!?with_ldiskfs:--disable-ldiskfs} \
774         %{!?with_servers:--disable-server} \
775         %{!?with_zfs:--without-zfs} \
776         %{!?with_gss:--disable-gss} \
777         %{!?with_gss_keyring:--disable-gss-keyring} \
778         %{!?with_manpages:--disable-manpages} \
779         %{!?with_systemd:--with-systemdsystemunitdir=no} \
780         %{?with_systemd:--with-systemdsystemunitdir=%{_unitdir}} \
781         %{?with_multiple_lnds:--enable-multiple-lnds} \
782         ${WITH_KFI} \
783         %{?with_gni:--enable-gni} \
784         ${WITH_O2IB} \
785         %{!?with_l_getsepol:--disable-l_getsepol} \
786         --with-linux=%{kdir} \
787         --with-linux-obj=%{kobjdir} \
788         --with-kmp-moddir=%{kmoddir}/%{name}
789
790 %if %{with servers}
791 if ! grep -q define[[:space:]]*HAVE_SERVER_SUPPORT config.h 2> /dev/null; then
792         echo "Error: Server Support configured but not found"
793         false
794 fi
795 %endif
796
797 make %{?_smp_mflags} -s %{?make_args}
798
799 %if %{with mpi}
800 %if "%{mpi_name}" == "mpich"
801 %{?_mpich_unload}
802 %endif
803 %if "%{mpi_name}" == "openmpi"
804 %{?_openmpi_unload}
805 %endif
806 # mpi
807 %endif
808
809 %install
810
811 %if %{with mpi}
812 %if "%{mpi_name}" == "mpich"
813 %{?_mpich_load}
814 %endif
815 %if "%{mpi_name}" == "openmpi"
816 %{?_openmpi_load}
817 %endif
818 # mpi
819 %endif
820
821 make install DESTDIR=$RPM_BUILD_ROOT
822
823 %if %{with lustre_modules}
824 # RHEL's kernel_module_path macro expects that all the modules
825 # in a kmod package will be in modules_fs_path/<sub packagename>
826 # but Lustre installs all of the modules in a single pass into
827 # a shared location.  Since this is a restriction imposed by
828 # RHEL, we handle this here in the spec file rather than in
829 # Lustre's build system.  This is not expected to bother SLES's
830 # kernel_module_path macro.
831 basemodpath=$RPM_BUILD_ROOT%{modules_fs_path}/%{name}
832 %{__install} -D -m 0644 ${PWD}/Module.symvers %{buildroot}/Module.symvers
833 %if %{with lustre_modules}
834 %{__install} -D -m 0644 ${PWD}/Module.symvers %{buildroot}/%{_usrsrc}/lustre-%{version}/%{_arch}/%{_flavor}/Module.symvers
835 %{__install} -D -m 0644 ${PWD}/config.h %{buildroot}/%{_usrsrc}/lustre-%{version}/%{_arch}/%{_flavor}/config.h
836 for fname in $(find lnet/include -type f -name \*.h); do
837         target=$(echo ${fname} | sed 's:^lnet/include/::g')
838         %{__install} -D -m 0644 ${fname} %{buildroot}/%{_usrsrc}/lustre-%{version}/${target}
839 done
840 for fname in $(find libcfs/include/libcfs -type f -name \*.h); do
841         target=$(echo ${fname} | sed -e 's:^libcfs/include/::g')
842         %{__install} -D -m 0644 ${fname} %{buildroot}/%{_usrsrc}/lustre-%{version}/${target}
843 done
844 %endif
845 %if %{with ldiskfs}
846 mkdir -p $basemodpath-osd-ldiskfs/fs
847 mv $basemodpath/fs/osd_ldiskfs.ko $basemodpath-osd-ldiskfs/fs/osd_ldiskfs.ko
848 mv $basemodpath/fs/ldiskfs.ko $basemodpath-osd-ldiskfs/fs/ldiskfs.ko
849 %endif
850 %if %{with zfs}
851 mkdir -p $basemodpath-osd-zfs/fs
852 mv $basemodpath/fs/osd_zfs.ko $basemodpath-osd-zfs/fs/osd_zfs.ko
853 %endif
854 %if 0%{?suse_version:1}
855 %else
856 %if %{with servers}
857 mkdir -p $basemodpath-osd-wbcfs/fs
858 mv $basemodpath/fs/osd_wbcfs.ko $basemodpath-osd-wbcfs/fs/osd_wbcfs.ko
859 %endif
860 %endif
861 %if %{with lustre_tests}
862 mkdir -p $basemodpath-tests/fs
863 mv $basemodpath/fs/obd_test.ko $basemodpath-tests/fs/obd_test.ko
864 mv $basemodpath/fs/obd_mod_rpcs_test.ko $basemodpath-tests/fs/obd_mod_rpcs_test.ko
865 mv $basemodpath/fs/kinode.ko $basemodpath-tests/fs/kinode.ko
866 %if %{with servers}
867 mv $basemodpath/fs/ldlm_extent.ko $basemodpath-tests/fs/ldlm_extent.ko
868 mv $basemodpath/fs/llog_test.ko $basemodpath-tests/fs/llog_test.ko
869 %endif
870 %endif
871 %endif
872
873 %if %{without mpi}
874 if [ -d $RPM_BUILD_ROOT%{_libdir}/openmpi ] ; then
875         rm -fr $RPM_BUILD_ROOT%{_libdir}/openmpi
876 fi
877 if [ -d $RPM_BUILD_ROOT%{_libdir}/mpich ] ; then
878         rm -fr $RPM_BUILD_ROOT%{_libdir}/mpich
879 fi
880 %endif
881
882 :> lustre.files
883
884 %if %{with servers} && %{with lustre_utils}
885 # The .ha_v2 extension identifies the heartbeat resource agent as using
886 # legacy syntax. Install a compatibility symlink to avoid conflicts when
887 # newer-style agents are added.
888 ln -s Lustre.ha_v2 $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/Lustre
889 echo '%dir %{_sysconfdir}/ha.d' >>lustre.files
890 echo '%dir %{_sysconfdir}/ha.d/resource.d' >>lustre.files
891 echo '%{_sysconfdir}/ha.d/resource.d/Lustre.ha_v2' >>lustre.files
892 echo '%{_sysconfdir}/ha.d/resource.d/Lustre' >>lustre.files
893 %endif
894
895 # systemd is on redhat, fedora, and suse
896 %if %{with systemd}
897 echo '%{_unitdir}/lnet.service' >>lustre.files
898 echo '%{_unitdir}/lsvcgss.service' >>lustre.files
899 %endif
900
901 %if "%{_vendor}" == "redhat" || 0%{?openEuler}
902 # The following scripts are Red Hat specific
903 %if %{with servers}
904 echo '%{_sysconfdir}/init.d/lustre' >>lustre.files
905 echo '%{_sysconfdir}/sysconfig/lustre' >>lustre.files
906 %if %{with gss_keyring}
907 echo '%{_sysconfdir}/init.d/lsvcgss' >>lustre.files
908 echo '%config(noreplace) %{_sysconfdir}/sysconfig/lsvcgss' >>lustre.files
909 %endif
910 %endif
911
912 %if %{without systemd}
913 echo '%{_sysconfdir}/init.d/lnet' >>lustre.files
914 %endif
915 %endif
916 %if %{with gss_keyring}
917 echo '%config(noreplace) %{_sysconfdir}/request-key.d/lgssc.conf' >>lustre.files
918 %endif
919
920 # fc18 needs 'x' permission for library files
921 find $RPM_BUILD_ROOT -name \*.so -type f -exec chmod +x {} \;
922
923 rm -f $RPM_BUILD_ROOT%{_libdir}/liblnetconfig.la
924 %if %{with static}
925 echo '%attr(-, root, root) %{_libdir}/liblnetconfig.a' >>lustre.files
926 %endif
927 %if %{with shared}
928 echo '%attr(-, root, root) %{_libdir}/liblnetconfig.so' >>lustre-devel.files
929 echo '%attr(-, root, root) %{_libdir}/liblnetconfig.so.*' >>lustre.files
930 %endif
931
932 %if %{with ldiskfs}
933 echo '%{_libdir}/libiam.a' >>lustre.files
934 %endif
935
936 %if %{with lustre_utils}
937 mkdir -p $RPM_BUILD_ROOT/%{_datadir}/lustre
938 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre ] ; then
939         find $RPM_BUILD_ROOT%{_libdir}/@PACKAGE@ -name \*.la -type f -exec rm -f {} \;
940 fi
941 %endif
942
943 echo '%{_prefix}/lib/firewalld/services/*.xml' >>lustre.files
944 %if %{with lustre_modules}
945 # mark modules executable for find-debuginfo.sh
946 find $RPM_BUILD_ROOT/lib/modules -name \*.ko -type f -exec chmod u+x {} \;
947 %endif
948
949 rm -f $RPM_BUILD_ROOT%{_libdir}/liblustreapi.la
950
951 %if %{with lustre_tests}
952 :> lustre-tests.files
953 %if %{with mpi}
954 %if "%{mpi_name}" == "mpich"
955 %{?_mpich_load}
956 %endif
957 %if "%{mpi_name}" == "openmpi"
958 %{?_openmpi_load}
959 %endif
960 # mpi
961 %endif
962 echo '%dir %{_libdir}/lustre' >>lustre-tests.files
963 echo '%dir %{_libdir}/lustre/tests' >>lustre-tests.files
964 echo '%{_libdir}/lustre/tests/*' >>lustre-tests.files
965 echo '%{_bindir}/mcreate' >>lustre-tests.files
966 echo '%{_bindir}/statx' >>lustre-tests.files
967 echo '%{_sbindir}/wirecheck' >>lustre-tests.files
968 echo '%{_sbindir}/wiretest' >>lustre-tests.files
969 if [ -n "$MPI_BIN" ]; then
970         echo "$MPI_BIN/*" >>lustre-tests.files
971 fi
972 %if %{with lustre_tests_lutf}
973 echo '%{_libdir}/lustre/tests/lutf/*' >>lustre-tests.files
974 %endif
975 %endif
976
977 %if %{with lustre_tests_lutf}
978 echo '%{_libdir}/lustre/tests/lutf/*' >>lustre-tests.files
979 %endif
980
981 %files devel -f lustre-devel.files
982 %defattr(-,root,root)
983 %{_libdir}/pkgconfig/lustre.pc
984 %if %{with static}
985 %{_libdir}/liblustreapi.a
986 %endif
987 %if %{with shared}
988 %{_libdir}/liblustreapi.so
989 %endif
990 %{_includedir}/lustre
991 %if %{with lustre_modules}
992 %{_includedir}/linux/lnet
993 %{_includedir}/linux/lustre
994 %else
995 %exclude %{_includedir}/linux/lnet
996 %exclude %{_includedir}/linux/lustre
997 %endif
998
999 %if %{with lustre_modules}
1000 %files -n %kmod_devel_pkg
1001 %{_libdir}/pkgconfig/lnet.pc
1002 %{_usrsrc}/lustre-%{version}
1003 %endif
1004
1005 %files -f lustre.files
1006 %defattr(-,root,root)
1007 %{_sbindir}/*
1008 %if %{with lustre_tests}
1009 %exclude %{_sbindir}/wirecheck
1010 %exclude %{_sbindir}/wiretest
1011 %endif
1012 %if %{with zfs}
1013 %exclude %{_sbindir}/zfsobj2fid
1014 %endif
1015 %if %{with lustre_utils}
1016 %if %{with servers}
1017 %dir %{_libexecdir}/lustre
1018 %{_libexecdir}/lustre/lc_common
1019 %{_libexecdir}/lustre/haconfig
1020 %{_bindir}/lustre_req_history
1021 %{_bindir}/remove_changelog
1022 %{_bindir}/remove_updatelog
1023 %{_bindir}/lsvcgss_sysd
1024 %endif
1025
1026 %{_bindir}/llobdstat
1027 %{_bindir}/lljobstat
1028 %{_bindir}/llstat
1029 %{_bindir}/plot-llstat
1030 %{_datadir}/lustre
1031
1032 %{_bindir}/lfs
1033 %{_bindir}/lfs_migrate
1034 /sbin/mount.lustre
1035 %if %{with servers}
1036 %ghost /sbin/mount.lustre_tgt
1037 %endif
1038 @BASH_COMPLETION_DIR@
1039 %endif
1040
1041 %if %{with manpages}
1042 %{_mandir}/man?/*
1043 %endif
1044
1045 %if %{with shared}
1046 %{_libdir}/liblustreapi.so.*
1047 %endif
1048 %{_udevrulesdir}/99-lustre.rules
1049 %if %{with servers}
1050 %{_udevrulesdir}/99-lustre-server.rules
1051 %endif
1052 %if %{with zfs}
1053 %config(noreplace) %{_sysconfdir}/ldev.conf
1054 %endif
1055 %config(noreplace) %{_sysconfdir}/lnet-sysctl.conf
1056 %config(noreplace) %{_sysconfdir}/lnet.conf
1057 %config(noreplace) %{_sysconfdir}/modprobe.d/ko2iblnd.conf
1058 %if %{with lustre_utils}
1059 %config(noreplace) %{_sysconfdir}/lnet_routes.conf
1060 %config(noreplace) %{_sysconfdir}/lustre/mount.client.params
1061 %endif
1062 %if %{with lustre_modules}
1063 %exclude /Module.symvers
1064 %if %{with shared}
1065 %if %{with ldiskfs}
1066 %if %{with lustre_utils}
1067 %files osd-ldiskfs-mount
1068 %defattr(-,root,root)
1069 %dir %{_libdir}/@PACKAGE@
1070 %{_libdir}/@PACKAGE@/mount_osd_ldiskfs.so
1071 %endif
1072 %endif
1073 %endif
1074
1075 %if %{with shared}
1076 %if %{with zfs}
1077 %if %{with lustre_utils}
1078 %files osd-zfs-mount
1079 %defattr(-,root,root)
1080 %dir %{_libdir}/@PACKAGE@
1081 %{_libdir}/@PACKAGE@/mount_osd_zfs.so
1082 %{_sysconfdir}/zfs/zed.d/*
1083 %endif
1084 %endif
1085 %endif
1086
1087 %if %{with shared}
1088 %if 0%{?suse_version:1}
1089 %else
1090 %if %{with servers}
1091 %if %{with lustre_utils}
1092 %files osd-wbcfs-mount
1093 %defattr(-,root,root)
1094 %dir %{_libdir}/@PACKAGE@
1095 %{_libdir}/@PACKAGE@/mount_osd_wbcfs.so
1096 %endif
1097 %endif
1098 %endif
1099 %endif
1100
1101 # with lustre_modules
1102 %endif
1103
1104 %if %{with servers}
1105 %files resource-agents
1106 %defattr(0755,root,root)
1107 %dir %{_prefix}/lib/ocf
1108 %dir %{_prefix}/lib/ocf/resource.d
1109 %{_prefix}/lib/ocf/resource.d/lustre/
1110 %endif
1111
1112 %if %{with lustre_tests}
1113 %files tests -f lustre-tests.files
1114 %defattr(-,root,root)
1115 %endif
1116
1117 %if %{with lustre_iokit}
1118 %files -n %{lustre_name}-iokit
1119 %defattr(-, root, root)
1120 %{_bindir}/iokit-config
1121 %{_bindir}/iokit-gather-stats
1122
1123 %{_bindir}/iokit-libecho
1124 %{_bindir}/iokit-lstats
1125 %{_bindir}/iokit-parse-ior
1126 %{_bindir}/iokit-plot-obdfilter
1127 %{_bindir}/iokit-plot-ost
1128 %{_bindir}/iokit-plot-sgpdd
1129 %{_bindir}/ior-survey
1130 %{_bindir}/mds-survey
1131 %{_bindir}/obdfilter-survey
1132 %{_bindir}/ost-survey
1133 %{_bindir}/sgpdd-survey
1134 %{_bindir}/lst-survey
1135 %{_bindir}/lst.sh
1136 %doc lustre-iokit/ior-survey/README.ior-survey
1137 %doc lustre-iokit/mds-survey/README.mds-survey
1138 %doc lustre-iokit/obdfilter-survey/README.obdfilter-survey
1139 %doc lustre-iokit/ost-survey/README.ost-survey
1140 %doc lustre-iokit/sgpdd-survey/README.sgpdd-survey
1141 %doc lustre-iokit/stats-collect/README.iokit-lstats
1142 %doc lustre-iokit/lst-survey/README.lst-survey
1143 %endif
1144
1145 %post
1146 %if %{with systemd}
1147 %systemd_post lnet.service
1148 %systemd_post lsvcgss.service
1149 %endif
1150
1151 %preun
1152 %if %{with systemd}
1153 %systemd_preun lnet.service
1154 %systemd_preun lsvcgss.service
1155 %endif
1156
1157 %postun
1158 %if %{with systemd}
1159 %systemd_postun_with_restart lnet.service
1160 %systemd_postun_with_restart lsvcgss.service
1161 %endif
1162
1163 %if %{with lustre_modules}
1164 %post -n %kmod_devel_pkg
1165 alternatives --install %{_usrsrc}/lustre lustre %{_usrsrc}/lustre-%{version} 50
1166
1167 %preun -n %kmod_devel_pkg
1168 alternatives --remove lustre %{_usrsrc}/lustre-%{version}
1169 %endif
1170
1171 %clean
1172 rm -rf $RPM_BUILD_ROOT
1173 rm -rf %{_tmppath}/kmp