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: db6618a09f6494e1126b14a1302f77c8
45 Patch2: %{pname}-sh.patch
46 Patch3: kernel-5.3.patch
47 URL: http://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}-zfs-%{version}
284 %{__aclocal} -I config
288 %{?with_kernel:%{expand:%build_kernel_packages}}
290 %if %{with userspace}
292 --disable-silent-rules \
294 --with-config="user" \
295 --with-linux=%{_kernelsrcdir} \
296 --with-systemdunitdir=%{systemdunitdir} \
297 --with-systemdpresetdir=/etc/systemd/system-preset \
298 --with-systemdmodulesloaddir=/etc/modules-load.d \
299 --with-systemdgeneratordir=/lib/systemd/system-generators \
300 --with-udevdir=/lib/udev
319 rm -rf $RPM_BUILD_ROOT
322 install -d $RPM_BUILD_ROOT
323 cp -a installed/* $RPM_BUILD_ROOT
324 # Drop unneeded spl compat links
325 %{__rm} -r $RPM_BUILD_ROOT/usr/src/spl-%{version}
328 %if %{with userspace}
330 DESTDIR=$RPM_BUILD_ROOT \
331 DEFAULT_INIT_DIR=/etc/rc.d/init.d
334 %{__rm} -rf $RPM_BUILD_ROOT%{py_sitescriptdir}
338 %py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
339 %py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
343 %{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/libzfs_core/test
347 %{__rm} -rf $RPM_BUILD_ROOT{%{py3_sitescriptdir},/usr/local/share/python3*}
351 %{__rm} -r $RPM_BUILD_ROOT%{py3_sitescriptdir}/libzfs_core/test
354 install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
355 %{__mv} $RPM_BUILD_ROOT%{_npkgconfigdir}/* $RPM_BUILD_ROOT%{_pkgconfigdir}
357 # Debian specific stuff
358 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/initramfs-tools
360 # Package these? These are integration tests of the implementation.
361 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/zfs/{zfs-tests,test-runner,runfiles}
362 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{raidz_test,test-runner}.1*
363 %{__rm} $RPM_BUILD_ROOT%{_bindir}/raidz_test
367 rm -rf $RPM_BUILD_ROOT
369 %post libs -p /sbin/ldconfig
370 %postun libs -p /sbin/ldconfig
372 %if %{with userspace}
374 %defattr(644,root,root,755)
375 %doc AUTHORS COPYRIGHT LICENSE NEWS NOTICE README.md
376 %attr(755,root,root) /sbin/mount.zfs
377 %attr(755,root,root) %{_bindir}/arc_summary
378 %attr(755,root,root) %{_bindir}/arcstat
379 %attr(755,root,root) %{_bindir}/dbufstat
380 %attr(755,root,root) %{_bindir}/zgenhostid
381 %attr(755,root,root) %{_sbindir}/fsck.zfs
382 %attr(755,root,root) %{_sbindir}/zdb
383 %attr(755,root,root) %{_sbindir}/zed
384 %attr(755,root,root) %{_sbindir}/zfs
385 %attr(755,root,root) %{_sbindir}/zhack
386 %attr(755,root,root) %{_sbindir}/zinject
387 %attr(755,root,root) %{_sbindir}/zpool
388 %attr(755,root,root) %{_sbindir}/zstreamdump
389 %attr(755,root,root) %{_sbindir}/ztest
390 %dir %{_sysconfdir}/zfs
391 # package *.example as %doc? (they cannot act as default configuration)
392 %{_sysconfdir}/zfs/vdev_id.conf.*.example
393 %dir %{_sysconfdir}/zfs/zed.d
394 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/*.sh
395 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/zed.rc
396 %dir %{_sysconfdir}/zfs/zpool.d
397 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zpool.d/*
398 %attr(754,root,root) /etc/rc.d/init.d/zfs-import
399 %attr(754,root,root) /etc/rc.d/init.d/zfs-mount
400 %attr(754,root,root) /etc/rc.d/init.d/zfs-share
401 %attr(754,root,root) /etc/rc.d/init.d/zfs-zed
402 %config(noreplace) %verify(not md5 mtime size) /etc/default/zfs
403 /etc/zfs/zfs-functions
404 %config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/zfs.conf
405 /etc/systemd/system-preset/50-zfs.preset
406 /lib/systemd/system-generators/zfs-mount-generator
407 %{systemdunitdir}/zfs.target
408 %{systemdunitdir}/zfs-import.target
409 %{systemdunitdir}/zfs-import-cache.service
410 %{systemdunitdir}/zfs-import-scan.service
411 %{systemdunitdir}/zfs-mount.service
412 %{systemdunitdir}/zfs-share.service
413 %{systemdunitdir}/zfs-zed.service
414 %attr(755,root,root) /lib/udev/vdev_id
415 %attr(755,root,root) /lib/udev/zvol_id
416 /lib/udev/rules.d/60-zvol.rules
417 /lib/udev/rules.d/69-vdev.rules
418 /lib/udev/rules.d/90-zfs.rules
419 %dir %{_libexecdir}/zfs
420 %dir %{_libexecdir}/zfs/zed.d
421 %attr(755,root,root) %{_libexecdir}/zfs/zed.d/*.sh
422 %dir %{_libexecdir}/zfs/zpool.d
423 %attr(755,root,root) %{_libexecdir}/zfs/zpool.d/*
425 %attr(755,root,root) %{_datadir}/zfs/*.sh
426 %{_mandir}/man1/zhack.1*
427 %{_mandir}/man1/ztest.1*
428 %{_mandir}/man5/spl-module-parameters.5*
429 %{_mandir}/man5/vdev_id.conf.5*
430 %{_mandir}/man5/zfs-events.5*
431 %{_mandir}/man5/zfs-module-parameters.5*
432 %{_mandir}/man5/zpool-features.5*
433 %{_mandir}/man8/fsck.zfs.8*
434 %{_mandir}/man8/mount.zfs.8*
435 %{_mandir}/man8/vdev_id.8*
436 %{_mandir}/man8/zdb.8*
437 %{_mandir}/man8/zed.8*
438 %{_mandir}/man8/zfs.8*
439 %{_mandir}/man8/zfs-mount-generator.8*
440 %{_mandir}/man8/zfs-program.8*
441 %{_mandir}/man8/zgenhostid.8*
442 %{_mandir}/man8/zinject.8*
443 %{_mandir}/man8/zpool.8*
444 %{_mandir}/man8/zstreamdump.8*
447 %defattr(644,root,root,755)
448 %attr(755,root,root) %{_libdir}/libnvpair.so.*.*.*
449 %attr(755,root,root) %ghost %{_libdir}/libnvpair.so.1
450 %attr(755,root,root) %{_libdir}/libuutil.so.*.*.*
451 %attr(755,root,root) %ghost %{_libdir}/libuutil.so.1
452 %attr(755,root,root) %{_libdir}/libzfs.so.*.*.*
453 %attr(755,root,root) %ghost %{_libdir}/libzfs.so.2
454 %attr(755,root,root) %{_libdir}/libzfs_core.so.*.*.*
455 %attr(755,root,root) %ghost %{_libdir}/libzfs_core.so.1
456 %attr(755,root,root) %{_libdir}/libzpool.so.*.*.*
457 %attr(755,root,root) %ghost %{_libdir}/libzpool.so.2
460 %defattr(644,root,root,755)
461 %attr(755,root,root) %{_libdir}/libnvpair.so
462 %attr(755,root,root) %{_libdir}/libuutil.so
463 %attr(755,root,root) %{_libdir}/libzfs.so
464 %attr(755,root,root) %{_libdir}/libzfs_core.so
465 %attr(755,root,root) %{_libdir}/libzpool.so
466 %{_libdir}/libnvpair.la
467 %{_libdir}/libuutil.la
469 %{_libdir}/libzfs_core.la
470 %{_libdir}/libzpool.la
471 %{_includedir}/libspl
472 %{_includedir}/libzfs
473 %{_pkgconfigdir}/libzfs.pc
474 %{_pkgconfigdir}/libzfs_core.pc
477 %defattr(644,root,root,755)
478 %{_libdir}/libnvpair.a
479 %{_libdir}/libuutil.a
481 %{_libdir}/libzfs_core.a
482 %{_libdir}/libzpool.a
485 %defattr(644,root,root,755)
486 %doc contrib/dracut/README.dracut.markdown
487 %dir %{dracutlibdir}/modules.d/02zfsexpandknowledge
488 %attr(755,root,root) %{dracutlibdir}/modules.d/02zfsexpandknowledge/module-setup.sh
489 %dir %{dracutlibdir}/modules.d/90zfs
490 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/export-zfs.sh
491 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/module-setup.sh
492 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/mount-zfs.sh
493 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/parse-zfs.sh
494 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-env-bootfs.service
495 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-generator.sh
496 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-lib.sh
497 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-load-key.sh
498 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-needshutdown.sh
501 %files -n python-pyzfs
502 %defattr(644,root,root,755)
503 %doc contrib/pyzfs/README
504 %{py_sitescriptdir}/libzfs_core
505 %{py_sitescriptdir}/pyzfs-*-py*.egg-info
509 %files -n python3-pyzfs
510 %defattr(644,root,root,755)
511 %doc contrib/pyzfs/README
512 %{py3_sitescriptdir}/libzfs_core
513 %{py3_sitescriptdir}/pyzfs-*-py*.egg-info
518 %files -n kernel-zfs-common-devel
519 %defattr(644,root,root,755)
520 %dir /usr/src/zfs-%{version}
521 /usr/src/zfs-%{version}/include
522 /usr/src/zfs-%{version}/zfs.release
523 /usr/src/zfs-%{version}/zfs_config.h