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
32 %define rel 0.%{_rc}.2
34 Summary: Native Linux port of the ZFS filesystem
35 Summary(pl.UTF-8): Natywny linuksowy port systemu plików ZFS
36 Name: %{pname}%{?_pld_builder:%{?with_kernel:-kernel}}%{_alt_kernel}
38 Release: %{rel}%{?_pld_builder:%{?with_kernel:@%{_kernel_ver_str}}}
40 Group: Applications/System
41 #Source0: https://github.com/zfsonlinux/zfs/releases/download/zfs-%{version}/%{pname}-%{version}.tar.gz
42 Source0: https://github.com/zfsonlinux/zfs/archive/zfs-%{version}-%{_rc}/%{pname}-%{version}-%{_rc}.tar.gz
43 # Source0-md5: 9630df590251ad13a347b10fd46c0922
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: rpm-pythonprov
70 BuildRequires: python-cffi
71 BuildRequires: python-modules >= 1:2.6
72 BuildRequires: python-setuptools
75 BuildRequires: python3-cffi
76 BuildRequires: python3-modules >= 1:3.4
77 BuildRequires: python3-setuptools
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: Wrapper for libzfs_core C library
160 Group: Libraries/Python
161 Requires: %{pname}-libs = %{version}-%{release}
163 %description -n python-pyzfs
164 Wrapper for libzfs_core C library.
166 %package -n python3-pyzfs
167 Summary: Wrapper for libzfs_core C library
169 Group: Libraries/Python
170 Requires: %{pname}-libs = %{version}-%{release}
172 %description -n python3-pyzfs
173 Wrapper for libzfs_core C library.
175 %package -n kernel-zfs-common-devel
176 Summary: ZFS Linux kernel headers
177 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa
178 Group: Development/Building
179 Obsoletes: kernel-spl-common-devel < 0.7.9-2
181 %description -n kernel-zfs-common-devel
182 ZFS Linux kernel headers common for all PLD kernel versions.
184 %description -n kernel-zfs-common-devel -l pl.UTF-8
185 ZFS - pliki nagłówkowe jądra Linuksa wspólne na wszystkich
188 %define kernel_pkg()\
189 %package -n kernel%{_alt_kernel}-zfs\
190 Summary: ZFS Linux kernel modules\
191 Summary(pl.UTF-8): ZFS - moduły jądra Linuksa\
192 Release: %{rel}@%{_kernel_ver_str}\
194 Requires(post,postun): /sbin/depmod\
195 %requires_releq_kernel\
196 Requires(postun): %releq_kernel\
198 %description -n kernel%{_alt_kernel}-zfs\
199 ZFS Linux kernel modules.\
201 %description -n kernel%{_alt_kernel}-zfs -l pl.UTF-8\
202 ZFS - moduły jądra Linuksa.\
204 %package -n kernel%{_alt_kernel}-zfs-devel\
205 Summary: ZFS Linux kernel headers\
206 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa\
207 Release: %{rel}@%{_kernel_ver_str}\
208 Group: Development/Building\
209 Requires: kernel%{_alt_kernel}-headers\
210 Requires: kernel-zfs-common-devel\
211 Obsoletes: kernel-spl-devel < 0.7.9-2\
213 %description -n kernel%{_alt_kernel}-zfs-devel\
214 ZFS Linux kernel headers configured for PLD kernel%{_alt_kernel},\
215 version %{_kernel_ver}.\
217 %description -n kernel%{_alt_kernel}-zfs-devel -l pl.UTF-8\
218 ZFS - pliki nagłówkowe jądra Linuksa skonfigurowane dla jądra PLD z\
219 pakietu kernel%{_alt_kernel} w wersji %{_kernel_ver}.\
221 %files -n kernel%{_alt_kernel}-zfs\
222 %defattr(644,root,root,755)\
223 %dir /lib/modules/%{_kernel_ver}/misc/lua\
224 /lib/modules/%{_kernel_ver}/misc/lua/zlua.ko*\
225 %dir /lib/modules/%{_kernel_ver}/misc/avl\
226 /lib/modules/%{_kernel_ver}/misc/avl/zavl.ko*\
227 %dir /lib/modules/%{_kernel_ver}/misc/icp\
228 /lib/modules/%{_kernel_ver}/misc/icp/icp.ko*\
229 %dir /lib/modules/%{_kernel_ver}/misc/nvpair\
230 /lib/modules/%{_kernel_ver}/misc/nvpair/znvpair.ko*\
231 %dir /lib/modules/%{_kernel_ver}/misc/spl\
232 /lib/modules/%{_kernel_ver}/misc/spl/spl.ko*\
233 %dir /lib/modules/%{_kernel_ver}/misc/unicode\
234 /lib/modules/%{_kernel_ver}/misc/unicode/zunicode.ko*\
235 %dir /lib/modules/%{_kernel_ver}/misc/zcommon\
236 /lib/modules/%{_kernel_ver}/misc/zcommon/zcommon.ko*\
237 %dir /lib/modules/%{_kernel_ver}/misc/zfs\
238 /lib/modules/%{_kernel_ver}/misc/zfs/zfs.ko*\
240 %files -n kernel%{_alt_kernel}-zfs-devel\
241 %defattr(644,root,root,755)\
242 /usr/src/zfs-%{version}/%{_kernel_ver}\
244 %post -n kernel%{_alt_kernel}-zfs\
245 %depmod %{_kernel_ver}\
247 %postun -n kernel%{_alt_kernel}-zfs\
248 %depmod %{_kernel_ver}\
251 %define build_kernel_pkg()\
253 --disable-silent-rules \\\
254 --with-config="kernel" \\\
255 --with-linux=%{_kernelsrcdir}\\\
256 --with-linux-obj=%{_kernelsrcdir}\
259 %{__make} %{?with_verbose:V=1}\
261 %{__make} install DESTDIR=$p/installed INSTALL_MOD_DIR=misc\
264 %{?with_kernel:%{expand:%create_kernel_packages}}
267 %setup -q -n %{pname}-zfs-%{version}-%{_rc}
275 %{__aclocal} -I config
279 %{?with_kernel:%{expand:%build_kernel_packages}}
281 %if %{with userspace}
283 --disable-silent-rules \
284 --with-config="user" \
285 --with-linux=%{_kernelsrcdir} \
286 --with-systemdunitdir=%{systemdunitdir} \
287 --with-systemdpresetdir=/etc/systemd/system-preset \
288 --with-systemdmodulesloaddir=/etc/modules-load.d \
289 --with-systemdgeneratordir=/lib/systemd/system-generators \
290 --with-udevdir=/lib/udev
309 rm -rf $RPM_BUILD_ROOT
312 install -d $RPM_BUILD_ROOT
313 cp -a installed/* $RPM_BUILD_ROOT
314 # Drop unneeded spl compat links
315 %{__rm} -r $RPM_BUILD_ROOT/usr/src/spl-%{version}
318 %if %{with userspace}
320 DESTDIR=$RPM_BUILD_ROOT \
321 DEFAULT_INIT_DIR=/etc/rc.d/init.d
324 %{__rm} -rf $RPM_BUILD_ROOT%{py_sitescriptdir}
328 %py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
329 %py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
333 %{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/libzfs_core/test
337 %{__rm} -rf $RPM_BUILD_ROOT{%{py3_sitescriptdir},/usr/local/share/python3*}
341 %{__rm} -r $RPM_BUILD_ROOT%{py3_sitescriptdir}/libzfs_core/test
344 install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
345 %{__mv} $RPM_BUILD_ROOT%{_npkgconfigdir}/* $RPM_BUILD_ROOT%{_pkgconfigdir}
347 # Debian specific stuff
348 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/initramfs-tools
350 # Package these? These are integration tests of the implementation.
351 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/zfs/{zfs-tests,test-runner,runfiles}
352 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{raidz_test,test-runner}.1*
353 %{__rm} $RPM_BUILD_ROOT%{_bindir}/raidz_test
357 rm -rf $RPM_BUILD_ROOT
359 %post libs -p /sbin/ldconfig
360 %postun libs -p /sbin/ldconfig
362 %if %{with userspace}
364 %defattr(644,root,root,755)
365 %doc AUTHORS COPYRIGHT LICENSE NEWS NOTICE README.md
366 %attr(755,root,root) /sbin/mount.zfs
367 %attr(755,root,root) %{_bindir}/arc_summary
368 %attr(755,root,root) %{_bindir}/arcstat
369 %attr(755,root,root) %{_bindir}/dbufstat
370 %attr(755,root,root) %{_bindir}/zgenhostid
371 %attr(755,root,root) %{_sbindir}/fsck.zfs
372 %attr(755,root,root) %{_sbindir}/zdb
373 %attr(755,root,root) %{_sbindir}/zed
374 %attr(755,root,root) %{_sbindir}/zfs
375 %attr(755,root,root) %{_sbindir}/zhack
376 %attr(755,root,root) %{_sbindir}/zinject
377 %attr(755,root,root) %{_sbindir}/zpool
378 %attr(755,root,root) %{_sbindir}/zstreamdump
379 %attr(755,root,root) %{_sbindir}/ztest
380 %dir %{_sysconfdir}/zfs
381 # package *.example as %doc? (they cannot act as default configuration)
382 %{_sysconfdir}/zfs/vdev_id.conf.*.example
383 %dir %{_sysconfdir}/zfs/zed.d
384 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/*.sh
385 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/zed.rc
386 %dir %{_sysconfdir}/zfs/zpool.d
387 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zpool.d/*
388 %attr(754,root,root) /etc/rc.d/init.d/zfs-import
389 %attr(754,root,root) /etc/rc.d/init.d/zfs-mount
390 %attr(754,root,root) /etc/rc.d/init.d/zfs-share
391 %attr(754,root,root) /etc/rc.d/init.d/zfs-zed
392 %config(noreplace) %verify(not md5 mtime size) /etc/default/zfs
393 /etc/zfs/zfs-functions
394 %config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/zfs.conf
395 /etc/systemd/system-preset/50-zfs.preset
396 /lib/systemd/system-generators/zfs-mount-generator
397 %{systemdunitdir}/zfs.target
398 %{systemdunitdir}/zfs-import.target
399 %{systemdunitdir}/zfs-import-cache.service
400 %{systemdunitdir}/zfs-import-scan.service
401 %{systemdunitdir}/zfs-mount.service
402 %{systemdunitdir}/zfs-share.service
403 %{systemdunitdir}/zfs-zed.service
404 %attr(755,root,root) /lib/udev/vdev_id
405 %attr(755,root,root) /lib/udev/zvol_id
406 /lib/udev/rules.d/60-zvol.rules
407 /lib/udev/rules.d/69-vdev.rules
408 /lib/udev/rules.d/90-zfs.rules
409 %dir %{_libexecdir}/zfs
410 %dir %{_libexecdir}/zfs/zed.d
411 %attr(755,root,root) %{_libexecdir}/zfs/zed.d/*.sh
412 %dir %{_libexecdir}/zfs/zpool.d
413 %attr(755,root,root) %{_libexecdir}/zfs/zpool.d/*
415 %attr(755,root,root) %{_datadir}/zfs/*.sh
416 %{_mandir}/man1/zhack.1*
417 %{_mandir}/man1/ztest.1*
418 %{_mandir}/man5/spl-module-parameters.5*
419 %{_mandir}/man5/vdev_id.conf.5*
420 %{_mandir}/man5/zfs-events.5*
421 %{_mandir}/man5/zfs-module-parameters.5*
422 %{_mandir}/man5/zpool-features.5*
423 %{_mandir}/man8/fsck.zfs.8*
424 %{_mandir}/man8/mount.zfs.8*
425 %{_mandir}/man8/vdev_id.8*
426 %{_mandir}/man8/zdb.8*
427 %{_mandir}/man8/zed.8*
428 %{_mandir}/man8/zfs.8*
429 %{_mandir}/man8/zfs-mount-generator.8*
430 %{_mandir}/man8/zfs-program.8*
431 %{_mandir}/man8/zgenhostid.8*
432 %{_mandir}/man8/zinject.8*
433 %{_mandir}/man8/zpool.8*
434 %{_mandir}/man8/zstreamdump.8*
437 %defattr(644,root,root,755)
438 %attr(755,root,root) %{_libdir}/libnvpair.so.*.*.*
439 %attr(755,root,root) %ghost %{_libdir}/libnvpair.so.1
440 %attr(755,root,root) %{_libdir}/libuutil.so.*.*.*
441 %attr(755,root,root) %ghost %{_libdir}/libuutil.so.1
442 %attr(755,root,root) %{_libdir}/libzfs.so.*.*.*
443 %attr(755,root,root) %ghost %{_libdir}/libzfs.so.2
444 %attr(755,root,root) %{_libdir}/libzfs_core.so.*.*.*
445 %attr(755,root,root) %ghost %{_libdir}/libzfs_core.so.1
446 %attr(755,root,root) %{_libdir}/libzpool.so.*.*.*
447 %attr(755,root,root) %ghost %{_libdir}/libzpool.so.2
450 %defattr(644,root,root,755)
451 %attr(755,root,root) %{_libdir}/libnvpair.so
452 %attr(755,root,root) %{_libdir}/libuutil.so
453 %attr(755,root,root) %{_libdir}/libzfs.so
454 %attr(755,root,root) %{_libdir}/libzfs_core.so
455 %attr(755,root,root) %{_libdir}/libzpool.so
456 %{_libdir}/libnvpair.la
457 %{_libdir}/libuutil.la
459 %{_libdir}/libzfs_core.la
460 %{_libdir}/libzpool.la
461 %{_includedir}/libspl
462 %{_includedir}/libzfs
463 %{_pkgconfigdir}/libzfs.pc
464 %{_pkgconfigdir}/libzfs_core.pc
467 %defattr(644,root,root,755)
468 %{_libdir}/libnvpair.a
469 %{_libdir}/libuutil.a
471 %{_libdir}/libzfs_core.a
472 %{_libdir}/libzpool.a
475 %defattr(644,root,root,755)
476 %doc contrib/dracut/README.dracut.markdown
477 %dir %{dracutlibdir}/modules.d/02zfsexpandknowledge
478 %attr(755,root,root) %{dracutlibdir}/modules.d/02zfsexpandknowledge/module-setup.sh
479 %dir %{dracutlibdir}/modules.d/90zfs
480 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/export-zfs.sh
481 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/module-setup.sh
482 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/mount-zfs.sh
483 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/parse-zfs.sh
484 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-env-bootfs.service
485 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-generator.sh
486 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-lib.sh
487 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-load-key.sh
488 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-needshutdown.sh
491 %files -n python-pyzfs
492 %defattr(644,root,root,755)
493 %doc contrib/pyzfs/README
494 %{py_sitescriptdir}/libzfs_core
495 %{py_sitescriptdir}/pyzfs-*-py*.egg-info
499 %files -n python3-pyzfs
500 %defattr(644,root,root,755)
501 %doc contrib/pyzfs/README
502 %{py3_sitescriptdir}/libzfs_core
503 %{py3_sitescriptdir}/pyzfs-*-py*.egg-info
508 %files -n kernel-zfs-common-devel
509 %defattr(644,root,root,755)
510 %dir /usr/src/zfs-%{version}
511 /usr/src/zfs-%{version}/include
512 /usr/src/zfs-%{version}/zfs.release
513 /usr/src/zfs-%{version}/zfs_config.h