# Conditional build:
%bcond_with kernel # don't build kernel modules
%bcond_without userspace # don't build userspace programs
-%bcond_without python2 # CPython 2.x module
%bcond_without python3 # CPython 3.x module
+%bcond_without static_libs # static libraries
%bcond_with verbose # verbose build (V=1)
#
# The goal here is to have main, userspace, package built once with
Summary: Native Linux port of the ZFS filesystem
Summary(pl.UTF-8): Natywny linuksowy port systemu plików ZFS
Name: %{pname}%{?_pld_builder:%{?with_kernel:-kernel}}%{_alt_kernel}
-Version: 2.0.0
+Version: 2.3.1
Release: %{rel}%{?_pld_builder:%{?with_kernel:@%{_kernel_ver_str}}}
License: CDDL
Group: Applications/System
Source0: https://github.com/openzfs/zfs/releases/download/zfs-%{version}/%{pname}-%{version}.tar.gz
-# Source0-md5: a6f2d1b87562d875d5b18f0580b8289f
+# Source0-md5: 1d8fef7fce8556cd1d4eb0a6dafcbaa8
Patch0: initdir.patch
-Patch1: am.patch
+Patch1: tld.patch
URL: https://zfsonlinux.org/
BuildRequires: autoconf >= 2.50
BuildRequires: automake
BuildRequires: libtool
-BuildRequires: rpmbuild(macros) >= 1.714
+BuildRequires: rpmbuild(macros) >= 2.030
%if %{with kernel}
%{expand:%buildrequires_kernel kernel%%{_alt_kernel}-module-build >= 3:2.6.20.2}
%endif
%if %{with userspace}
# only for mmap_libaio test command
#BuildRequires: libaio-devel
+%ifnarch %arch_with_atomics64
+BuildRequires: libatomic-devel
+%endif
BuildRequires: libblkid-devel
BuildRequires: libselinux-devel
BuildRequires: libtirpc-devel
+BuildRequires: libunwind-devel >= 1.8.0
BuildRequires: libuuid-devel
BuildRequires: openssl-devel
BuildRequires: pam-devel
BuildRequires: pkgconfig
BuildRequires: udev-devel
BuildRequires: zlib-devel
-%if %{with python2}
-BuildRequires: python-cffi
-BuildRequires: python-modules >= 1:2.6
-BuildRequires: python-setuptools
-%endif
%if %{with python3}
+BuildRequires: python3 >= 1:3.6
BuildRequires: python3-cffi
-BuildRequires: python3-modules >= 1:3.4
+BuildRequires: python3-devel >= 1:3.6
+BuildRequires: python3-modules >= 1:3.6
+BuildRequires: python3-packaging
BuildRequires: python3-setuptools
%endif
-%if %{with python2} || %{with python3}
+%if %{with python3}
BuildRequires: rpm-pythonprov
%endif
%endif
Requires: %{pname}-libs = %{version}-%{release}
+Requires: libunwind >= 1.8.0
Obsoletes: spl < 0.7.9-2
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
License: CDDL
Group: Libraries
Requires(post,postun): /sbin/ldconfig
+Requires: libunwind >= 1.8.0
%description libs
ZFS on Linux libraries.
%description -n pam-pam_zfs_key -l pl.UTF-8
Moduł PAM do odblokowywania zbiorów danych ZFS dla użytkownika.
-%package -n python-pyzfs
-Summary: Python 2 wrapper for libzfs_core C library
-Summary(pl.UTF-8): Interfejs Pythona 2 do biblioteki C libzfs_core
-License: Apache v2.0
-Group: Libraries/Python
-Requires: %{pname}-libs = %{version}-%{release}
-
-%description -n python-pyzfs
-Python 2 wrapper for libzfs_core C library.
-
-%description -n python-pyzfs -l pl.UTF-8
-Interfejs Pythona 2 do biblioteki C libzfs_core.
-
%package -n python3-pyzfs
Summary: Python 3 wrapper for libzfs_core C library
Summary(pl.UTF-8): Interfejs Pythona 3 do biblioteki C libzfs_core
License: Apache v2.0
Group: Libraries/Python
Requires: %{pname}-libs = %{version}-%{release}
+Obsoletes: python-pyzfs < 2.2.3-2
%description -n python3-pyzfs
Python 3 wrapper for libzfs_core C library.
Obsoletes: kernel-spl-common-devel < 0.7.9-2
%description -n kernel-zfs-common-devel
-ZFS Linux kernel headers common for all PLD kernel versions.
+ZFS Linux kernel headers common for all TLD kernel versions.
%description -n kernel-zfs-common-devel -l pl.UTF-8
ZFS - pliki nagłówkowe jądra Linuksa wspólne na wszystkich
-wersji jąder PLD.
+wersji jąder TLD.
%define kernel_pkg()\
%package -n kernel%{_alt_kernel}-zfs\
Obsoletes: kernel-spl-devel < 0.7.9-2\
\
%description -n kernel%{_alt_kernel}-zfs-devel\
-ZFS Linux kernel headers configured for PLD kernel%{_alt_kernel},\
+ZFS Linux kernel headers configured for TLD kernel%{_alt_kernel},\
version %{_kernel_ver}.\
\
%description -n kernel%{_alt_kernel}-zfs-devel -l pl.UTF-8\
-ZFS - pliki nagłówkowe jądra Linuksa skonfigurowane dla jądra PLD z\
+ZFS - pliki nagłówkowe jądra Linuksa skonfigurowane dla jądra TLD z\
pakietu kernel%{_alt_kernel} w wersji %{_kernel_ver}.\
\
%files -n kernel%{_alt_kernel}-zfs\
%defattr(644,root,root,755)\
-%dir /lib/modules/%{_kernel_ver}/misc/lua\
-/lib/modules/%{_kernel_ver}/misc/lua/zlua.ko*\
-%dir /lib/modules/%{_kernel_ver}/misc/avl\
-/lib/modules/%{_kernel_ver}/misc/avl/zavl.ko*\
-%dir /lib/modules/%{_kernel_ver}/misc/icp\
-/lib/modules/%{_kernel_ver}/misc/icp/icp.ko*\
-%dir /lib/modules/%{_kernel_ver}/misc/nvpair\
-/lib/modules/%{_kernel_ver}/misc/nvpair/znvpair.ko*\
-%dir /lib/modules/%{_kernel_ver}/misc/spl\
-/lib/modules/%{_kernel_ver}/misc/spl/spl.ko*\
-%dir /lib/modules/%{_kernel_ver}/misc/unicode\
-/lib/modules/%{_kernel_ver}/misc/unicode/zunicode.ko*\
-%dir /lib/modules/%{_kernel_ver}/misc/zcommon\
-/lib/modules/%{_kernel_ver}/misc/zcommon/zcommon.ko*\
-%dir /lib/modules/%{_kernel_ver}/misc/zfs\
-/lib/modules/%{_kernel_ver}/misc/zfs/zfs.ko*\
-%dir /lib/modules/%{_kernel_ver}/misc/zstd\
-/lib/modules/%{_kernel_ver}/misc/zstd/zzstd.ko*\
+/lib/modules/%{_kernel_ver}/misc/spl.ko*\
+/lib/modules/%{_kernel_ver}/misc/zfs.ko*\
\
%files -n kernel%{_alt_kernel}-zfs-devel\
%defattr(644,root,root,755)\
%{nil}
%define build_kernel_pkg()\
+export KERNEL_MAKE="ARCH=%_kernel_arch" \\\
%configure \\\
+ KERNEL_CC="%{__cc}" \\\
+ ARCH_UM="ARCH=%{_kernel_arch}" \\\
--disable-silent-rules \\\
--with-config="kernel" \\\
--with-linux=%{_kernelsrcdir}\\\
%prep
%setup -q -n %{pname}-%{version}
-%patch0 -p1
-%patch1 -p1
-
-%{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python2(\s|$),#!%{__python}\1,' \
- cmd/arc_summary/arc_summary2
+%patch -P 0 -p1
+%patch -P 1 -p1
%{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python3(\s|$),#!%{__python3}\1,' \
- cmd/arc_summary/arc_summary3
+ cmd/arc_summary
%{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+@PYTHON_SHEBANG@(\s|$),#!%{__python3}\1,' \
- cmd/arcstat/arcstat.in \
- cmd/dbufstat/dbufstat.in
+ cmd/arcstat.in \
+ cmd/dbufstat.in \
+ cmd/zilstat.in
%{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+bash(\s|$),#!/bin/bash\1,' \
- contrib/dracut/02zfsexpandknowledge/module-setup.sh.in \
- contrib/dracut/90zfs/module-setup.sh.in \
- scripts/zimport.sh \
- scripts/zloop.sh
+ contrib/dracut/02zfsexpandknowledge/module-setup.sh.in \
+ contrib/dracut/90zfs/module-setup.sh.in \
+ scripts/zimport.sh \
+ scripts/zloop.sh
%build
%{__libtoolize}
%if %{with userspace}
%configure \
--disable-silent-rules \
+ %{__enable_disable static_libs static} \
--enable-pam \
- --disable-systemd \
+ --enable-systemd \
--with-config="user" \
--with-linux=%{_kernelsrcdir} \
--with-pammoduledir=/%{_lib}/security \
- --with-udevdir=/lib/udev
+ --with-systemdunitdir=%{systemdunitdir} \
+ --with-systemdpresetdir=/etc/systemd/system-preset \
+ --with-systemdmodulesloaddir=/etc/modules-load.d \
+ --with-systemdgeneratordir=/lib/systemd/system-generators \
+ --with-udevdir=/lib/udev \
+ --with-vendor=tld
%{__make} \
%{?with_verbose:V=1}
-%if %{with python2}
-cd contrib/pyzfs
-%py_build
-cd ../..
-%endif
-
%if %{with python3}
cd contrib/pyzfs
%py3_build
%if %{with kernel}
install -d $RPM_BUILD_ROOT
cp -a installed/* $RPM_BUILD_ROOT
-# Drop unneeded spl compat links
-%{__rm} -r $RPM_BUILD_ROOT/usr/src/spl-%{version}
%endif
%if %{with userspace}
DESTDIR=$RPM_BUILD_ROOT \
DEFAULT_INIT_DIR=/etc/rc.d/init.d
-%if %{with python2}
-%{__rm} -rf $RPM_BUILD_ROOT%{py_sitescriptdir}
-cd contrib/pyzfs
-%py_install
-
-%py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
-%py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
-
-%py_postclean
-cd ../..
-%{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/libzfs_core/test
-%endif
+# these headers are used as <sys/abd_os.h> and <sys/abd_impl_os.h> from /usr/include/libzfs/sys/abd{,_impl}.h resp.
+# they don't refer to any functions in libzpool
+%{__mv} $RPM_BUILD_ROOT%{_includedir}/libzpool/abd*_os.h $RPM_BUILD_ROOT%{_includedir}/libzfs/sys
+rmdir $RPM_BUILD_ROOT%{_includedir}/libzpool
%if %{with python3}
-%{__rm} -r $RPM_BUILD_ROOT/usr/local/share/python3*
cd contrib/pyzfs
%py3_install
cd ../..
%{__rm} $RPM_BUILD_ROOT%{_datadir}/pam-configs/zfs_key
# Package these? These are integration tests of the implementation.
-%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/zfs/{zfs-tests,test-runner,runfiles}
+%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/zfs/{zfs-tests,zfs-tests.sh,test-runner,runfiles}
%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{raidz_test,test-runner}.1*
%{__rm} $RPM_BUILD_ROOT%{_bindir}/raidz_test
%endif
%attr(755,root,root) %{_bindir}/arc_summary
%attr(755,root,root) %{_bindir}/arcstat
%attr(755,root,root) %{_bindir}/dbufstat
-%attr(755,root,root) %{_bindir}/zgenhostid
+%attr(755,root,root) %{_bindir}/zilstat
%attr(755,root,root) %{_bindir}/zvol_wait
%attr(755,root,root) %{_sbindir}/fsck.zfs
%attr(755,root,root) %{_sbindir}/zdb
%attr(755,root,root) %{_sbindir}/zed
%attr(755,root,root) %{_sbindir}/zfs
%attr(755,root,root) %{_sbindir}/zfs_ids_to_path
+%attr(755,root,root) %{_sbindir}/zgenhostid
%attr(755,root,root) %{_sbindir}/zhack
%attr(755,root,root) %{_sbindir}/zinject
%attr(755,root,root) %{_sbindir}/zpool
%dir %{_sysconfdir}/zfs
# package *.example as %doc? (they cannot act as default configuration)
%{_sysconfdir}/zfs/vdev_id.conf.*.example
+%{_sysconfdir}/zfs/zfs-functions
%dir %{_sysconfdir}/zfs/zed.d
%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/*.sh
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/zed.rc
%attr(754,root,root) /etc/rc.d/init.d/zfs-mount
%attr(754,root,root) /etc/rc.d/init.d/zfs-share
%attr(754,root,root) /etc/rc.d/init.d/zfs-zed
+%attr(754,root,root) /etc/rc.d/init.d/zfs-load-key
%config(noreplace) %verify(not md5 mtime size) /etc/default/zfs
-/etc/zfs/zfs-functions
-#%config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/zfs.conf
+%config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/zfs.conf
# for zpool iostat/status -c smart
-/etc/sudoers.d/zfs
+#/ets/sudoers.d/zfs
+/etc/systemd/system-preset/50-zfs.preset
+/lib/systemd/system-generators/zfs-mount-generator
+%{systemdunitdir}/zfs.target
+%{systemdunitdir}/zfs-import.service
+%{systemdunitdir}/zfs-import.target
+%{systemdunitdir}/zfs-import-cache.service
+%{systemdunitdir}/zfs-import-scan.service
+%{systemdunitdir}/zfs-load-key.service
+%{systemdunitdir}/zfs-mount.service
+%{systemdunitdir}/zfs-scrub@.service
+%{systemdunitdir}/zfs-scrub-monthly@.timer
+%{systemdunitdir}/zfs-scrub-weekly@.timer
+%{systemdunitdir}/zfs-share.service
+%{systemdunitdir}/zfs-trim-monthly@.timer
+%{systemdunitdir}/zfs-trim-weekly@.timer
+%{systemdunitdir}/zfs-trim@.service
+%{systemdunitdir}/zfs-volume-wait.service
+%{systemdunitdir}/zfs-volumes.target
+%{systemdunitdir}/zfs-zed.service
%attr(755,root,root) /lib/udev/vdev_id
%attr(755,root,root) /lib/udev/zvol_id
/lib/udev/rules.d/60-zvol.rules
%attr(755,root,root) %{_libexecdir}/zfs/zed.d/*.sh
%dir %{_libexecdir}/zfs/zpool.d
%attr(755,root,root) %{_libexecdir}/zfs/zpool.d/*
+%attr(755,root,root) %{_libexecdir}/zfs/zfs_prepare_disk
+%attr(755,root,root) %{_libexecdir}/zfs/zpool_influxdb
%dir %{_datadir}/zfs
%attr(755,root,root) %{_datadir}/zfs/*.sh
+%{_datadir}/zfs/compatibility.d
+%{bash_compdir}/zfs
+%{bash_compdir}/zpool
%{_mandir}/man1/arcstat.1*
%{_mandir}/man1/zhack.1*
%{_mandir}/man1/ztest.1*
%{_mandir}/man1/zvol_wait.1*
-%{_mandir}/man5/spl-module-parameters.5*
+%{_mandir}/man4/spl.4*
+%{_mandir}/man4/zfs.4*
%{_mandir}/man5/vdev_id.conf.5*
-%{_mandir}/man5/zfs-events.5*
-%{_mandir}/man5/zfs-module-parameters.5*
-%{_mandir}/man5/zpool-features.5*
+%{_mandir}/man7/vdevprops.7*
+%{_mandir}/man7/zfsconcepts.7*
+%{_mandir}/man7/zfsprops.7*
+%{_mandir}/man7/zpool-features.7*
+%{_mandir}/man7/zpoolconcepts.7*
+%{_mandir}/man7/zpoolprops.7*
%{_mandir}/man8/fsck.zfs.8*
%{_mandir}/man8/mount.zfs.8*
%{_mandir}/man8/vdev_id.8*
%{_mandir}/man8/zfs-groupspace.8*
%{_mandir}/man8/zfs-hold.8*
%{_mandir}/man8/zfs-inherit.8*
-%{_mandir}/man8/zfs-jail.8*
%{_mandir}/man8/zfs-list.8*
%{_mandir}/man8/zfs-load-key.8*
%{_mandir}/man8/zfs-mount.8*
%{_mandir}/man8/zfs-share.8*
%{_mandir}/man8/zfs-snapshot.8*
%{_mandir}/man8/zfs-unallow.8*
-%{_mandir}/man8/zfs-unjail.8*
%{_mandir}/man8/zfs-unload-key.8*
+%{_mandir}/man8/zfs-unzone.8*
%{_mandir}/man8/zfs-unmount.8*
%{_mandir}/man8/zfs-upgrade.8*
%{_mandir}/man8/zfs-userspace.8*
%{_mandir}/man8/zfs-wait.8*
+%{_mandir}/man8/zfs-zone.8*
%{_mandir}/man8/zfs_ids_to_path.8*
-%{_mandir}/man8/zfsconcepts.8*
-%{_mandir}/man8/zfsprops.8*
+%{_mandir}/man8/zfs_prepare_disk.8*
%{_mandir}/man8/zgenhostid.8*
%{_mandir}/man8/zinject.8*
%{_mandir}/man8/zpool.8*
%{_mandir}/man8/zpool-checkpoint.8*
%{_mandir}/man8/zpool-clear.8*
%{_mandir}/man8/zpool-create.8*
+%{_mandir}/man8/zpool-ddtprune.8*
%{_mandir}/man8/zpool-destroy.8*
%{_mandir}/man8/zpool-detach.8*
%{_mandir}/man8/zpool-events.8*
%{_mandir}/man8/zpool-list.8*
%{_mandir}/man8/zpool-offline.8*
%{_mandir}/man8/zpool-online.8*
+%{_mandir}/man8/zpool-prefetch.8*
%{_mandir}/man8/zpool-reguid.8*
%{_mandir}/man8/zpool-remove.8*
%{_mandir}/man8/zpool-reopen.8*
%{_mandir}/man8/zpool-trim.8*
%{_mandir}/man8/zpool-upgrade.8*
%{_mandir}/man8/zpool-wait.8*
-%{_mandir}/man8/zpoolconcepts.8*
-%{_mandir}/man8/zpoolprops.8*
+%{_mandir}/man8/zpool_influxdb.8*
%{_mandir}/man8/zstream.8*
%{_mandir}/man8/zstreamdump.8*
%attr(755,root,root) %{_libdir}/libuutil.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libuutil.so.3
%attr(755,root,root) %{_libdir}/libzfs.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libzfs.so.4
+%attr(755,root,root) %ghost %{_libdir}/libzfs.so.6
%attr(755,root,root) %{_libdir}/libzfs_core.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libzfs_core.so.3
%attr(755,root,root) %{_libdir}/libzfsbootenv.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libzfsbootenv.so.1
%attr(755,root,root) %{_libdir}/libzpool.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libzpool.so.4
+%attr(755,root,root) %ghost %{_libdir}/libzpool.so.6
%files devel
%defattr(644,root,root,755)
%{_pkgconfigdir}/libzfs_core.pc
%{_pkgconfigdir}/libzfsbootenv.pc
+%if %{with static_libs}
%files static
%defattr(644,root,root,755)
%{_libdir}/libnvpair.a
%{_libdir}/libzfs_core.a
%{_libdir}/libzfsbootenv.a
%{_libdir}/libzpool.a
+%endif
%files -n dracut-zfs
%defattr(644,root,root,755)
-%doc contrib/dracut/README.dracut.markdown
+%doc contrib/dracut/README.md
%dir %{dracutlibdir}/modules.d/02zfsexpandknowledge
%attr(755,root,root) %{dracutlibdir}/modules.d/02zfsexpandknowledge/module-setup.sh
%dir %{dracutlibdir}/modules.d/90zfs
%attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/export-zfs.sh
+%attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/import-opts-generator.sh
%attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/module-setup.sh
%attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/mount-zfs.sh
%attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/parse-zfs.sh
%attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-lib.sh
%attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-load-key.sh
%attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-needshutdown.sh
+%{dracutlibdir}/modules.d/90zfs/zfs-nonroot-necessities.service
%{dracutlibdir}/modules.d/90zfs/zfs-rollback-bootfs.service
%{dracutlibdir}/modules.d/90zfs/zfs-snapshot-bootfs.service
+%{_mandir}/man7/dracut.zfs.7*
%files -n pam-pam_zfs_key
%defattr(644,root,root,755)
%attr(755,root,root) /%{_lib}/security/pam_zfs_key.so
-%if %{with python2}
-%files -n python-pyzfs
-%defattr(644,root,root,755)
-%doc contrib/pyzfs/README
-%{py_sitescriptdir}/libzfs_core
-%{py_sitescriptdir}/pyzfs-*-py*.egg-info
-%endif
-
%if %{with python3}
%files -n python3-pyzfs
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%dir /usr/src/zfs-%{version}
/usr/src/zfs-%{version}/include
-/usr/src/zfs-%{version}/zfs.release
-/usr/src/zfs-%{version}/zfs_config.h
+/usr/src/zfs-%{version}/zfs.release.in
+/usr/src/zfs-%{version}/zfs_config.h.in
%endif