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 python # CPython module
12 %bcond_with verbose # verbose build (V=1)
14 # The goal here is to have main, userspace, package built once with
15 # simple release number, and only rebuild kernel packages with kernel
16 # version as part of release number, without the need to bump release
17 # with every kernel change.
18 %if 0%{?_pld_builder:1} && %{with kernel} && %{with userspace}
19 %{error:kernel and userspace cannot be built at the same time on PLD builders}
23 %if %{without userspace}
24 # nothing to be placed to debuginfo package
25 %define _enable_debug_packages 0
28 %define _duplicate_files_terminate_build 0
32 Summary: Native Linux port of the ZFS filesystem
33 Summary(pl.UTF-8): Natywny linuksowy port systemu plików ZFS
34 Name: %{pname}%{?_pld_builder:%{?with_kernel:-kernel}}%{_alt_kernel}
35 %define gitrev 1511_g4338c5c06
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: %{pname}-%{version}-%{gitrev}.tar.gz
42 # Source0-md5: ceb367d302942e2291f1ad86c1e0d2be
45 URL: http://zfsonlinux.org/
46 BuildRequires: autoconf >= 2.50
47 BuildRequires: automake
48 BuildRequires: libtool
49 BuildRequires: rpmbuild(macros) >= 1.714
51 %{expand:%buildrequires_kernel kernel%%{_alt_kernel}-module-build >= 3:2.6.20.2}
54 BuildRequires: libblkid-devel
55 BuildRequires: libselinux-devel
56 BuildRequires: libuuid-devel
57 BuildRequires: zlib-devel
59 BuildRequires: rpm-pythonprov
60 BuildRequires: python-modules
61 BuildRequires: python-setuptools
64 Requires: %{pname}-libs = %{version}-%{release}
65 Obsoletes: spl < 0.7.9-2
66 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
68 %define dracutlibdir %{_prefix}/lib/dracut
71 ZFS is an advanced file system and volume manager which was originally
72 developed for Solaris and is now maintained by the Illumos community.
74 ZFS on Linux, which is also known as ZoL, is currently feature
75 complete. It includes fully functional and stable SPA, DMU, ZVOL, and
78 %description -l pl.UTF-8
79 ZFS to zaawansowany system plików i zarządca wolumenów, oryginalnie
80 stworzony dla Solarisa, obecnie utrzymywany przez społeczność Illumos.
82 ZFS dla Linuksa, znany takża jako ZoL (ZFS on Linux), jest obecnie w
83 pełni funkcjonalny. Zawiera w pełni funkcjonalne i stabilne warstwy
87 Summary: ZFS on Linux libraries
88 Summary(pl.UTF-8): Biblioteki ZFS-a dla Linuksa
91 Requires(post,postun): /sbin/ldconfig
94 ZFS on Linux libraries.
96 %description libs -l pl.UTF-8
97 Biblioteki ZFS-a dla Linuksa.
100 Summary: Header files for ZFS libraries
101 Summary(pl.UTF-8): Pliki nagłówkowe bibliotek ZFS-a
103 Group: Development/Libraries
104 Requires: %{pname}-libs = %{version}-%{release}
105 Requires: libselinux-devel
106 Requires: libuuid-devel
110 Header files for ZFS libraries.
112 %description devel -l pl.UTF-8
113 Pliki nagłówkowe bibliotek ZFS-a.
116 Summary: Static ZFS libraries
117 Summary(pl.UTF-8): Statyczne biblioteki ZFS-a
119 Group: Development/Libraries
120 Requires: %{pname}-devel = %{version}-%{release}
123 Static ZFS libraries.
125 %description static -l pl.UTF-8
126 Statyczne biblioteki ZFS-a.
128 %package -n dracut-zfs
129 Summary: ZFS support for Dracut
130 Summary(pl.UTF-8): Obsługa ZFS-a dla Dracuta
131 Group: Applications/System
132 Requires: %{pname} = %{version}-%{release}
135 %description -n dracut-zfs
136 ZFS support for Dracut.
138 %description -n dracut-zfs -l pl.UTF-8
139 Obsługa ZFS-a dla Dracuta.
141 %package -n python-pyzfs
142 Summary: Wrapper for libzfs_core C library
144 Group: Libraries/Python
145 Requires: %{pname}-libs = %{version}-%{release}
147 %description -n python-pyzfs
148 Wrapper for libzfs_core C library.
150 %package -n kernel-zfs-common-devel
151 Summary: ZFS Linux kernel headers
152 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa
153 Group: Development/Building
154 Obsoletes: kernel-spl-common-devel < 0.7.9-2
156 %description -n kernel-zfs-common-devel
157 ZFS Linux kernel headers common for all PLD kernel versions.
159 %description -n kernel-zfs-common-devel -l pl.UTF-8
160 ZFS - pliki nagłówkowe jądra Linuksa wspólne na wszystkich
163 %define kernel_pkg()\
164 %package -n kernel%{_alt_kernel}-zfs\
165 Summary: ZFS Linux kernel modules\
166 Summary(pl.UTF-8): ZFS - moduły jądra Linuksa\
167 Release: %{rel}@%{_kernel_ver_str}\
169 Requires(post,postun): /sbin/depmod\
170 %requires_releq_kernel\
171 Requires(postun): %releq_kernel\
173 %description -n kernel%{_alt_kernel}-zfs\
174 ZFS Linux kernel modules.\
176 %description -n kernel%{_alt_kernel}-zfs -l pl.UTF-8\
177 ZFS - moduły jądra Linuksa.\
179 %package -n kernel%{_alt_kernel}-zfs-devel\
180 Summary: ZFS Linux kernel headers\
181 Summary(pl.UTF-8): ZFS - pliki nagłówkowe jądra Linuksa\
182 Release: %{rel}@%{_kernel_ver_str}\
183 Group: Development/Building\
184 Requires: kernel%{_alt_kernel}-headers\
185 Requires: kernel-zfs-common-devel\
186 Obsoletes: kernel-spl-devel < 0.7.9-2\
188 %description -n kernel%{_alt_kernel}-zfs-devel\
189 ZFS Linux kernel headers configured for PLD kernel%{_alt_kernel},\
190 version %{_kernel_ver}.\
192 %description -n kernel%{_alt_kernel}-zfs-devel -l pl.UTF-8\
193 ZFS - pliki nagłówkowe jądra Linuksa skonfigurowane dla jądra PLD z\
194 pakietu kernel%{_alt_kernel} w wersji %{_kernel_ver}.\
196 %files -n kernel%{_alt_kernel}-zfs\
197 %defattr(644,root,root,755)\
198 %dir /lib/modules/%{_kernel_ver}/misc/lua\
199 /lib/modules/%{_kernel_ver}/misc/lua/zlua.ko*\
200 %dir /lib/modules/%{_kernel_ver}/misc/avl\
201 /lib/modules/%{_kernel_ver}/misc/avl/zavl.ko*\
202 %dir /lib/modules/%{_kernel_ver}/misc/icp\
203 /lib/modules/%{_kernel_ver}/misc/icp/icp.ko*\
204 %dir /lib/modules/%{_kernel_ver}/misc/nvpair\
205 /lib/modules/%{_kernel_ver}/misc/nvpair/znvpair.ko*\
206 %dir /lib/modules/%{_kernel_ver}/misc/spl\
207 /lib/modules/%{_kernel_ver}/misc/spl/spl.ko*\
208 %dir /lib/modules/%{_kernel_ver}/misc/unicode\
209 /lib/modules/%{_kernel_ver}/misc/unicode/zunicode.ko*\
210 %dir /lib/modules/%{_kernel_ver}/misc/zcommon\
211 /lib/modules/%{_kernel_ver}/misc/zcommon/zcommon.ko*\
212 %dir /lib/modules/%{_kernel_ver}/misc/zfs\
213 /lib/modules/%{_kernel_ver}/misc/zfs/zfs.ko*\
215 %files -n kernel%{_alt_kernel}-zfs-devel\
216 %defattr(644,root,root,755)\
217 /usr/src/zfs-%{version}/%{_kernel_ver}\
219 %post -n kernel%{_alt_kernel}-zfs\
220 %depmod %{_kernel_ver}\
222 %postun -n kernel%{_alt_kernel}-zfs\
223 %depmod %{_kernel_ver}\
226 %define build_kernel_pkg()\
228 --disable-silent-rules \\\
229 --with-config="kernel" \\\
230 --with-linux=%{_kernelsrcdir}\\\
231 --with-linux-obj=%{_kernelsrcdir}\
234 %{__make} %{?with_verbose:V=1}\
236 %{__make} install DESTDIR=$p/installed INSTALL_MOD_DIR=misc\
239 %{?with_kernel:%{expand:%create_kernel_packages}}
242 %setup -q -n %{pname}-%{version}
248 %{__aclocal} -I config
252 %{?with_kernel:%{expand:%build_kernel_packages}}
254 %if %{with userspace}
256 --disable-silent-rules \
257 --with-config="user" \
258 --with-linux=%{_kernelsrcdir} \
259 --with-systemdunitdir=%{systemdunitdir} \
260 --with-systemdpresetdir=/etc/systemd/system-preset \
261 --with-systemdmodulesloaddir=/etc/modules-load.d \
262 --with-systemdgeneratordir=/lib/systemd/system-generators \
263 --with-udevdir=/lib/udev
270 %py_build %{?with_tests:test}
276 rm -rf $RPM_BUILD_ROOT
279 install -d $RPM_BUILD_ROOT
280 cp -a installed/* $RPM_BUILD_ROOT
281 # Drop unneeded spl compat links
282 %{__rm} -r $RPM_BUILD_ROOT/usr/src/spl-%{version}
285 %if %{with userspace}
287 DESTDIR=$RPM_BUILD_ROOT \
288 DEFAULT_INIT_DIR=/etc/rc.d/init.d
291 %{__rm} -rf $RPM_BUILD_ROOT%{py_sitescriptdir}
295 %py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
296 %py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
300 %{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/libzfs_core/test
303 install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
304 %{__mv} $RPM_BUILD_ROOT%{_npkgconfigdir}/* $RPM_BUILD_ROOT%{_pkgconfigdir}
306 # Debian specific stuff
307 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/initramfs-tools
309 # Package these? These are integration tests of the implementation.
310 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/zfs/{zfs-tests,test-runner,runfiles}
311 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{raidz_test,test-runner}.1*
312 %{__rm} $RPM_BUILD_ROOT%{_bindir}/raidz_test
316 rm -rf $RPM_BUILD_ROOT
318 %post libs -p /sbin/ldconfig
319 %postun libs -p /sbin/ldconfig
321 %if %{with userspace}
323 %defattr(644,root,root,755)
324 %doc AUTHORS COPYRIGHT LICENSE README.md
325 %attr(755,root,root) /sbin/mount.zfs
326 %attr(755,root,root) %{_bindir}/arc_summary.py
327 %attr(755,root,root) %{_bindir}/arcstat.py
328 %attr(755,root,root) %{_bindir}/dbufstat.py
329 %attr(755,root,root) %{_bindir}/zgenhostid
330 %attr(755,root,root) %{_sbindir}/fsck.zfs
331 %attr(755,root,root) %{_sbindir}/zdb
332 %attr(755,root,root) %{_sbindir}/zed
333 %attr(755,root,root) %{_sbindir}/zfs
334 %attr(755,root,root) %{_sbindir}/zhack
335 %attr(755,root,root) %{_sbindir}/zinject
336 %attr(755,root,root) %{_sbindir}/zpool
337 %attr(755,root,root) %{_sbindir}/zstreamdump
338 %attr(755,root,root) %{_sbindir}/ztest
339 %dir %{_sysconfdir}/zfs
340 # package *.example as %doc? (they cannot act as default configuration)
341 %{_sysconfdir}/zfs/vdev_id.conf.*.example
342 %dir %{_sysconfdir}/zfs/zed.d
343 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/*.sh
344 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zed.d/zed.rc
345 %dir %{_sysconfdir}/zfs/zpool.d
346 %attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zfs/zpool.d/*
347 %attr(754,root,root) /etc/rc.d/init.d/zfs-import
348 %attr(754,root,root) /etc/rc.d/init.d/zfs-mount
349 %attr(754,root,root) /etc/rc.d/init.d/zfs-share
350 %attr(754,root,root) /etc/rc.d/init.d/zfs-zed
351 %config(noreplace) %verify(not md5 mtime size) /etc/default/zfs
352 /etc/zfs/zfs-functions
353 %config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/zfs.conf
354 /etc/systemd/system-preset/50-zfs.preset
355 /lib/systemd/system-generators/zfs-mount-generator
356 %{systemdunitdir}/zfs.target
357 %{systemdunitdir}/zfs-import.target
358 %{systemdunitdir}/zfs-import-cache.service
359 %{systemdunitdir}/zfs-import-scan.service
360 %{systemdunitdir}/zfs-mount.service
361 %{systemdunitdir}/zfs-share.service
362 %{systemdunitdir}/zfs-zed.service
363 %attr(755,root,root) /lib/udev/vdev_id
364 %attr(755,root,root) /lib/udev/zvol_id
365 /lib/udev/rules.d/60-zvol.rules
366 /lib/udev/rules.d/69-vdev.rules
367 /lib/udev/rules.d/90-zfs.rules
368 %dir %{_libexecdir}/zfs
369 %dir %{_libexecdir}/zfs/zed.d
370 %attr(755,root,root) %{_libexecdir}/zfs/zed.d/*.sh
371 %dir %{_libexecdir}/zfs/zpool.d
372 %attr(755,root,root) %{_libexecdir}/zfs/zpool.d/*
374 %attr(755,root,root) %{_datadir}/zfs/*.sh
375 %{_mandir}/man1/zhack.1*
376 %{_mandir}/man1/ztest.1*
377 %{_mandir}/man5/spl-module-parameters.5*
378 %{_mandir}/man5/vdev_id.conf.5*
379 %{_mandir}/man5/zfs-events.5*
380 %{_mandir}/man5/zfs-module-parameters.5*
381 %{_mandir}/man5/zpool-features.5*
382 %{_mandir}/man8/fsck.zfs.8*
383 %{_mandir}/man8/mount.zfs.8*
384 %{_mandir}/man8/vdev_id.8*
385 %{_mandir}/man8/zdb.8*
386 %{_mandir}/man8/zed.8*
387 %{_mandir}/man8/zfs.8*
388 %{_mandir}/man8/zfs-mount-generator.8*
389 %{_mandir}/man8/zfs-program.8*
390 %{_mandir}/man8/zgenhostid.8*
391 %{_mandir}/man8/zinject.8*
392 %{_mandir}/man8/zpool.8*
393 %{_mandir}/man8/zstreamdump.8*
396 %defattr(644,root,root,755)
397 %attr(755,root,root) %{_libdir}/libnvpair.so.*.*.*
398 %attr(755,root,root) %ghost %{_libdir}/libnvpair.so.1
399 %attr(755,root,root) %{_libdir}/libuutil.so.*.*.*
400 %attr(755,root,root) %ghost %{_libdir}/libuutil.so.1
401 %attr(755,root,root) %{_libdir}/libzfs.so.*.*.*
402 %attr(755,root,root) %ghost %{_libdir}/libzfs.so.2
403 %attr(755,root,root) %{_libdir}/libzfs_core.so.*.*.*
404 %attr(755,root,root) %ghost %{_libdir}/libzfs_core.so.1
405 %attr(755,root,root) %{_libdir}/libzpool.so.*.*.*
406 %attr(755,root,root) %ghost %{_libdir}/libzpool.so.2
409 %defattr(644,root,root,755)
410 %attr(755,root,root) %{_libdir}/libnvpair.so
411 %attr(755,root,root) %{_libdir}/libuutil.so
412 %attr(755,root,root) %{_libdir}/libzfs.so
413 %attr(755,root,root) %{_libdir}/libzfs_core.so
414 %attr(755,root,root) %{_libdir}/libzpool.so
415 %{_libdir}/libnvpair.la
416 %{_libdir}/libuutil.la
418 %{_libdir}/libzfs_core.la
419 %{_libdir}/libzpool.la
420 %{_includedir}/libspl
421 %{_includedir}/libzfs
422 %{_pkgconfigdir}/libzfs.pc
423 %{_pkgconfigdir}/libzfs_core.pc
426 %defattr(644,root,root,755)
427 %{_libdir}/libnvpair.a
428 %{_libdir}/libuutil.a
430 %{_libdir}/libzfs_core.a
431 %{_libdir}/libzpool.a
434 %defattr(644,root,root,755)
435 %doc contrib/dracut/README.dracut.markdown
436 %dir %{dracutlibdir}/modules.d/02zfsexpandknowledge
437 %attr(755,root,root) %{dracutlibdir}/modules.d/02zfsexpandknowledge/module-setup.sh
438 %dir %{dracutlibdir}/modules.d/90zfs
439 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/export-zfs.sh
440 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/module-setup.sh
441 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/mount-zfs.sh
442 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/parse-zfs.sh
443 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-generator.sh
444 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-lib.sh
445 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-load-key.sh
446 %attr(755,root,root) %{dracutlibdir}/modules.d/90zfs/zfs-needshutdown.sh
449 %files -n python-pyzfs
450 %defattr(644,root,root,755)
451 %doc contrib/pyzfs/README
452 %{py_sitescriptdir}/libzfs_core
453 %{py_sitescriptdir}/pyzfs-*-py*.egg-info
458 %files -n kernel-zfs-common-devel
459 %defattr(644,root,root,755)
460 %dir /usr/src/zfs-%{version}
461 /usr/src/zfs-%{version}/include
462 /usr/src/zfs-%{version}/zfs.release
463 /usr/src/zfs-%{version}/zfs_config.h