1eda14cbcSMatt Macy%global _sbindir    /sbin
2eda14cbcSMatt Macy%global _libdir     /%{_lib}
3eda14cbcSMatt Macy
4eda14cbcSMatt Macy# Set the default udev directory based on distribution.
5eda14cbcSMatt Macy%if %{undefined _udevdir}
6c9539b89SMartin Matuska%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler}
7eda14cbcSMatt Macy%global _udevdir    %{_prefix}/lib/udev
8eda14cbcSMatt Macy%else
9eda14cbcSMatt Macy%global _udevdir    /lib/udev
10eda14cbcSMatt Macy%endif
11eda14cbcSMatt Macy%endif
12eda14cbcSMatt Macy
13eda14cbcSMatt Macy# Set the default udevrule directory based on distribution.
14eda14cbcSMatt Macy%if %{undefined _udevruledir}
15c9539b89SMartin Matuska%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler}
16eda14cbcSMatt Macy%global _udevruledir    %{_prefix}/lib/udev/rules.d
17eda14cbcSMatt Macy%else
18eda14cbcSMatt Macy%global _udevruledir    /lib/udev/rules.d
19eda14cbcSMatt Macy%endif
20eda14cbcSMatt Macy%endif
21eda14cbcSMatt Macy
2223cf27dbSMartin Matuska# Set the default _bashcompletiondir directory based on distribution.
2323cf27dbSMartin Matuska%if %{undefined _bashcompletiondir}
2423cf27dbSMartin Matuska%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler}
2523cf27dbSMartin Matuska%global _bashcompletiondir    /etc/bash_completion.d
2623cf27dbSMartin Matuska%else
2723cf27dbSMartin Matuska%global _bashcompletiondir    /usr/share/bash-completion
2823cf27dbSMartin Matuska%endif
2923cf27dbSMartin Matuska%endif
3023cf27dbSMartin Matuska
31eda14cbcSMatt Macy# Set the default dracut directory based on distribution.
32eda14cbcSMatt Macy%if %{undefined _dracutdir}
33c9539b89SMartin Matuska%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler}
34eda14cbcSMatt Macy%global _dracutdir  %{_prefix}/lib/dracut
35eda14cbcSMatt Macy%else
36eda14cbcSMatt Macy%global _dracutdir  %{_prefix}/share/dracut
37eda14cbcSMatt Macy%endif
38eda14cbcSMatt Macy%endif
39eda14cbcSMatt Macy
40eda14cbcSMatt Macy%if %{undefined _initconfdir}
41eda14cbcSMatt Macy%global _initconfdir /etc/sysconfig
42eda14cbcSMatt Macy%endif
43eda14cbcSMatt Macy
44eda14cbcSMatt Macy%if %{undefined _unitdir}
45eda14cbcSMatt Macy%global _unitdir %{_prefix}/lib/systemd/system
46eda14cbcSMatt Macy%endif
47eda14cbcSMatt Macy
48eda14cbcSMatt Macy%if %{undefined _presetdir}
49eda14cbcSMatt Macy%global _presetdir %{_prefix}/lib/systemd/system-preset
50eda14cbcSMatt Macy%endif
51eda14cbcSMatt Macy
52eda14cbcSMatt Macy%if %{undefined _modulesloaddir}
53eda14cbcSMatt Macy%global _modulesloaddir %{_prefix}/lib/modules-load.d
54eda14cbcSMatt Macy%endif
55eda14cbcSMatt Macy
56eda14cbcSMatt Macy%if %{undefined _systemdgeneratordir}
57eda14cbcSMatt Macy%global _systemdgeneratordir %{_prefix}/lib/systemd/system-generators
58eda14cbcSMatt Macy%endif
59eda14cbcSMatt Macy
60eda14cbcSMatt Macy%if %{undefined _pkgconfigdir}
61eda14cbcSMatt Macy%global _pkgconfigdir %{_prefix}/%{_lib}/pkgconfig
62eda14cbcSMatt Macy%endif
63eda14cbcSMatt Macy
64eda14cbcSMatt Macy%bcond_with    debug
65eda14cbcSMatt Macy%bcond_with    debuginfo
66eda14cbcSMatt Macy%bcond_with    asan
67c03c5b1cSMartin Matuska%bcond_with    ubsan
68eda14cbcSMatt Macy%bcond_with    systemd
69eda14cbcSMatt Macy%bcond_with    pam
70e92ffd9bSMartin Matuska%bcond_without pyzfs
71eda14cbcSMatt Macy
72eda14cbcSMatt Macy# Generic enable switch for systemd
73eda14cbcSMatt Macy%if %{with systemd}
74eda14cbcSMatt Macy%define _systemd 1
75eda14cbcSMatt Macy%endif
76eda14cbcSMatt Macy
77e92ffd9bSMartin Matuska# Distros below support systemd
78bb2d13b6SMartin Matuska%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler}
79eda14cbcSMatt Macy%define _systemd 1
80eda14cbcSMatt Macy%endif
81eda14cbcSMatt Macy
82e92ffd9bSMartin Matuska# When not specified default to distribution provided version.
83eda14cbcSMatt Macy%if %{undefined __use_python}
84eda14cbcSMatt Macy%define __python                  /usr/bin/python3
85eda14cbcSMatt Macy%define __python_pkg_version      3
86eda14cbcSMatt Macy%else
87eda14cbcSMatt Macy%define __python                  %{__use_python}
88eda14cbcSMatt Macy%define __python_pkg_version      %{__use_python_pkg_version}
89eda14cbcSMatt Macy%endif
90bb2d13b6SMartin Matuska%define __python_sitelib          %(%{__python} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib())" 2>/dev/null || %{__python} -Esc "import sysconfig; print(sysconfig.get_path('purelib'))")
91eda14cbcSMatt Macy
92eda14cbcSMatt MacyName:           @PACKAGE@
93eda14cbcSMatt MacyVersion:        @VERSION@
94eda14cbcSMatt MacyRelease:        @RELEASE@%{?dist}
95eda14cbcSMatt MacySummary:        Commands to control the kernel modules and libraries
96eda14cbcSMatt Macy
97eda14cbcSMatt MacyGroup:          System Environment/Kernel
98eda14cbcSMatt MacyLicense:        @ZFS_META_LICENSE@
99180f8225SMatt MacyURL:            https://github.com/openzfs/zfs
100eda14cbcSMatt MacySource0:        %{name}-%{version}.tar.gz
101eda14cbcSMatt MacyBuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
10287bf66d4SMartin MatuskaRequires:       libzpool6%{?_isa} = %{version}-%{release}
103e3aa18adSMartin MatuskaRequires:       libnvpair3%{?_isa} = %{version}-%{release}
104e3aa18adSMartin MatuskaRequires:       libuutil3%{?_isa} = %{version}-%{release}
10587bf66d4SMartin MatuskaRequires:       libzfs6%{?_isa} = %{version}-%{release}
106eda14cbcSMatt MacyRequires:       %{name}-kmod = %{version}
107e3aa18adSMartin MatuskaProvides:       %{name}-kmod-common = %{version}-%{release}
108271171e0SMartin MatuskaObsoletes:      spl <= %{version}
109eda14cbcSMatt Macy
11016038816SMartin Matuska# zfs-fuse provides the same commands and man pages that OpenZFS does.
11116038816SMartin Matuska# Renaming those on either side would conflict with all available documentation.
112eda14cbcSMatt MacyConflicts:      zfs-fuse
113eda14cbcSMatt Macy
114bb2d13b6SMartin Matuska%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler}
115eda14cbcSMatt MacyBuildRequires:  gcc, make
116eda14cbcSMatt MacyBuildRequires:  zlib-devel
117eda14cbcSMatt MacyBuildRequires:  libuuid-devel
118eda14cbcSMatt MacyBuildRequires:  libblkid-devel
119eda14cbcSMatt MacyBuildRequires:  libudev-devel
120eda14cbcSMatt MacyBuildRequires:  libattr-devel
121eda14cbcSMatt MacyBuildRequires:  openssl-devel
122c9539b89SMartin Matuska%if 0%{?fedora}%{?suse_version}%{?openEuler} || 0%{?rhel} >= 8 || 0%{?centos} >= 8
123e3aa18adSMartin MatuskaBuildRequires:  libtirpc-devel
124e3aa18adSMartin Matuska%endif
125e3aa18adSMartin Matuska
126bb2d13b6SMartin Matuska%if (0%{?fedora}%{?suse_version}%{?openEuler}) || (0%{?rhel} && 0%{?rhel} < 9)
1273ff01b23SMartin Matuska# We don't directly use it, but if this isn't installed, rpmbuild as root can
1283ff01b23SMartin Matuska# crash+corrupt rpmdb
1293ff01b23SMartin Matuska# See issue #12071
1303ff01b23SMartin MatuskaBuildRequires:  ncompress
131eda14cbcSMatt Macy%endif
1323ff01b23SMartin Matuska
133eda14cbcSMatt MacyRequires:       openssl
134eda14cbcSMatt Macy%if 0%{?_systemd}
135eda14cbcSMatt MacyBuildRequires: systemd
136eda14cbcSMatt Macy%endif
137c03c5b1cSMartin Matuska
138eda14cbcSMatt Macy%endif
139eda14cbcSMatt Macy
140eda14cbcSMatt Macy%if 0%{?_systemd}
141eda14cbcSMatt MacyRequires(post): systemd
142eda14cbcSMatt MacyRequires(preun): systemd
143eda14cbcSMatt MacyRequires(postun): systemd
144eda14cbcSMatt Macy%endif
145eda14cbcSMatt Macy
146eda14cbcSMatt Macy# The zpool iostat/status -c scripts call some utilities like lsblk and iostat
147eda14cbcSMatt MacyRequires:  util-linux
148eda14cbcSMatt MacyRequires:  sysstat
149eda14cbcSMatt Macy
150eda14cbcSMatt Macy%description
151eda14cbcSMatt MacyThis package contains the core ZFS command line utilities.
152eda14cbcSMatt Macy
15387bf66d4SMartin Matuska%package -n libzpool6
154eda14cbcSMatt MacySummary:        Native ZFS pool library for Linux
155eda14cbcSMatt MacyGroup:          System Environment/Kernel
156271171e0SMartin MatuskaObsoletes:      libzpool2 <= %{version}
157271171e0SMartin MatuskaObsoletes:      libzpool4 <= %{version}
15887bf66d4SMartin MatuskaObsoletes:      libzpool5 <= %{version}
159eda14cbcSMatt Macy
16087bf66d4SMartin Matuska%description -n libzpool6
161eda14cbcSMatt MacyThis package contains the zpool library, which provides support
162eda14cbcSMatt Macyfor managing zpools
163eda14cbcSMatt Macy
16416038816SMartin Matuska%if %{defined ldconfig_scriptlets}
16587bf66d4SMartin Matuska%ldconfig_scriptlets -n libzpool6
16616038816SMartin Matuska%else
16787bf66d4SMartin Matuska%post -n libzpool6 -p /sbin/ldconfig
16887bf66d4SMartin Matuska%postun -n libzpool6 -p /sbin/ldconfig
16916038816SMartin Matuska%endif
170eda14cbcSMatt Macy
1717877fdebSMatt Macy%package -n libnvpair3
172eda14cbcSMatt MacySummary:        Solaris name-value library for Linux
173eda14cbcSMatt MacyGroup:          System Environment/Kernel
174271171e0SMartin MatuskaObsoletes:      libnvpair1 <= %{version}
175eda14cbcSMatt Macy
1767877fdebSMatt Macy%description -n libnvpair3
177eda14cbcSMatt MacyThis package contains routines for packing and unpacking name-value
178eda14cbcSMatt Macypairs.  This functionality is used to portably transport data across
179eda14cbcSMatt Macyprocess boundaries, between kernel and user space, and can be used
180eda14cbcSMatt Macyto write self describing data structures on disk.
181eda14cbcSMatt Macy
18216038816SMartin Matuska%if %{defined ldconfig_scriptlets}
18316038816SMartin Matuska%ldconfig_scriptlets -n libnvpair3
18416038816SMartin Matuska%else
1857877fdebSMatt Macy%post -n libnvpair3 -p /sbin/ldconfig
1867877fdebSMatt Macy%postun -n libnvpair3 -p /sbin/ldconfig
18716038816SMartin Matuska%endif
188eda14cbcSMatt Macy
1897877fdebSMatt Macy%package -n libuutil3
190eda14cbcSMatt MacySummary:        Solaris userland utility library for Linux
191eda14cbcSMatt MacyGroup:          System Environment/Kernel
192271171e0SMartin MatuskaObsoletes:      libuutil1 <= %{version}
193eda14cbcSMatt Macy
1947877fdebSMatt Macy%description -n libuutil3
195180f8225SMatt MacyThis library provides a variety of compatibility functions for OpenZFS:
196eda14cbcSMatt Macy * libspl: The Solaris Porting Layer userland library, which provides APIs
197eda14cbcSMatt Macy   that make it possible to run Solaris user code in a Linux environment
198eda14cbcSMatt Macy   with relatively minimal modification.
199eda14cbcSMatt Macy * libavl: The Adelson-Velskii Landis balanced binary tree manipulation
200eda14cbcSMatt Macy   library.
201eda14cbcSMatt Macy * libefi: The Extensible Firmware Interface library for GUID disk
202eda14cbcSMatt Macy   partitioning.
203eda14cbcSMatt Macy * libshare: NFS, SMB, and iSCSI service integration for ZFS.
204eda14cbcSMatt Macy
20516038816SMartin Matuska%if %{defined ldconfig_scriptlets}
20616038816SMartin Matuska%ldconfig_scriptlets -n libuutil3
20716038816SMartin Matuska%else
2087877fdebSMatt Macy%post -n libuutil3 -p /sbin/ldconfig
2097877fdebSMatt Macy%postun -n libuutil3 -p /sbin/ldconfig
21016038816SMartin Matuska%endif
211eda14cbcSMatt Macy
21216038816SMartin Matuska# The library version is encoded in the package name.  When updating the
21316038816SMartin Matuska# version information it is important to add an obsoletes line below for
21416038816SMartin Matuska# the previous version of the package.
21587bf66d4SMartin Matuska%package -n libzfs6
216eda14cbcSMatt MacySummary:        Native ZFS filesystem library for Linux
217eda14cbcSMatt MacyGroup:          System Environment/Kernel
218271171e0SMartin MatuskaObsoletes:      libzfs2 <= %{version}
219271171e0SMartin MatuskaObsoletes:      libzfs4 <= %{version}
22087bf66d4SMartin MatuskaObsoletes:      libzfs5 <= %{version}
221eda14cbcSMatt Macy
22287bf66d4SMartin Matuska%description -n libzfs6
223eda14cbcSMatt MacyThis package provides support for managing ZFS filesystems
224eda14cbcSMatt Macy
22516038816SMartin Matuska%if %{defined ldconfig_scriptlets}
22687bf66d4SMartin Matuska%ldconfig_scriptlets -n libzfs6
22716038816SMartin Matuska%else
22887bf66d4SMartin Matuska%post -n libzfs6 -p /sbin/ldconfig
22987bf66d4SMartin Matuska%postun -n libzfs6 -p /sbin/ldconfig
23016038816SMartin Matuska%endif
231eda14cbcSMatt Macy
23287bf66d4SMartin Matuska%package -n libzfs6-devel
233eda14cbcSMatt MacySummary:        Development headers
234eda14cbcSMatt MacyGroup:          System Environment/Kernel
23587bf66d4SMartin MatuskaRequires:       libzfs6%{?_isa} = %{version}-%{release}
23687bf66d4SMartin MatuskaRequires:       libzpool6%{?_isa} = %{version}-%{release}
237e3aa18adSMartin MatuskaRequires:       libnvpair3%{?_isa} = %{version}-%{release}
238e3aa18adSMartin MatuskaRequires:       libuutil3%{?_isa} = %{version}-%{release}
23987bf66d4SMartin MatuskaProvides:       libzpool6-devel = %{version}-%{release}
240e3aa18adSMartin MatuskaProvides:       libnvpair3-devel = %{version}-%{release}
241e3aa18adSMartin MatuskaProvides:       libuutil3-devel = %{version}-%{release}
242271171e0SMartin MatuskaObsoletes:      zfs-devel <= %{version}
243271171e0SMartin MatuskaObsoletes:      libzfs2-devel <= %{version}
244271171e0SMartin MatuskaObsoletes:      libzfs4-devel <= %{version}
24587bf66d4SMartin MatuskaObsoletes:      libzfs5-devel <= %{version}
246eda14cbcSMatt Macy
24787bf66d4SMartin Matuska%description -n libzfs6-devel
248eda14cbcSMatt MacyThis package contains the header files needed for building additional
249eda14cbcSMatt Macyapplications against the ZFS libraries.
250eda14cbcSMatt Macy
251eda14cbcSMatt Macy%package test
252eda14cbcSMatt MacySummary:        Test infrastructure
253eda14cbcSMatt MacyGroup:          System Environment/Kernel
254eda14cbcSMatt MacyRequires:       %{name}%{?_isa} = %{version}-%{release}
255eda14cbcSMatt MacyRequires:       parted
256eda14cbcSMatt MacyRequires:       lsscsi
257eda14cbcSMatt MacyRequires:       mdadm
258eda14cbcSMatt MacyRequires:       bc
259eda14cbcSMatt MacyRequires:       ksh
260eda14cbcSMatt MacyRequires:       fio
261eda14cbcSMatt MacyRequires:       acl
262eda14cbcSMatt MacyRequires:       sudo
263eda14cbcSMatt MacyRequires:       sysstat
264eda14cbcSMatt MacyRequires:       libaio
265eda14cbcSMatt MacyRequires:       python%{__python_pkg_version}
266bb2d13b6SMartin Matuska%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler}
267eda14cbcSMatt MacyBuildRequires:  libaio-devel
268eda14cbcSMatt Macy%endif
269eda14cbcSMatt MacyAutoReqProv:    no
270eda14cbcSMatt Macy
271eda14cbcSMatt Macy%description test
272eda14cbcSMatt MacyThis package contains test infrastructure and support scripts for
273eda14cbcSMatt Macyvalidating the file system.
274eda14cbcSMatt Macy
275eda14cbcSMatt Macy%package dracut
276eda14cbcSMatt MacySummary:        Dracut module
277eda14cbcSMatt MacyGroup:          System Environment/Kernel
278eda14cbcSMatt MacyBuildArch:	noarch
279eda14cbcSMatt MacyRequires:       %{name} >= %{version}
280eda14cbcSMatt MacyRequires:       dracut
281eda14cbcSMatt MacyRequires:       /usr/bin/awk
282eda14cbcSMatt MacyRequires:       grep
283eda14cbcSMatt Macy
284eda14cbcSMatt Macy%description dracut
285eda14cbcSMatt MacyThis package contains a dracut module used to construct an initramfs
286eda14cbcSMatt Macyimage which is ZFS aware.
287eda14cbcSMatt Macy
288eda14cbcSMatt Macy%if %{with pyzfs}
289e92ffd9bSMartin Matuska# Enforce `python36-` package prefix for CentOS 7
290e92ffd9bSMartin Matuska# since dependencies come from EPEL and are named this way
291eda14cbcSMatt Macy%package -n python%{__python_pkg_version}-pyzfs
292eda14cbcSMatt MacySummary:        Python %{python_version} wrapper for libzfs_core
293eda14cbcSMatt MacyGroup:          Development/Languages/Python
294eda14cbcSMatt MacyLicense:        Apache-2.0
295eda14cbcSMatt MacyBuildArch:      noarch
29687bf66d4SMartin MatuskaRequires:       libzfs6 = %{version}-%{release}
297e3aa18adSMartin MatuskaRequires:       libnvpair3 = %{version}-%{release}
298eda14cbcSMatt MacyRequires:       libffi
299eda14cbcSMatt MacyRequires:       python%{__python_pkg_version}
300e92ffd9bSMartin Matuska
301e92ffd9bSMartin Matuska%if 0%{?centos} == 7
302e92ffd9bSMartin MatuskaRequires:       python36-cffi
3033ff01b23SMartin Matuska%else
304e92ffd9bSMartin MatuskaRequires:       python%{__python_pkg_version}-cffi
3053ff01b23SMartin Matuska%endif
306e92ffd9bSMartin Matuska
307bb2d13b6SMartin Matuska%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler}
308e92ffd9bSMartin Matuska%if 0%{?centos} == 7
309e92ffd9bSMartin MatuskaBuildRequires:  python36-packaging
310e92ffd9bSMartin MatuskaBuildRequires:  python36-devel
311e92ffd9bSMartin MatuskaBuildRequires:  python36-cffi
312e92ffd9bSMartin MatuskaBuildRequires:  python36-setuptools
313e92ffd9bSMartin Matuska%else
314e92ffd9bSMartin MatuskaBuildRequires:  python%{__python_pkg_version}-packaging
315eda14cbcSMatt MacyBuildRequires:  python%{__python_pkg_version}-devel
316e92ffd9bSMartin MatuskaBuildRequires:  python%{__python_pkg_version}-cffi
317e92ffd9bSMartin MatuskaBuildRequires:  python%{__python_pkg_version}-setuptools
318e92ffd9bSMartin Matuska%endif
319e92ffd9bSMartin Matuska
320eda14cbcSMatt MacyBuildRequires:  libffi-devel
321eda14cbcSMatt Macy%endif
322eda14cbcSMatt Macy
323eda14cbcSMatt Macy%description -n python%{__python_pkg_version}-pyzfs
324eda14cbcSMatt MacyThis package provides a python wrapper for the libzfs_core C library.
325eda14cbcSMatt Macy%endif
326eda14cbcSMatt Macy
327eda14cbcSMatt Macy%if 0%{?_initramfs}
328eda14cbcSMatt Macy%package initramfs
329eda14cbcSMatt MacySummary:        Initramfs module
330eda14cbcSMatt MacyGroup:          System Environment/Kernel
331eda14cbcSMatt MacyRequires:       %{name}%{?_isa} = %{version}-%{release}
332eda14cbcSMatt MacyRequires:       initramfs-tools
333eda14cbcSMatt Macy
334eda14cbcSMatt Macy%description initramfs
335eda14cbcSMatt MacyThis package contains a initramfs module used to construct an initramfs
336eda14cbcSMatt Macyimage which is ZFS aware.
337eda14cbcSMatt Macy%endif
338eda14cbcSMatt Macy
339da5137abSMartin Matuska%if %{with pam}
340da5137abSMartin Matuska%package -n pam_zfs_key
341da5137abSMartin MatuskaSummary:        PAM module for encrypted ZFS datasets
342da5137abSMartin Matuska
343bb2d13b6SMartin Matuska%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler}
344da5137abSMartin MatuskaBuildRequires:  pam-devel
345da5137abSMartin Matuska%endif
346da5137abSMartin Matuska
347da5137abSMartin Matuska%description -n pam_zfs_key
348da5137abSMartin MatuskaThis package contains the pam_zfs_key PAM module, which provides
349da5137abSMartin Matuskasupport for unlocking datasets on user login.
350da5137abSMartin Matuska%endif
351da5137abSMartin Matuska
352eda14cbcSMatt Macy%prep
353eda14cbcSMatt Macy%if %{with debug}
354eda14cbcSMatt Macy    %define debug --enable-debug
355eda14cbcSMatt Macy%else
356eda14cbcSMatt Macy    %define debug --disable-debug
357eda14cbcSMatt Macy%endif
358eda14cbcSMatt Macy
359eda14cbcSMatt Macy%if %{with debuginfo}
360eda14cbcSMatt Macy    %define debuginfo --enable-debuginfo
361eda14cbcSMatt Macy%else
362eda14cbcSMatt Macy    %define debuginfo --disable-debuginfo
363eda14cbcSMatt Macy%endif
364eda14cbcSMatt Macy
365eda14cbcSMatt Macy%if %{with asan}
366eda14cbcSMatt Macy    %define asan --enable-asan
367eda14cbcSMatt Macy%else
368eda14cbcSMatt Macy    %define asan --disable-asan
369eda14cbcSMatt Macy%endif
370eda14cbcSMatt Macy
371c03c5b1cSMartin Matuska%if %{with ubsan}
372c03c5b1cSMartin Matuska    %define ubsan --enable-ubsan
373c03c5b1cSMartin Matuska%else
374c03c5b1cSMartin Matuska    %define ubsan --disable-ubsan
375c03c5b1cSMartin Matuska%endif
376c03c5b1cSMartin Matuska
377eda14cbcSMatt Macy%if 0%{?_systemd}
378eda14cbcSMatt Macy    %define systemd --enable-systemd --with-systemdunitdir=%{_unitdir} --with-systemdpresetdir=%{_presetdir} --with-systemdmodulesloaddir=%{_modulesloaddir} --with-systemdgeneratordir=%{_systemdgeneratordir} --disable-sysvinit
379eda14cbcSMatt Macy    %define systemd_svcs zfs-import-cache.service zfs-import-scan.service zfs-mount.service zfs-share.service zfs-zed.service zfs.target zfs-import.target zfs-volume-wait.service zfs-volumes.target
380eda14cbcSMatt Macy%else
381eda14cbcSMatt Macy    %define systemd --enable-sysvinit --disable-systemd
382eda14cbcSMatt Macy%endif
383eda14cbcSMatt Macy
384eda14cbcSMatt Macy%if %{with pyzfs}
385eda14cbcSMatt Macy    %define pyzfs --enable-pyzfs
386eda14cbcSMatt Macy%else
387eda14cbcSMatt Macy    %define pyzfs --disable-pyzfs
388eda14cbcSMatt Macy%endif
389eda14cbcSMatt Macy
390eda14cbcSMatt Macy%if %{with pam}
391eda14cbcSMatt Macy    %define pam --enable-pam
392eda14cbcSMatt Macy%else
393eda14cbcSMatt Macy    %define pam --disable-pam
394eda14cbcSMatt Macy%endif
395eda14cbcSMatt Macy
396eda14cbcSMatt Macy%setup -q
397eda14cbcSMatt Macy
398eda14cbcSMatt Macy%build
399eda14cbcSMatt Macy%configure \
400eda14cbcSMatt Macy    --with-config=user \
401eda14cbcSMatt Macy    --with-udevdir=%{_udevdir} \
402eda14cbcSMatt Macy    --with-udevruledir=%{_udevruledir} \
403eda14cbcSMatt Macy    --with-dracutdir=%{_dracutdir} \
404eda14cbcSMatt Macy    --with-pamconfigsdir=%{_datadir}/pam-configs \
405eda14cbcSMatt Macy    --with-pammoduledir=%{_libdir}/security \
406eda14cbcSMatt Macy    --with-python=%{__python} \
407eda14cbcSMatt Macy    --with-pkgconfigdir=%{_pkgconfigdir} \
408eda14cbcSMatt Macy    --disable-static \
409eda14cbcSMatt Macy    %{debug} \
410eda14cbcSMatt Macy    %{debuginfo} \
411eda14cbcSMatt Macy    %{asan} \
412c03c5b1cSMartin Matuska    %{ubsan} \
413eda14cbcSMatt Macy    %{systemd} \
414eda14cbcSMatt Macy    %{pam} \
415eda14cbcSMatt Macy    %{pyzfs}
416eda14cbcSMatt Macymake %{?_smp_mflags}
417eda14cbcSMatt Macy
418eda14cbcSMatt Macy%install
419eda14cbcSMatt Macy%{__rm} -rf $RPM_BUILD_ROOT
420eda14cbcSMatt Macymake install DESTDIR=%{?buildroot}
421eda14cbcSMatt Macyfind %{?buildroot}%{_libdir} -name '*.la' -exec rm -f {} \;
422eda14cbcSMatt Macy%if 0%{!?__brp_mangle_shebangs:1}
423eda14cbcSMatt Macyfind %{?buildroot}%{_bindir} \
424c7046f76SMartin Matuska    \( -name arc_summary -or -name arcstat -or -name dbufstat \
425c7046f76SMartin Matuska    -or -name zilstat \) \
426eda14cbcSMatt Macy    -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \;
427eda14cbcSMatt Macyfind %{?buildroot}%{_datadir} \
428eda14cbcSMatt Macy    \( -name test-runner.py -or -name zts-report.py \) \
429eda14cbcSMatt Macy    -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \;
430eda14cbcSMatt Macy%endif
431eda14cbcSMatt Macy
432eda14cbcSMatt Macy%post
433eda14cbcSMatt Macy%if 0%{?_systemd}
434eda14cbcSMatt Macy%if 0%{?systemd_post:1}
435eda14cbcSMatt Macy%systemd_post %{systemd_svcs}
436eda14cbcSMatt Macy%else
437eda14cbcSMatt Macyif [ "$1" = "1" -o "$1" = "install" ] ; then
438eda14cbcSMatt Macy    # Initial installation
439eda14cbcSMatt Macy    systemctl preset %{systemd_svcs} >/dev/null || true
440eda14cbcSMatt Macyfi
441eda14cbcSMatt Macy%endif
442eda14cbcSMatt Macy%else
443eda14cbcSMatt Macyif [ -x /sbin/chkconfig ]; then
444eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-import
445681ce946SMartin Matuska    /sbin/chkconfig --add zfs-load-key
446eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-mount
447eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-share
448eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-zed
449eda14cbcSMatt Macyfi
450eda14cbcSMatt Macy%endif
451eda14cbcSMatt Macyexit 0
452eda14cbcSMatt Macy
453eda14cbcSMatt Macy# On RHEL/CentOS 7 the static nodes aren't refreshed by default after
454eda14cbcSMatt Macy# installing a package.  This is the default behavior for Fedora.
455eda14cbcSMatt Macy%posttrans
456eda14cbcSMatt Macy%if 0%{?rhel} == 7 || 0%{?centos} == 7
457eda14cbcSMatt Macysystemctl restart kmod-static-nodes
458eda14cbcSMatt Macysystemctl restart systemd-tmpfiles-setup-dev
459eda14cbcSMatt Macyudevadm trigger
460eda14cbcSMatt Macy%endif
461eda14cbcSMatt Macy
462eda14cbcSMatt Macy%preun
463eda14cbcSMatt Macy%if 0%{?_systemd}
464eda14cbcSMatt Macy%if 0%{?systemd_preun:1}
465eda14cbcSMatt Macy%systemd_preun %{systemd_svcs}
466eda14cbcSMatt Macy%else
467eda14cbcSMatt Macyif [ "$1" = "0" -o "$1" = "remove" ] ; then
468eda14cbcSMatt Macy    # Package removal, not upgrade
469eda14cbcSMatt Macy    systemctl --no-reload disable %{systemd_svcs} >/dev/null || true
470eda14cbcSMatt Macy    systemctl stop %{systemd_svcs} >/dev/null || true
471eda14cbcSMatt Macyfi
472eda14cbcSMatt Macy%endif
473eda14cbcSMatt Macy%else
474eda14cbcSMatt Macyif [ "$1" = "0" -o "$1" = "remove" ] && [ -x /sbin/chkconfig ]; then
475eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-import
476681ce946SMartin Matuska    /sbin/chkconfig --del zfs-load-key
477eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-mount
478eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-share
479eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-zed
480eda14cbcSMatt Macyfi
481eda14cbcSMatt Macy%endif
482eda14cbcSMatt Macyexit 0
483eda14cbcSMatt Macy
484eda14cbcSMatt Macy%postun
485eda14cbcSMatt Macy%if 0%{?_systemd}
486eda14cbcSMatt Macy%if 0%{?systemd_postun:1}
487eda14cbcSMatt Macy%systemd_postun %{systemd_svcs}
488eda14cbcSMatt Macy%else
489eda14cbcSMatt Macysystemctl --system daemon-reload >/dev/null || true
490eda14cbcSMatt Macy%endif
491eda14cbcSMatt Macy%endif
492eda14cbcSMatt Macy
493eda14cbcSMatt Macy%files
494eda14cbcSMatt Macy# Core utilities
495eda14cbcSMatt Macy%{_sbindir}/*
496eda14cbcSMatt Macy%{_bindir}/raidz_test
497184c1b94SMartin Matuska%{_sbindir}/zgenhostid
498eda14cbcSMatt Macy%{_bindir}/zvol_wait
499e92ffd9bSMartin Matuska# Optional Python 3 scripts
500eda14cbcSMatt Macy%{_bindir}/arc_summary
501eda14cbcSMatt Macy%{_bindir}/arcstat
502eda14cbcSMatt Macy%{_bindir}/dbufstat
503c7046f76SMartin Matuska%{_bindir}/zilstat
504eda14cbcSMatt Macy# Man pages
505eda14cbcSMatt Macy%{_mandir}/man1/*
5063ff01b23SMartin Matuska%{_mandir}/man4/*
507eda14cbcSMatt Macy%{_mandir}/man5/*
5083ff01b23SMartin Matuska%{_mandir}/man7/*
509eda14cbcSMatt Macy%{_mandir}/man8/*
510eda14cbcSMatt Macy# Configuration files and scripts
511eda14cbcSMatt Macy%{_libexecdir}/%{name}
512eda14cbcSMatt Macy%{_udevdir}/vdev_id
513eda14cbcSMatt Macy%{_udevdir}/zvol_id
514eda14cbcSMatt Macy%{_udevdir}/rules.d/*
515ee36e25aSMartin Matuska%{_datadir}/%{name}/compatibility.d
516eda14cbcSMatt Macy%if ! 0%{?_systemd} || 0%{?_initramfs}
517eda14cbcSMatt Macy# Files needed for sysvinit and initramfs-tools
518eda14cbcSMatt Macy%{_sysconfdir}/%{name}/zfs-functions
519eda14cbcSMatt Macy%config(noreplace) %{_initconfdir}/zfs
520eda14cbcSMatt Macy%else
521eda14cbcSMatt Macy%exclude %{_sysconfdir}/%{name}/zfs-functions
522eda14cbcSMatt Macy%exclude %{_initconfdir}/zfs
523eda14cbcSMatt Macy%endif
524eda14cbcSMatt Macy%if 0%{?_systemd}
525eda14cbcSMatt Macy%{_unitdir}/*
526eda14cbcSMatt Macy%{_presetdir}/*
527eda14cbcSMatt Macy%{_modulesloaddir}/*
528eda14cbcSMatt Macy%{_systemdgeneratordir}/*
529eda14cbcSMatt Macy%else
530eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/init.d/*
531eda14cbcSMatt Macy%endif
532eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/%{name}/zed.d/*
533eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/%{name}/zpool.d/*
534eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/%{name}/vdev_id.conf.*.example
535eda14cbcSMatt Macy%attr(440, root, root) %config(noreplace) %{_sysconfdir}/sudoers.d/*
536eda14cbcSMatt Macy
537b2526e8bSMartin Matuska%config(noreplace) %{_bashcompletiondir}/zfs
538ce4dcb97SMartin Matuska%config(noreplace) %{_bashcompletiondir}/zpool
539716fd348SMartin Matuska
54087bf66d4SMartin Matuska%files -n libzpool6
541eda14cbcSMatt Macy%{_libdir}/libzpool.so.*
542eda14cbcSMatt Macy
5437877fdebSMatt Macy%files -n libnvpair3
544eda14cbcSMatt Macy%{_libdir}/libnvpair.so.*
545eda14cbcSMatt Macy
5467877fdebSMatt Macy%files -n libuutil3
547eda14cbcSMatt Macy%{_libdir}/libuutil.so.*
548eda14cbcSMatt Macy
54987bf66d4SMartin Matuska%files -n libzfs6
550eda14cbcSMatt Macy%{_libdir}/libzfs*.so.*
551eda14cbcSMatt Macy
55287bf66d4SMartin Matuska%files -n libzfs6-devel
553eda14cbcSMatt Macy%{_pkgconfigdir}/libzfs.pc
5542c48331dSMatt Macy%{_pkgconfigdir}/libzfsbootenv.pc
555eda14cbcSMatt Macy%{_pkgconfigdir}/libzfs_core.pc
556eda14cbcSMatt Macy%{_libdir}/*.so
557eda14cbcSMatt Macy%{_includedir}/*
558eda14cbcSMatt Macy%doc AUTHORS COPYRIGHT LICENSE NOTICE README.md
559eda14cbcSMatt Macy
560eda14cbcSMatt Macy%files test
561ee36e25aSMartin Matuska%{_datadir}/%{name}/zfs-tests
562ee36e25aSMartin Matuska%{_datadir}/%{name}/test-runner
563ee36e25aSMartin Matuska%{_datadir}/%{name}/runfiles
564ee36e25aSMartin Matuska%{_datadir}/%{name}/*.sh
565eda14cbcSMatt Macy
566eda14cbcSMatt Macy%files dracut
567c03c5b1cSMartin Matuska%doc contrib/dracut/README.md
568eda14cbcSMatt Macy%{_dracutdir}/modules.d/*
569eda14cbcSMatt Macy
570eda14cbcSMatt Macy%if %{with pyzfs}
571eda14cbcSMatt Macy%files -n python%{__python_pkg_version}-pyzfs
572eda14cbcSMatt Macy%doc contrib/pyzfs/README
573eda14cbcSMatt Macy%doc contrib/pyzfs/LICENSE
574eda14cbcSMatt Macy%defattr(-,root,root,-)
575eda14cbcSMatt Macy%{__python_sitelib}/libzfs_core/*
576eda14cbcSMatt Macy%{__python_sitelib}/pyzfs*
577eda14cbcSMatt Macy%endif
578eda14cbcSMatt Macy
579eda14cbcSMatt Macy%if 0%{?_initramfs}
580eda14cbcSMatt Macy%files initramfs
581c03c5b1cSMartin Matuska%doc contrib/initramfs/README.md
582eda14cbcSMatt Macy/usr/share/initramfs-tools/*
583eda14cbcSMatt Macy%else
584eda14cbcSMatt Macy# Since we're not building the initramfs package,
585eda14cbcSMatt Macy# ignore those files.
586eda14cbcSMatt Macy%exclude /usr/share/initramfs-tools
587eda14cbcSMatt Macy%endif
588da5137abSMartin Matuska
589da5137abSMartin Matuska%if %{with pam}
590da5137abSMartin Matuska%files -n pam_zfs_key
591da5137abSMartin Matuska%{_libdir}/security/*
592da5137abSMartin Matuska%{_datadir}/pam-configs/*
593da5137abSMartin Matuska%endif
594