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