Files
mirror_zfs/rpm/generic/zfs.spec.in
T

505 lines
14 KiB
Plaintext
Raw Normal View History

2013-02-17 12:10:17 -08:00
%global _sbindir /sbin
%global _libdir /%{_lib}
# Set the default udev directory based on distribution.
2014-06-12 13:11:26 -07:00
%if %{undefined _udevdir}
%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7
2013-02-17 12:10:17 -08:00
%global _udevdir %{_prefix}/lib/udev
%else
%global _udevdir /lib/udev
%endif
%endif
# Set the default udevrule directory based on distribution.
2014-06-12 13:11:26 -07:00
%if %{undefined _udevruledir}
%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7
2014-06-12 13:11:26 -07:00
%global _udevruledir %{_prefix}/lib/udev/rules.d
%else
2014-06-12 13:11:26 -07:00
%global _udevruledir /lib/udev/rules.d
%endif
%endif
# Set the default dracut directory based on distribution.
2014-06-12 13:11:26 -07:00
%if %{undefined _dracutdir}
%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7
%global _dracutdir %{_prefix}/lib/dracut
%else
%global _dracutdir %{_prefix}/share/dracut
2013-02-17 12:10:17 -08:00
%endif
%endif
2013-02-17 12:10:17 -08:00
2015-07-20 13:16:16 -07:00
%if %{undefined _initconfdir}
%global _initconfdir /etc/sysconfig
%endif
2018-11-11 18:06:36 -08:00
%if %{undefined _unitdir}
%global _unitdir %{_prefix}/lib/systemd/system
%endif
%if %{undefined _presetdir}
%global _presetdir %{_prefix}/lib/systemd/system-preset
%endif
%if %{undefined _modulesloaddir}
%global _modulesloaddir %{_prefix}/lib/modules-load.d
%endif
%if %{undefined _systemdgeneratordir}
%global _systemdgeneratordir %{_prefix}/lib/systemd/system-generators
%endif
2013-02-17 12:10:17 -08:00
%bcond_with debug
%bcond_with debuginfo
%bcond_with asan
2014-01-19 15:36:49 +01:00
%bcond_with systemd
2013-02-17 12:10:17 -08:00
2014-01-19 15:36:49 +01:00
# Generic enable switch for systemd
%if %{with systemd}
%define _systemd 1
%endif
# RHEL >= 7 comes with systemd
%if 0%{?rhel} >= 7
%define _systemd 1
%endif
2014-01-19 15:36:49 +01:00
# Fedora >= 15 comes with systemd, but only >= 18 has
# the proper macros
%if 0%{?fedora} >= 18
%define _systemd 1
%endif
# opensuse >= 12.1 comes with systemd, but only >= 13.1
# has the proper macros
%if 0%{?suse_version} >= 1310
%define _systemd 1
%endif
2013-02-17 12:10:17 -08:00
2018-10-31 09:22:59 -07:00
# When not specified default to distribution provided version. This
# is normally Python 3, but for RHEL <= 7 only Python 2 is provided.
%if %{undefined __use_python}
%if 0%{?rhel} && 0%{?rhel} <= 7
2019-01-13 10:02:33 -08:00
%define __python /usr/bin/python2
%define __python_pkg_version 2
%define __python_cffi_pkg python-cffi
%define __python_setuptools_pkg python-setuptools
2018-10-31 09:22:59 -07:00
%else
2019-01-13 10:02:33 -08:00
%define __python /usr/bin/python3
%define __python_pkg_version 3
%define __python_cffi_pkg python3-cffi
%define __python_setuptools_pkg python3-setuptools
2018-10-31 09:22:59 -07:00
%endif
%else
2019-01-13 10:02:33 -08:00
%define __python %{__use_python}
%define __python_pkg_version %{__use_python_pkg_version}
%define __python_cffi_pkg python%{__python_pkg_version}-cffi
%define __python_setuptools_pkg python%{__python_pkg_version}-setuptools
2018-10-31 09:22:59 -07:00
%endif
2019-07-09 15:02:40 -05:00
%define __python_sitelib %(%{__python} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
2018-10-31 09:22:59 -07:00
# By default python-pyzfs is enabled, with the exception of
# RHEL 6 which by default uses Python 2.6 which is too old.
%if 0%{?rhel} == 6
%bcond_with pyzfs
%else
%bcond_without pyzfs
%endif
2013-02-17 12:10:17 -08:00
Name: @PACKAGE@
Version: @VERSION@
Release: @RELEASE@%{?dist}
Summary: Commands to control the kernel modules and libraries
Group: System Environment/Kernel
License: @ZFS_META_LICENSE@
URL: https://zfsonlinux.org/
2013-02-17 12:10:17 -08:00
Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
2014-05-17 13:20:59 +02:00
Requires: libzpool2 = %{version}
Requires: libnvpair1 = %{version}
Requires: libuutil1 = %{version}
Requires: libzfs2 = %{version}
2013-08-26 09:04:38 +03:00
Requires: %{name}-kmod = %{version}
2013-02-17 12:10:17 -08:00
Provides: %{name}-kmod-common = %{version}
2018-02-15 17:53:18 -08:00
Obsoletes: spl
2013-02-17 12:10:17 -08:00
# zfs-fuse provides the same commands and man pages that ZoL does. Renaming
# those on either side would conflict with all available documentation.
Conflicts: zfs-fuse
2013-02-17 12:10:17 -08:00
%if 0%{?rhel}%{?fedora}%{?suse_version}
BuildRequires: gcc, make
2013-02-17 12:10:17 -08:00
BuildRequires: zlib-devel
BuildRequires: libuuid-devel
BuildRequires: libblkid-devel
2016-05-20 13:50:31 -07:00
BuildRequires: libudev-devel
BuildRequires: libattr-devel
2017-09-12 16:15:11 -04:00
BuildRequires: openssl-devel
%if 0%{?fedora} >= 28 || 0%{?rhel} >= 8 || 0%{?centos} >= 8
BuildRequires: libtirpc-devel
%endif
2017-09-12 16:15:11 -04:00
Requires: openssl
%if 0%{?_systemd}
BuildRequires: systemd
%endif
2013-02-17 12:10:17 -08:00
%endif
2014-01-19 15:36:49 +01:00
%if 0%{?_systemd}
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%endif
2013-02-17 12:10:17 -08:00
2017-04-21 09:27:04 -07:00
# The zpool iostat/status -c scripts call some utilities like lsblk and iostat
Requires: util-linux
Requires: sysstat
2013-02-17 12:10:17 -08:00
%description
2018-10-31 09:22:59 -07:00
This package contains the core ZFS command line utilities.
2013-02-17 12:10:17 -08:00
2014-05-17 13:20:59 +02:00
%package -n libzpool2
Summary: Native ZFS pool library for Linux
Group: System Environment/Kernel
%description -n libzpool2
This package contains the zpool library, which provides support
for managing zpools
2014-12-14 20:23:25 -08:00
%post -n libzpool2 -p /sbin/ldconfig
2014-05-17 13:20:59 +02:00
%postun -n libzpool2 -p /sbin/ldconfig
%package -n libnvpair1
Summary: Solaris name-value library for Linux
Group: System Environment/Kernel
%description -n libnvpair1
This package contains routines for packing and unpacking name-value
pairs. This functionality is used to portably transport data across
process boundaries, between kernel and user space, and can be used
to write self describing data structures on disk.
2014-12-14 20:23:25 -08:00
%post -n libnvpair1 -p /sbin/ldconfig
2014-05-17 13:20:59 +02:00
%postun -n libnvpair1 -p /sbin/ldconfig
%package -n libuutil1
Summary: Solaris userland utility library for Linux
Group: System Environment/Kernel
%description -n libuutil1
This library provides a variety of compatibility functions for ZFS on Linux:
* libspl: The Solaris Porting Layer userland library, which provides APIs
that make it possible to run Solaris user code in a Linux environment
with relatively minimal modification.
* libavl: The Adelson-Velskii Landis balanced binary tree manipulation
library.
* libefi: The Extensible Firmware Interface library for GUID disk
partitioning.
* libshare: NFS, SMB, and iSCSI service integration for ZFS.
2014-12-14 20:23:25 -08:00
%post -n libuutil1 -p /sbin/ldconfig
2014-05-17 13:20:59 +02:00
%postun -n libuutil1 -p /sbin/ldconfig
%package -n libzfs2
Summary: Native ZFS filesystem library for Linux
Group: System Environment/Kernel
%description -n libzfs2
This package provides support for managing ZFS filesystems
2014-12-14 20:23:25 -08:00
%post -n libzfs2 -p /sbin/ldconfig
2014-05-17 13:20:59 +02:00
%postun -n libzfs2 -p /sbin/ldconfig
%package -n libzfs2-devel
2013-02-17 12:10:17 -08:00
Summary: Development headers
Group: System Environment/Kernel
2014-05-17 13:20:59 +02:00
Requires: libzfs2 = %{version}
Requires: libzpool2 = %{version}
Requires: libnvpair1 = %{version}
Requires: libuutil1 = %{version}
Provides: libzpool2-devel
Provides: libnvpair1-devel
Provides: libuutil1-devel
Obsoletes: zfs-devel
2013-02-17 12:10:17 -08:00
2014-05-17 13:20:59 +02:00
%description -n libzfs2-devel
2013-02-17 12:10:17 -08:00
This package contains the header files needed for building additional
applications against the ZFS libraries.
%package test
Summary: Test infrastructure
Group: System Environment/Kernel
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: parted
Requires: lsscsi
Requires: mdadm
Requires: bc
2015-07-01 15:23:09 -07:00
Requires: ksh
Requires: fio
Requires: acl
Requires: sudo
Requires: sysstat
2018-07-31 10:17:44 -07:00
Requires: libaio
2018-10-31 09:22:59 -07:00
Requires: python%{__python_pkg_version}
%if 0%{?rhel}%{?fedora}%{?suse_version}
2018-08-23 09:34:34 -07:00
BuildRequires: libaio-devel
%endif
AutoReqProv: no
2013-02-17 12:10:17 -08:00
%description test
This package contains test infrastructure and support scripts for
validating the file system.
%package dracut
Summary: Dracut module
Group: System Environment/Kernel
2019-06-23 00:47:19 +01:00
BuildArch: noarch
Requires: %{name} >= %{version}
2013-02-17 12:10:17 -08:00
Requires: dracut
2018-07-31 10:17:44 -07:00
Requires: /usr/bin/awk
Requires: grep
2013-02-17 12:10:17 -08:00
%description dracut
This package contains a dracut module used to construct an initramfs
image which is ZFS aware.
2018-10-31 09:22:59 -07:00
%if %{with pyzfs}
%package -n python%{__python_pkg_version}-pyzfs
Summary: Python %{python_version} wrapper for libzfs_core
2018-03-18 09:34:45 +01:00
Group: Development/Languages/Python
License: Apache-2.0
BuildArch: noarch
Requires: libzfs2 = %{version}
Requires: libnvpair1 = %{version}
Requires: libffi
2018-10-31 09:22:59 -07:00
Requires: python%{__python_pkg_version}
Requires: %{__python_cffi_pkg}
2018-03-18 09:34:45 +01:00
%if 0%{?rhel}%{?fedora}%{?suse_version}
2018-10-31 09:22:59 -07:00
BuildRequires: python%{__python_pkg_version}-devel
2019-01-13 10:02:33 -08:00
BuildRequires: %{__python_cffi_pkg}
BuildRequires: %{__python_setuptools_pkg}
2018-03-18 09:34:45 +01:00
BuildRequires: libffi-devel
%endif
2018-10-31 09:22:59 -07:00
%description -n python%{__python_pkg_version}-pyzfs
2018-03-18 09:34:45 +01:00
This package provides a python wrapper for the libzfs_core C library.
%endif
2014-01-30 16:26:48 +00:00
%if 0%{?_initramfs}
%package initramfs
Summary: Initramfs module
Group: System Environment/Kernel
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{name} = %{version}-%{release}
Requires: initramfs-tools
%description initramfs
This package contains a initramfs module used to construct an initramfs
image which is ZFS aware.
%endif
2013-02-17 12:10:17 -08:00
%prep
%if %{with debug}
%define debug --enable-debug
%else
%define debug --disable-debug
%endif
%if %{with debuginfo}
%define debuginfo --enable-debuginfo
%else
%define debuginfo --disable-debuginfo
%endif
%if %{with asan}
%define asan --enable-asan
%else
%define asan --disable-asan
%endif
2014-01-19 15:36:49 +01:00
%if 0%{?_systemd}
2018-11-11 18:06:36 -08:00
%define systemd --enable-systemd --with-systemdunitdir=%{_unitdir} --with-systemdpresetdir=%{_presetdir} --with-systemdmodulesloaddir=%{_modulesloaddir} --with-systemdgeneratordir=%{_systemdgeneratordir} --disable-sysvinit
%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
2014-01-19 15:36:49 +01:00
%else
%define systemd --enable-sysvinit --disable-systemd
%endif
2013-02-17 12:10:17 -08:00
2018-10-31 09:22:59 -07:00
%if %{with pyzfs}
%define pyzfs --enable-pyzfs
%else
%define pyzfs --disable-pyzfs
%endif
2013-02-17 12:10:17 -08:00
%setup -q
%build
%configure \
--with-config=user \
--with-udevdir=%{_udevdir} \
--with-udevruledir=%{_udevruledir} \
2013-02-17 12:10:17 -08:00
--with-dracutdir=%{_dracutdir} \
2018-10-31 09:22:59 -07:00
--with-python=%{__python} \
2013-02-17 12:10:17 -08:00
--disable-static \
%{debug} \
%{debuginfo} \
%{asan} \
2018-10-31 09:22:59 -07:00
%{systemd}\
%{pyzfs}
2013-02-17 12:10:17 -08:00
make %{?_smp_mflags}
%install
%{__rm} -rf $RPM_BUILD_ROOT
make install DESTDIR=%{?buildroot}
find %{?buildroot}%{_libdir} -name '*.la' -exec rm -f {} \;
2019-09-12 16:32:32 -04:00
%if 0%{!?__brp_mangle_shebangs:1}
find %{?buildroot}%{_bindir} \
\( -name arc_summary -or -name arcstat -or -name dbufstat \) \
-exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \;
find %{?buildroot}%{_datadir} \
\( -name test-runner.py -or -name zts-report.py \) \
-exec %{__sed} -i 's|^#!.*|#!%{__python}|' {} \;
%endif
2013-02-17 12:10:17 -08:00
2013-07-03 16:12:37 -07:00
%post
2014-01-19 15:36:49 +01:00
%if 0%{?_systemd}
%if 0%{?systemd_post:1}
%systemd_post %{systemd_svcs}
2014-01-19 15:36:49 +01:00
%else
if [ "$1" = "1" -o "$1" = "install" ] ; then
# Initial installation
systemctl preset %{systemd_svcs} >/dev/null || true
fi
%endif
%else
2015-04-23 20:35:45 +02:00
if [ -x /sbin/chkconfig ]; then
/sbin/chkconfig --add zfs-import
/sbin/chkconfig --add zfs-mount
/sbin/chkconfig --add zfs-share
/sbin/chkconfig --add zfs-zed
fi
2014-01-19 15:36:49 +01:00
%endif
2013-07-03 21:38:45 -07:00
exit 0
2013-07-03 16:12:37 -07:00
2018-03-13 10:45:55 -07:00
# On RHEL/CentOS 7 the static nodes aren't refreshed by default after
# installing a package. This is the default behavior for Fedora.
%posttrans
%if 0%{?rhel} == 7 || 0%{?centos} == 7
systemctl restart kmod-static-nodes
systemctl restart systemd-tmpfiles-setup-dev
udevadm trigger
%endif
2013-07-03 16:12:37 -07:00
%preun
2014-01-19 15:36:49 +01:00
%if 0%{?_systemd}
%if 0%{?systemd_preun:1}
%systemd_preun %{systemd_svcs}
2014-01-19 15:36:49 +01:00
%else
if [ "$1" = "0" -o "$1" = "remove" ] ; then
# Package removal, not upgrade
systemctl --no-reload disable %{systemd_svcs} >/dev/null || true
systemctl stop %{systemd_svcs} >/dev/null || true
fi
%endif
%else
if [ "$1" = "0" -o "$1" = "remove" ] && [ -x /sbin/chkconfig ]; then
2015-04-23 20:35:45 +02:00
/sbin/chkconfig --del zfs-import
/sbin/chkconfig --del zfs-mount
/sbin/chkconfig --del zfs-share
/sbin/chkconfig --del zfs-zed
2013-07-03 16:12:37 -07:00
fi
2014-01-19 15:36:49 +01:00
%endif
2013-07-03 21:38:45 -07:00
exit 0
2013-02-17 12:10:17 -08:00
2014-01-19 15:36:49 +01:00
%postun
%if 0%{?_systemd}
%if 0%{?systemd_postun:1}
%systemd_postun %{systemd_svcs}
%else
systemctl --system daemon-reload >/dev/null || true
%endif
2014-01-19 15:36:49 +01:00
%endif
2013-02-17 12:10:17 -08:00
%files
2018-10-31 09:22:59 -07:00
# Core utilities
2013-02-17 12:10:17 -08:00
%{_sbindir}/*
2018-10-31 09:22:59 -07:00
%{_bindir}/raidz_test
%{_bindir}/zgenhostid
%{_bindir}/zvol_wait
2018-10-31 09:22:59 -07:00
# Optional Python 2/3 scripts
%{_bindir}/arc_summary
%{_bindir}/arcstat
%{_bindir}/dbufstat
# Man pages
2013-02-17 12:10:17 -08:00
%{_mandir}/man1/*
%{_mandir}/man5/*
%{_mandir}/man8/*
2018-10-31 09:22:59 -07:00
# Configuration files and scripts
%{_libexecdir}/%{name}
2013-02-17 12:10:17 -08:00
%{_udevdir}/vdev_id
%{_udevdir}/zvol_id
%{_udevdir}/rules.d/*
2019-08-16 17:02:32 +02:00
%if ! 0%{?_systemd} || 0%{?_initramfs}
# Files needed for sysvinit and initramfs-tools
%{_sysconfdir}/%{name}/zfs-functions
%config(noreplace) %{_initconfdir}/zfs
%else
%exclude %{_sysconfdir}/%{name}/zfs-functions
%exclude %{_initconfdir}/zfs
%endif
2014-01-19 15:36:49 +01:00
%if 0%{?_systemd}
%{_unitdir}/*
%{_presetdir}/*
2018-11-11 18:06:36 -08:00
%{_modulesloaddir}/*
%{_systemdgeneratordir}/*
2014-01-19 15:36:49 +01:00
%else
2015-04-23 20:35:45 +02:00
%config(noreplace) %{_sysconfdir}/init.d/*
2014-01-19 15:36:49 +01:00
%endif
2019-08-16 17:02:32 +02:00
%config(noreplace) %{_sysconfdir}/%{name}/zed.d/*
%config(noreplace) %{_sysconfdir}/%{name}/zpool.d/*
%config(noreplace) %{_sysconfdir}/%{name}/vdev_id.conf.*.example
2017-06-05 13:52:15 -04:00
%attr(440, root, root) %config(noreplace) %{_sysconfdir}/sudoers.d/*
2013-02-17 12:10:17 -08:00
2014-05-17 13:20:59 +02:00
%files -n libzpool2
%{_libdir}/libzpool.so.*
%files -n libnvpair1
%{_libdir}/libnvpair.so.*
%files -n libuutil1
%{_libdir}/libuutil.so.*
%files -n libzfs2
%{_libdir}/libzfs*.so.*
%files -n libzfs2-devel
2019-07-30 19:06:09 +02:00
%{_datarootdir}/pkgconfig/libzfs.pc
%{_datarootdir}/pkgconfig/libzfs_core.pc
2013-02-17 12:10:17 -08:00
%{_libdir}/*.so
%{_includedir}/*
2018-02-15 17:53:18 -08:00
%doc AUTHORS COPYRIGHT LICENSE NOTICE README.md
2013-02-17 12:10:17 -08:00
%files test
%{_datadir}/%{name}
%files dracut
2015-07-09 11:41:14 -07:00
%doc contrib/dracut/README.dracut.markdown
2013-02-17 12:10:17 -08:00
%{_dracutdir}/modules.d/*
2018-10-31 09:22:59 -07:00
%if %{with pyzfs}
%files -n python%{__python_pkg_version}-pyzfs
2018-03-18 09:34:45 +01:00
%doc contrib/pyzfs/README
%doc contrib/pyzfs/LICENSE
%defattr(-,root,root,-)
2019-07-09 15:02:40 -05:00
%{__python_sitelib}/libzfs_core/*
%{__python_sitelib}/pyzfs*
2018-03-18 09:34:45 +01:00
%endif
2014-01-30 16:26:48 +00:00
%if 0%{?_initramfs}
%files initramfs
%doc contrib/initramfs/README.initramfs.markdown
/usr/share/initramfs-tools/*
%else
# Since we're not building the initramfs package,
# ignore those files.
%exclude /usr/share/initramfs-tools
%endif