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/zfsonlinux/zfs/releases/download/zfs-%{version}/%{pname}-%{version}.tar.gz
41 Source0: https://github.com/zfsonlinux/zfs/archive/zfs-%{version}/%{pname}-%{version}.tar.gz
42 # Source0-md5: e6083c858158a3000bf473e62835ac88
45 Patch2: %{pname}-sh.patch
47 Patch4: kernel-5.6.patch
48 URL: http://zfsonlinux.org/
49 BuildRequires: autoconf >= 2.50
50 BuildRequires: automake
51 BuildRequires: libtool
52 BuildRequires: rpmbuild(macros) >= 1.714
54 %{expand:%buildrequires_kernel kernel%%{_alt_kernel}-module-build >= 3:2.6.20.2}
57 # only for mmap_libaio test command
58 #BuildRequires: libaio-devel
59 BuildRequires: libblkid-devel
60 BuildRequires: libselinux-devel
61 # if xdr gets removed from glibc
62 #BuildRequires: libtirpc-devel
63 BuildRequires: libuuid-devel
64 BuildRequires: openssl-devel
65 BuildRequires: pkgconfig
66 BuildRequires: udev-devel
67 BuildRequires: zlib-devel
69 BuildRequires: python-cffi
70 BuildRequires: python-modules >= 1:2.6
71 BuildRequires: python-setuptools
74 BuildRequires: python3-cffi
75 BuildRequires: python3-modules >= 1:3.4
76 BuildRequires: python3-setuptools
78 %if %{with python2} || %{with python3}
79 BuildRequires: rpm-pythonprov
82 Requires: %{pname}-libs = %{version}-%{release}
83 Obsoletes: spl < 0.7.9-2
84 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
86 %define dracutlibdir %{_prefix}/lib/dracut
89 ZFS is an advanced file system and volume manager which was originally
90 developed for Solaris and is now maintained by the Illumos community.
92 ZFS on Linux, which is also known as ZoL, is currently feature
93 complete. It includes fully functional and stable SPA, DMU, ZVOL, and
96 %description -l pl.UTF-8
97 ZFS to zaawansowany system plików i zarządca wolumenów, oryginalnie
98 stworzony dla Solarisa, obecnie utrzymywany przez społeczność Illumos.
100 ZFS dla Linuksa, znany takża jako ZoL (ZFS on Linux), jest obecnie w
101 pełni funkcjonalny. Zawiera w pełni funkcjonalne i stabilne warstwy
102 SPA, DMU, ZVOL i ZPL.
105 Summary: ZFS on Linux libraries
106 Summary(pl.UTF-8): Biblioteki ZFS-a dla Linuksa
109 Requires(post,postun): /sbin/ldconfig
112 ZFS on Linux libraries.
114 %description libs -l pl.UTF-8
115 Biblioteki ZFS-a dla Linuksa.
118 Summary: Header files for ZFS libraries
119 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek ZFS-a
121 Group: Development/Libraries
122 Requires: %{pname}-libs = %{version}-%{release}
123 Requires: libselinux-devel
124 Requires: libuuid-devel
128 Header files for ZFS libraries.
130 %description devel -l pl.UTF-8
131 Pliki nagłówkowe bibliotek ZFS-a.
134 Summary: Static ZFS libraries
135 Summary(pl.UTF-8): Statyczne biblioteki ZFS-a
137 Group: Development/Libraries
138 Requires: %{pname}-devel = %{version}-%{release}
141 Static ZFS libraries.
143 %description static -l pl.UTF-8
144 Statyczne biblioteki ZFS-a.
146 %package -n dracut-zfs
147 Summary: ZFS support for Dracut
148 Summary(pl.UTF-8): Obsługa ZFS-a dla Dracuta
149 Group: Applications/System
150 Requires: %{pname} = %{version}-%{release}
153 %description -n dracut-zfs
154 ZFS support for Dracut.
156 %description -n dracut-zfs -l pl.UTF-8
157 Obsługa ZFS-a dla Dracuta.
159 %package -n python-pyzfs
160 Summary: Python 2 wrapper for libzfs_core C library
161 Summary(pl.UTF-8): Interfejs Pythona 2 do biblioteki C libzfs_core
163 Group: Libraries/Python
164 Requires: %{pname}-libs = %{version}-%{release}
166 %description -n python-pyzfs
167 Python 2 wrapper for libzfs_core C library.
169 %description -n python-pyzfs -l pl.UTF-8
170 Interfejs Pythona 2 do biblioteki C libzfs_core.
172 %package -n python3-pyzfs
173 Summary: Python 3 wrapper for libzfs_core C library
174 Summary(pl.UTF-8): Interfejs Pythona 3 do biblioteki C libzfs_core
176 Group: Libraries/Python
177 Requires: %{pname}-libs = %{version}-%{release}
179 %description -n python3-pyzfs
180 Python 3 wrapper for libzfs_core C library.
182 %description -n python3-pyzfs -l pl.UTF-8
183 Interfejs Pythona 3 do biblioteki C libzfs_core.
185 %package -n kernel-zfs-common-devel
186 Summary: ZFS Linux kernel headers
187 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa
188 Group: Development/Building
189 Obsoletes: kernel-spl-common-devel < 0.7.9-2
191 %description -n kernel-zfs-common-devel
192 ZFS Linux kernel headers common for all PLD kernel versions.
194 %description -n kernel-zfs-common-devel -l pl.UTF-8
195 ZFS - pliki nagłówkowe jądra Linuksa wspólne na wszystkich
198 %define kernel_pkg()\
199 %package -n kernel%{_alt_kernel}-zfs\
200 Summary: ZFS Linux kernel modules\
201 Summary(pl.UTF-8): ZFS - moduły jądra Linuksa\
202 Release: %{rel}@%{_kernel_ver_str}\
204 Requires(post,postun): /sbin/depmod\
205 %requires_releq_kernel\
206 Requires(postun): %releq_kernel\
208 %description -n kernel%{_alt_kernel}-zfs\
209 ZFS Linux kernel modules.\
211 %description -n kernel%{_alt_kernel}-zfs -l pl.UTF-8\
212 ZFS - moduły jądra Linuksa.\
214 %package -n kernel%{_alt_kernel}-zfs-devel\
215 Summary: ZFS Linux kernel headers\
216 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa\
217 Release: %{rel}@%{_kernel_ver_str}\
218 Group: Development/Building\
219 Requires: kernel%{_alt_kernel}-headers\
220 Requires: kernel-zfs-common-devel\
221 Obsoletes: kernel-spl-devel < 0.7.9-2\
223 %description -n kernel%{_alt_kernel}-zfs-devel\
224 ZFS Linux kernel headers configured for PLD kernel%{_alt_kernel},\
225 version %{_kernel_ver}.\
227 %description -n kernel%{_alt_kernel}-zfs-devel -l pl.UTF-8\
228 ZFS - pliki nagłówkowe jądra Linuksa skonfigurowane dla jądra PLD z\
229 pakietu kernel%{_alt_kernel} w wersji %{_kernel_ver}.\
231 %files -n kernel%{_alt_kernel}-zfs\
232 %defattr(644,root,root,755)\
233 %dir /lib/modules/%{_kernel_ver}/misc/lua\
234 /lib/modules/%{_kernel_ver}/misc/lua/zlua.ko*\
235 %dir /lib/modules/%{_kernel_ver}/misc/avl\
236 /lib/modules/%{_kernel_ver}/misc/avl/zavl.ko*\
237 %dir /lib/modules/%{_kernel_ver}/misc/icp\
238 /lib/modules/%{_kernel_ver}/misc/icp/icp.ko*\
239 %dir /lib/modules/%{_kernel_ver}/misc/nvpair\
240 /lib/modules/%{_kernel_ver}/misc/nvpair/znvpair.ko*\
241 %dir /lib/modules/%{_kernel_ver}/misc/spl\
242 /lib/modules/%{_kernel_ver}/misc/spl/spl.ko*\
243 %dir /lib/modules/%{_kernel_ver}/misc/unicode\
244 /lib/modules/%{_kernel_ver}/misc/unicode/zunicode.ko*\
245 %dir /lib/modules/%{_kernel_ver}/misc/zcommon\
246 /lib/modules/%{_kernel_ver}/misc/zcommon/zcommon.ko*\
247 %dir /lib/modules/%{_kernel_ver}/misc/zfs\
248 /lib/modules/%{_kernel_ver}/misc/zfs/zfs.ko*\
250 %files -n kernel%{_alt_kernel}-zfs-devel\
251 %defattr(644,root,root,755)\
252 /usr/src/zfs-%{version}/%{_kernel_ver}\
254 %post -n kernel%{_alt_kernel}-zfs\
255 %depmod %{_kernel_ver}\
257 %postun -n kernel%{_alt_kernel}-zfs\
258 %depmod %{_kernel_ver}\
261 %define build_kernel_pkg()\
263 --disable-silent-rules \\\
264 --with-config="kernel" \\\
265 --with-linux=%{_kernelsrcdir}\\\
266 --with-linux-obj=%{_kernelsrcdir}\
269 %{__make} %{?with_verbose:V=1}\
271 %{__make} install DESTDIR=$p/installed INSTALL_MOD_DIR=misc\
274 %{?with_kernel:%{expand:%create_kernel_packages}}
277 %setup -q -n %{pname}-zfs-%{version}
284 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python2(\s|$),#!%{__python}\1,' \
285 cmd/arc_summary/arc_summary2
287 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python3(\s|$),#!%{__python3}\1,' \
288 cmd/arc_summary/arc_summary3 \
289 cmd/arcstat/arcstat \
290 cmd/dbufstat/dbufstat
294 %{__aclocal} -I config
298 %{?with_kernel:%{expand:%build_kernel_packages}}
300 %if %{with userspace}
302 --disable-silent-rules \
304 --with-config="user" \
305 --with-linux=%{_kernelsrcdir} \
306 --with-systemdunitdir=%{systemdunitdir} \
307 --with-systemdpresetdir=/etc/systemd/system-preset \
308 --with-systemdmodulesloaddir=/etc/modules-load.d \
309 --with-systemdgeneratordir=/lib/systemd/system-generators \
310 --with-udevdir=/lib/udev
329 rm -rf $RPM_BUILD_ROOT
332 install -d $RPM_BUILD_ROOT
333 cp -a installed/* $RPM_BUILD_ROOT
334 # Drop unneeded spl compat links
335 %{__rm} -r $RPM_BUILD_ROOT/usr/src/spl-%{version}
338 %if %{with userspace}
340 DESTDIR=$RPM_BUILD_ROOT \
341 DEFAULT_INIT_DIR=/etc/rc.d/init.d
344 %{__rm} -rf $RPM_BUILD_ROOT%{py_sitescriptdir}
348 %py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
349 %py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
353 %{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/libzfs_core/test
357 %{__rm} -rf $RPM_BUILD_ROOT{%{py3_sitescriptdir},/usr/local/share/python3*}
361 %{__rm} -r $RPM_BUILD_ROOT%{py3_sitescriptdir}/libzfs_core/test
364 install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
365 %{__mv} $RPM_BUILD_ROOT%{_npkgconfigdir}/* $RPM_BUILD_ROOT%{_pkgconfigdir}
367 # Debian specific stuff
368 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/initramfs-tools
370 # Package these? These are integration tests of the implementation.
371 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/zfs/{zfs-tests,test-runner,runfiles}
372 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{raidz_test,test-runner}.1*
373 %{__rm} $RPM_BUILD_ROOT%{_bindir}/raidz_test
377 rm -rf $RPM_BUILD_ROOT
379 %post libs -p /sbin/ldconfig
380 %postun libs -p /sbin/ldconfig
382 %if %{with userspace}
384 %defattr(644,root,root,755)
385 %doc AUTHORS COPYRIGHT LICENSE NEWS NOTICE README.md
386 %attr(755,root,root) /sbin/mount.zfs
387 %attr(755,root,root) %{_bindir}/arc_summary
388 %attr(755,root,root) %{_bindir}/arcstat
389 %attr(755,root,root) %{_bindir}/dbufstat
390 %attr(755,root,root) %{_bindir}/zgenhostid
391 %attr(755,root,root) %{_bindir}/zvol_wait
392 %attr(755,root,root) %{_sbindir}/fsck.zfs
393 %attr(755,root,root) %{_sbindir}/zdb
394 %attr(755,root,root) %{_sbindir}/zed
395 %attr(755,root,root) %{_sbindir}/zfs
396 %attr(755,root,root) %{_sbindir}/zhack
397 %attr(755,root,root) %{_sbindir}/zinject
398 %attr(755,root,root) %{_sbindir}/zpool
399 %attr(755,root,root) %{_sbindir}/zstreamdump
400 %attr(755,root,root) %{_sbindir}/ztest
401 %dir %{_sysconfdir}/zfs
402 # package *.example as %doc? (they cannot act as default configuration)
403 %{_sysconfdir}/zfs/vdev_id.conf.*.example
404 %dir %{_sysconfdir}/zfs/zed.d
405 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/*.sh
406 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/zed.rc
407 %dir %{_sysconfdir}/zfs/zpool.d
408 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zpool.d/*
409 %attr(754,root,root) /etc/rc.d/init.d/zfs-import
410 %attr(754,root,root) /etc/rc.d/init.d/zfs-mount
411 %attr(754,root,root) /etc/rc.d/init.d/zfs-share
412 %attr(754,root,root) /etc/rc.d/init.d/zfs-zed
413 %config(noreplace) %verify(not md5 mtime size) /etc/default/zfs
414 /etc/zfs/zfs-functions
415 %config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/zfs.conf
416 /etc/systemd/system-preset/50-zfs.preset
417 /lib/systemd/system-generators/zfs-mount-generator
418 %{systemdunitdir}/zfs.target
419 %{systemdunitdir}/zfs-import.service
420 %{systemdunitdir}/zfs-import.target
421 %{systemdunitdir}/zfs-import-cache.service
422 %{systemdunitdir}/zfs-import-scan.service
423 %{systemdunitdir}/zfs-mount.service
424 %{systemdunitdir}/zfs-share.service
425 %{systemdunitdir}/zfs-volume-wait.service
426 %{systemdunitdir}/zfs-volumes.target
427 %{systemdunitdir}/zfs-zed.service
428 %attr(755,root,root) /lib/udev/vdev_id
429 %attr(755,root,root) /lib/udev/zvol_id
430 /lib/udev/rules.d/60-zvol.rules
431 /lib/udev/rules.d/69-vdev.rules
432 /lib/udev/rules.d/90-zfs.rules
433 %dir %{_libexecdir}/zfs
434 %dir %{_libexecdir}/zfs/zed.d
435 %attr(755,root,root) %{_libexecdir}/zfs/zed.d/*.sh
436 %dir %{_libexecdir}/zfs/zpool.d
437 %attr(755,root,root) %{_libexecdir}/zfs/zpool.d/*
439 %attr(755,root,root) %{_datadir}/zfs/*.sh
440 %{_mandir}/man1/zhack.1*
441 %{_mandir}/man1/ztest.1*
442 %{_mandir}/man1/zvol_wait.1*
443 %{_mandir}/man5/spl-module-parameters.5*
444 %{_mandir}/man5/vdev_id.conf.5*
445 %{_mandir}/man5/zfs-events.5*
446 %{_mandir}/man5/zfs-module-parameters.5*
447 %{_mandir}/man5/zpool-features.5*
448 %{_mandir}/man8/fsck.zfs.8*
449 %{_mandir}/man8/mount.zfs.8*
450 %{_mandir}/man8/vdev_id.8*
451 %{_mandir}/man8/zdb.8*
452 %{_mandir}/man8/zed.8*
453 %{_mandir}/man8/zfs.8*
454 %{_mandir}/man8/zfs-mount-generator.8*
455 %{_mandir}/man8/zfs-program.8*
456 %{_mandir}/man8/zgenhostid.8*
457 %{_mandir}/man8/zinject.8*
458 %{_mandir}/man8/zpool.8*
459 %{_mandir}/man8/zstreamdump.8*
462 %defattr(644,root,root,755)
463 %attr(755,root,root) %{_libdir}/libnvpair.so.*.*.*
464 %attr(755,root,root) %ghost %{_libdir}/libnvpair.so.1
465 %attr(755,root,root) %{_libdir}/libuutil.so.*.*.*
466 %attr(755,root,root) %ghost %{_libdir}/libuutil.so.1
467 %attr(755,root,root) %{_libdir}/libzfs.so.*.*.*
468 %attr(755,root,root) %ghost %{_libdir}/libzfs.so.2
469 %attr(755,root,root) %{_libdir}/libzfs_core.so.*.*.*
470 %attr(755,root,root) %ghost %{_libdir}/libzfs_core.so.1
471 %attr(755,root,root) %{_libdir}/libzpool.so.*.*.*
472 %attr(755,root,root) %ghost %{_libdir}/libzpool.so.2
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}/libzpool.so
481 %{_libdir}/libnvpair.la
482 %{_libdir}/libuutil.la
484 %{_libdir}/libzfs_core.la
485 %{_libdir}/libzpool.la
486 %{_includedir}/libspl
487 %{_includedir}/libzfs
488 %{_pkgconfigdir}/libzfs.pc
489 %{_pkgconfigdir}/libzfs_core.pc
492 %defattr(644,root,root,755)
493 %{_libdir}/libnvpair.a
494 %{_libdir}/libuutil.a
496 %{_libdir}/libzfs_core.a
497 %{_libdir}/libzpool.a
500 %defattr(644,root,root,755)
501 %doc contrib/dracut/README.dracut.markdown
502 %dir %{dracutlibdir}/modules.d/02zfsexpandknowledge
503 %attr(755,root,root) %{dracutlibdir}/modules.d/02zfsexpandknowledge/module-setup.sh
504 %dir %{dracutlibdir}/modules.d/90zfs
505 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/export-zfs.sh
506 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/module-setup.sh
507 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/mount-zfs.sh
508 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/parse-zfs.sh
509 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-env-bootfs.service
510 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-generator.sh
511 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-lib.sh
512 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-load-key.sh
513 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-needshutdown.sh
516 %files -n python-pyzfs
517 %defattr(644,root,root,755)
518 %doc contrib/pyzfs/README
519 %{py_sitescriptdir}/libzfs_core
520 %{py_sitescriptdir}/pyzfs-*-py*.egg-info
524 %files -n python3-pyzfs
525 %defattr(644,root,root,755)
526 %doc contrib/pyzfs/README
527 %{py3_sitescriptdir}/libzfs_core
528 %{py3_sitescriptdir}/pyzfs-*-py*.egg-info
533 %files -n kernel-zfs-common-devel
534 %defattr(644,root,root,755)
535 %dir /usr/src/zfs-%{version}
536 /usr/src/zfs-%{version}/include
537 /usr/src/zfs-%{version}/zfs.release
538 /usr/src/zfs-%{version}/zfs_config.h