Whamcloud - gitweb
LU-10973 lnet: infrastructure to build the LUTF
[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_utils
9 %bcond_without lustre_iokit
10 %bcond_without lustre_modules
11 %bcond_with snmp
12 %bcond_with gss
13 %bcond_with gss_keyring
14 %bcond_without manpages
15 %bcond_without shared
16 %bcond_without static
17 %bcond_with    systemd
18 %bcond_with mofed
19 %bcond_without mpi
20 %bcond_with kabi
21
22 # By default both gss and gss keyring are disabled.
23 # gss keyring requires the gss core. If the builder
24 # request gss_keyring we must enable gss core even if
25 # the builder attempts to disable gss.
26 %if %{with gss_keyring}
27     %define with_gss 1
28 %endif
29
30 %if %{without servers}
31     # --without servers overrides --with {ldiskfs|zfs}
32     # so undefine the internal variables set by bcond_*
33     %undefine with_ldiskfs
34     %undefine with_zfs
35 %endif
36
37 %if %{without shared} && %{without static}
38 # need exit to stop build because error only displays a message
39 %{error: you can't disable both library types}
40 %{exit 1}
41 %endif
42
43 # lustre_tests depends on lustre_utils
44 %if %{without lustre_utils}
45 %undefine with_lustre_tests
46 %endif
47
48 %{!?version: %global version @VERSION@}
49 # if you want a custom kernel version set it variable with $ver.$arch
50 %{!?kver:    %global kver    %(uname -r)}
51 # cut epoch for kmodtool
52 %define _kver %(echo %{kver} | sed -e 's/^[0-9]*://')
53 # trust version from kdir - but it can lost 'epoch'
54 %if %{defined kdir}
55         %define _take_kver 1
56 %endif
57 %{!?kdir:    %global kdir    /lib/modules/%{_kver}/source}
58 %{!?kobjdir: %global kobjdir %(if [ "%{kdir}" = "/lib/modules/%{_kver}/source" ]; then echo "/lib/modules/%{_kver}/build"; else echo "%{kdir}"; fi)}
59
60 %if %{defined _take_kver}
61 # as an alternative to this implementation we could simply "make -C $kdir kernelversion"
62 %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)
63 %define _kver %kver
64 %endif
65
66 # We set this because kernel_module_package has its own method of identifying
67 # which kernel to build against, and it is unlikely that its decision will
68 # match with Lustre's method of selecting which kernel to build against.
69 # By setting this variable, we override kernel_module_package's kernel
70 # selection with our selection.
71 # kmodtool failed to take a version if epoch set
72 %global kernel_version %_kver
73
74 # in order to get kernel symset and/or kernel module dependencies into
75 # the RPM, in order to support weak-modules, the internal dependency gen-
76 # erator needs to be disabled
77 # this is done with (reduce the double % down to a single %):
78 #
79 # %%global _use_internal_dependency_generator 0
80 #
81 # on SLES10, /usr/lib/rpm/macros already sets this, so no harm in also
82 # defining it here (until Suse changes their mind)
83 #
84 # on RHEL5, however, we do need to explicitly disable the internal dep-
85 # endency generator and allow the external one be used
86 # but since RedHat's kABI is only a subset of the total kernel ABI, it
87 # doesn't include all of the symbols we (or OFED for that matter) need
88 # until RedHat includes all of the symbols we need in their symsets we
89 # cannot support weak-modules
90 # we did e-mail the maintainer of all of this stuff @redhat but got no
91 # response from them
92 #%%global _use_internal_dependency_generator 0
93
94 # Set the package name prefix
95 %if %{undefined lustre_name}
96     %if %{with servers}
97         %global lustre_name lustre
98     %else
99         %global lustre_name lustre-client
100     %endif
101 %endif
102
103 %if %{undefined kmoddir}
104     %if %{defined kernel_module_package_moddir}
105         %global kmoddir %{kernel_module_package_moddir}
106     %else
107         %if %{defined suse_kernel_module_package}
108             %global kmoddir updates
109         %else
110             %global kmoddir extra
111         %endif
112     %endif
113 %endif
114
115 %global modules_fs_path /lib/modules/%{_kver}/%{kmoddir}
116 # requires want to set a version including epoch
117 %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$//')
118
119 %if %{_vendor}=="redhat" || %{_vendor}=="fedora"
120         %global requires_yaml_name libyaml
121         %global requires_kmod_name kmod-%{lustre_name}
122         %global requires_kmod_osd_zfs_name kmod-%{lustre_name}-osd-zfs
123         %if %{with lustre_tests}
124                 %global requires_kmod_tests_name kmod-%{lustre_name}-tests
125         %endif
126         %global requires_kmod_version %{version}
127 %else   #for Suse
128         %global requires_yaml_name libyaml-0-2
129         %global requires_kmod_name %{lustre_name}-kmp
130         %global requires_kmod_osd_zfs_name %{lustre_name}-osd-zfs-kmp
131         %if %{with lustre_tests}
132                 %global requires_kmod_tests_name %{lustre_name}-tests-kmp
133         %endif
134         %if 0%{?suse_version} >= 1200
135                 %global requires_kmod_version %{version}_k%(echo %{krequires} | sed -r 'y/-/_/; s/^(2\.6\.[0-9]+)_/\\1.0_/;')
136         %else
137                 %global requires_kmod_version %{version}_%(echo %{krequires} | sed -r 'y/-/_/; s/^(2\.6\.[0-9]+)_/\\1.0_/;')
138         %endif
139 %endif
140
141 # RHEL >= 7 comes with systemd
142 %if 0%{?rhel} >= 7
143 %define with_systemd 1
144 %endif
145
146 # Fedora >= 15 comes with systemd, but only >= 18 has
147 # the proper macros
148 %if 0%{?fedora} >= 18
149 %define with_systemd 1
150 %endif
151
152 # opensuse >= 12.1 comes with systemd, but only >= 13.1
153 # has the proper macros
154 %if 0%{?suse_version} >= 1310
155 %define with_systemd 1
156 %endif
157
158 %{!?mpi_name: %global mpi_name openmpi}
159
160 Summary: Lustre File System
161 Name: %{lustre_name}
162 Version: %{version}
163 Release: 1%{?dist}
164 License: GPL
165 Group: System Environment/Kernel
166 Source: lustre-%{version}.tar.gz
167 Source1: kmp-lustre.preamble
168 Source2: kmp-lustre.files
169 Source3: kmp-lustre-osd-ldiskfs.preamble
170 Source4: kmp-lustre-osd-ldiskfs.files
171 Source5: kmp-lustre-osd-zfs.preamble
172 Source6: kmp-lustre-osd-zfs.files
173 Source7: kmp-lustre-tests.files
174 URL: https://wiki.whamcloud.com/
175 BuildRoot: %{_tmppath}/lustre-%{version}-root
176 Requires: %{requires_kmod_name} = %{requires_kmod_version} zlib
177 Requires: %{requires_yaml_name}
178 BuildRequires: libtool libyaml-devel zlib-devel binutils-devel
179 %if %{_vendor}=="redhat"
180 BuildRequires: redhat-rpm-config
181 BuildRequires: pkgconfig
182 %else
183 BuildRequires: pkg-config
184 %endif
185 %if %{with servers}
186 Requires: lustre-osd
187 Requires: lustre-osd-mount
188 Obsoletes: lustre-server < %{version}
189 Provides: lustre-server = %{version}-%{release}
190 %endif
191 Obsoletes: lustre-client < %{version}
192 Provides: lustre-client = %{version}-%{release}
193
194 # GSS requires this: BuildRequires: libgssapi-devel >= 0.10
195 %if %{_vendor}=="redhat" || %{_vendor}=="fedora"
196 #suse don't support selinux
197 BuildRequires: libselinux-devel
198 %endif
199 %if %{with lustre_modules}
200 %if %{with mofed}
201 BuildRequires: mlnx-ofa_kernel-devel
202 %if %{_vendor} == "redhat"
203 Requires: kmod-mlnx-ofa_kernel
204 %else
205 Requires: mlnx-ofa_kernel-kmp
206 %endif
207 %endif
208 %if 0%{?rhel} >= 8
209 BuildRequires: kernel-rpm-macros
210 %endif
211 BuildRequires: %kernel_module_package_buildreqs
212 # need to provide a /usr/lib/${uname -r)/build dir
213 BuildRequires: kernel
214 %if %{_vendor}=="redhat"
215 %if %{with kabi}
216 BuildRequires: kernel-abi-whitelists
217 %endif
218 %endif
219 %endif
220
221 %if %{with systemd}
222 Requires(post): systemd
223 Requires(preun): systemd
224 Requires(postun): systemd
225 BuildRequires: systemd
226 %endif
227
228 %description
229 Userspace tools and files for the Lustre file system.
230
231 %if %{with lustre_modules}
232 %if 0%{?rhel} == 7
233 # until we have achieved full kABI compatibility we need to
234 # restrict the kernel range that can be used to the kernel
235 # version from the RHEL minor release
236 # this is supposed to be done for kmods automatically but
237 # RHBZ#1467319 seems to be getting in the way
238 # this is true for el7.0 through el7.4
239 %define preamble %{expand:%(
240 TMPFILE=`mktemp`
241 cat %{SOURCE1} > $TMPFILE
242 kver=%{kernel_version}
243 linuxversion=${kver%%%%-*}
244 linuxrelease=${kver##*-}
245 kabiminor=${linuxrelease%%%%.*}
246 echo "Requires:       kernel < $linuxversion-$((kabiminor+1)), kernel >= $linuxversion-$((kabiminor))" >> $TMPFILE
247 echo $TMPFILE
248 )}
249 %else
250 %define preamble %{SOURCE1}
251 %endif
252 %kernel_module_package -n %{name} -p %preamble -f %SOURCE2 default
253
254 %if %{with ldiskfs}
255 %kernel_module_package -n %{name}-osd-ldiskfs -p %SOURCE3 -f %SOURCE4 default
256 %if %{with lustre_utils}
257 %package osd-ldiskfs-mount
258 Summary: osd-ldiskfs-mount contains mount's ldiskfs specific dso.
259 BuildRequires: e2fsprogs-devel
260 Requires: ldiskfsprogs
261 Provides: lustre-osd-mount = %{version}
262 Obsoletes: lustre-osd-mount < %{version}
263 Group: System Environment/Kernel
264
265 %description osd-ldiskfs-mount
266 LDISKFS hooks for mount/mkfs into a dynamic library.
267
268 %endif  # with lustre_utils
269 %endif  # with ldiskfs
270
271 %if %{with zfs}
272 %kernel_module_package -n %{name}-osd-zfs -p %SOURCE5 -f %SOURCE6 default
273 %if %{with lustre_utils}
274 %package osd-zfs-mount
275 Summary: osd-zfs-mount contains mount's zfs specific dso.
276 Provides: lustre-osd-mount = %{version}
277 Obsoletes: lustre-osd-mount < %{version}
278 # Tests also require zpool from zfs package:
279 Requires: zfs
280 Requires: %{requires_kmod_osd_zfs_name}
281 Group: System Environment/Kernel
282
283 %description osd-zfs-mount
284 ZFS hooks for mount/mkfs into a dynamic library.
285
286 %endif  # with lustre_utils
287 %endif  # with zfs
288
289 %endif # with lustre_modules
290
291 %if %{with servers}
292 %package resource-agents
293 Summary: HA Resuable Cluster Resource Scripts for Lustre
294 Group: System Environment/Base
295 Requires: %{name}
296 Requires: resource-agents
297
298 %description resource-agents
299 A set of scripts to operate Lustre resources in a High Availablity
300 environment for both Pacemaker and rgmanager.
301 %endif
302
303 %if %{with lustre_tests}
304 %package tests
305 Summary: Lustre testing framework
306 Group: System Environment/Kernel
307 Provides: lustre-tests = %{version}
308 %if %{with lustre_iokit}
309 Requires: lustre-iokit
310 %endif
311 Requires: lustre-client = %{version}
312 Requires: %{requires_kmod_name} = %{requires_kmod_version}
313 Requires: %{requires_kmod_tests_name} = %{requires_kmod_version}
314 Requires: attr, rsync, perl, lsof, libtool, /usr/bin/getconf
315 %if %{with mpi}
316 %if %{mpi_name} == "mpich"
317 BuildRequires: mpich-devel
318 %endif
319 %if %{mpi_name} == "openmpi"
320 %if %{_vendor} == "redhat" || 0%{?suse_version} < 1500
321 BuildRequires: openmpi-devel
322 %else
323 BuildRequires: openmpi2-devel
324 %endif
325 %endif
326 %endif
327
328 %description tests
329 This package contains a set of test binaries and scripts that are intended
330 to be used by the Lustre testing framework.
331
332 %if %{with lustre_modules}
333 %kernel_module_package -n %{name}-tests -f %SOURCE7 default
334 %endif
335 %endif
336
337 %if %{with lustre_iokit}
338 %package -n lustre-iokit
339 Summary: The Lustre IO-Kit is a collection of benchmark tools for a cluster with the Lustre file system.
340 Group: Applications/System
341 Requires: python2 > 2.2, sg3_utils
342
343 %description -n lustre-iokit
344 This package includes five tools:
345 sgpdd-survey:
346 A test of the 'bare metal' performance, bypassing as much of the kernel as we can. Uses the sgp_dd utility.
347
348 obdfilter-survey
349 This survey can be run in 3 modes to test disk I/O including the filesystem,
350 network I/O, and disk I/O via the network.  The script does sequential I/O
351 with varying numbers of threads and objects (files) by using lctl::test_brw
352 to drive the echo_client connected to local or remote obdfilter instances,
353 or remote obdecho instances.
354
355 ost-survey
356 This survey tests the client-to-disk performance of individual OSTs, and
357 ranks then for comparison.
358
359 stats-collect
360 This script will collect IO stats on a defined set of nodes.
361
362 ior-survey:
363 A script to run the IOR benchmark. The latest version can be downloaded from
364 http://www.llnl.gov/asci/purple/benchmarks/limited/ior/
365
366 mds-survey:
367 This survey tests the local metadata performance using the echo_client to drive
368 the MDD layer to perform operations. It is run with multiple threads (to
369 simulate MDT service threads) locally on the MDS node, and does not need Lustre
370 clients in order to run
371 %endif
372
373 %if 0%{?suse_version}
374 %debug_package
375 %endif
376 %prep
377 %setup -qn lustre-%{version}
378 ln lustre/ChangeLog ChangeLog-lustre
379 ln lnet/ChangeLog ChangeLog-lnet
380
381 %build
382 # Set an explicit path to our Linux tree, if we can.
383 cd $RPM_BUILD_DIR/lustre-%{version}
384
385 # Store the CFLAGS and LDFLAGS that would normally be used in the UTILS_CFLAGS
386 # and UTILS_LDFLAGS environment variables so that we use can them when compiling
387 # the user-space code in lustre/utils and lnet/utils. As of RHEL 8.0, the
388 # __global_* variants are deprecated in favour of build_cflags, etc. If neither
389 # style is available (e.g. on SLES), then these just end up as empty strings.
390 export UTILS_CFLAGS="%{?build_cflags:%{build_cflags}}%{!?build_cflags:%{?__global_cflags:%{__global_cflags}}}"
391 export UTILS_LDFLAGS="%{?build_ldflags:%{build_ldflags}}%{!?build_ldflags:%{?__global_ldflags:%{__global_ldflags}}}"
392
393 # RHEL7 on PPC64 needs __SANE_USERSPACE_TYPES__ defined so that __s64 and __u64
394 # are presented to user-land as long long instead of long long. Without this it
395 # will fail the format check whenever such a variable is printed.
396 %if 0%{?rhel}
397 %ifarch ppc64
398 export UTILS_CFLAGS="${UTILS_CFLAGS} -D__SANE_USERSPACE_TYPES__=1"
399 %endif
400 %endif
401
402 # Disable any hardening or annotation since this doesn't make sense for
403 # kernel code, and reset %optflags so that the vendor's overzealous flags don't
404 # create build failures.
405 %define optflags -g -O2 -Werror
406 %undefine _annotated_build
407 %undefine _hardened_build
408
409 CONFIGURE_ARGS="%{?configure_args}"
410 if [ -n "$CONFIGURE_ARGS" ]; then
411         # make sure %%kdir and %%kobjdir are not in the configure arguments
412         CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux=[^ ][^ ]* \?//')
413         CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-linux-obj=[^ ][^ ]* \?//')
414         # remove --with-kmp-moddir from configure arguments,
415         # it will be set --with-kmp-moddir=%%kmoddir
416         CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-kmp-moddir=[^ ][^ ]* \?//')
417 fi
418
419 # we need to eval "configure" because $CONFIGURE_ARGS could have a quoted
420 # string in it which we don't want word splitted by the shell
421 # also remove (build|host|target) options because they will be specified
422 # inside $CONFIGURE_ARGS
423 # kmod tools/scripts require %{name} directory with kernel modules
424 %define eval_configure %(echo '%configure' | sed -e 's#\./configure#eval ./configure#' -e 's/--\\(build\\|host\\|target\\)=[^ ][^ ]* //g')
425
426 %{?_openmpi_load}
427 %{?_mpich_load}
428
429 %eval_configure $CONFIGURE_ARGS \
430         %{?with_lustre_tests:--enable-tests}%{!?with_lustre_tests:--disable-tests} \
431         %{?with_lustre_utils:--enable-utils}%{!?with_lustre_utils:--disable-utils} \
432         %{?with_lustre_modules:--enable-modules}%{!?with_lustre_modules:--disable-modules} \
433         %{!?with_shared:--disable-shared} \
434         %{!?with_static:--disable-static} \
435         %{!?with_lustre_iokit:--disable-iokit} \
436         %{!?with_ldiskfs:--disable-ldiskfs} \
437         %{!?with_servers:--disable-server} \
438         %{!?with_zfs:--without-zfs} \
439         %{!?with_snmp:--disable-snmp} \
440         %{!?with_gss:--disable-gss} \
441         %{!?with_gss_keyring:--disable-gss-keyring} \
442         %{!?with_manpages:--disable-manpages} \
443         %{!?with_systemd:--with-systemdsystemunitdir=no} \
444         %{?with_systemd:--with-systemdsystemunitdir=%{_unitdir}} \
445         %{?with_mofed:--with-o2ib=/usr/src/ofa_kernel/default} \
446         --with-linux=%{kdir} \
447         --with-linux-obj=%{kobjdir} \
448         --with-kmp-moddir=%{kmoddir}/%{name}
449
450 make %{?_smp_mflags} -s %{?make_args}
451
452 %install
453 %{?_openmpi_load}
454 %{?_mpich_load}
455
456 make install DESTDIR=$RPM_BUILD_ROOT
457
458 %if %{with lustre_modules}
459 # RHEL's kernel_module_path macro expects that all the modules
460 # in a kmod package will be in modules_fs_path/<sub packagename>
461 # but Lustre installs all of the modules in a single pass into
462 # a shared location.  Since this is a restriction imposed by
463 # RHEL, we handle this here in the spec file rather than in
464 # Lustre's build system.  This is not expected to bother SLES's
465 # kernel_module_path macro.
466 basemodpath=$RPM_BUILD_ROOT%{modules_fs_path}/%{name}
467 %if %{with ldiskfs}
468 mkdir -p $basemodpath-osd-ldiskfs/fs
469 mv $basemodpath/fs/osd_ldiskfs.ko $basemodpath-osd-ldiskfs/fs/osd_ldiskfs.ko
470 mv $basemodpath/fs/ldiskfs.ko $basemodpath-osd-ldiskfs/fs/ldiskfs.ko
471 %endif
472 %if %{with zfs}
473 mkdir -p $basemodpath-osd-zfs/fs
474 mv $basemodpath/fs/osd_zfs.ko $basemodpath-osd-zfs/fs/osd_zfs.ko
475 %endif
476 %if %{with lustre_tests}
477 mkdir -p $basemodpath-tests/fs
478 mv $basemodpath/fs/llog_test.ko $basemodpath-tests/fs/llog_test.ko
479 mkdir -p $RPM_BUILD_ROOT%{_libdir}/lustre/tests/kernel/
480 mv $basemodpath/fs/kinode.ko $RPM_BUILD_ROOT%{_libdir}/lustre/tests/kernel/
481 %endif
482 %endif
483
484 :> lustre.files
485
486 %if %{with servers} && %{with lustre_utils}
487 # The .ha_v2 extension identifies the heartbeat resource agent as using
488 # legacy syntax. Install a compatibility symlink to avoid conflicts when
489 # newer-style agents are added.
490 ln -s Lustre.ha_v2 $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/Lustre
491 echo '%{_sysconfdir}/ha.d/resource.d/Lustre.ha_v2' >>lustre.files
492 echo '%{_sysconfdir}/ha.d/resource.d/Lustre' >>lustre.files
493 %endif
494
495 # systemd is on redhat, fedora, and suse
496 %if %{with systemd}
497 echo '%{_unitdir}/lnet.service' >>lustre.files
498 %endif
499
500 %if %{_vendor}=="redhat"
501 # The following scripts are Red Hat specific
502 %if %{with servers}
503 echo '%{_sysconfdir}/init.d/lustre' >>lustre.files
504 echo '%{_sysconfdir}/sysconfig/lustre' >>lustre.files
505 %if %{with gss_keyring}
506 echo '%{_sysconfdir}/init.d/lsvcgss' >>lustre.files
507 echo '%config(noreplace) %{_sysconfdir}/sysconfig/lsvcgss' >>lustre.files
508 %endif
509 %endif
510
511 %if %{without systemd}
512 echo '%{_sysconfdir}/init.d/lnet' >>lustre.files
513 %endif
514 %endif
515 %if %{with gss_keyring}
516 echo '%config(noreplace) %{_sysconfdir}/request-key.d/lgssc.conf' >>lustre.files
517 %endif
518
519 # fc18 needs 'x' permission for library files
520 find $RPM_BUILD_ROOT -name \*.so -type f -exec chmod +x {} \;
521
522 rm -f $RPM_BUILD_ROOT%{_libdir}/liblnetconfig.la
523 %if %{with static}
524 echo '%attr(-, root, root) %{_libdir}/liblnetconfig.a' >>lustre.files
525 %endif
526 %if %{with shared}
527 echo '%attr(-, root, root) %{_libdir}/liblnetconfig.so' >>lustre.files
528 echo '%attr(-, root, root) %{_libdir}/liblnetconfig.so.*' >>lustre.files
529 %endif
530
531 %if %{with ldiskfs}
532 echo '%{_libdir}/libiam.a' >>lustre.files
533 %endif
534
535 %if %{with snmp}
536 mkdir -p $RPM_BUILD_ROOT/%{_libdir}/lustre/snmp
537 echo '%{_libdir}/lustre/snmp' >>lustre.files
538 %endif
539
540 %if %{with lustre_utils}
541 mkdir -p $RPM_BUILD_ROOT/%{_datadir}/lustre
542 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre ] ; then
543         find $RPM_BUILD_ROOT%{_libdir}/@PACKAGE@ -name \*.la -type f -exec rm -f {} \;
544 fi
545 %endif
546
547 %if %{with lustre_modules}
548 # mark modules executable for find-debuginfo.sh
549 find $RPM_BUILD_ROOT/lib/modules -name \*.ko -type f -exec chmod u+x {} \;
550 %endif
551
552 rm -f $RPM_BUILD_ROOT%{_libdir}/liblustreapi.la
553
554 %if %{with lustre_tests}
555 :> lustre-tests.files
556 echo '%{_libdir}/lustre/tests/*' >>lustre-tests.files
557 echo '%{_bindir}/mcreate' >>lustre-tests.files
558 echo '%{_bindir}/munlink' >>lustre-tests.files
559 echo '%{_bindir}/statx' >>lustre-tests.files
560 echo '%{_sbindir}/wirecheck' >>lustre-tests.files
561 echo '%{_sbindir}/wiretest' >>lustre-tests.files
562 if [ -n "$MPI_BIN" ]; then
563         echo "$MPI_BIN/*" >>lustre-tests.files
564 fi
565 %endif
566
567 %files -f lustre.files
568 %defattr(-,root,root)
569 %{_sbindir}/*
570 %if %{with lustre_tests}
571 %exclude %{_sbindir}/wirecheck
572 %exclude %{_sbindir}/wiretest
573 %endif
574 %if %{with zfs}
575 %exclude %{_sbindir}/zfsobj2fid
576 %endif
577 %if %{with lustre_utils}
578 %if %{with servers}
579 %{_libexecdir}/lustre/lc_common
580 %{_libexecdir}/lustre/haconfig
581 %{_bindir}/lustre_req_history
582 %endif
583
584 %{_bindir}/llobdstat
585 %{_bindir}/llstat
586 %{_bindir}/plot-llstat
587 %{_datadir}/lustre
588
589 %{_bindir}/lfs
590 %{_bindir}/lfs_migrate
591 /sbin/mount.lustre
592 /sbin/mount.lustre_tgt
593 %{_datadir}/bash-completion/completions/*
594 %endif
595
596 %if %{with manpages}
597 %{_mandir}/man?/*
598 %endif
599
600 %if %{with static}
601 %{_libdir}/liblustreapi.a
602 %endif
603 %if %{with shared}
604 %{_libdir}/liblustreapi.so*
605 %endif
606 %{_includedir}/lustre
607 %{_includedir}/linux/lnet
608 %{_includedir}/linux/lustre
609 %{_sysconfdir}/udev/rules.d/99-lustre.rules
610 %if %{with servers}
611 %{_sysconfdir}/udev/rules.d/99-lustre-server.rules
612 %endif
613 %if %{with zfs}
614 %config(noreplace) %{_sysconfdir}/ldev.conf
615 %endif
616 %config(noreplace) %{_sysconfdir}/lnet.conf
617 %config(noreplace) %{_sysconfdir}/modprobe.d/ko2iblnd.conf
618 %if %{with lustre_utils}
619 %config(noreplace) %{_sysconfdir}/lnet_routes.conf
620 %endif
621 %if %{with lustre_modules}
622
623 %if %{with shared}
624 %if %{with ldiskfs}
625 %if %{with lustre_utils}
626 %files osd-ldiskfs-mount
627 %defattr(-,root,root)
628 %{_libdir}/@PACKAGE@/mount_osd_ldiskfs.so
629 %endif
630 %endif
631 %endif
632
633 %if %{with shared}
634 %if %{with zfs}
635 %if %{with lustre_utils}
636 %files osd-zfs-mount
637 %defattr(-,root,root)
638 %{_libdir}/@PACKAGE@/mount_osd_zfs.so
639 %{_sysconfdir}/zfs/zed.d/*
640 %endif
641 %endif
642 %endif
643
644 %endif # with lustre_modules
645
646 %if %{with servers}
647 %files resource-agents
648 %defattr(0755,root,root)
649 %{_prefix}/lib/ocf/resource.d/lustre/
650 %endif
651
652 %if %{with lustre_tests}
653 %files tests -f lustre-tests.files
654 %defattr(-,root,root)
655 %endif
656
657 %if %{with lustre_iokit}
658 %files -n lustre-iokit
659 %defattr(-, root, root)
660 %{_bindir}/iokit-config
661 %{_bindir}/iokit-gather-stats
662 %{_bindir}/iokit-libecho
663 %{_bindir}/iokit-lstats
664 %{_bindir}/iokit-parse-ior
665 %{_bindir}/iokit-plot-obdfilter
666 %{_bindir}/iokit-plot-ost
667 %{_bindir}/iokit-plot-sgpdd
668 %{_bindir}/ior-survey
669 %{_bindir}/mds-survey
670 %{_bindir}/obdfilter-survey
671 %{_bindir}/ost-survey
672 %{_bindir}/sgpdd-survey
673 %doc lustre-iokit/ior-survey/README.ior-survey
674 %doc lustre-iokit/mds-survey/README.mds-survey
675 %doc lustre-iokit/obdfilter-survey/README.obdfilter-survey
676 %doc lustre-iokit/ost-survey/README.ost-survey
677 %doc lustre-iokit/sgpdd-survey/README.sgpdd-survey
678 %doc lustre-iokit/stats-collect/README.iokit-lstats
679 %endif
680
681 %post
682 %if %{with systemd}
683 %systemd_post lnet.service
684 %endif
685
686 %preun
687 %if %{with systemd}
688 %systemd_preun lnet.service
689 %endif
690
691 %postun
692 %if %{with systemd}
693 %systemd_postun_with_restart lnet.service
694 %endif
695
696 %clean
697 rm -rf $RPM_BUILD_ROOT
698 rm -rf %{_tmppath}/kmp