xref: /freebsd/sys/contrib/openzfs/rpm/generic/zfs.spec.in (revision c7046f76c2c027b00c0e6ba57cfd28f1a78f5e23)
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}
6e92ffd9bSMartin Matuska%if 0%{?fedora}%{?rhel}%{?centos}
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}
15e92ffd9bSMartin Matuska%if 0%{?fedora}%{?rhel}%{?centos}
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
22eda14cbcSMatt Macy# Set the default dracut directory based on distribution.
23eda14cbcSMatt Macy%if %{undefined _dracutdir}
24e92ffd9bSMartin Matuska%if 0%{?fedora}%{?rhel}%{?centos}
25eda14cbcSMatt Macy%global _dracutdir  %{_prefix}/lib/dracut
26eda14cbcSMatt Macy%else
27eda14cbcSMatt Macy%global _dracutdir  %{_prefix}/share/dracut
28eda14cbcSMatt Macy%endif
29eda14cbcSMatt Macy%endif
30eda14cbcSMatt Macy
31eda14cbcSMatt Macy%if %{undefined _initconfdir}
32eda14cbcSMatt Macy%global _initconfdir /etc/sysconfig
33eda14cbcSMatt Macy%endif
34eda14cbcSMatt Macy
35eda14cbcSMatt Macy%if %{undefined _unitdir}
36eda14cbcSMatt Macy%global _unitdir %{_prefix}/lib/systemd/system
37eda14cbcSMatt Macy%endif
38eda14cbcSMatt Macy
39eda14cbcSMatt Macy%if %{undefined _presetdir}
40eda14cbcSMatt Macy%global _presetdir %{_prefix}/lib/systemd/system-preset
41eda14cbcSMatt Macy%endif
42eda14cbcSMatt Macy
43eda14cbcSMatt Macy%if %{undefined _modulesloaddir}
44eda14cbcSMatt Macy%global _modulesloaddir %{_prefix}/lib/modules-load.d
45eda14cbcSMatt Macy%endif
46eda14cbcSMatt Macy
47eda14cbcSMatt Macy%if %{undefined _systemdgeneratordir}
48eda14cbcSMatt Macy%global _systemdgeneratordir %{_prefix}/lib/systemd/system-generators
49eda14cbcSMatt Macy%endif
50eda14cbcSMatt Macy
51eda14cbcSMatt Macy%if %{undefined _pkgconfigdir}
52eda14cbcSMatt Macy%global _pkgconfigdir %{_prefix}/%{_lib}/pkgconfig
53eda14cbcSMatt Macy%endif
54eda14cbcSMatt Macy
55eda14cbcSMatt Macy%bcond_with    debug
56eda14cbcSMatt Macy%bcond_with    debuginfo
57eda14cbcSMatt Macy%bcond_with    asan
58c03c5b1cSMartin Matuska%bcond_with    ubsan
59eda14cbcSMatt Macy%bcond_with    systemd
60eda14cbcSMatt Macy%bcond_with    pam
61e92ffd9bSMartin Matuska%bcond_without pyzfs
62eda14cbcSMatt Macy
63eda14cbcSMatt Macy# Generic enable switch for systemd
64eda14cbcSMatt Macy%if %{with systemd}
65eda14cbcSMatt Macy%define _systemd 1
66eda14cbcSMatt Macy%endif
67eda14cbcSMatt Macy
68e92ffd9bSMartin Matuska# Distros below support systemd
69e92ffd9bSMartin Matuska%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}
70eda14cbcSMatt Macy%define _systemd 1
71eda14cbcSMatt Macy%endif
72eda14cbcSMatt Macy
73e92ffd9bSMartin Matuska# When not specified default to distribution provided version.
74eda14cbcSMatt Macy%if %{undefined __use_python}
75eda14cbcSMatt Macy%define __python                  /usr/bin/python3
76eda14cbcSMatt Macy%define __python_pkg_version      3
77eda14cbcSMatt Macy%else
78eda14cbcSMatt Macy%define __python                  %{__use_python}
79eda14cbcSMatt Macy%define __python_pkg_version      %{__use_python_pkg_version}
80eda14cbcSMatt Macy%endif
81eda14cbcSMatt Macy%define __python_sitelib          %(%{__python} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
82eda14cbcSMatt Macy
83eda14cbcSMatt MacyName:           @PACKAGE@
84eda14cbcSMatt MacyVersion:        @VERSION@
85eda14cbcSMatt MacyRelease:        @RELEASE@%{?dist}
86eda14cbcSMatt MacySummary:        Commands to control the kernel modules and libraries
87eda14cbcSMatt Macy
88eda14cbcSMatt MacyGroup:          System Environment/Kernel
89eda14cbcSMatt MacyLicense:        @ZFS_META_LICENSE@
90180f8225SMatt MacyURL:            https://github.com/openzfs/zfs
91eda14cbcSMatt MacySource0:        %{name}-%{version}.tar.gz
92eda14cbcSMatt MacyBuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
93e3aa18adSMartin MatuskaRequires:       libzpool5%{?_isa} = %{version}-%{release}
94e3aa18adSMartin MatuskaRequires:       libnvpair3%{?_isa} = %{version}-%{release}
95e3aa18adSMartin MatuskaRequires:       libuutil3%{?_isa} = %{version}-%{release}
96e3aa18adSMartin MatuskaRequires:       libzfs5%{?_isa} = %{version}-%{release}
97eda14cbcSMatt MacyRequires:       %{name}-kmod = %{version}
98e3aa18adSMartin MatuskaProvides:       %{name}-kmod-common = %{version}-%{release}
99271171e0SMartin MatuskaObsoletes:      spl <= %{version}
100eda14cbcSMatt Macy
10116038816SMartin Matuska# zfs-fuse provides the same commands and man pages that OpenZFS does.
10216038816SMartin Matuska# Renaming those on either side would conflict with all available documentation.
103eda14cbcSMatt MacyConflicts:      zfs-fuse
104eda14cbcSMatt Macy
105e92ffd9bSMartin Matuska%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}
106eda14cbcSMatt MacyBuildRequires:  gcc, make
107eda14cbcSMatt MacyBuildRequires:  zlib-devel
108eda14cbcSMatt MacyBuildRequires:  libuuid-devel
109eda14cbcSMatt MacyBuildRequires:  libblkid-devel
110eda14cbcSMatt MacyBuildRequires:  libudev-devel
111eda14cbcSMatt MacyBuildRequires:  libattr-devel
112eda14cbcSMatt MacyBuildRequires:  openssl-devel
113e3aa18adSMartin Matuska%if 0%{?fedora} || 0%{?rhel} >= 8 || 0%{?centos} >= 8
114e3aa18adSMartin MatuskaBuildRequires:  libtirpc-devel
115e3aa18adSMartin Matuska%endif
116e3aa18adSMartin Matuska
117e3aa18adSMartin Matuska%if (0%{?fedora}%{?suse_version}) || (0%{?rhel} && 0%{?rhel} < 9)
1183ff01b23SMartin Matuska# We don't directly use it, but if this isn't installed, rpmbuild as root can
1193ff01b23SMartin Matuska# crash+corrupt rpmdb
1203ff01b23SMartin Matuska# See issue #12071
1213ff01b23SMartin MatuskaBuildRequires:  ncompress
122eda14cbcSMatt Macy%endif
1233ff01b23SMartin Matuska
124eda14cbcSMatt MacyRequires:       openssl
125eda14cbcSMatt Macy%if 0%{?_systemd}
126eda14cbcSMatt MacyBuildRequires: systemd
127eda14cbcSMatt Macy%endif
128c03c5b1cSMartin Matuska
129eda14cbcSMatt Macy%endif
130eda14cbcSMatt Macy
131eda14cbcSMatt Macy%if 0%{?_systemd}
132eda14cbcSMatt MacyRequires(post): systemd
133eda14cbcSMatt MacyRequires(preun): systemd
134eda14cbcSMatt MacyRequires(postun): systemd
135eda14cbcSMatt Macy%endif
136eda14cbcSMatt Macy
137eda14cbcSMatt Macy# The zpool iostat/status -c scripts call some utilities like lsblk and iostat
138eda14cbcSMatt MacyRequires:  util-linux
139eda14cbcSMatt MacyRequires:  sysstat
140eda14cbcSMatt Macy
141eda14cbcSMatt Macy%description
142eda14cbcSMatt MacyThis package contains the core ZFS command line utilities.
143eda14cbcSMatt Macy
14416038816SMartin Matuska%package -n libzpool5
145eda14cbcSMatt MacySummary:        Native ZFS pool library for Linux
146eda14cbcSMatt MacyGroup:          System Environment/Kernel
147271171e0SMartin MatuskaObsoletes:      libzpool2 <= %{version}
148271171e0SMartin MatuskaObsoletes:      libzpool4 <= %{version}
149eda14cbcSMatt Macy
15016038816SMartin Matuska%description -n libzpool5
151eda14cbcSMatt MacyThis package contains the zpool library, which provides support
152eda14cbcSMatt Macyfor managing zpools
153eda14cbcSMatt Macy
15416038816SMartin Matuska%if %{defined ldconfig_scriptlets}
15516038816SMartin Matuska%ldconfig_scriptlets -n libzpool5
15616038816SMartin Matuska%else
15716038816SMartin Matuska%post -n libzpool5 -p /sbin/ldconfig
15816038816SMartin Matuska%postun -n libzpool5 -p /sbin/ldconfig
15916038816SMartin Matuska%endif
160eda14cbcSMatt Macy
1617877fdebSMatt Macy%package -n libnvpair3
162eda14cbcSMatt MacySummary:        Solaris name-value library for Linux
163eda14cbcSMatt MacyGroup:          System Environment/Kernel
164271171e0SMartin MatuskaObsoletes:      libnvpair1 <= %{version}
165eda14cbcSMatt Macy
1667877fdebSMatt Macy%description -n libnvpair3
167eda14cbcSMatt MacyThis package contains routines for packing and unpacking name-value
168eda14cbcSMatt Macypairs.  This functionality is used to portably transport data across
169eda14cbcSMatt Macyprocess boundaries, between kernel and user space, and can be used
170eda14cbcSMatt Macyto write self describing data structures on disk.
171eda14cbcSMatt Macy
17216038816SMartin Matuska%if %{defined ldconfig_scriptlets}
17316038816SMartin Matuska%ldconfig_scriptlets -n libnvpair3
17416038816SMartin Matuska%else
1757877fdebSMatt Macy%post -n libnvpair3 -p /sbin/ldconfig
1767877fdebSMatt Macy%postun -n libnvpair3 -p /sbin/ldconfig
17716038816SMartin Matuska%endif
178eda14cbcSMatt Macy
1797877fdebSMatt Macy%package -n libuutil3
180eda14cbcSMatt MacySummary:        Solaris userland utility library for Linux
181eda14cbcSMatt MacyGroup:          System Environment/Kernel
182271171e0SMartin MatuskaObsoletes:      libuutil1 <= %{version}
183eda14cbcSMatt Macy
1847877fdebSMatt Macy%description -n libuutil3
185180f8225SMatt MacyThis library provides a variety of compatibility functions for OpenZFS:
186eda14cbcSMatt Macy * libspl: The Solaris Porting Layer userland library, which provides APIs
187eda14cbcSMatt Macy   that make it possible to run Solaris user code in a Linux environment
188eda14cbcSMatt Macy   with relatively minimal modification.
189eda14cbcSMatt Macy * libavl: The Adelson-Velskii Landis balanced binary tree manipulation
190eda14cbcSMatt Macy   library.
191eda14cbcSMatt Macy * libefi: The Extensible Firmware Interface library for GUID disk
192eda14cbcSMatt Macy   partitioning.
193eda14cbcSMatt Macy * libshare: NFS, SMB, and iSCSI service integration for ZFS.
194eda14cbcSMatt Macy
19516038816SMartin Matuska%if %{defined ldconfig_scriptlets}
19616038816SMartin Matuska%ldconfig_scriptlets -n libuutil3
19716038816SMartin Matuska%else
1987877fdebSMatt Macy%post -n libuutil3 -p /sbin/ldconfig
1997877fdebSMatt Macy%postun -n libuutil3 -p /sbin/ldconfig
20016038816SMartin Matuska%endif
201eda14cbcSMatt Macy
20216038816SMartin Matuska# The library version is encoded in the package name.  When updating the
20316038816SMartin Matuska# version information it is important to add an obsoletes line below for
20416038816SMartin Matuska# the previous version of the package.
20516038816SMartin Matuska%package -n libzfs5
206eda14cbcSMatt MacySummary:        Native ZFS filesystem library for Linux
207eda14cbcSMatt MacyGroup:          System Environment/Kernel
208271171e0SMartin MatuskaObsoletes:      libzfs2 <= %{version}
209271171e0SMartin MatuskaObsoletes:      libzfs4 <= %{version}
210eda14cbcSMatt Macy
21116038816SMartin Matuska%description -n libzfs5
212eda14cbcSMatt MacyThis package provides support for managing ZFS filesystems
213eda14cbcSMatt Macy
21416038816SMartin Matuska%if %{defined ldconfig_scriptlets}
21516038816SMartin Matuska%ldconfig_scriptlets -n libzfs5
21616038816SMartin Matuska%else
21716038816SMartin Matuska%post -n libzfs5 -p /sbin/ldconfig
21816038816SMartin Matuska%postun -n libzfs5 -p /sbin/ldconfig
21916038816SMartin Matuska%endif
220eda14cbcSMatt Macy
22116038816SMartin Matuska%package -n libzfs5-devel
222eda14cbcSMatt MacySummary:        Development headers
223eda14cbcSMatt MacyGroup:          System Environment/Kernel
224e3aa18adSMartin MatuskaRequires:       libzfs5%{?_isa} = %{version}-%{release}
225e3aa18adSMartin MatuskaRequires:       libzpool5%{?_isa} = %{version}-%{release}
226e3aa18adSMartin MatuskaRequires:       libnvpair3%{?_isa} = %{version}-%{release}
227e3aa18adSMartin MatuskaRequires:       libuutil3%{?_isa} = %{version}-%{release}
228e3aa18adSMartin MatuskaProvides:       libzpool5-devel = %{version}-%{release}
229e3aa18adSMartin MatuskaProvides:       libnvpair3-devel = %{version}-%{release}
230e3aa18adSMartin MatuskaProvides:       libuutil3-devel = %{version}-%{release}
231271171e0SMartin MatuskaObsoletes:      zfs-devel <= %{version}
232271171e0SMartin MatuskaObsoletes:      libzfs2-devel <= %{version}
233271171e0SMartin MatuskaObsoletes:      libzfs4-devel <= %{version}
234eda14cbcSMatt Macy
23516038816SMartin Matuska%description -n libzfs5-devel
236eda14cbcSMatt MacyThis package contains the header files needed for building additional
237eda14cbcSMatt Macyapplications against the ZFS libraries.
238eda14cbcSMatt Macy
239eda14cbcSMatt Macy%package test
240eda14cbcSMatt MacySummary:        Test infrastructure
241eda14cbcSMatt MacyGroup:          System Environment/Kernel
242eda14cbcSMatt MacyRequires:       %{name}%{?_isa} = %{version}-%{release}
243eda14cbcSMatt MacyRequires:       parted
244eda14cbcSMatt MacyRequires:       lsscsi
245eda14cbcSMatt MacyRequires:       mdadm
246eda14cbcSMatt MacyRequires:       bc
247eda14cbcSMatt MacyRequires:       ksh
248eda14cbcSMatt MacyRequires:       fio
249eda14cbcSMatt MacyRequires:       acl
250eda14cbcSMatt MacyRequires:       sudo
251eda14cbcSMatt MacyRequires:       sysstat
252eda14cbcSMatt MacyRequires:       libaio
253eda14cbcSMatt MacyRequires:       python%{__python_pkg_version}
254e92ffd9bSMartin Matuska%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}
255eda14cbcSMatt MacyBuildRequires:  libaio-devel
256eda14cbcSMatt Macy%endif
257eda14cbcSMatt MacyAutoReqProv:    no
258eda14cbcSMatt Macy
259eda14cbcSMatt Macy%description test
260eda14cbcSMatt MacyThis package contains test infrastructure and support scripts for
261eda14cbcSMatt Macyvalidating the file system.
262eda14cbcSMatt Macy
263eda14cbcSMatt Macy%package dracut
264eda14cbcSMatt MacySummary:        Dracut module
265eda14cbcSMatt MacyGroup:          System Environment/Kernel
266eda14cbcSMatt MacyBuildArch:	noarch
267eda14cbcSMatt MacyRequires:       %{name} >= %{version}
268eda14cbcSMatt MacyRequires:       dracut
269eda14cbcSMatt MacyRequires:       /usr/bin/awk
270eda14cbcSMatt MacyRequires:       grep
271eda14cbcSMatt Macy
272eda14cbcSMatt Macy%description dracut
273eda14cbcSMatt MacyThis package contains a dracut module used to construct an initramfs
274eda14cbcSMatt Macyimage which is ZFS aware.
275eda14cbcSMatt Macy
276eda14cbcSMatt Macy%if %{with pyzfs}
277e92ffd9bSMartin Matuska# Enforce `python36-` package prefix for CentOS 7
278e92ffd9bSMartin Matuska# since dependencies come from EPEL and are named this way
279eda14cbcSMatt Macy%package -n python%{__python_pkg_version}-pyzfs
280eda14cbcSMatt MacySummary:        Python %{python_version} wrapper for libzfs_core
281eda14cbcSMatt MacyGroup:          Development/Languages/Python
282eda14cbcSMatt MacyLicense:        Apache-2.0
283eda14cbcSMatt MacyBuildArch:      noarch
284e3aa18adSMartin MatuskaRequires:       libzfs5 = %{version}-%{release}
285e3aa18adSMartin MatuskaRequires:       libnvpair3 = %{version}-%{release}
286eda14cbcSMatt MacyRequires:       libffi
287eda14cbcSMatt MacyRequires:       python%{__python_pkg_version}
288e92ffd9bSMartin Matuska
289e92ffd9bSMartin Matuska%if 0%{?centos} == 7
290e92ffd9bSMartin MatuskaRequires:       python36-cffi
2913ff01b23SMartin Matuska%else
292e92ffd9bSMartin MatuskaRequires:       python%{__python_pkg_version}-cffi
2933ff01b23SMartin Matuska%endif
294e92ffd9bSMartin Matuska
295e92ffd9bSMartin Matuska%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}
296e92ffd9bSMartin Matuska%if 0%{?centos} == 7
297e92ffd9bSMartin MatuskaBuildRequires:  python36-packaging
298e92ffd9bSMartin MatuskaBuildRequires:  python36-devel
299e92ffd9bSMartin MatuskaBuildRequires:  python36-cffi
300e92ffd9bSMartin MatuskaBuildRequires:  python36-setuptools
301e92ffd9bSMartin Matuska%else
302e92ffd9bSMartin MatuskaBuildRequires:  python%{__python_pkg_version}-packaging
303eda14cbcSMatt MacyBuildRequires:  python%{__python_pkg_version}-devel
304e92ffd9bSMartin MatuskaBuildRequires:  python%{__python_pkg_version}-cffi
305e92ffd9bSMartin MatuskaBuildRequires:  python%{__python_pkg_version}-setuptools
306e92ffd9bSMartin Matuska%endif
307e92ffd9bSMartin Matuska
308eda14cbcSMatt MacyBuildRequires:  libffi-devel
309eda14cbcSMatt Macy%endif
310eda14cbcSMatt Macy
311eda14cbcSMatt Macy%description -n python%{__python_pkg_version}-pyzfs
312eda14cbcSMatt MacyThis package provides a python wrapper for the libzfs_core C library.
313eda14cbcSMatt Macy%endif
314eda14cbcSMatt Macy
315eda14cbcSMatt Macy%if 0%{?_initramfs}
316eda14cbcSMatt Macy%package initramfs
317eda14cbcSMatt MacySummary:        Initramfs module
318eda14cbcSMatt MacyGroup:          System Environment/Kernel
319eda14cbcSMatt MacyRequires:       %{name}%{?_isa} = %{version}-%{release}
320eda14cbcSMatt MacyRequires:       initramfs-tools
321eda14cbcSMatt Macy
322eda14cbcSMatt Macy%description initramfs
323eda14cbcSMatt MacyThis package contains a initramfs module used to construct an initramfs
324eda14cbcSMatt Macyimage which is ZFS aware.
325eda14cbcSMatt Macy%endif
326eda14cbcSMatt Macy
327da5137abSMartin Matuska%if %{with pam}
328da5137abSMartin Matuska%package -n pam_zfs_key
329da5137abSMartin MatuskaSummary:        PAM module for encrypted ZFS datasets
330da5137abSMartin Matuska
331da5137abSMartin Matuska%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}
332da5137abSMartin MatuskaBuildRequires:  pam-devel
333da5137abSMartin Matuska%endif
334da5137abSMartin Matuska
335da5137abSMartin Matuska%description -n pam_zfs_key
336da5137abSMartin MatuskaThis package contains the pam_zfs_key PAM module, which provides
337da5137abSMartin Matuskasupport for unlocking datasets on user login.
338da5137abSMartin Matuska%endif
339da5137abSMartin Matuska
340eda14cbcSMatt Macy%prep
341eda14cbcSMatt Macy%if %{with debug}
342eda14cbcSMatt Macy    %define debug --enable-debug
343eda14cbcSMatt Macy%else
344eda14cbcSMatt Macy    %define debug --disable-debug
345eda14cbcSMatt Macy%endif
346eda14cbcSMatt Macy
347eda14cbcSMatt Macy%if %{with debuginfo}
348eda14cbcSMatt Macy    %define debuginfo --enable-debuginfo
349eda14cbcSMatt Macy%else
350eda14cbcSMatt Macy    %define debuginfo --disable-debuginfo
351eda14cbcSMatt Macy%endif
352eda14cbcSMatt Macy
353eda14cbcSMatt Macy%if %{with asan}
354eda14cbcSMatt Macy    %define asan --enable-asan
355eda14cbcSMatt Macy%else
356eda14cbcSMatt Macy    %define asan --disable-asan
357eda14cbcSMatt Macy%endif
358eda14cbcSMatt Macy
359c03c5b1cSMartin Matuska%if %{with ubsan}
360c03c5b1cSMartin Matuska    %define ubsan --enable-ubsan
361c03c5b1cSMartin Matuska%else
362c03c5b1cSMartin Matuska    %define ubsan --disable-ubsan
363c03c5b1cSMartin Matuska%endif
364c03c5b1cSMartin Matuska
365eda14cbcSMatt Macy%if 0%{?_systemd}
366eda14cbcSMatt Macy    %define systemd --enable-systemd --with-systemdunitdir=%{_unitdir} --with-systemdpresetdir=%{_presetdir} --with-systemdmodulesloaddir=%{_modulesloaddir} --with-systemdgeneratordir=%{_systemdgeneratordir} --disable-sysvinit
367eda14cbcSMatt 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
368eda14cbcSMatt Macy%else
369eda14cbcSMatt Macy    %define systemd --enable-sysvinit --disable-systemd
370eda14cbcSMatt Macy%endif
371eda14cbcSMatt Macy
372eda14cbcSMatt Macy%if %{with pyzfs}
373eda14cbcSMatt Macy    %define pyzfs --enable-pyzfs
374eda14cbcSMatt Macy%else
375eda14cbcSMatt Macy    %define pyzfs --disable-pyzfs
376eda14cbcSMatt Macy%endif
377eda14cbcSMatt Macy
378eda14cbcSMatt Macy%if %{with pam}
379eda14cbcSMatt Macy    %define pam --enable-pam
380eda14cbcSMatt Macy%else
381eda14cbcSMatt Macy    %define pam --disable-pam
382eda14cbcSMatt Macy%endif
383eda14cbcSMatt Macy
384eda14cbcSMatt Macy%setup -q
385eda14cbcSMatt Macy
386eda14cbcSMatt Macy%build
387eda14cbcSMatt Macy%configure \
388eda14cbcSMatt Macy    --with-config=user \
389eda14cbcSMatt Macy    --with-udevdir=%{_udevdir} \
390eda14cbcSMatt Macy    --with-udevruledir=%{_udevruledir} \
391eda14cbcSMatt Macy    --with-dracutdir=%{_dracutdir} \
392eda14cbcSMatt Macy    --with-pamconfigsdir=%{_datadir}/pam-configs \
393eda14cbcSMatt Macy    --with-pammoduledir=%{_libdir}/security \
394eda14cbcSMatt Macy    --with-python=%{__python} \
395eda14cbcSMatt Macy    --with-pkgconfigdir=%{_pkgconfigdir} \
396eda14cbcSMatt Macy    --disable-static \
397eda14cbcSMatt Macy    %{debug} \
398eda14cbcSMatt Macy    %{debuginfo} \
399eda14cbcSMatt Macy    %{asan} \
400c03c5b1cSMartin Matuska    %{ubsan} \
401eda14cbcSMatt Macy    %{systemd} \
402eda14cbcSMatt Macy    %{pam} \
403eda14cbcSMatt Macy    %{pyzfs}
404eda14cbcSMatt Macymake %{?_smp_mflags}
405eda14cbcSMatt Macy
406eda14cbcSMatt Macy%install
407eda14cbcSMatt Macy%{__rm} -rf $RPM_BUILD_ROOT
408eda14cbcSMatt Macymake install DESTDIR=%{?buildroot}
409eda14cbcSMatt Macyfind %{?buildroot}%{_libdir} -name '*.la' -exec rm -f {} \;
410eda14cbcSMatt Macy%if 0%{!?__brp_mangle_shebangs:1}
411eda14cbcSMatt Macyfind %{?buildroot}%{_bindir} \
412*c7046f76SMartin Matuska    \( -name arc_summary -or -name arcstat -or -name dbufstat \
413*c7046f76SMartin Matuska    -or -name zilstat \) \
414eda14cbcSMatt Macy    -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \;
415eda14cbcSMatt Macyfind %{?buildroot}%{_datadir} \
416eda14cbcSMatt Macy    \( -name test-runner.py -or -name zts-report.py \) \
417eda14cbcSMatt Macy    -exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \;
418eda14cbcSMatt Macy%endif
419eda14cbcSMatt Macy
420eda14cbcSMatt Macy%post
421eda14cbcSMatt Macy%if 0%{?_systemd}
422eda14cbcSMatt Macy%if 0%{?systemd_post:1}
423eda14cbcSMatt Macy%systemd_post %{systemd_svcs}
424eda14cbcSMatt Macy%else
425eda14cbcSMatt Macyif [ "$1" = "1" -o "$1" = "install" ] ; then
426eda14cbcSMatt Macy    # Initial installation
427eda14cbcSMatt Macy    systemctl preset %{systemd_svcs} >/dev/null || true
428eda14cbcSMatt Macyfi
429eda14cbcSMatt Macy%endif
430eda14cbcSMatt Macy%else
431eda14cbcSMatt Macyif [ -x /sbin/chkconfig ]; then
432eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-import
433681ce946SMartin Matuska    /sbin/chkconfig --add zfs-load-key
434eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-mount
435eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-share
436eda14cbcSMatt Macy    /sbin/chkconfig --add zfs-zed
437eda14cbcSMatt Macyfi
438eda14cbcSMatt Macy%endif
439eda14cbcSMatt Macyexit 0
440eda14cbcSMatt Macy
441eda14cbcSMatt Macy# On RHEL/CentOS 7 the static nodes aren't refreshed by default after
442eda14cbcSMatt Macy# installing a package.  This is the default behavior for Fedora.
443eda14cbcSMatt Macy%posttrans
444eda14cbcSMatt Macy%if 0%{?rhel} == 7 || 0%{?centos} == 7
445eda14cbcSMatt Macysystemctl restart kmod-static-nodes
446eda14cbcSMatt Macysystemctl restart systemd-tmpfiles-setup-dev
447eda14cbcSMatt Macyudevadm trigger
448eda14cbcSMatt Macy%endif
449eda14cbcSMatt Macy
450eda14cbcSMatt Macy%preun
451eda14cbcSMatt Macy%if 0%{?_systemd}
452eda14cbcSMatt Macy%if 0%{?systemd_preun:1}
453eda14cbcSMatt Macy%systemd_preun %{systemd_svcs}
454eda14cbcSMatt Macy%else
455eda14cbcSMatt Macyif [ "$1" = "0" -o "$1" = "remove" ] ; then
456eda14cbcSMatt Macy    # Package removal, not upgrade
457eda14cbcSMatt Macy    systemctl --no-reload disable %{systemd_svcs} >/dev/null || true
458eda14cbcSMatt Macy    systemctl stop %{systemd_svcs} >/dev/null || true
459eda14cbcSMatt Macyfi
460eda14cbcSMatt Macy%endif
461eda14cbcSMatt Macy%else
462eda14cbcSMatt Macyif [ "$1" = "0" -o "$1" = "remove" ] && [ -x /sbin/chkconfig ]; then
463eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-import
464681ce946SMartin Matuska    /sbin/chkconfig --del zfs-load-key
465eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-mount
466eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-share
467eda14cbcSMatt Macy    /sbin/chkconfig --del zfs-zed
468eda14cbcSMatt Macyfi
469eda14cbcSMatt Macy%endif
470eda14cbcSMatt Macyexit 0
471eda14cbcSMatt Macy
472eda14cbcSMatt Macy%postun
473eda14cbcSMatt Macy%if 0%{?_systemd}
474eda14cbcSMatt Macy%if 0%{?systemd_postun:1}
475eda14cbcSMatt Macy%systemd_postun %{systemd_svcs}
476eda14cbcSMatt Macy%else
477eda14cbcSMatt Macysystemctl --system daemon-reload >/dev/null || true
478eda14cbcSMatt Macy%endif
479eda14cbcSMatt Macy%endif
480eda14cbcSMatt Macy
481eda14cbcSMatt Macy%files
482eda14cbcSMatt Macy# Core utilities
483eda14cbcSMatt Macy%{_sbindir}/*
484eda14cbcSMatt Macy%{_bindir}/raidz_test
485184c1b94SMartin Matuska%{_sbindir}/zgenhostid
486eda14cbcSMatt Macy%{_bindir}/zvol_wait
487e92ffd9bSMartin Matuska# Optional Python 3 scripts
488eda14cbcSMatt Macy%{_bindir}/arc_summary
489eda14cbcSMatt Macy%{_bindir}/arcstat
490eda14cbcSMatt Macy%{_bindir}/dbufstat
491*c7046f76SMartin Matuska%{_bindir}/zilstat
492eda14cbcSMatt Macy# Man pages
493eda14cbcSMatt Macy%{_mandir}/man1/*
4943ff01b23SMartin Matuska%{_mandir}/man4/*
495eda14cbcSMatt Macy%{_mandir}/man5/*
4963ff01b23SMartin Matuska%{_mandir}/man7/*
497eda14cbcSMatt Macy%{_mandir}/man8/*
498eda14cbcSMatt Macy# Configuration files and scripts
499eda14cbcSMatt Macy%{_libexecdir}/%{name}
500eda14cbcSMatt Macy%{_udevdir}/vdev_id
501eda14cbcSMatt Macy%{_udevdir}/zvol_id
502eda14cbcSMatt Macy%{_udevdir}/rules.d/*
503ee36e25aSMartin Matuska%{_datadir}/%{name}/compatibility.d
504eda14cbcSMatt Macy%if ! 0%{?_systemd} || 0%{?_initramfs}
505eda14cbcSMatt Macy# Files needed for sysvinit and initramfs-tools
506eda14cbcSMatt Macy%{_sysconfdir}/%{name}/zfs-functions
507eda14cbcSMatt Macy%config(noreplace) %{_initconfdir}/zfs
508eda14cbcSMatt Macy%else
509eda14cbcSMatt Macy%exclude %{_sysconfdir}/%{name}/zfs-functions
510eda14cbcSMatt Macy%exclude %{_initconfdir}/zfs
511eda14cbcSMatt Macy%endif
512eda14cbcSMatt Macy%if 0%{?_systemd}
513eda14cbcSMatt Macy%{_unitdir}/*
514eda14cbcSMatt Macy%{_presetdir}/*
515eda14cbcSMatt Macy%{_modulesloaddir}/*
516eda14cbcSMatt Macy%{_systemdgeneratordir}/*
517eda14cbcSMatt Macy%else
518eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/init.d/*
519eda14cbcSMatt Macy%endif
520eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/%{name}/zed.d/*
521eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/%{name}/zpool.d/*
522eda14cbcSMatt Macy%config(noreplace) %{_sysconfdir}/%{name}/vdev_id.conf.*.example
523eda14cbcSMatt Macy%attr(440, root, root) %config(noreplace) %{_sysconfdir}/sudoers.d/*
524eda14cbcSMatt Macy
525716fd348SMartin Matuska%config(noreplace) %{_sysconfdir}/bash_completion.d/zfs
526716fd348SMartin Matuska
52716038816SMartin Matuska%files -n libzpool5
528eda14cbcSMatt Macy%{_libdir}/libzpool.so.*
529eda14cbcSMatt Macy
5307877fdebSMatt Macy%files -n libnvpair3
531eda14cbcSMatt Macy%{_libdir}/libnvpair.so.*
532eda14cbcSMatt Macy
5337877fdebSMatt Macy%files -n libuutil3
534eda14cbcSMatt Macy%{_libdir}/libuutil.so.*
535eda14cbcSMatt Macy
53616038816SMartin Matuska%files -n libzfs5
537eda14cbcSMatt Macy%{_libdir}/libzfs*.so.*
538eda14cbcSMatt Macy
53916038816SMartin Matuska%files -n libzfs5-devel
540eda14cbcSMatt Macy%{_pkgconfigdir}/libzfs.pc
5412c48331dSMatt Macy%{_pkgconfigdir}/libzfsbootenv.pc
542eda14cbcSMatt Macy%{_pkgconfigdir}/libzfs_core.pc
543eda14cbcSMatt Macy%{_libdir}/*.so
544eda14cbcSMatt Macy%{_includedir}/*
545eda14cbcSMatt Macy%doc AUTHORS COPYRIGHT LICENSE NOTICE README.md
546eda14cbcSMatt Macy
547eda14cbcSMatt Macy%files test
548ee36e25aSMartin Matuska%{_datadir}/%{name}/zfs-tests
549ee36e25aSMartin Matuska%{_datadir}/%{name}/test-runner
550ee36e25aSMartin Matuska%{_datadir}/%{name}/runfiles
551ee36e25aSMartin Matuska%{_datadir}/%{name}/*.sh
552eda14cbcSMatt Macy
553eda14cbcSMatt Macy%files dracut
554c03c5b1cSMartin Matuska%doc contrib/dracut/README.md
555eda14cbcSMatt Macy%{_dracutdir}/modules.d/*
556eda14cbcSMatt Macy
557eda14cbcSMatt Macy%if %{with pyzfs}
558eda14cbcSMatt Macy%files -n python%{__python_pkg_version}-pyzfs
559eda14cbcSMatt Macy%doc contrib/pyzfs/README
560eda14cbcSMatt Macy%doc contrib/pyzfs/LICENSE
561eda14cbcSMatt Macy%defattr(-,root,root,-)
562eda14cbcSMatt Macy%{__python_sitelib}/libzfs_core/*
563eda14cbcSMatt Macy%{__python_sitelib}/pyzfs*
564eda14cbcSMatt Macy%endif
565eda14cbcSMatt Macy
566eda14cbcSMatt Macy%if 0%{?_initramfs}
567eda14cbcSMatt Macy%files initramfs
568c03c5b1cSMartin Matuska%doc contrib/initramfs/README.md
569eda14cbcSMatt Macy/usr/share/initramfs-tools/*
570eda14cbcSMatt Macy%else
571eda14cbcSMatt Macy# Since we're not building the initramfs package,
572eda14cbcSMatt Macy# ignore those files.
573eda14cbcSMatt Macy%exclude /usr/share/initramfs-tools
574eda14cbcSMatt Macy%endif
575da5137abSMartin Matuska
576da5137abSMartin Matuska%if %{with pam}
577da5137abSMartin Matuska%files -n pam_zfs_key
578da5137abSMartin Matuska%{_libdir}/security/*
579da5137abSMartin Matuska%{_datadir}/pam-configs/*
580da5137abSMartin Matuska%endif
581