# Conditional build:
%bcond_without kernel # don't build kernel modules
%bcond_without userspace # don't build userspace programs
-%bcond_without python # CPython module
+%bcond_without python2 # CPython 2.x module
+%bcond_without python3 # CPython 3.x module
%bcond_with verbose # verbose build (V=1)
#
# The goal here is to have main, userspace, package built once with
%define _duplicate_files_terminate_build 0
-%define rel 7
+%define rel 1
%define pname zfs
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}
-%define gitrev 1511_g4338c5c06
-Version: 0.7.9
+Version: 0.8.4
Release: %{rel}%{?_pld_builder:%{?with_kernel:@%{_kernel_ver_str}}}
License: CDDL
Group: Applications/System
-#Source0: https://github.com/zfsonlinux/zfs/releases/download/zfs-%{version}/%{pname}-%{version}.tar.gz
-Source0: %{pname}-%{version}-%{gitrev}.tar.gz
-# Source0-md5: ceb367d302942e2291f1ad86c1e0d2be
+Source0: https://github.com/openzfs/zfs/releases/download/zfs-%{version}/%{pname}-%{version}.tar.gz
+# Source0-md5: f0c203c59c4fcd44187a64758707469f
Patch0: x32.patch
Patch1: am.patch
-URL: http://zfsonlinux.org/
+Patch2: %{pname}-sh.patch
+Patch3: link.patch
+Patch4: kernel-5.8.patch
+URL: https://zfsonlinux.org/
BuildRequires: autoconf >= 2.50
BuildRequires: automake
BuildRequires: libtool
%{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
BuildRequires: libblkid-devel
BuildRequires: libselinux-devel
+# if xdr gets removed from glibc
+#BuildRequires: libtirpc-devel
BuildRequires: libuuid-devel
+BuildRequires: openssl-devel
+BuildRequires: pkgconfig
+BuildRequires: udev-devel
BuildRequires: zlib-devel
-%if %{with python}
-BuildRequires: rpm-pythonprov
-BuildRequires: python-modules
+%if %{with python2}
+BuildRequires: python-cffi
+BuildRequires: python-modules >= 1:2.6
BuildRequires: python-setuptools
%endif
+%if %{with python3}
+BuildRequires: python3-cffi
+BuildRequires: python3-modules >= 1:3.4
+BuildRequires: python3-setuptools
+%endif
+%if %{with python2} || %{with python3}
+BuildRequires: rpm-pythonprov
+%endif
%endif
Requires: %{pname}-libs = %{version}-%{release}
Obsoletes: spl < 0.7.9-2
Obsługa ZFS-a dla Dracuta.
%package -n python-pyzfs
-Summary: Wrapper for libzfs_core C library
+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
-Wrapper for libzfs_core C library.
+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}
+
+%description -n python3-pyzfs
+Python 3 wrapper for libzfs_core C library.
+
+%description -n python3-pyzfs -l pl.UTF-8
+Interfejs Pythona 3 do biblioteki C libzfs_core.
%package -n kernel-zfs-common-devel
Summary: ZFS Linux kernel headers
%setup -q -n %{pname}-%{version}
%patch0 -p1
%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+
+%{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python2(\s|$),#!%{__python}\1,' \
+ cmd/arc_summary/arc_summary2
+
+%{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python3(\s|$),#!%{__python3}\1,' \
+ cmd/arc_summary/arc_summary3 \
+ cmd/arcstat/arcstat \
+ cmd/dbufstat/dbufstat
%build
%{__libtoolize}
%if %{with userspace}
%configure \
--disable-silent-rules \
+ --enable-systemd \
--with-config="user" \
--with-linux=%{_kernelsrcdir} \
--with-systemdunitdir=%{systemdunitdir} \
%{__make} \
%{?with_verbose:V=1}
-%if %{with python}
+%if %{with python2}
cd contrib/pyzfs
-%py_build %{?with_tests:test}
+%py_build
+cd ../..
+%endif
+
+%if %{with python3}
+cd contrib/pyzfs
+%py3_build
cd ../..
%endif
%endif
DESTDIR=$RPM_BUILD_ROOT \
DEFAULT_INIT_DIR=/etc/rc.d/init.d
-%if %{with python}
+%if %{with python2}
%{__rm} -rf $RPM_BUILD_ROOT%{py_sitescriptdir}
cd contrib/pyzfs
%py_install
%{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/libzfs_core/test
%endif
+%if %{with python3}
+%{__rm} -rf $RPM_BUILD_ROOT{%{py3_sitescriptdir},/usr/local/share/python3*}
+cd contrib/pyzfs
+%py3_install
+cd ../..
+%{__rm} -r $RPM_BUILD_ROOT%{py3_sitescriptdir}/libzfs_core/test
+%endif
+
install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
%{__mv} $RPM_BUILD_ROOT%{_npkgconfigdir}/* $RPM_BUILD_ROOT%{_pkgconfigdir}
%if %{with userspace}
%files
%defattr(644,root,root,755)
-%doc AUTHORS COPYRIGHT LICENSE README.md
+%doc AUTHORS COPYRIGHT LICENSE NEWS NOTICE README.md
%attr(755,root,root) /sbin/mount.zfs
-%attr(755,root,root) %{_bindir}/arc_summary.py
-%attr(755,root,root) %{_bindir}/arcstat.py
-%attr(755,root,root) %{_bindir}/dbufstat.py
+%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}/zvol_wait
%attr(755,root,root) %{_sbindir}/fsck.zfs
%attr(755,root,root) %{_sbindir}/zdb
%attr(755,root,root) %{_sbindir}/zed
/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-mount.service
%{systemdunitdir}/zfs-share.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
%attr(755,root,root) %{_datadir}/zfs/*.sh
%{_mandir}/man1/zhack.1*
%{_mandir}/man1/ztest.1*
+%{_mandir}/man1/zvol_wait.1*
%{_mandir}/man5/spl-module-parameters.5*
%{_mandir}/man5/vdev_id.conf.5*
%{_mandir}/man5/zfs-events.5*
%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-env-bootfs.service
%attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-generator.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
-%if %{with python}
+%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)
+%doc contrib/pyzfs/README
+%{py3_sitescriptdir}/libzfs_core
+%{py3_sitescriptdir}/pyzfs-*-py*.egg-info
+%endif
%endif
%if %{with kernel}