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}.1
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
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 BuildRequires: libblkid-devel
57 BuildRequires: libselinux-devel
58 BuildRequires: libuuid-devel
59 BuildRequires: zlib-devel
61 BuildRequires: rpm-pythonprov
62 BuildRequires: python-modules
63 BuildRequires: python-setuptools
66 BuildRequires: python3-modules
67 BuildRequires: python3-setuptools
70 Requires: %{pname}-libs = %{version}-%{release}
71 Obsoletes: spl < 0.7.9-2
72 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
74 %define dracutlibdir %{_prefix}/lib/dracut
77 ZFS is an advanced file system and volume manager which was originally
78 developed for Solaris and is now maintained by the Illumos community.
80 ZFS on Linux, which is also known as ZoL, is currently feature
81 complete. It includes fully functional and stable SPA, DMU, ZVOL, and
84 %description -l pl.UTF-8
85 ZFS to zaawansowany system plików i zarządca wolumenów, oryginalnie
86 stworzony dla Solarisa, obecnie utrzymywany przez społeczność Illumos.
88 ZFS dla Linuksa, znany takża jako ZoL (ZFS on Linux), jest obecnie w
89 pełni funkcjonalny. Zawiera w pełni funkcjonalne i stabilne warstwy
93 Summary: ZFS on Linux libraries
94 Summary(pl.UTF-8): Biblioteki ZFS-a dla Linuksa
97 Requires(post,postun): /sbin/ldconfig
100 ZFS on Linux libraries.
102 %description libs -l pl.UTF-8
103 Biblioteki ZFS-a dla Linuksa.
106 Summary: Header files for ZFS libraries
107 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek ZFS-a
109 Group: Development/Libraries
110 Requires: %{pname}-libs = %{version}-%{release}
111 Requires: libselinux-devel
112 Requires: libuuid-devel
116 Header files for ZFS libraries.
118 %description devel -l pl.UTF-8
119 Pliki nagłówkowe bibliotek ZFS-a.
122 Summary: Static ZFS libraries
123 Summary(pl.UTF-8): Statyczne biblioteki ZFS-a
125 Group: Development/Libraries
126 Requires: %{pname}-devel = %{version}-%{release}
129 Static ZFS libraries.
131 %description static -l pl.UTF-8
132 Statyczne biblioteki ZFS-a.
134 %package -n dracut-zfs
135 Summary: ZFS support for Dracut
136 Summary(pl.UTF-8): Obsługa ZFS-a dla Dracuta
137 Group: Applications/System
138 Requires: %{pname} = %{version}-%{release}
141 %description -n dracut-zfs
142 ZFS support for Dracut.
144 %description -n dracut-zfs -l pl.UTF-8
145 Obsługa ZFS-a dla Dracuta.
147 %package -n python-pyzfs
148 Summary: Wrapper for libzfs_core C library
150 Group: Libraries/Python
151 Requires: %{pname}-libs = %{version}-%{release}
153 %description -n python-pyzfs
154 Wrapper for libzfs_core C library.
156 %package -n python3-pyzfs
157 Summary: Wrapper for libzfs_core C library
159 Group: Libraries/Python
160 Requires: %{pname}-libs = %{version}-%{release}
162 %description -n python3-pyzfs
163 Wrapper for libzfs_core C library.
165 %package -n kernel-zfs-common-devel
166 Summary: ZFS Linux kernel headers
167 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa
168 Group: Development/Building
169 Obsoletes: kernel-spl-common-devel < 0.7.9-2
171 %description -n kernel-zfs-common-devel
172 ZFS Linux kernel headers common for all PLD kernel versions.
174 %description -n kernel-zfs-common-devel -l pl.UTF-8
175 ZFS - pliki nagłówkowe jądra Linuksa wspólne na wszystkich
178 %define kernel_pkg()\
179 %package -n kernel%{_alt_kernel}-zfs\
180 Summary: ZFS Linux kernel modules\
181 Summary(pl.UTF-8): ZFS - moduły jądra Linuksa\
182 Release: %{rel}@%{_kernel_ver_str}\
184 Requires(post,postun): /sbin/depmod\
185 %requires_releq_kernel\
186 Requires(postun): %releq_kernel\
188 %description -n kernel%{_alt_kernel}-zfs\
189 ZFS Linux kernel modules.\
191 %description -n kernel%{_alt_kernel}-zfs -l pl.UTF-8\
192 ZFS - moduły jądra Linuksa.\
194 %package -n kernel%{_alt_kernel}-zfs-devel\
195 Summary: ZFS Linux kernel headers\
196 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa\
197 Release: %{rel}@%{_kernel_ver_str}\
198 Group: Development/Building\
199 Requires: kernel%{_alt_kernel}-headers\
200 Requires: kernel-zfs-common-devel\
201 Obsoletes: kernel-spl-devel < 0.7.9-2\
203 %description -n kernel%{_alt_kernel}-zfs-devel\
204 ZFS Linux kernel headers configured for PLD kernel%{_alt_kernel},\
205 version %{_kernel_ver}.\
207 %description -n kernel%{_alt_kernel}-zfs-devel -l pl.UTF-8\
208 ZFS - pliki nagłówkowe jądra Linuksa skonfigurowane dla jądra PLD z\
209 pakietu kernel%{_alt_kernel} w wersji %{_kernel_ver}.\
211 %files -n kernel%{_alt_kernel}-zfs\
212 %defattr(644,root,root,755)\
213 %dir /lib/modules/%{_kernel_ver}/misc/lua\
214 /lib/modules/%{_kernel_ver}/misc/lua/zlua.ko*\
215 %dir /lib/modules/%{_kernel_ver}/misc/avl\
216 /lib/modules/%{_kernel_ver}/misc/avl/zavl.ko*\
217 %dir /lib/modules/%{_kernel_ver}/misc/icp\
218 /lib/modules/%{_kernel_ver}/misc/icp/icp.ko*\
219 %dir /lib/modules/%{_kernel_ver}/misc/nvpair\
220 /lib/modules/%{_kernel_ver}/misc/nvpair/znvpair.ko*\
221 %dir /lib/modules/%{_kernel_ver}/misc/spl\
222 /lib/modules/%{_kernel_ver}/misc/spl/spl.ko*\
223 %dir /lib/modules/%{_kernel_ver}/misc/unicode\
224 /lib/modules/%{_kernel_ver}/misc/unicode/zunicode.ko*\
225 %dir /lib/modules/%{_kernel_ver}/misc/zcommon\
226 /lib/modules/%{_kernel_ver}/misc/zcommon/zcommon.ko*\
227 %dir /lib/modules/%{_kernel_ver}/misc/zfs\
228 /lib/modules/%{_kernel_ver}/misc/zfs/zfs.ko*\
230 %files -n kernel%{_alt_kernel}-zfs-devel\
231 %defattr(644,root,root,755)\
232 /usr/src/zfs-%{version}/%{_kernel_ver}\
234 %post -n kernel%{_alt_kernel}-zfs\
235 %depmod %{_kernel_ver}\
237 %postun -n kernel%{_alt_kernel}-zfs\
238 %depmod %{_kernel_ver}\
241 %define build_kernel_pkg()\
243 --disable-silent-rules \\\
244 --with-config="kernel" \\\
245 --with-linux=%{_kernelsrcdir}\\\
246 --with-linux-obj=%{_kernelsrcdir}\
249 %{__make} %{?with_verbose:V=1}\
251 %{__make} install DESTDIR=$p/installed INSTALL_MOD_DIR=misc\
254 %{?with_kernel:%{expand:%create_kernel_packages}}
257 %setup -q -n %{pname}-zfs-%{version}-%{_rc}
264 %{__aclocal} -I config
268 %{?with_kernel:%{expand:%build_kernel_packages}}
270 %if %{with userspace}
272 --disable-silent-rules \
273 --with-config="user" \
274 --with-linux=%{_kernelsrcdir} \
275 --with-systemdunitdir=%{systemdunitdir} \
276 --with-systemdpresetdir=/etc/systemd/system-preset \
277 --with-systemdmodulesloaddir=/etc/modules-load.d \
278 --with-systemdgeneratordir=/lib/systemd/system-generators \
279 --with-udevdir=/lib/udev
298 rm -rf $RPM_BUILD_ROOT
301 install -d $RPM_BUILD_ROOT
302 cp -a installed/* $RPM_BUILD_ROOT
303 # Drop unneeded spl compat links
304 %{__rm} -r $RPM_BUILD_ROOT/usr/src/spl-%{version}
307 %if %{with userspace}
309 DESTDIR=$RPM_BUILD_ROOT \
310 DEFAULT_INIT_DIR=/etc/rc.d/init.d
313 %{__rm} -rf $RPM_BUILD_ROOT%{py_sitescriptdir}
317 %py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
318 %py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
322 %{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/libzfs_core/test
326 %{__rm} -rf $RPM_BUILD_ROOT{%{py3_sitescriptdir},/usr/local/share/python3*}
330 %{__rm} -r $RPM_BUILD_ROOT%{py3_sitescriptdir}/libzfs_core/test
333 install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
334 %{__mv} $RPM_BUILD_ROOT%{_npkgconfigdir}/* $RPM_BUILD_ROOT%{_pkgconfigdir}
336 # Debian specific stuff
337 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/initramfs-tools
339 # Package these? These are integration tests of the implementation.
340 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/zfs/{zfs-tests,test-runner,runfiles}
341 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{raidz_test,test-runner}.1*
342 %{__rm} $RPM_BUILD_ROOT%{_bindir}/raidz_test
346 rm -rf $RPM_BUILD_ROOT
348 %post libs -p /sbin/ldconfig
349 %postun libs -p /sbin/ldconfig
351 %if %{with userspace}
353 %defattr(644,root,root,755)
354 %doc AUTHORS COPYRIGHT LICENSE README.md
355 %attr(755,root,root) /sbin/mount.zfs
356 %attr(755,root,root) %{_bindir}/arc_summary
357 %attr(755,root,root) %{_bindir}/arcstat
358 %attr(755,root,root) %{_bindir}/dbufstat
359 %attr(755,root,root) %{_bindir}/zgenhostid
360 %attr(755,root,root) %{_sbindir}/fsck.zfs
361 %attr(755,root,root) %{_sbindir}/zdb
362 %attr(755,root,root) %{_sbindir}/zed
363 %attr(755,root,root) %{_sbindir}/zfs
364 %attr(755,root,root) %{_sbindir}/zhack
365 %attr(755,root,root) %{_sbindir}/zinject
366 %attr(755,root,root) %{_sbindir}/zpool
367 %attr(755,root,root) %{_sbindir}/zstreamdump
368 %attr(755,root,root) %{_sbindir}/ztest
369 %dir %{_sysconfdir}/zfs
370 # package *.example as %doc? (they cannot act as default configuration)
371 %{_sysconfdir}/zfs/vdev_id.conf.*.example
372 %dir %{_sysconfdir}/zfs/zed.d
373 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/*.sh
374 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/zed.rc
375 %dir %{_sysconfdir}/zfs/zpool.d
376 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zpool.d/*
377 %attr(754,root,root) /etc/rc.d/init.d/zfs-import
378 %attr(754,root,root) /etc/rc.d/init.d/zfs-mount
379 %attr(754,root,root) /etc/rc.d/init.d/zfs-share
380 %attr(754,root,root) /etc/rc.d/init.d/zfs-zed
381 %config(noreplace) %verify(not md5 mtime size) /etc/default/zfs
382 /etc/zfs/zfs-functions
383 %config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/zfs.conf
384 /etc/systemd/system-preset/50-zfs.preset
385 /lib/systemd/system-generators/zfs-mount-generator
386 %{systemdunitdir}/zfs.target
387 %{systemdunitdir}/zfs-import.target
388 %{systemdunitdir}/zfs-import-cache.service
389 %{systemdunitdir}/zfs-import-scan.service
390 %{systemdunitdir}/zfs-mount.service
391 %{systemdunitdir}/zfs-share.service
392 %{systemdunitdir}/zfs-zed.service
393 %attr(755,root,root) /lib/udev/vdev_id
394 %attr(755,root,root) /lib/udev/zvol_id
395 /lib/udev/rules.d/60-zvol.rules
396 /lib/udev/rules.d/69-vdev.rules
397 /lib/udev/rules.d/90-zfs.rules
398 %dir %{_libexecdir}/zfs
399 %dir %{_libexecdir}/zfs/zed.d
400 %attr(755,root,root) %{_libexecdir}/zfs/zed.d/*.sh
401 %dir %{_libexecdir}/zfs/zpool.d
402 %attr(755,root,root) %{_libexecdir}/zfs/zpool.d/*
404 %attr(755,root,root) %{_datadir}/zfs/*.sh
405 %{_mandir}/man1/zhack.1*
406 %{_mandir}/man1/ztest.1*
407 %{_mandir}/man5/spl-module-parameters.5*
408 %{_mandir}/man5/vdev_id.conf.5*
409 %{_mandir}/man5/zfs-events.5*
410 %{_mandir}/man5/zfs-module-parameters.5*
411 %{_mandir}/man5/zpool-features.5*
412 %{_mandir}/man8/fsck.zfs.8*
413 %{_mandir}/man8/mount.zfs.8*
414 %{_mandir}/man8/vdev_id.8*
415 %{_mandir}/man8/zdb.8*
416 %{_mandir}/man8/zed.8*
417 %{_mandir}/man8/zfs.8*
418 %{_mandir}/man8/zfs-mount-generator.8*
419 %{_mandir}/man8/zfs-program.8*
420 %{_mandir}/man8/zgenhostid.8*
421 %{_mandir}/man8/zinject.8*
422 %{_mandir}/man8/zpool.8*
423 %{_mandir}/man8/zstreamdump.8*
426 %defattr(644,root,root,755)
427 %attr(755,root,root) %{_libdir}/libnvpair.so.*.*.*
428 %attr(755,root,root) %ghost %{_libdir}/libnvpair.so.1
429 %attr(755,root,root) %{_libdir}/libuutil.so.*.*.*
430 %attr(755,root,root) %ghost %{_libdir}/libuutil.so.1
431 %attr(755,root,root) %{_libdir}/libzfs.so.*.*.*
432 %attr(755,root,root) %ghost %{_libdir}/libzfs.so.2
433 %attr(755,root,root) %{_libdir}/libzfs_core.so.*.*.*
434 %attr(755,root,root) %ghost %{_libdir}/libzfs_core.so.1
435 %attr(755,root,root) %{_libdir}/libzpool.so.*.*.*
436 %attr(755,root,root) %ghost %{_libdir}/libzpool.so.2
439 %defattr(644,root,root,755)
440 %attr(755,root,root) %{_libdir}/libnvpair.so
441 %attr(755,root,root) %{_libdir}/libuutil.so
442 %attr(755,root,root) %{_libdir}/libzfs.so
443 %attr(755,root,root) %{_libdir}/libzfs_core.so
444 %attr(755,root,root) %{_libdir}/libzpool.so
445 %{_libdir}/libnvpair.la
446 %{_libdir}/libuutil.la
448 %{_libdir}/libzfs_core.la
449 %{_libdir}/libzpool.la
450 %{_includedir}/libspl
451 %{_includedir}/libzfs
452 %{_pkgconfigdir}/libzfs.pc
453 %{_pkgconfigdir}/libzfs_core.pc
456 %defattr(644,root,root,755)
457 %{_libdir}/libnvpair.a
458 %{_libdir}/libuutil.a
460 %{_libdir}/libzfs_core.a
461 %{_libdir}/libzpool.a
464 %defattr(644,root,root,755)
465 %doc contrib/dracut/README.dracut.markdown
466 %dir %{dracutlibdir}/modules.d/02zfsexpandknowledge
467 %attr(755,root,root) %{dracutlibdir}/modules.d/02zfsexpandknowledge/module-setup.sh
468 %dir %{dracutlibdir}/modules.d/90zfs
469 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/export-zfs.sh
470 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/module-setup.sh
471 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/mount-zfs.sh
472 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/parse-zfs.sh
473 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-env-bootfs.service
474 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-generator.sh
475 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-lib.sh
476 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-load-key.sh
477 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-needshutdown.sh
480 %files -n python-pyzfs
481 %defattr(644,root,root,755)
482 %doc contrib/pyzfs/README
483 %{py_sitescriptdir}/libzfs_core
484 %{py_sitescriptdir}/pyzfs-*-py*.egg-info
488 %files -n python3-pyzfs
489 %defattr(644,root,root,755)
490 %doc contrib/pyzfs/README
491 %{py3_sitescriptdir}/libzfs_core
492 %{py3_sitescriptdir}/pyzfs-*-py*.egg-info
497 %files -n kernel-zfs-common-devel
498 %defattr(644,root,root,755)
499 %dir /usr/src/zfs-%{version}
500 /usr/src/zfs-%{version}/include
501 /usr/src/zfs-%{version}/zfs.release
502 /usr/src/zfs-%{version}/zfs_config.h