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: a6f2d1b87562d875d5b18f0580b8289f
44 URL: https://zfsonlinux.org/
45 BuildRequires: autoconf >= 2.50
46 BuildRequires: automake
47 BuildRequires: libtool
48 BuildRequires: rpmbuild(macros) >= 1.714
50 %{expand:%buildrequires_kernel kernel%%{_alt_kernel}-module-build >= 3:2.6.20.2}
53 # only for mmap_libaio test command
54 #BuildRequires: libaio-devel
55 BuildRequires: libblkid-devel
56 BuildRequires: libselinux-devel
57 # if xdr gets removed from glibc
58 #BuildRequires: libtirpc-devel
59 BuildRequires: libuuid-devel
60 BuildRequires: openssl-devel
61 BuildRequires: pkgconfig
62 BuildRequires: udev-devel
63 BuildRequires: zlib-devel
65 BuildRequires: python-cffi
66 BuildRequires: python-modules >= 1:2.6
67 BuildRequires: python-setuptools
70 BuildRequires: python3-cffi
71 BuildRequires: python3-modules >= 1:3.4
72 BuildRequires: python3-setuptools
74 %if %{with python2} || %{with python3}
75 BuildRequires: rpm-pythonprov
78 Requires: %{pname}-libs = %{version}-%{release}
79 Obsoletes: spl < 0.7.9-2
80 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
82 %define dracutlibdir %{_prefix}/lib/dracut
85 ZFS is an advanced file system and volume manager which was originally
86 developed for Solaris and is now maintained by the Illumos community.
88 ZFS on Linux, which is also known as ZoL, is currently feature
89 complete. It includes fully functional and stable SPA, DMU, ZVOL, and
92 %description -l pl.UTF-8
93 ZFS to zaawansowany system plików i zarządca wolumenów, oryginalnie
94 stworzony dla Solarisa, obecnie utrzymywany przez społeczność Illumos.
96 ZFS dla Linuksa, znany takża jako ZoL (ZFS on Linux), jest obecnie w
97 pełni funkcjonalny. Zawiera w pełni funkcjonalne i stabilne warstwy
101 Summary: ZFS on Linux libraries
102 Summary(pl.UTF-8): Biblioteki ZFS-a dla Linuksa
105 Requires(post,postun): /sbin/ldconfig
108 ZFS on Linux libraries.
110 %description libs -l pl.UTF-8
111 Biblioteki ZFS-a dla Linuksa.
114 Summary: Header files for ZFS libraries
115 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek ZFS-a
117 Group: Development/Libraries
118 Requires: %{pname}-libs = %{version}-%{release}
119 Requires: libselinux-devel
120 Requires: libuuid-devel
124 Header files for ZFS libraries.
126 %description devel -l pl.UTF-8
127 Pliki nagłówkowe bibliotek ZFS-a.
130 Summary: Static ZFS libraries
131 Summary(pl.UTF-8): Statyczne biblioteki ZFS-a
133 Group: Development/Libraries
134 Requires: %{pname}-devel = %{version}-%{release}
137 Static ZFS libraries.
139 %description static -l pl.UTF-8
140 Statyczne biblioteki ZFS-a.
142 %package -n dracut-zfs
143 Summary: ZFS support for Dracut
144 Summary(pl.UTF-8): Obsługa ZFS-a dla Dracuta
145 Group: Applications/System
146 Requires: %{pname} = %{version}-%{release}
149 %description -n dracut-zfs
150 ZFS support for Dracut.
152 %description -n dracut-zfs -l pl.UTF-8
153 Obsługa ZFS-a dla Dracuta.
155 %package -n python-pyzfs
156 Summary: Python 2 wrapper for libzfs_core C library
157 Summary(pl.UTF-8): Interfejs Pythona 2 do biblioteki C libzfs_core
159 Group: Libraries/Python
160 Requires: %{pname}-libs = %{version}-%{release}
162 %description -n python-pyzfs
163 Python 2 wrapper for libzfs_core C library.
165 %description -n python-pyzfs -l pl.UTF-8
166 Interfejs Pythona 2 do biblioteki C libzfs_core.
168 %package -n python3-pyzfs
169 Summary: Python 3 wrapper for libzfs_core C library
170 Summary(pl.UTF-8): Interfejs Pythona 3 do biblioteki C libzfs_core
172 Group: Libraries/Python
173 Requires: %{pname}-libs = %{version}-%{release}
175 %description -n python3-pyzfs
176 Python 3 wrapper for libzfs_core C library.
178 %description -n python3-pyzfs -l pl.UTF-8
179 Interfejs Pythona 3 do biblioteki C libzfs_core.
181 %package -n kernel-zfs-common-devel
182 Summary: ZFS Linux kernel headers
183 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa
184 Group: Development/Building
185 Obsoletes: kernel-spl-common-devel < 0.7.9-2
187 %description -n kernel-zfs-common-devel
188 ZFS Linux kernel headers common for all PLD kernel versions.
190 %description -n kernel-zfs-common-devel -l pl.UTF-8
191 ZFS - pliki nagłówkowe jądra Linuksa wspólne na wszystkich
194 %define kernel_pkg()\
195 %package -n kernel%{_alt_kernel}-zfs\
196 Summary: ZFS Linux kernel modules\
197 Summary(pl.UTF-8): ZFS - moduły jądra Linuksa\
198 Release: %{rel}@%{_kernel_ver_str}\
200 Requires(post,postun): /sbin/depmod\
201 %requires_releq_kernel\
202 Requires(postun): %releq_kernel\
204 %description -n kernel%{_alt_kernel}-zfs\
205 ZFS Linux kernel modules.\
207 %description -n kernel%{_alt_kernel}-zfs -l pl.UTF-8\
208 ZFS - moduły jądra Linuksa.\
210 %package -n kernel%{_alt_kernel}-zfs-devel\
211 Summary: ZFS Linux kernel headers\
212 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa\
213 Release: %{rel}@%{_kernel_ver_str}\
214 Group: Development/Building\
215 Requires: kernel%{_alt_kernel}-headers\
216 Requires: kernel-zfs-common-devel\
217 Obsoletes: kernel-spl-devel < 0.7.9-2\
219 %description -n kernel%{_alt_kernel}-zfs-devel\
220 ZFS Linux kernel headers configured for PLD kernel%{_alt_kernel},\
221 version %{_kernel_ver}.\
223 %description -n kernel%{_alt_kernel}-zfs-devel -l pl.UTF-8\
224 ZFS - pliki nagłówkowe jądra Linuksa skonfigurowane dla jądra PLD z\
225 pakietu kernel%{_alt_kernel} w wersji %{_kernel_ver}.\
227 %files -n kernel%{_alt_kernel}-zfs\
228 %defattr(644,root,root,755)\
229 %dir /lib/modules/%{_kernel_ver}/misc/lua\
230 /lib/modules/%{_kernel_ver}/misc/lua/zlua.ko*\
231 %dir /lib/modules/%{_kernel_ver}/misc/avl\
232 /lib/modules/%{_kernel_ver}/misc/avl/zavl.ko*\
233 %dir /lib/modules/%{_kernel_ver}/misc/icp\
234 /lib/modules/%{_kernel_ver}/misc/icp/icp.ko*\
235 %dir /lib/modules/%{_kernel_ver}/misc/nvpair\
236 /lib/modules/%{_kernel_ver}/misc/nvpair/znvpair.ko*\
237 %dir /lib/modules/%{_kernel_ver}/misc/spl\
238 /lib/modules/%{_kernel_ver}/misc/spl/spl.ko*\
239 %dir /lib/modules/%{_kernel_ver}/misc/unicode\
240 /lib/modules/%{_kernel_ver}/misc/unicode/zunicode.ko*\
241 %dir /lib/modules/%{_kernel_ver}/misc/zcommon\
242 /lib/modules/%{_kernel_ver}/misc/zcommon/zcommon.ko*\
243 %dir /lib/modules/%{_kernel_ver}/misc/zfs\
244 /lib/modules/%{_kernel_ver}/misc/zfs/zfs.ko*\
246 %files -n kernel%{_alt_kernel}-zfs-devel\
247 %defattr(644,root,root,755)\
248 /usr/src/zfs-%{version}/%{_kernel_ver}\
250 %post -n kernel%{_alt_kernel}-zfs\
251 %depmod %{_kernel_ver}\
253 %postun -n kernel%{_alt_kernel}-zfs\
254 %depmod %{_kernel_ver}\
257 %define build_kernel_pkg()\
259 --disable-silent-rules \\\
260 --with-config="kernel" \\\
261 --with-linux=%{_kernelsrcdir}\\\
262 --with-linux-obj=%{_kernelsrcdir}\
265 %{__make} %{?with_verbose:V=1}\
267 %{__make} install DESTDIR=$p/installed INSTALL_MOD_DIR=misc\
270 %{?with_kernel:%{expand:%create_kernel_packages}}
273 %setup -q -n %{pname}-%{version}
277 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python2(\s|$),#!%{__python}\1,' \
278 cmd/arc_summary/arc_summary2
280 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python3(\s|$),#!%{__python3}\1,' \
281 cmd/arc_summary/arc_summary3
283 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+@PYTHON_SHEBANG@(\s|$),#!%{__python3}\1,' \
284 cmd/arcstat/arcstat.in \
285 cmd/dbufstat/dbufstat.in
287 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+bash(\s|$),#!/bin/bash\1,' \
288 contrib/dracut/02zfsexpandknowledge/module-setup.sh.in \
289 contrib/dracut/90zfs/module-setup.sh.in \
295 %{__aclocal} -I config
299 %{?with_kernel:%{expand:%build_kernel_packages}}
301 %if %{with userspace}
303 --disable-silent-rules \
305 --with-config="user" \
306 --with-linux=%{_kernelsrcdir} \
307 --with-systemdunitdir=%{systemdunitdir} \
308 --with-systemdpresetdir=/etc/systemd/system-preset \
309 --with-systemdmodulesloaddir=/etc/modules-load.d \
310 --with-systemdgeneratordir=/lib/systemd/system-generators \
311 --with-udevdir=/lib/udev
330 rm -rf $RPM_BUILD_ROOT
333 install -d $RPM_BUILD_ROOT
334 cp -a installed/* $RPM_BUILD_ROOT
335 # Drop unneeded spl compat links
336 %{__rm} -r $RPM_BUILD_ROOT/usr/src/spl-%{version}
339 %if %{with userspace}
341 DESTDIR=$RPM_BUILD_ROOT \
342 DEFAULT_INIT_DIR=/etc/rc.d/init.d
345 %{__rm} -rf $RPM_BUILD_ROOT%{py_sitescriptdir}
349 %py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
350 %py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
354 %{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/libzfs_core/test
358 %{__rm} -r $RPM_BUILD_ROOT/usr/local/%{_lib}/python3*
362 %{__rm} -r $RPM_BUILD_ROOT%{py3_sitescriptdir}/libzfs_core/test
365 # Debian specific stuff
366 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/initramfs-tools
368 # Package these? These are integration tests of the implementation.
369 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/zfs/{zfs-tests,test-runner,runfiles}
370 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{raidz_test,test-runner}.1*
371 %{__rm} $RPM_BUILD_ROOT%{_bindir}/raidz_test
375 rm -rf $RPM_BUILD_ROOT
377 %post libs -p /sbin/ldconfig
378 %postun libs -p /sbin/ldconfig
380 %if %{with userspace}
382 %defattr(644,root,root,755)
383 %doc AUTHORS COPYRIGHT LICENSE NEWS NOTICE README.md
384 %attr(755,root,root) /sbin/mount.zfs
385 %attr(755,root,root) %{_bindir}/arc_summary
386 %attr(755,root,root) %{_bindir}/arcstat
387 %attr(755,root,root) %{_bindir}/dbufstat
388 %attr(755,root,root) %{_bindir}/zgenhostid
389 %attr(755,root,root) %{_bindir}/zvol_wait
390 %attr(755,root,root) %{_sbindir}/fsck.zfs
391 %attr(755,root,root) %{_sbindir}/zdb
392 %attr(755,root,root) %{_sbindir}/zed
393 %attr(755,root,root) %{_sbindir}/zfs
394 %attr(755,root,root) %{_sbindir}/zhack
395 %attr(755,root,root) %{_sbindir}/zinject
396 %attr(755,root,root) %{_sbindir}/zpool
397 %attr(755,root,root) %{_sbindir}/zstreamdump
398 %attr(755,root,root) %{_sbindir}/ztest
399 %dir %{_sysconfdir}/zfs
400 # package *.example as %doc? (they cannot act as default configuration)
401 %{_sysconfdir}/zfs/vdev_id.conf.*.example
402 %dir %{_sysconfdir}/zfs/zed.d
403 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/*.sh
404 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/zed.rc
405 %dir %{_sysconfdir}/zfs/zpool.d
406 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zpool.d/*
407 %attr(754,root,root) /etc/rc.d/init.d/zfs-import
408 %attr(754,root,root) /etc/rc.d/init.d/zfs-mount
409 %attr(754,root,root) /etc/rc.d/init.d/zfs-share
410 %attr(754,root,root) /etc/rc.d/init.d/zfs-zed
411 %config(noreplace) %verify(not md5 mtime size) /etc/default/zfs
412 /etc/zfs/zfs-functions
413 %config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/zfs.conf
414 /etc/systemd/system-preset/50-zfs.preset
415 /lib/systemd/system-generators/zfs-mount-generator
416 %{systemdunitdir}/zfs.target
417 %{systemdunitdir}/zfs-import.service
418 %{systemdunitdir}/zfs-import.target
419 %{systemdunitdir}/zfs-import-cache.service
420 %{systemdunitdir}/zfs-import-scan.service
421 %{systemdunitdir}/zfs-mount.service
422 %{systemdunitdir}/zfs-share.service
423 %{systemdunitdir}/zfs-volume-wait.service
424 %{systemdunitdir}/zfs-volumes.target
425 %{systemdunitdir}/zfs-zed.service
426 %attr(755,root,root) /lib/udev/vdev_id
427 %attr(755,root,root) /lib/udev/zvol_id
428 /lib/udev/rules.d/60-zvol.rules
429 /lib/udev/rules.d/69-vdev.rules
430 /lib/udev/rules.d/90-zfs.rules
431 %dir %{_libexecdir}/zfs
432 %dir %{_libexecdir}/zfs/zed.d
433 %attr(755,root,root) %{_libexecdir}/zfs/zed.d/*.sh
434 %dir %{_libexecdir}/zfs/zpool.d
435 %attr(755,root,root) %{_libexecdir}/zfs/zpool.d/*
437 %attr(755,root,root) %{_datadir}/zfs/*.sh
438 %{_mandir}/man1/zhack.1*
439 %{_mandir}/man1/ztest.1*
440 %{_mandir}/man1/zvol_wait.1*
441 %{_mandir}/man5/spl-module-parameters.5*
442 %{_mandir}/man5/vdev_id.conf.5*
443 %{_mandir}/man5/zfs-events.5*
444 %{_mandir}/man5/zfs-module-parameters.5*
445 %{_mandir}/man5/zpool-features.5*
446 %{_mandir}/man8/fsck.zfs.8*
447 %{_mandir}/man8/mount.zfs.8*
448 %{_mandir}/man8/vdev_id.8*
449 %{_mandir}/man8/zdb.8*
450 %{_mandir}/man8/zed.8*
451 %{_mandir}/man8/zfs.8*
452 %{_mandir}/man8/zfs-mount-generator.8*
453 %{_mandir}/man8/zfs-program.8*
454 %{_mandir}/man8/zgenhostid.8*
455 %{_mandir}/man8/zinject.8*
456 %{_mandir}/man8/zpool.8*
457 %{_mandir}/man8/zstreamdump.8*
460 %defattr(644,root,root,755)
461 %attr(755,root,root) %{_libdir}/libnvpair.so.*.*.*
462 %attr(755,root,root) %ghost %{_libdir}/libnvpair.so.3
463 %attr(755,root,root) %{_libdir}/libuutil.so.*.*.*
464 %attr(755,root,root) %ghost %{_libdir}/libuutil.so.3
465 %attr(755,root,root) %{_libdir}/libzfs.so.*.*.*
466 %attr(755,root,root) %ghost %{_libdir}/libzfs.so.4
467 %attr(755,root,root) %{_libdir}/libzfs_core.so.*.*.*
468 %attr(755,root,root) %ghost %{_libdir}/libzfs_core.so.3
469 %attr(755,root,root) %{_libdir}/libzfsbootenv.so.*.*.*
470 %attr(755,root,root) %ghost %{_libdir}/libzfsbootenv.so.1
471 %attr(755,root,root) %{_libdir}/libzpool.so.*.*.*
472 %attr(755,root,root) %ghost %{_libdir}/libzpool.so.4
475 %defattr(644,root,root,755)
476 %attr(755,root,root) %{_libdir}/libnvpair.so
477 %attr(755,root,root) %{_libdir}/libuutil.so
478 %attr(755,root,root) %{_libdir}/libzfs.so
479 %attr(755,root,root) %{_libdir}/libzfs_core.so
480 %attr(755,root,root) %{_libdir}/libzfsbootenv.so
481 %attr(755,root,root) %{_libdir}/libzpool.so
482 %{_libdir}/libnvpair.la
483 %{_libdir}/libuutil.la
485 %{_libdir}/libzfs_core.la
486 %{_libdir}/libzfsbootenv.la
487 %{_libdir}/libzpool.la
488 %{_includedir}/libspl
489 %{_includedir}/libzfs
490 %{_pkgconfigdir}/libzfs.pc
491 %{_pkgconfigdir}/libzfs_core.pc
494 %defattr(644,root,root,755)
495 %{_libdir}/libnvpair.a
496 %{_libdir}/libuutil.a
498 %{_libdir}/libzfs_core.a
499 %{_libdir}/libzpool.a
502 %defattr(644,root,root,755)
503 %doc contrib/dracut/README.dracut.markdown
504 %dir %{dracutlibdir}/modules.d/02zfsexpandknowledge
505 %attr(755,root,root) %{dracutlibdir}/modules.d/02zfsexpandknowledge/module-setup.sh
506 %dir %{dracutlibdir}/modules.d/90zfs
507 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/export-zfs.sh
508 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/module-setup.sh
509 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/mount-zfs.sh
510 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/parse-zfs.sh
511 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-env-bootfs.service
512 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-generator.sh
513 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-lib.sh
514 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-load-key.sh
515 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-needshutdown.sh
518 %files -n python-pyzfs
519 %defattr(644,root,root,755)
520 %doc contrib/pyzfs/README
521 %{py_sitescriptdir}/libzfs_core
522 %{py_sitescriptdir}/pyzfs-*-py*.egg-info
526 %files -n python3-pyzfs
527 %defattr(644,root,root,755)
528 %doc contrib/pyzfs/README
529 %{py3_sitescriptdir}/libzfs_core
530 %{py3_sitescriptdir}/pyzfs-*-py*.egg-info
535 %files -n kernel-zfs-common-devel
536 %defattr(644,root,root,755)
537 %dir /usr/src/zfs-%{version}
538 /usr/src/zfs-%{version}/include
539 /usr/src/zfs-%{version}/zfs.release
540 /usr/src/zfs-%{version}/zfs_config.h