3 # - unpackaged initramfs-tools support:
4 # /usr/share/initramfs-tools/conf-hooks.d/zfs
5 # /usr/share/initramfs-tools/hooks/zfs
6 # /usr/share/initramfs-tools/scripts/zfs
9 %bcond_without kernel # don't build kernel modules
10 %bcond_without userspace # don't build userspace programs
11 %bcond_without python2 # CPython 2.x module
12 %bcond_without python3 # CPython 3.x module
13 %bcond_with verbose # verbose build (V=1)
15 # The goal here is to have main, userspace, package built once with
16 # simple release number, and only rebuild kernel packages with kernel
17 # version as part of release number, without the need to bump release
18 # with every kernel change.
19 %if 0%{?_pld_builder:1} && %{with kernel} && %{with userspace}
20 %{error:kernel and userspace cannot be built at the same time on PLD builders}
24 %if %{without userspace}
25 # nothing to be placed to debuginfo package
26 %define _enable_debug_packages 0
29 %define _duplicate_files_terminate_build 0
33 Summary: Native Linux port of the ZFS filesystem
34 Summary(pl.UTF-8): Natywny linuksowy port systemu plików ZFS
35 Name: %{pname}%{?_pld_builder:%{?with_kernel:-kernel}}%{_alt_kernel}
37 Release: %{rel}%{?_pld_builder:%{?with_kernel:@%{_kernel_ver_str}}}
39 Group: Applications/System
40 Source0: https://github.com/openzfs/zfs/releases/download/zfs-%{version}/%{pname}-%{version}.tar.gz
41 # Source0-md5: f0c203c59c4fcd44187a64758707469f
44 Patch2: %{pname}-sh.patch
46 Patch4: kernel-5.8.patch
47 URL: https://zfsonlinux.org/
48 BuildRequires: autoconf >= 2.50
49 BuildRequires: automake
50 BuildRequires: libtool
51 BuildRequires: rpmbuild(macros) >= 1.714
53 %{expand:%buildrequires_kernel kernel%%{_alt_kernel}-module-build >= 3:2.6.20.2}
56 # only for mmap_libaio test command
57 #BuildRequires: libaio-devel
58 BuildRequires: libblkid-devel
59 BuildRequires: libselinux-devel
60 # if xdr gets removed from glibc
61 #BuildRequires: libtirpc-devel
62 BuildRequires: libuuid-devel
63 BuildRequires: openssl-devel
64 BuildRequires: pkgconfig
65 BuildRequires: udev-devel
66 BuildRequires: zlib-devel
68 BuildRequires: python-cffi
69 BuildRequires: python-modules >= 1:2.6
70 BuildRequires: python-setuptools
73 BuildRequires: python3-cffi
74 BuildRequires: python3-modules >= 1:3.4
75 BuildRequires: python3-setuptools
77 %if %{with python2} || %{with python3}
78 BuildRequires: rpm-pythonprov
81 Requires: %{pname}-libs = %{version}-%{release}
82 Obsoletes: spl < 0.7.9-2
83 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
85 %define dracutlibdir %{_prefix}/lib/dracut
88 ZFS is an advanced file system and volume manager which was originally
89 developed for Solaris and is now maintained by the Illumos community.
91 ZFS on Linux, which is also known as ZoL, is currently feature
92 complete. It includes fully functional and stable SPA, DMU, ZVOL, and
95 %description -l pl.UTF-8
96 ZFS to zaawansowany system plików i zarządca wolumenów, oryginalnie
97 stworzony dla Solarisa, obecnie utrzymywany przez społeczność Illumos.
99 ZFS dla Linuksa, znany takża jako ZoL (ZFS on Linux), jest obecnie w
100 pełni funkcjonalny. Zawiera w pełni funkcjonalne i stabilne warstwy
101 SPA, DMU, ZVOL i ZPL.
104 Summary: ZFS on Linux libraries
105 Summary(pl.UTF-8): Biblioteki ZFS-a dla Linuksa
108 Requires(post,postun): /sbin/ldconfig
111 ZFS on Linux libraries.
113 %description libs -l pl.UTF-8
114 Biblioteki ZFS-a dla Linuksa.
117 Summary: Header files for ZFS libraries
118 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek ZFS-a
120 Group: Development/Libraries
121 Requires: %{pname}-libs = %{version}-%{release}
122 Requires: libselinux-devel
123 Requires: libuuid-devel
127 Header files for ZFS libraries.
129 %description devel -l pl.UTF-8
130 Pliki nagłówkowe bibliotek ZFS-a.
133 Summary: Static ZFS libraries
134 Summary(pl.UTF-8): Statyczne biblioteki ZFS-a
136 Group: Development/Libraries
137 Requires: %{pname}-devel = %{version}-%{release}
140 Static ZFS libraries.
142 %description static -l pl.UTF-8
143 Statyczne biblioteki ZFS-a.
145 %package -n dracut-zfs
146 Summary: ZFS support for Dracut
147 Summary(pl.UTF-8): Obsługa ZFS-a dla Dracuta
148 Group: Applications/System
149 Requires: %{pname} = %{version}-%{release}
152 %description -n dracut-zfs
153 ZFS support for Dracut.
155 %description -n dracut-zfs -l pl.UTF-8
156 Obsługa ZFS-a dla Dracuta.
158 %package -n python-pyzfs
159 Summary: Python 2 wrapper for libzfs_core C library
160 Summary(pl.UTF-8): Interfejs Pythona 2 do biblioteki C libzfs_core
162 Group: Libraries/Python
163 Requires: %{pname}-libs = %{version}-%{release}
165 %description -n python-pyzfs
166 Python 2 wrapper for libzfs_core C library.
168 %description -n python-pyzfs -l pl.UTF-8
169 Interfejs Pythona 2 do biblioteki C libzfs_core.
171 %package -n python3-pyzfs
172 Summary: Python 3 wrapper for libzfs_core C library
173 Summary(pl.UTF-8): Interfejs Pythona 3 do biblioteki C libzfs_core
175 Group: Libraries/Python
176 Requires: %{pname}-libs = %{version}-%{release}
178 %description -n python3-pyzfs
179 Python 3 wrapper for libzfs_core C library.
181 %description -n python3-pyzfs -l pl.UTF-8
182 Interfejs Pythona 3 do biblioteki C libzfs_core.
184 %package -n kernel-zfs-common-devel
185 Summary: ZFS Linux kernel headers
186 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa
187 Group: Development/Building
188 Obsoletes: kernel-spl-common-devel < 0.7.9-2
190 %description -n kernel-zfs-common-devel
191 ZFS Linux kernel headers common for all PLD kernel versions.
193 %description -n kernel-zfs-common-devel -l pl.UTF-8
194 ZFS - pliki nagłówkowe jądra Linuksa wspólne na wszystkich
197 %define kernel_pkg()\
198 %package -n kernel%{_alt_kernel}-zfs\
199 Summary: ZFS Linux kernel modules\
200 Summary(pl.UTF-8): ZFS - moduły jądra Linuksa\
201 Release: %{rel}@%{_kernel_ver_str}\
203 Requires(post,postun): /sbin/depmod\
204 %requires_releq_kernel\
205 Requires(postun): %releq_kernel\
207 %description -n kernel%{_alt_kernel}-zfs\
208 ZFS Linux kernel modules.\
210 %description -n kernel%{_alt_kernel}-zfs -l pl.UTF-8\
211 ZFS - moduły jądra Linuksa.\
213 %package -n kernel%{_alt_kernel}-zfs-devel\
214 Summary: ZFS Linux kernel headers\
215 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa\
216 Release: %{rel}@%{_kernel_ver_str}\
217 Group: Development/Building\
218 Requires: kernel%{_alt_kernel}-headers\
219 Requires: kernel-zfs-common-devel\
220 Obsoletes: kernel-spl-devel < 0.7.9-2\
222 %description -n kernel%{_alt_kernel}-zfs-devel\
223 ZFS Linux kernel headers configured for PLD kernel%{_alt_kernel},\
224 version %{_kernel_ver}.\
226 %description -n kernel%{_alt_kernel}-zfs-devel -l pl.UTF-8\
227 ZFS - pliki nagłówkowe jądra Linuksa skonfigurowane dla jądra PLD z\
228 pakietu kernel%{_alt_kernel} w wersji %{_kernel_ver}.\
230 %files -n kernel%{_alt_kernel}-zfs\
231 %defattr(644,root,root,755)\
232 %dir /lib/modules/%{_kernel_ver}/misc/lua\
233 /lib/modules/%{_kernel_ver}/misc/lua/zlua.ko*\
234 %dir /lib/modules/%{_kernel_ver}/misc/avl\
235 /lib/modules/%{_kernel_ver}/misc/avl/zavl.ko*\
236 %dir /lib/modules/%{_kernel_ver}/misc/icp\
237 /lib/modules/%{_kernel_ver}/misc/icp/icp.ko*\
238 %dir /lib/modules/%{_kernel_ver}/misc/nvpair\
239 /lib/modules/%{_kernel_ver}/misc/nvpair/znvpair.ko*\
240 %dir /lib/modules/%{_kernel_ver}/misc/spl\
241 /lib/modules/%{_kernel_ver}/misc/spl/spl.ko*\
242 %dir /lib/modules/%{_kernel_ver}/misc/unicode\
243 /lib/modules/%{_kernel_ver}/misc/unicode/zunicode.ko*\
244 %dir /lib/modules/%{_kernel_ver}/misc/zcommon\
245 /lib/modules/%{_kernel_ver}/misc/zcommon/zcommon.ko*\
246 %dir /lib/modules/%{_kernel_ver}/misc/zfs\
247 /lib/modules/%{_kernel_ver}/misc/zfs/zfs.ko*\
249 %files -n kernel%{_alt_kernel}-zfs-devel\
250 %defattr(644,root,root,755)\
251 /usr/src/zfs-%{version}/%{_kernel_ver}\
253 %post -n kernel%{_alt_kernel}-zfs\
254 %depmod %{_kernel_ver}\
256 %postun -n kernel%{_alt_kernel}-zfs\
257 %depmod %{_kernel_ver}\
260 %define build_kernel_pkg()\
262 --disable-silent-rules \\\
263 --with-config="kernel" \\\
264 --with-linux=%{_kernelsrcdir}\\\
265 --with-linux-obj=%{_kernelsrcdir}\
268 %{__make} %{?with_verbose:V=1}\
270 %{__make} install DESTDIR=$p/installed INSTALL_MOD_DIR=misc\
273 %{?with_kernel:%{expand:%create_kernel_packages}}
276 %setup -q -n %{pname}-%{version}
283 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python2(\s|$),#!%{__python}\1,' \
284 cmd/arc_summary/arc_summary2
286 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python3(\s|$),#!%{__python3}\1,' \
287 cmd/arc_summary/arc_summary3 \
288 cmd/arcstat/arcstat \
289 cmd/dbufstat/dbufstat
293 %{__aclocal} -I config
297 %{?with_kernel:%{expand:%build_kernel_packages}}
299 %if %{with userspace}
301 --disable-silent-rules \
303 --with-config="user" \
304 --with-linux=%{_kernelsrcdir} \
305 --with-systemdunitdir=%{systemdunitdir} \
306 --with-systemdpresetdir=/etc/systemd/system-preset \
307 --with-systemdmodulesloaddir=/etc/modules-load.d \
308 --with-systemdgeneratordir=/lib/systemd/system-generators \
309 --with-udevdir=/lib/udev
328 rm -rf $RPM_BUILD_ROOT
331 install -d $RPM_BUILD_ROOT
332 cp -a installed/* $RPM_BUILD_ROOT
333 # Drop unneeded spl compat links
334 %{__rm} -r $RPM_BUILD_ROOT/usr/src/spl-%{version}
337 %if %{with userspace}
339 DESTDIR=$RPM_BUILD_ROOT \
340 DEFAULT_INIT_DIR=/etc/rc.d/init.d
343 %{__rm} -rf $RPM_BUILD_ROOT%{py_sitescriptdir}
347 %py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
348 %py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
352 %{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/libzfs_core/test
356 %{__rm} -rf $RPM_BUILD_ROOT{%{py3_sitescriptdir},/usr/local/share/python3*}
360 %{__rm} -r $RPM_BUILD_ROOT%{py3_sitescriptdir}/libzfs_core/test
363 install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
364 %{__mv} $RPM_BUILD_ROOT%{_npkgconfigdir}/* $RPM_BUILD_ROOT%{_pkgconfigdir}
366 # Debian specific stuff
367 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/initramfs-tools
369 # Package these? These are integration tests of the implementation.
370 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/zfs/{zfs-tests,test-runner,runfiles}
371 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{raidz_test,test-runner}.1*
372 %{__rm} $RPM_BUILD_ROOT%{_bindir}/raidz_test
376 rm -rf $RPM_BUILD_ROOT
378 %post libs -p /sbin/ldconfig
379 %postun libs -p /sbin/ldconfig
381 %if %{with userspace}
383 %defattr(644,root,root,755)
384 %doc AUTHORS COPYRIGHT LICENSE NEWS NOTICE README.md
385 %attr(755,root,root) /sbin/mount.zfs
386 %attr(755,root,root) %{_bindir}/arc_summary
387 %attr(755,root,root) %{_bindir}/arcstat
388 %attr(755,root,root) %{_bindir}/dbufstat
389 %attr(755,root,root) %{_bindir}/zgenhostid
390 %attr(755,root,root) %{_bindir}/zvol_wait
391 %attr(755,root,root) %{_sbindir}/fsck.zfs
392 %attr(755,root,root) %{_sbindir}/zdb
393 %attr(755,root,root) %{_sbindir}/zed
394 %attr(755,root,root) %{_sbindir}/zfs
395 %attr(755,root,root) %{_sbindir}/zhack
396 %attr(755,root,root) %{_sbindir}/zinject
397 %attr(755,root,root) %{_sbindir}/zpool
398 %attr(755,root,root) %{_sbindir}/zstreamdump
399 %attr(755,root,root) %{_sbindir}/ztest
400 %dir %{_sysconfdir}/zfs
401 # package *.example as %doc? (they cannot act as default configuration)
402 %{_sysconfdir}/zfs/vdev_id.conf.*.example
403 %dir %{_sysconfdir}/zfs/zed.d
404 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/*.sh
405 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/zed.rc
406 %dir %{_sysconfdir}/zfs/zpool.d
407 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zpool.d/*
408 %attr(754,root,root) /etc/rc.d/init.d/zfs-import
409 %attr(754,root,root) /etc/rc.d/init.d/zfs-mount
410 %attr(754,root,root) /etc/rc.d/init.d/zfs-share
411 %attr(754,root,root) /etc/rc.d/init.d/zfs-zed
412 %config(noreplace) %verify(not md5 mtime size) /etc/default/zfs
413 /etc/zfs/zfs-functions
414 %config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/zfs.conf
415 /etc/systemd/system-preset/50-zfs.preset
416 /lib/systemd/system-generators/zfs-mount-generator
417 %{systemdunitdir}/zfs.target
418 %{systemdunitdir}/zfs-import.service
419 %{systemdunitdir}/zfs-import.target
420 %{systemdunitdir}/zfs-import-cache.service
421 %{systemdunitdir}/zfs-import-scan.service
422 %{systemdunitdir}/zfs-mount.service
423 %{systemdunitdir}/zfs-share.service
424 %{systemdunitdir}/zfs-volume-wait.service
425 %{systemdunitdir}/zfs-volumes.target
426 %{systemdunitdir}/zfs-zed.service
427 %attr(755,root,root) /lib/udev/vdev_id
428 %attr(755,root,root) /lib/udev/zvol_id
429 /lib/udev/rules.d/60-zvol.rules
430 /lib/udev/rules.d/69-vdev.rules
431 /lib/udev/rules.d/90-zfs.rules
432 %dir %{_libexecdir}/zfs
433 %dir %{_libexecdir}/zfs/zed.d
434 %attr(755,root,root) %{_libexecdir}/zfs/zed.d/*.sh
435 %dir %{_libexecdir}/zfs/zpool.d
436 %attr(755,root,root) %{_libexecdir}/zfs/zpool.d/*
438 %attr(755,root,root) %{_datadir}/zfs/*.sh
439 %{_mandir}/man1/zhack.1*
440 %{_mandir}/man1/ztest.1*
441 %{_mandir}/man1/zvol_wait.1*
442 %{_mandir}/man5/spl-module-parameters.5*
443 %{_mandir}/man5/vdev_id.conf.5*
444 %{_mandir}/man5/zfs-events.5*
445 %{_mandir}/man5/zfs-module-parameters.5*
446 %{_mandir}/man5/zpool-features.5*
447 %{_mandir}/man8/fsck.zfs.8*
448 %{_mandir}/man8/mount.zfs.8*
449 %{_mandir}/man8/vdev_id.8*
450 %{_mandir}/man8/zdb.8*
451 %{_mandir}/man8/zed.8*
452 %{_mandir}/man8/zfs.8*
453 %{_mandir}/man8/zfs-mount-generator.8*
454 %{_mandir}/man8/zfs-program.8*
455 %{_mandir}/man8/zgenhostid.8*
456 %{_mandir}/man8/zinject.8*
457 %{_mandir}/man8/zpool.8*
458 %{_mandir}/man8/zstreamdump.8*
461 %defattr(644,root,root,755)
462 %attr(755,root,root) %{_libdir}/libnvpair.so.*.*.*
463 %attr(755,root,root) %ghost %{_libdir}/libnvpair.so.1
464 %attr(755,root,root) %{_libdir}/libuutil.so.*.*.*
465 %attr(755,root,root) %ghost %{_libdir}/libuutil.so.1
466 %attr(755,root,root) %{_libdir}/libzfs.so.*.*.*
467 %attr(755,root,root) %ghost %{_libdir}/libzfs.so.2
468 %attr(755,root,root) %{_libdir}/libzfs_core.so.*.*.*
469 %attr(755,root,root) %ghost %{_libdir}/libzfs_core.so.1
470 %attr(755,root,root) %{_libdir}/libzpool.so.*.*.*
471 %attr(755,root,root) %ghost %{_libdir}/libzpool.so.2
474 %defattr(644,root,root,755)
475 %attr(755,root,root) %{_libdir}/libnvpair.so
476 %attr(755,root,root) %{_libdir}/libuutil.so
477 %attr(755,root,root) %{_libdir}/libzfs.so
478 %attr(755,root,root) %{_libdir}/libzfs_core.so
479 %attr(755,root,root) %{_libdir}/libzpool.so
480 %{_libdir}/libnvpair.la
481 %{_libdir}/libuutil.la
483 %{_libdir}/libzfs_core.la
484 %{_libdir}/libzpool.la
485 %{_includedir}/libspl
486 %{_includedir}/libzfs
487 %{_pkgconfigdir}/libzfs.pc
488 %{_pkgconfigdir}/libzfs_core.pc
491 %defattr(644,root,root,755)
492 %{_libdir}/libnvpair.a
493 %{_libdir}/libuutil.a
495 %{_libdir}/libzfs_core.a
496 %{_libdir}/libzpool.a
499 %defattr(644,root,root,755)
500 %doc contrib/dracut/README.dracut.markdown
501 %dir %{dracutlibdir}/modules.d/02zfsexpandknowledge
502 %attr(755,root,root) %{dracutlibdir}/modules.d/02zfsexpandknowledge/module-setup.sh
503 %dir %{dracutlibdir}/modules.d/90zfs
504 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/export-zfs.sh
505 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/module-setup.sh
506 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/mount-zfs.sh
507 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/parse-zfs.sh
508 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-env-bootfs.service
509 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-generator.sh
510 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-lib.sh
511 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-load-key.sh
512 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-needshutdown.sh
515 %files -n python-pyzfs
516 %defattr(644,root,root,755)
517 %doc contrib/pyzfs/README
518 %{py_sitescriptdir}/libzfs_core
519 %{py_sitescriptdir}/pyzfs-*-py*.egg-info
523 %files -n python3-pyzfs
524 %defattr(644,root,root,755)
525 %doc contrib/pyzfs/README
526 %{py3_sitescriptdir}/libzfs_core
527 %{py3_sitescriptdir}/pyzfs-*-py*.egg-info
532 %files -n kernel-zfs-common-devel
533 %defattr(644,root,root,755)
534 %dir /usr/src/zfs-%{version}
535 /usr/src/zfs-%{version}/include
536 /usr/src/zfs-%{version}/zfs.release
537 /usr/src/zfs-%{version}/zfs_config.h