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 URL: https://zfsonlinux.org/
47 BuildRequires: autoconf >= 2.50
48 BuildRequires: automake
49 BuildRequires: libtool
50 BuildRequires: rpmbuild(macros) >= 1.714
52 %{expand:%buildrequires_kernel kernel%%{_alt_kernel}-module-build >= 3:2.6.20.2}
55 # only for mmap_libaio test command
56 #BuildRequires: libaio-devel
57 BuildRequires: libblkid-devel
58 BuildRequires: libselinux-devel
59 # if xdr gets removed from glibc
60 #BuildRequires: libtirpc-devel
61 BuildRequires: libuuid-devel
62 BuildRequires: openssl-devel
63 BuildRequires: pkgconfig
64 BuildRequires: udev-devel
65 BuildRequires: zlib-devel
67 BuildRequires: python-cffi
68 BuildRequires: python-modules >= 1:2.6
69 BuildRequires: python-setuptools
72 BuildRequires: python3-cffi
73 BuildRequires: python3-modules >= 1:3.4
74 BuildRequires: python3-setuptools
76 %if %{with python2} || %{with python3}
77 BuildRequires: rpm-pythonprov
80 Requires: %{pname}-libs = %{version}-%{release}
81 Obsoletes: spl < 0.7.9-2
82 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
84 %define dracutlibdir %{_prefix}/lib/dracut
87 ZFS is an advanced file system and volume manager which was originally
88 developed for Solaris and is now maintained by the Illumos community.
90 ZFS on Linux, which is also known as ZoL, is currently feature
91 complete. It includes fully functional and stable SPA, DMU, ZVOL, and
94 %description -l pl.UTF-8
95 ZFS to zaawansowany system plików i zarządca wolumenów, oryginalnie
96 stworzony dla Solarisa, obecnie utrzymywany przez społeczność Illumos.
98 ZFS dla Linuksa, znany takża jako ZoL (ZFS on Linux), jest obecnie w
99 pełni funkcjonalny. Zawiera w pełni funkcjonalne i stabilne warstwy
100 SPA, DMU, ZVOL i ZPL.
103 Summary: ZFS on Linux libraries
104 Summary(pl.UTF-8): Biblioteki ZFS-a dla Linuksa
107 Requires(post,postun): /sbin/ldconfig
110 ZFS on Linux libraries.
112 %description libs -l pl.UTF-8
113 Biblioteki ZFS-a dla Linuksa.
116 Summary: Header files for ZFS libraries
117 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek ZFS-a
119 Group: Development/Libraries
120 Requires: %{pname}-libs = %{version}-%{release}
121 Requires: libselinux-devel
122 Requires: libuuid-devel
126 Header files for ZFS libraries.
128 %description devel -l pl.UTF-8
129 Pliki nagłówkowe bibliotek ZFS-a.
132 Summary: Static ZFS libraries
133 Summary(pl.UTF-8): Statyczne biblioteki ZFS-a
135 Group: Development/Libraries
136 Requires: %{pname}-devel = %{version}-%{release}
139 Static ZFS libraries.
141 %description static -l pl.UTF-8
142 Statyczne biblioteki ZFS-a.
144 %package -n dracut-zfs
145 Summary: ZFS support for Dracut
146 Summary(pl.UTF-8): Obsługa ZFS-a dla Dracuta
147 Group: Applications/System
148 Requires: %{pname} = %{version}-%{release}
151 %description -n dracut-zfs
152 ZFS support for Dracut.
154 %description -n dracut-zfs -l pl.UTF-8
155 Obsługa ZFS-a dla Dracuta.
157 %package -n python-pyzfs
158 Summary: Python 2 wrapper for libzfs_core C library
159 Summary(pl.UTF-8): Interfejs Pythona 2 do biblioteki C libzfs_core
161 Group: Libraries/Python
162 Requires: %{pname}-libs = %{version}-%{release}
164 %description -n python-pyzfs
165 Python 2 wrapper for libzfs_core C library.
167 %description -n python-pyzfs -l pl.UTF-8
168 Interfejs Pythona 2 do biblioteki C libzfs_core.
170 %package -n python3-pyzfs
171 Summary: Python 3 wrapper for libzfs_core C library
172 Summary(pl.UTF-8): Interfejs Pythona 3 do biblioteki C libzfs_core
174 Group: Libraries/Python
175 Requires: %{pname}-libs = %{version}-%{release}
177 %description -n python3-pyzfs
178 Python 3 wrapper for libzfs_core C library.
180 %description -n python3-pyzfs -l pl.UTF-8
181 Interfejs Pythona 3 do biblioteki C libzfs_core.
183 %package -n kernel-zfs-common-devel
184 Summary: ZFS Linux kernel headers
185 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa
186 Group: Development/Building
187 Obsoletes: kernel-spl-common-devel < 0.7.9-2
189 %description -n kernel-zfs-common-devel
190 ZFS Linux kernel headers common for all PLD kernel versions.
192 %description -n kernel-zfs-common-devel -l pl.UTF-8
193 ZFS - pliki nagłówkowe jądra Linuksa wspólne na wszystkich
196 %define kernel_pkg()\
197 %package -n kernel%{_alt_kernel}-zfs\
198 Summary: ZFS Linux kernel modules\
199 Summary(pl.UTF-8): ZFS - moduły jądra Linuksa\
200 Release: %{rel}@%{_kernel_ver_str}\
202 Requires(post,postun): /sbin/depmod\
203 %requires_releq_kernel\
204 Requires(postun): %releq_kernel\
206 %description -n kernel%{_alt_kernel}-zfs\
207 ZFS Linux kernel modules.\
209 %description -n kernel%{_alt_kernel}-zfs -l pl.UTF-8\
210 ZFS - moduły jądra Linuksa.\
212 %package -n kernel%{_alt_kernel}-zfs-devel\
213 Summary: ZFS Linux kernel headers\
214 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa\
215 Release: %{rel}@%{_kernel_ver_str}\
216 Group: Development/Building\
217 Requires: kernel%{_alt_kernel}-headers\
218 Requires: kernel-zfs-common-devel\
219 Obsoletes: kernel-spl-devel < 0.7.9-2\
221 %description -n kernel%{_alt_kernel}-zfs-devel\
222 ZFS Linux kernel headers configured for PLD kernel%{_alt_kernel},\
223 version %{_kernel_ver}.\
225 %description -n kernel%{_alt_kernel}-zfs-devel -l pl.UTF-8\
226 ZFS - pliki nagłówkowe jądra Linuksa skonfigurowane dla jądra PLD z\
227 pakietu kernel%{_alt_kernel} w wersji %{_kernel_ver}.\
229 %files -n kernel%{_alt_kernel}-zfs\
230 %defattr(644,root,root,755)\
231 %dir /lib/modules/%{_kernel_ver}/misc/lua\
232 /lib/modules/%{_kernel_ver}/misc/lua/zlua.ko*\
233 %dir /lib/modules/%{_kernel_ver}/misc/avl\
234 /lib/modules/%{_kernel_ver}/misc/avl/zavl.ko*\
235 %dir /lib/modules/%{_kernel_ver}/misc/icp\
236 /lib/modules/%{_kernel_ver}/misc/icp/icp.ko*\
237 %dir /lib/modules/%{_kernel_ver}/misc/nvpair\
238 /lib/modules/%{_kernel_ver}/misc/nvpair/znvpair.ko*\
239 %dir /lib/modules/%{_kernel_ver}/misc/spl\
240 /lib/modules/%{_kernel_ver}/misc/spl/spl.ko*\
241 %dir /lib/modules/%{_kernel_ver}/misc/unicode\
242 /lib/modules/%{_kernel_ver}/misc/unicode/zunicode.ko*\
243 %dir /lib/modules/%{_kernel_ver}/misc/zcommon\
244 /lib/modules/%{_kernel_ver}/misc/zcommon/zcommon.ko*\
245 %dir /lib/modules/%{_kernel_ver}/misc/zfs\
246 /lib/modules/%{_kernel_ver}/misc/zfs/zfs.ko*\
248 %files -n kernel%{_alt_kernel}-zfs-devel\
249 %defattr(644,root,root,755)\
250 /usr/src/zfs-%{version}/%{_kernel_ver}\
252 %post -n kernel%{_alt_kernel}-zfs\
253 %depmod %{_kernel_ver}\
255 %postun -n kernel%{_alt_kernel}-zfs\
256 %depmod %{_kernel_ver}\
259 %define build_kernel_pkg()\
261 --disable-silent-rules \\\
262 --with-config="kernel" \\\
263 --with-linux=%{_kernelsrcdir}\\\
264 --with-linux-obj=%{_kernelsrcdir}\
267 %{__make} %{?with_verbose:V=1}\
269 %{__make} install DESTDIR=$p/installed INSTALL_MOD_DIR=misc\
272 %{?with_kernel:%{expand:%create_kernel_packages}}
275 %setup -q -n %{pname}-%{version}
281 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python2(\s|$),#!%{__python}\1,' \
282 cmd/arc_summary/arc_summary2
284 %{__sed} -E -i -e '1s,#!\s*/usr/bin/env\s+python3(\s|$),#!%{__python3}\1,' \
285 cmd/arc_summary/arc_summary3 \
286 cmd/arcstat/arcstat \
287 cmd/dbufstat/dbufstat
291 %{__aclocal} -I config
295 %{?with_kernel:%{expand:%build_kernel_packages}}
297 %if %{with userspace}
299 --disable-silent-rules \
301 --with-config="user" \
302 --with-linux=%{_kernelsrcdir} \
303 --with-systemdunitdir=%{systemdunitdir} \
304 --with-systemdpresetdir=/etc/systemd/system-preset \
305 --with-systemdmodulesloaddir=/etc/modules-load.d \
306 --with-systemdgeneratordir=/lib/systemd/system-generators \
307 --with-udevdir=/lib/udev
326 rm -rf $RPM_BUILD_ROOT
329 install -d $RPM_BUILD_ROOT
330 cp -a installed/* $RPM_BUILD_ROOT
331 # Drop unneeded spl compat links
332 %{__rm} -r $RPM_BUILD_ROOT/usr/src/spl-%{version}
335 %if %{with userspace}
337 DESTDIR=$RPM_BUILD_ROOT \
338 DEFAULT_INIT_DIR=/etc/rc.d/init.d
341 %{__rm} -rf $RPM_BUILD_ROOT%{py_sitescriptdir}
345 %py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
346 %py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
350 %{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/libzfs_core/test
354 %{__rm} -rf $RPM_BUILD_ROOT{%{py3_sitescriptdir},/usr/local/share/python3*}
358 %{__rm} -r $RPM_BUILD_ROOT%{py3_sitescriptdir}/libzfs_core/test
361 install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
362 %{__mv} $RPM_BUILD_ROOT%{_npkgconfigdir}/* $RPM_BUILD_ROOT%{_pkgconfigdir}
364 # Debian specific stuff
365 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/initramfs-tools
367 # Package these? These are integration tests of the implementation.
368 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/zfs/{zfs-tests,test-runner,runfiles}
369 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{raidz_test,test-runner}.1*
370 %{__rm} $RPM_BUILD_ROOT%{_bindir}/raidz_test
374 rm -rf $RPM_BUILD_ROOT
376 %post libs -p /sbin/ldconfig
377 %postun libs -p /sbin/ldconfig
379 %if %{with userspace}
381 %defattr(644,root,root,755)
382 %doc AUTHORS COPYRIGHT LICENSE NEWS NOTICE README.md
383 %attr(755,root,root) /sbin/mount.zfs
384 %attr(755,root,root) %{_bindir}/arc_summary
385 %attr(755,root,root) %{_bindir}/arcstat
386 %attr(755,root,root) %{_bindir}/dbufstat
387 %attr(755,root,root) %{_bindir}/zgenhostid
388 %attr(755,root,root) %{_bindir}/zvol_wait
389 %attr(755,root,root) %{_sbindir}/fsck.zfs
390 %attr(755,root,root) %{_sbindir}/zdb
391 %attr(755,root,root) %{_sbindir}/zed
392 %attr(755,root,root) %{_sbindir}/zfs
393 %attr(755,root,root) %{_sbindir}/zhack
394 %attr(755,root,root) %{_sbindir}/zinject
395 %attr(755,root,root) %{_sbindir}/zpool
396 %attr(755,root,root) %{_sbindir}/zstreamdump
397 %attr(755,root,root) %{_sbindir}/ztest
398 %dir %{_sysconfdir}/zfs
399 # package *.example as %doc? (they cannot act as default configuration)
400 %{_sysconfdir}/zfs/vdev_id.conf.*.example
401 %dir %{_sysconfdir}/zfs/zed.d
402 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/*.sh
403 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/zed.rc
404 %dir %{_sysconfdir}/zfs/zpool.d
405 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zpool.d/*
406 %attr(754,root,root) /etc/rc.d/init.d/zfs-import
407 %attr(754,root,root) /etc/rc.d/init.d/zfs-mount
408 %attr(754,root,root) /etc/rc.d/init.d/zfs-share
409 %attr(754,root,root) /etc/rc.d/init.d/zfs-zed
410 %config(noreplace) %verify(not md5 mtime size) /etc/default/zfs
411 /etc/zfs/zfs-functions
412 %config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/zfs.conf
413 /etc/systemd/system-preset/50-zfs.preset
414 /lib/systemd/system-generators/zfs-mount-generator
415 %{systemdunitdir}/zfs.target
416 %{systemdunitdir}/zfs-import.service
417 %{systemdunitdir}/zfs-import.target
418 %{systemdunitdir}/zfs-import-cache.service
419 %{systemdunitdir}/zfs-import-scan.service
420 %{systemdunitdir}/zfs-mount.service
421 %{systemdunitdir}/zfs-share.service
422 %{systemdunitdir}/zfs-volume-wait.service
423 %{systemdunitdir}/zfs-volumes.target
424 %{systemdunitdir}/zfs-zed.service
425 %attr(755,root,root) /lib/udev/vdev_id
426 %attr(755,root,root) /lib/udev/zvol_id
427 /lib/udev/rules.d/60-zvol.rules
428 /lib/udev/rules.d/69-vdev.rules
429 /lib/udev/rules.d/90-zfs.rules
430 %dir %{_libexecdir}/zfs
431 %dir %{_libexecdir}/zfs/zed.d
432 %attr(755,root,root) %{_libexecdir}/zfs/zed.d/*.sh
433 %dir %{_libexecdir}/zfs/zpool.d
434 %attr(755,root,root) %{_libexecdir}/zfs/zpool.d/*
436 %attr(755,root,root) %{_datadir}/zfs/*.sh
437 %{_mandir}/man1/zhack.1*
438 %{_mandir}/man1/ztest.1*
439 %{_mandir}/man1/zvol_wait.1*
440 %{_mandir}/man5/spl-module-parameters.5*
441 %{_mandir}/man5/vdev_id.conf.5*
442 %{_mandir}/man5/zfs-events.5*
443 %{_mandir}/man5/zfs-module-parameters.5*
444 %{_mandir}/man5/zpool-features.5*
445 %{_mandir}/man8/fsck.zfs.8*
446 %{_mandir}/man8/mount.zfs.8*
447 %{_mandir}/man8/vdev_id.8*
448 %{_mandir}/man8/zdb.8*
449 %{_mandir}/man8/zed.8*
450 %{_mandir}/man8/zfs.8*
451 %{_mandir}/man8/zfs-mount-generator.8*
452 %{_mandir}/man8/zfs-program.8*
453 %{_mandir}/man8/zgenhostid.8*
454 %{_mandir}/man8/zinject.8*
455 %{_mandir}/man8/zpool.8*
456 %{_mandir}/man8/zstreamdump.8*
459 %defattr(644,root,root,755)
460 %attr(755,root,root) %{_libdir}/libnvpair.so.*.*.*
461 %attr(755,root,root) %ghost %{_libdir}/libnvpair.so.1
462 %attr(755,root,root) %{_libdir}/libuutil.so.*.*.*
463 %attr(755,root,root) %ghost %{_libdir}/libuutil.so.1
464 %attr(755,root,root) %{_libdir}/libzfs.so.*.*.*
465 %attr(755,root,root) %ghost %{_libdir}/libzfs.so.2
466 %attr(755,root,root) %{_libdir}/libzfs_core.so.*.*.*
467 %attr(755,root,root) %ghost %{_libdir}/libzfs_core.so.1
468 %attr(755,root,root) %{_libdir}/libzpool.so.*.*.*
469 %attr(755,root,root) %ghost %{_libdir}/libzpool.so.2
472 %defattr(644,root,root,755)
473 %attr(755,root,root) %{_libdir}/libnvpair.so
474 %attr(755,root,root) %{_libdir}/libuutil.so
475 %attr(755,root,root) %{_libdir}/libzfs.so
476 %attr(755,root,root) %{_libdir}/libzfs_core.so
477 %attr(755,root,root) %{_libdir}/libzpool.so
478 %{_libdir}/libnvpair.la
479 %{_libdir}/libuutil.la
481 %{_libdir}/libzfs_core.la
482 %{_libdir}/libzpool.la
483 %{_includedir}/libspl
484 %{_includedir}/libzfs
485 %{_pkgconfigdir}/libzfs.pc
486 %{_pkgconfigdir}/libzfs_core.pc
489 %defattr(644,root,root,755)
490 %{_libdir}/libnvpair.a
491 %{_libdir}/libuutil.a
493 %{_libdir}/libzfs_core.a
494 %{_libdir}/libzpool.a
497 %defattr(644,root,root,755)
498 %doc contrib/dracut/README.dracut.markdown
499 %dir %{dracutlibdir}/modules.d/02zfsexpandknowledge
500 %attr(755,root,root) %{dracutlibdir}/modules.d/02zfsexpandknowledge/module-setup.sh
501 %dir %{dracutlibdir}/modules.d/90zfs
502 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/export-zfs.sh
503 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/module-setup.sh
504 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/mount-zfs.sh
505 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/parse-zfs.sh
506 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-env-bootfs.service
507 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-generator.sh
508 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-lib.sh
509 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-load-key.sh
510 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-needshutdown.sh
513 %files -n python-pyzfs
514 %defattr(644,root,root,755)
515 %doc contrib/pyzfs/README
516 %{py_sitescriptdir}/libzfs_core
517 %{py_sitescriptdir}/pyzfs-*-py*.egg-info
521 %files -n python3-pyzfs
522 %defattr(644,root,root,755)
523 %doc contrib/pyzfs/README
524 %{py3_sitescriptdir}/libzfs_core
525 %{py3_sitescriptdir}/pyzfs-*-py*.egg-info
530 %files -n kernel-zfs-common-devel
531 %defattr(644,root,root,755)
532 %dir /usr/src/zfs-%{version}
533 /usr/src/zfs-%{version}/include
534 /usr/src/zfs-%{version}/zfs.release
535 /usr/src/zfs-%{version}/zfs_config.h