xref: /freebsd/sys/contrib/openzfs/rpm/generic/zfs.spec.in (revision 23cf27db2cc4b0208a35b009f873971a7bb4a6bb)
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
22*23cf27dbSMartin Matuska# Set the default _bashcompletiondir directory based on distribution.
23*23cf27dbSMartin Matuska%if %{undefined _bashcompletiondir}
24*23cf27dbSMartin Matuska%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler}
25*23cf27dbSMartin Matuska%global _bashcompletiondir    /etc/bash_completion.d
26*23cf27dbSMartin Matuska%else
27*23cf27dbSMartin Matuska%global _bashcompletiondir    /usr/share/bash-completion
28*23cf27dbSMartin Matuska%endif
29*23cf27dbSMartin Matuska%endif
30*23cf27dbSMartin 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)
102e3aa18adSMartin MatuskaRequires:       libzpool5%{?_isa} = %{version}-%{release}
103e3aa18adSMartin MatuskaRequires:       libnvpair3%{?_isa} = %{version}-%{release}
104e3aa18adSMartin MatuskaRequires:       libuutil3%{?_isa} = %{version}-%{release}
105e3aa18adSMartin MatuskaRequires:       libzfs5%{?_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
15316038816SMartin Matuska%package -n libzpool5
154eda14cbcSMatt MacySummary:        Native ZFS pool library for Linux
155eda14cbcSMatt MacyGroup:          System Environment/Kernel
156271171e0SMartin MatuskaObsoletes:      libzpool2 <= %{version}
157271171e0SMartin MatuskaObsoletes:      libzpool4 <= %{version}
158eda14cbcSMatt Macy
15916038816SMartin Matuska%description -n libzpool5
160eda14cbcSMatt MacyThis package contains the zpool library, which provides support
161eda14cbcSMatt Macyfor managing zpools
162eda14cbcSMatt Macy
16316038816SMartin Matuska%if %{defined ldconfig_scriptlets}
16416038816SMartin Matuska%ldconfig_scriptlets -n libzpool5
16516038816SMartin Matuska%else
16616038816SMartin Matuska%post -n libzpool5 -p /sbin/ldconfig
16716038816SMartin Matuska%postun -n libzpool5 -p /sbin/ldconfig
16816038816SMartin Matuska%endif
169eda14cbcSMatt Macy
1707877fdebSMatt Macy%package -n libnvpair3
171eda14cbcSMatt MacySummary:        Solaris name-value library for Linux
172eda14cbcSMatt MacyGroup:          System Environment/Kernel
173271171e0SMartin MatuskaObsoletes:      libnvpair1 <= %{version}
174eda14cbcSMatt Macy
1757877fdebSMatt Macy%description -n libnvpair3
176eda14cbcSMatt MacyThis package contains routines for packing and unpacking name-value
177eda14cbcSMatt Macypairs.  This functionality is used to portably transport data across
178eda14cbcSMatt Macyprocess boundaries, between kernel and user space, and can be used
179eda14cbcSMatt Macyto write self describing data structures on disk.
180eda14cbcSMatt Macy
18116038816SMartin Matuska%if %{defined ldconfig_scriptlets}
18216038816SMartin Matuska%ldconfig_scriptlets -n libnvpair3
18316038816SMartin Matuska%else
1847877fdebSMatt Macy%post -n libnvpair3 -p /sbin/ldconfig
1857877fdebSMatt Macy%postun -n libnvpair3 -p /sbin/ldconfig
18616038816SMartin Matuska%endif
187eda14cbcSMatt Macy
1887877fdebSMatt Macy%package -n libuutil3
189eda14cbcSMatt MacySummary:        Solaris userland utility library for Linux
190eda14cbcSMatt MacyGroup:          System Environment/Kernel
191271171e0SMartin MatuskaObsoletes:      libuutil1 <= %{version}
192eda14cbcSMatt Macy
1937877fdebSMatt Macy%description -n libuutil3
194180f8225SMatt MacyThis library provides a variety of compatibility functions for OpenZFS:
195eda14cbcSMatt Macy * libspl: The Solaris Porting Layer userland library, which provides APIs
196eda14cbcSMatt Macy   that make it possible to run Solaris user code in a Linux environment
197eda14cbcSMatt Macy   with relatively minimal modification.
198eda14cbcSMatt Macy * libavl: The Adelson-Velskii Landis balanced binary tree manipulation
199eda14cbcSMatt Macy   library.
200eda14cbcSMatt Macy * libefi: The Extensible Firmware Interface library for GUID disk
201eda14cbcSMatt Macy   partitioning.
202eda14cbcSMatt Macy * libshare: NFS, SMB, and iSCSI service integration for ZFS.
203eda14cbcSMatt Macy
20416038816SMartin Matuska%if %{defined ldconfig_scriptlets}
20516038816SMartin Matuska%ldconfig_scriptlets -n libuutil3
20616038816SMartin Matuska%else
2077877fdebSMatt Macy%post -n libuutil3 -p /sbin/ldconfig
2087877fdebSMatt Macy%postun -n libuutil3 -p /sbin/ldconfig
20916038816SMartin Matuska%endif
210eda14cbcSMatt Macy
21116038816SMartin Matuska# The library version is encoded in the package name.  When updating the
21216038816SMartin Matuska# version information it is important to add an obsoletes line below for
21316038816SMartin Matuska# the previous version of the package.
21416038816SMartin Matuska%package -n libzfs5
215eda14cbcSMatt MacySummary:        Native ZFS filesystem library for Linux
216eda14cbcSMatt MacyGroup:          System Environment/Kernel
217271171e0SMartin MatuskaObsoletes:      libzfs2 <= %{version}
218271171e0SMartin MatuskaObsoletes:      libzfs4 <= %{version}
219eda14cbcSMatt Macy
22016038816SMartin Matuska%description -n libzfs5
221eda14cbcSMatt MacyThis package provides support for managing ZFS filesystems
222eda14cbcSMatt Macy
22316038816SMartin Matuska%if %{defined ldconfig_scriptlets}
22416038816SMartin Matuska%ldconfig_scriptlets -n libzfs5
22516038816SMartin Matuska%else
22616038816SMartin Matuska%post -n libzfs5 -p /sbin/ldconfig
22716038816SMartin Matuska%postun -n libzfs5 -p /sbin/ldconfig
22816038816SMartin Matuska%endif
229eda14cbcSMatt Macy
23016038816SMartin Matuska%package -n libzfs5-devel
231eda14cbcSMatt MacySummary:        Development headers
232eda14cbcSMatt MacyGroup:          System Environment/Kernel
233e3aa18adSMartin MatuskaRequires:       libzfs5%{?_isa} = %{version}-%{release}
234e3aa18adSMartin MatuskaRequires:       libzpool5%{?_isa} = %{version}-%{release}
235e3aa18adSMartin MatuskaRequires:       libnvpair3%{?_isa} = %{version}-%{release}
236e3aa18adSMartin MatuskaRequires:       libuutil3%{?_isa} = %{version}-%{release}
237e3aa18adSMartin MatuskaProvides:       libzpool5-devel = %{version}-%{release}
238e3aa18adSMartin MatuskaProvides:       libnvpair3-devel = %{version}-%{release}
239e3aa18adSMartin MatuskaProvides:       libuutil3-devel = %{version}-%{release}
240271171e0SMartin MatuskaObsoletes:      zfs-devel <= %{version}
241271171e0SMartin MatuskaObsoletes:      libzfs2-devel <= %{version}
242271171e0SMartin MatuskaObsoletes:      libzfs4-devel <= %{version}
243eda14cbcSMatt Macy
24416038816SMartin Matuska%description -n libzfs5-devel
245eda14cbcSMatt MacyThis package contains the header files needed for building additional
246eda14cbcSMatt Macyapplications against the ZFS libraries.
247eda14cbcSMatt Macy
248eda14cbcSMatt Macy%package test
249eda14cbcSMatt MacySummary:        Test infrastructure
250eda14cbcSMatt MacyGroup:          System Environment/Kernel
251eda14cbcSMatt MacyRequires:       %{name}%{?_isa} = %{version}-%{release}
252eda14cbcSMatt MacyRequires:       parted
253eda14cbcSMatt MacyRequires:       lsscsi
254eda14cbcSMatt MacyRequires:       mdadm
255eda14cbcSMatt MacyRequires:       bc
256eda14cbcSMatt MacyRequires:       ksh
257eda14cbcSMatt MacyRequires:       fio
258eda14cbcSMatt MacyRequires:       acl
259eda14cbcSMatt MacyRequires:       sudo
260eda14cbcSMatt MacyRequires:       sysstat
261eda14cbcSMatt MacyRequires:       libaio
262eda14cbcSMatt MacyRequires:       python%{__python_pkg_version}
263bb2d13b6SMartin Matuska%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler}
264eda14cbcSMatt MacyBuildRequires:  libaio-devel
265eda14cbcSMatt Macy%endif
266eda14cbcSMatt MacyAutoReqProv:    no
267eda14cbcSMatt Macy
268eda14cbcSMatt Macy%description test
269eda14cbcSMatt MacyThis package contains test infrastructure and support scripts for
270eda14cbcSMatt Macyvalidating the file system.
271eda14cbcSMatt Macy
272eda14cbcSMatt Macy%package dracut
273eda14cbcSMatt MacySummary:        Dracut module
274eda14cbcSMatt MacyGroup:          System Environment/Kernel
275eda14cbcSMatt MacyBuildArch:	noarch
276eda14cbcSMatt MacyRequires:       %{name} >= %{version}
277eda14cbcSMatt MacyRequires:       dracut
278eda14cbcSMatt MacyRequires:       /usr/bin/awk
279eda14cbcSMatt MacyRequires:       grep
280eda14cbcSMatt Macy
281eda14cbcSMatt Macy%description dracut
282eda14cbcSMatt MacyThis package contains a dracut module used to construct an initramfs
283eda14cbcSMatt Macyimage which is ZFS aware.
284eda14cbcSMatt Macy
285eda14cbcSMatt Macy%if %{with pyzfs}
286e92ffd9bSMartin Matuska# Enforce `python36-` package prefix for CentOS 7
287e92ffd9bSMartin Matuska# since dependencies come from EPEL and are named this way
288eda14cbcSMatt Macy%package -n python%{__python_pkg_version}-pyzfs
289eda14cbcSMatt MacySummary:        Python %{python_version} wrapper for libzfs_core
290eda14cbcSMatt MacyGroup:          Development/Languages/Python
291eda14cbcSMatt MacyLicense:        Apache-2.0
292eda14cbcSMatt MacyBuildArch:      noarch
293e3aa18adSMartin MatuskaRequires:       libzfs5 = %{version}-%{release}
294e3aa18adSMartin MatuskaRequires:       libnvpair3 = %{version}-%{release}
295eda14cbcSMatt MacyRequires:       libffi
296eda14cbcSMatt MacyRequires:       python%{__python_pkg_version}
297e92ffd9bSMartin Matuska
298e92ffd9bSMartin Matuska%if 0%{?centos} == 7
299e92ffd9bSMartin MatuskaRequires:       python36-cffi
3003ff01b23SMartin Matuska%else
301e92ffd9bSMartin MatuskaRequires:       python%{__python_pkg_version}-cffi
3023ff01b23SMartin Matuska%endif
303e92ffd9bSMartin Matuska
304bb2d13b6SMartin Matuska%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler}
305e92ffd9bSMartin Matuska%if 0%{?centos} == 7
306e92ffd9bSMartin MatuskaBuildRequires:  python36-packaging
307e92ffd9bSMartin MatuskaBuildRequires:  python36-devel
308e92ffd9bSMartin MatuskaBuildRequires:  python36-cffi
309e92ffd9bSMartin MatuskaBuildRequires:  python36-setuptools
310e92ffd9bSMartin Matuska%else
311e92ffd9bSMartin MatuskaBuildRequires:  python%{__python_pkg_version}-packaging
312eda14cbcSMatt MacyBuildRequires:  python%{__python_pkg_version}-devel
313e92ffd9bSMartin MatuskaBuildRequires:  python%{__python_pkg_version}-cffi
314e92ffd9bSMartin MatuskaBuildRequires:  python%{__python_pkg_version}-setuptools
315e92ffd9bSMartin Matuska%endif
316e92ffd9bSMartin Matuska
317eda14cbcSMatt MacyBuildRequires:  libffi-devel
318eda14cbcSMatt Macy%endif
319eda14cbcSMatt Macy
320eda14cbcSMatt Macy%description -n python%{__python_pkg_version}-pyzfs
321eda14cbcSMatt MacyThis package provides a python wrapper for the libzfs_core C library.
322eda14cbcSMatt Macy%endif
323eda14cbcSMatt Macy
324eda14cbcSMatt Macy%if 0%{?_initramfs}
325eda14cbcSMatt Macy%package initramfs
326eda14cbcSMatt MacySummary:        Initramfs module
327eda14cbcSMatt MacyGroup:          System Environment/Kernel
328eda14cbcSMatt MacyRequires:       %{name}%{?_isa} = %{version}-%{release}
329eda14cbcSMatt MacyRequires:       initramfs-tools
330eda14cbcSMatt Macy
331eda14cbcSMatt Macy%description initramfs
332eda14cbcSMatt MacyThis package contains a initramfs module used to construct an initramfs
333eda14cbcSMatt Macyimage which is ZFS aware.
334eda14cbcSMatt Macy%endif
335eda14cbcSMatt Macy
336da5137abSMartin Matuska%if %{with pam}
337da5137abSMartin Matuska%package -n pam_zfs_key
338da5137abSMartin MatuskaSummary:        PAM module for encrypted ZFS datasets
339da5137abSMartin Matuska
340bb2d13b6SMartin Matuska%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler}
341da5137abSMartin MatuskaBuildRequires:  pam-devel
342da5137abSMartin Matuska%endif
343da5137abSMartin Matuska
344da5137abSMartin Matuska%description -n pam_zfs_key
345da5137abSMartin MatuskaThis package contains the pam_zfs_key PAM module, which provides
346da5137abSMartin Matuskasupport for unlocking datasets on user login.
347da5137abSMartin Matuska%endif
348da5137abSMartin Matuska
349eda14cbcSMatt Macy%prep
350eda14cbcSMatt Macy%if %{with debug}
351eda14cbcSMatt Macy    %define debug --enable-debug
352eda14cbcSMatt Macy%else
353eda14cbcSMatt Macy    %define debug --disable-debug
354eda14cbcSMatt Macy%endif
355eda14cbcSMatt Macy
356eda14cbcSMatt Macy%if %{with debuginfo}
357eda14cbcSMatt Macy    %define debuginfo --enable-debuginfo
358eda14cbcSMatt Macy%else
359eda14cbcSMatt Macy    %define debuginfo --disable-debuginfo
360eda14cbcSMatt Macy%endif
361eda14cbcSMatt Macy
362eda14cbcSMatt Macy%if %{with asan}
363eda14cbcSMatt Macy    %define asan --enable-asan
364eda14cbcSMatt Macy%else
365eda14cbcSMatt Macy    %define asan --disable-asan
366eda14cbcSMatt Macy%endif
367eda14cbcSMatt Macy
368c03c5b1cSMartin Matuska%if %{with ubsan}
369c03c5b1cSMartin Matuska    %define ubsan --enable-ubsan
370c03c5b1cSMartin Matuska%else
371c03c5b1cSMartin Matuska    %define ubsan --disable-ubsan
372c03c5b1cSMartin Matuska%endif
373c03c5b1cSMartin Matuska
374eda14cbcSMatt Macy%if 0%{?_systemd}
375eda14cbcSMatt Macy    %define systemd --enable-systemd --with-systemdunitdir=%{_unitdir} --with-systemdpresetdir=%{_presetdir} --with-systemdmodulesloaddir=%{_modulesloaddir} --with-systemdgeneratordir=%{_systemdgeneratordir} --disable-sysvinit
376eda14cbcSMatt 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
377eda14cbcSMatt Macy%else
378eda14cbcSMatt Macy    %define systemd --enable-sysvinit --disable-systemd
379eda14cbcSMatt Macy%endif
380eda14cbcSMatt Macy
381eda14cbcSMatt Macy%if %{with pyzfs}
382eda14cbcSMatt Macy    %define pyzfs --enable-pyzfs
383eda14cbcSMatt Macy%else
384eda14cbcSMatt Macy    %define pyzfs --disable-pyzfs
385eda14cbcSMatt Macy%endif
386eda14cbcSMatt Macy
387eda14cbcSMatt Macy%if %{with pam}
388eda14cbcSMatt Macy    %define pam --enable-pam
389eda14cbcSMatt Macy%else
390eda14cbcSMatt Macy    %define pam --disable-pam
391eda14cbcSMatt Macy%endif
392eda14cbcSMatt Macy
393eda14cbcSMatt Macy%setup -q
394eda14cbcSMatt Macy
395eda14cbcSMatt Macy%build
396eda14cbcSMatt Macy%configure \
397eda14cbcSMatt Macy    --with-config=user \
398eda14cbcSMatt Macy    --with-udevdir=%{_udevdir} \
399eda14cbcSMatt Macy    --with-udevruledir=%{_udevruledir} \
400eda14cbcSMatt Macy    --with-dracutdir=%{_dracutdir} \
401eda14cbcSMatt Macy    --with-pamconfigsdir=%{_datadir}/pam-configs \
402eda14cbcSMatt Macy    --with-pammoduledir=%{_libdir}/security \
403eda14cbcSMatt Macy    --with-python=%{__python} \
404eda14cbcSMatt Macy    --with-pkgconfigdir=%{_pkgconfigdir} \
405eda14cbcSMatt Macy    --disable-static \
406eda14cbcSMatt Macy    %{debug} \
407eda14cbcSMatt Macy    %{debuginfo} \
408eda14cbcSMatt Macy    %{asan} \
409c03c5b1cSMartin Matuska    %{ubsan} \
410eda14cbcSMatt Macy    %{systemd} \
411eda14cbcSMatt Macy    %{pam} \
412eda14cbcSMatt Macy    %{pyzfs}
413eda14cbcSMatt Macymake %{?_smp_mflags}
414eda14cbcSMatt Macy
415eda14cbcSMatt Macy%install
416eda14cbcSMatt Macy%{__rm} -rf $RPM_BUILD_ROOT
417eda14cbcSMatt Macymake install DESTDIR=%{?buildroot}
418eda14cbcSMatt Macyfind %{?buildroot}%{_libdir} -name '*.la' -exec rm -f {} \;
419eda14cbcSMatt Macy%if 0%{!?__brp_mangle_shebangs:1}
420eda14cbcSMatt Macyfind %{?buildroot}%{_bindir} \
421c7046f76SMartin Matuska    \( -name arc_summary -or -name arcstat -or -name dbufstat \
422c7046f76SMartin Matuska    -or -name zilstat \) \
423eda14cbcSMatt Macy    -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \;
424eda14cbcSMatt Macyfind %{?buildroot}%{_datadir} \
425eda14cbcSMatt Macy    \( -name test-runner.py -or -name zts-report.py \) \
426eda14cbcSMatt Macy    -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \;
427eda14cbcSMatt Macy%endif
428eda14cbcSMatt Macy
429eda14cbcSMatt Macy%post
430eda14cbcSMatt Macy%if 0%{?_systemd}
431eda14cbcSMatt Macy%if 0%{?systemd_post:1}
432eda14cbcSMatt Macy%systemd_post %{systemd_svcs}
433eda14cbcSMatt Macy%else
434eda14cbcSMatt Macyif [ "$1" = "1" -o "$1" = "install" ] ; then
435eda14cbcSMatt Macy    # Initial installation
436eda14cbcSMatt Macy    systemctl preset %{systemd_svcs} >/dev/null || true
437eda14cbcSMatt Macyfi
438eda14cbcSMatt Macy%endif
439eda14cbcSMatt Macy%else
440eda14cbcSMatt Macyif [ -x /sbin/chkconfig ]; then
441eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-import
442681ce946SMartin Matuska    /sbin/chkconfig --add zfs-load-key
443eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-mount
444eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-share
445eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-zed
446eda14cbcSMatt Macyfi
447eda14cbcSMatt Macy%endif
448eda14cbcSMatt Macyexit 0
449eda14cbcSMatt Macy
450eda14cbcSMatt Macy# On RHEL/CentOS 7 the static nodes aren't refreshed by default after
451eda14cbcSMatt Macy# installing a package.  This is the default behavior for Fedora.
452eda14cbcSMatt Macy%posttrans
453eda14cbcSMatt Macy%if 0%{?rhel} == 7 || 0%{?centos} == 7
454eda14cbcSMatt Macysystemctl restart kmod-static-nodes
455eda14cbcSMatt Macysystemctl restart systemd-tmpfiles-setup-dev
456eda14cbcSMatt Macyudevadm trigger
457eda14cbcSMatt Macy%endif
458eda14cbcSMatt Macy
459eda14cbcSMatt Macy%preun
460eda14cbcSMatt Macy%if 0%{?_systemd}
461eda14cbcSMatt Macy%if 0%{?systemd_preun:1}
462eda14cbcSMatt Macy%systemd_preun %{systemd_svcs}
463eda14cbcSMatt Macy%else
464eda14cbcSMatt Macyif [ "$1" = "0" -o "$1" = "remove" ] ; then
465eda14cbcSMatt Macy    # Package removal, not upgrade
466eda14cbcSMatt Macy    systemctl --no-reload disable %{systemd_svcs} >/dev/null || true
467eda14cbcSMatt Macy    systemctl stop %{systemd_svcs} >/dev/null || true
468eda14cbcSMatt Macyfi
469eda14cbcSMatt Macy%endif
470eda14cbcSMatt Macy%else
471eda14cbcSMatt Macyif [ "$1" = "0" -o "$1" = "remove" ] && [ -x /sbin/chkconfig ]; then
472eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-import
473681ce946SMartin Matuska    /sbin/chkconfig --del zfs-load-key
474eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-mount
475eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-share
476eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-zed
477eda14cbcSMatt Macyfi
478eda14cbcSMatt Macy%endif
479eda14cbcSMatt Macyexit 0
480eda14cbcSMatt Macy
481eda14cbcSMatt Macy%postun
482eda14cbcSMatt Macy%if 0%{?_systemd}
483eda14cbcSMatt Macy%if 0%{?systemd_postun:1}
484eda14cbcSMatt Macy%systemd_postun %{systemd_svcs}
485eda14cbcSMatt Macy%else
486eda14cbcSMatt Macysystemctl --system daemon-reload >/dev/null || true
487eda14cbcSMatt Macy%endif
488eda14cbcSMatt Macy%endif
489eda14cbcSMatt Macy
490eda14cbcSMatt Macy%files
491eda14cbcSMatt Macy# Core utilities
492eda14cbcSMatt Macy%{_sbindir}/*
493eda14cbcSMatt Macy%{_bindir}/raidz_test
494184c1b94SMartin Matuska%{_sbindir}/zgenhostid
495eda14cbcSMatt Macy%{_bindir}/zvol_wait
496e92ffd9bSMartin Matuska# Optional Python 3 scripts
497eda14cbcSMatt Macy%{_bindir}/arc_summary
498eda14cbcSMatt Macy%{_bindir}/arcstat
499eda14cbcSMatt Macy%{_bindir}/dbufstat
500c7046f76SMartin Matuska%{_bindir}/zilstat
501eda14cbcSMatt Macy# Man pages
502eda14cbcSMatt Macy%{_mandir}/man1/*
5033ff01b23SMartin Matuska%{_mandir}/man4/*
504eda14cbcSMatt Macy%{_mandir}/man5/*
5053ff01b23SMartin Matuska%{_mandir}/man7/*
506eda14cbcSMatt Macy%{_mandir}/man8/*
507eda14cbcSMatt Macy# Configuration files and scripts
508eda14cbcSMatt Macy%{_libexecdir}/%{name}
509eda14cbcSMatt Macy%{_udevdir}/vdev_id
510eda14cbcSMatt Macy%{_udevdir}/zvol_id
511eda14cbcSMatt Macy%{_udevdir}/rules.d/*
512ee36e25aSMartin Matuska%{_datadir}/%{name}/compatibility.d
513eda14cbcSMatt Macy%if ! 0%{?_systemd} || 0%{?_initramfs}
514eda14cbcSMatt Macy# Files needed for sysvinit and initramfs-tools
515eda14cbcSMatt Macy%{_sysconfdir}/%{name}/zfs-functions
516eda14cbcSMatt Macy%config(noreplace) %{_initconfdir}/zfs
517eda14cbcSMatt Macy%else
518eda14cbcSMatt Macy%exclude %{_sysconfdir}/%{name}/zfs-functions
519eda14cbcSMatt Macy%exclude %{_initconfdir}/zfs
520eda14cbcSMatt Macy%endif
521eda14cbcSMatt Macy%if 0%{?_systemd}
522eda14cbcSMatt Macy%{_unitdir}/*
523eda14cbcSMatt Macy%{_presetdir}/*
524eda14cbcSMatt Macy%{_modulesloaddir}/*
525eda14cbcSMatt Macy%{_systemdgeneratordir}/*
526eda14cbcSMatt Macy%else
527eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/init.d/*
528eda14cbcSMatt Macy%endif
529eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/%{name}/zed.d/*
530eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/%{name}/zpool.d/*
531eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/%{name}/vdev_id.conf.*.example
532eda14cbcSMatt Macy%attr(440, root, root) %config(noreplace) %{_sysconfdir}/sudoers.d/*
533eda14cbcSMatt Macy
534b2526e8bSMartin Matuska%config(noreplace) %{_bashcompletiondir}/zfs
535716fd348SMartin Matuska
53616038816SMartin Matuska%files -n libzpool5
537eda14cbcSMatt Macy%{_libdir}/libzpool.so.*
538eda14cbcSMatt Macy
5397877fdebSMatt Macy%files -n libnvpair3
540eda14cbcSMatt Macy%{_libdir}/libnvpair.so.*
541eda14cbcSMatt Macy
5427877fdebSMatt Macy%files -n libuutil3
543eda14cbcSMatt Macy%{_libdir}/libuutil.so.*
544eda14cbcSMatt Macy
54516038816SMartin Matuska%files -n libzfs5
546eda14cbcSMatt Macy%{_libdir}/libzfs*.so.*
547eda14cbcSMatt Macy
54816038816SMartin Matuska%files -n libzfs5-devel
549eda14cbcSMatt Macy%{_pkgconfigdir}/libzfs.pc
5502c48331dSMatt Macy%{_pkgconfigdir}/libzfsbootenv.pc
551eda14cbcSMatt Macy%{_pkgconfigdir}/libzfs_core.pc
552eda14cbcSMatt Macy%{_libdir}/*.so
553eda14cbcSMatt Macy%{_includedir}/*
554eda14cbcSMatt Macy%doc AUTHORS COPYRIGHT LICENSE NOTICE README.md
555eda14cbcSMatt Macy
556eda14cbcSMatt Macy%files test
557ee36e25aSMartin Matuska%{_datadir}/%{name}/zfs-tests
558ee36e25aSMartin Matuska%{_datadir}/%{name}/test-runner
559ee36e25aSMartin Matuska%{_datadir}/%{name}/runfiles
560ee36e25aSMartin Matuska%{_datadir}/%{name}/*.sh
561eda14cbcSMatt Macy
562eda14cbcSMatt Macy%files dracut
563c03c5b1cSMartin Matuska%doc contrib/dracut/README.md
564eda14cbcSMatt Macy%{_dracutdir}/modules.d/*
565eda14cbcSMatt Macy
566eda14cbcSMatt Macy%if %{with pyzfs}
567eda14cbcSMatt Macy%files -n python%{__python_pkg_version}-pyzfs
568eda14cbcSMatt Macy%doc contrib/pyzfs/README
569eda14cbcSMatt Macy%doc contrib/pyzfs/LICENSE
570eda14cbcSMatt Macy%defattr(-,root,root,-)
571eda14cbcSMatt Macy%{__python_sitelib}/libzfs_core/*
572eda14cbcSMatt Macy%{__python_sitelib}/pyzfs*
573eda14cbcSMatt Macy%endif
574eda14cbcSMatt Macy
575eda14cbcSMatt Macy%if 0%{?_initramfs}
576eda14cbcSMatt Macy%files initramfs
577c03c5b1cSMartin Matuska%doc contrib/initramfs/README.md
578eda14cbcSMatt Macy/usr/share/initramfs-tools/*
579eda14cbcSMatt Macy%else
580eda14cbcSMatt Macy# Since we're not building the initramfs package,
581eda14cbcSMatt Macy# ignore those files.
582eda14cbcSMatt Macy%exclude /usr/share/initramfs-tools
583eda14cbcSMatt Macy%endif
584da5137abSMartin Matuska
585da5137abSMartin Matuska%if %{with pam}
586da5137abSMartin Matuska%files -n pam_zfs_key
587da5137abSMartin Matuska%{_libdir}/security/*
588da5137abSMartin Matuska%{_datadir}/pam-configs/*
589da5137abSMartin Matuska%endif
590