]> git.pld-linux.org Git - packages/zfs.git/blob - zfs.spec
- fix kernel module build when CONFIG_HIGHMEM is enabled
[packages/zfs.git] / zfs.spec
1 # TODO:
2 # - PLDify init script
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
7 #
8 # Conditional build:
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)
14 #
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}
21 exit 1
22 %endif
23
24 %if %{without userspace}
25 # nothing to be placed to debuginfo package
26 %define         _enable_debug_packages  0
27 %endif
28
29 %define         _duplicate_files_terminate_build        0
30
31 %define _rc     rc4
32 %define rel     0.%{_rc}.1
33 %define pname   zfs
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}
37 Version:        0.8.0
38 Release:        %{rel}%{?_pld_builder:%{?with_kernel:@%{_kernel_ver_str}}}
39 License:        CDDL
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
44 Patch0:         x32.patch
45 Patch1:         am.patch
46 Patch2:         highmem.patch
47 URL:            http://zfsonlinux.org/
48 BuildRequires:  autoconf >= 2.50
49 BuildRequires:  automake
50 BuildRequires:  libtool
51 BuildRequires:  rpmbuild(macros) >= 1.714
52 %if %{with kernel}
53 %{expand:%buildrequires_kernel kernel%%{_alt_kernel}-module-build >= 3:2.6.20.2}
54 %endif
55 %if %{with userspace}
56 BuildRequires:  libblkid-devel
57 BuildRequires:  libselinux-devel
58 BuildRequires:  libuuid-devel
59 BuildRequires:  zlib-devel
60 %if %{with python2}
61 BuildRequires:  rpm-pythonprov
62 BuildRequires:  python-modules
63 BuildRequires:  python-setuptools
64 %endif
65 %if %{with python3}
66 BuildRequires:  python3-modules
67 BuildRequires:  python3-setuptools
68 %endif
69 %endif
70 Requires:       %{pname}-libs = %{version}-%{release}
71 Obsoletes:      spl < 0.7.9-2
72 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
73
74 %define         dracutlibdir    %{_prefix}/lib/dracut
75
76 %description
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.
79
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
82 ZPL layers.
83
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.
87
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
90 SPA, DMU, ZVOL i ZPL.
91
92 %package libs
93 Summary:        ZFS on Linux libraries
94 Summary(pl.UTF-8):      Biblioteki ZFS-a dla Linuksa
95 License:        CDDL
96 Group:          Libraries
97 Requires(post,postun):  /sbin/ldconfig
98
99 %description libs
100 ZFS on Linux libraries.
101
102 %description libs -l pl.UTF-8
103 Biblioteki ZFS-a dla Linuksa.
104
105 %package devel
106 Summary:        Header files for ZFS libraries
107 Summary(pl.UTF-8):      Pliki nagłówkowe bibliotek ZFS-a
108 License:        CDDL
109 Group:          Development/Libraries
110 Requires:       %{pname}-libs = %{version}-%{release}
111 Requires:       libselinux-devel
112 Requires:       libuuid-devel
113 Requires:       zlib-devel
114
115 %description devel
116 Header files for ZFS libraries.
117
118 %description devel -l pl.UTF-8
119 Pliki nagłówkowe bibliotek ZFS-a.
120
121 %package static
122 Summary:        Static ZFS libraries
123 Summary(pl.UTF-8):      Statyczne biblioteki ZFS-a
124 License:        CDDL
125 Group:          Development/Libraries
126 Requires:       %{pname}-devel = %{version}-%{release}
127
128 %description static
129 Static ZFS libraries.
130
131 %description static -l pl.UTF-8
132 Statyczne biblioteki ZFS-a.
133
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}
139 Requires:       dracut
140
141 %description -n dracut-zfs
142 ZFS support for Dracut.
143
144 %description -n dracut-zfs -l pl.UTF-8
145 Obsługa ZFS-a dla Dracuta.
146
147 %package -n python-pyzfs
148 Summary:        Wrapper for libzfs_core C library
149 License:        Apache v2.0
150 Group:          Libraries/Python
151 Requires:       %{pname}-libs = %{version}-%{release}
152
153 %description -n python-pyzfs
154 Wrapper for libzfs_core C library.
155
156 %package -n python3-pyzfs
157 Summary:        Wrapper for libzfs_core C library
158 License:        Apache v2.0
159 Group:          Libraries/Python
160 Requires:       %{pname}-libs = %{version}-%{release}
161
162 %description -n python3-pyzfs
163 Wrapper for libzfs_core C library.
164
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
170
171 %description -n kernel-zfs-common-devel
172 ZFS Linux kernel headers common for all PLD kernel versions.
173
174 %description -n kernel-zfs-common-devel -l pl.UTF-8
175 ZFS - pliki nagłówkowe jądra Linuksa wspólne na wszystkich
176 wersji jąder PLD.
177
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}\
183 Group:          Base/Kernel\
184 Requires(post,postun):  /sbin/depmod\
185 %requires_releq_kernel\
186 Requires(postun):       %releq_kernel\
187 \
188 %description -n kernel%{_alt_kernel}-zfs\
189 ZFS Linux kernel modules.\
190 \
191 %description -n kernel%{_alt_kernel}-zfs -l pl.UTF-8\
192 ZFS - moduły jądra Linuksa.\
193 \
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\
202 \
203 %description -n kernel%{_alt_kernel}-zfs-devel\
204 ZFS Linux kernel headers configured for PLD kernel%{_alt_kernel},\
205 version %{_kernel_ver}.\
206 \
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}.\
210 \
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*\
229 \
230 %files -n kernel%{_alt_kernel}-zfs-devel\
231 %defattr(644,root,root,755)\
232 /usr/src/zfs-%{version}/%{_kernel_ver}\
233 \
234 %post   -n kernel%{_alt_kernel}-zfs\
235 %depmod %{_kernel_ver}\
236 \
237 %postun -n kernel%{_alt_kernel}-zfs\
238 %depmod %{_kernel_ver}\
239 %{nil}
240
241 %define build_kernel_pkg()\
242 %configure \\\
243         --disable-silent-rules \\\
244         --with-config="kernel" \\\
245         --with-linux=%{_kernelsrcdir}\\\
246         --with-linux-obj=%{_kernelsrcdir}\
247 \
248 %{__make} clean\
249 %{__make} %{?with_verbose:V=1}\
250 p=`pwd`\
251 %{__make} install DESTDIR=$p/installed INSTALL_MOD_DIR=misc\
252 %{nil}
253
254 %{?with_kernel:%{expand:%create_kernel_packages}}
255
256 %prep
257 %setup -q -n %{pname}-zfs-%{version}-%{_rc}
258 %patch0 -p1
259 %patch1 -p1
260 %patch2 -p1
261
262 %build
263 %{__libtoolize}
264 %{__aclocal} -I config
265 %{__autoconf}
266 %{__autoheader}
267 %{__automake}
268 %{?with_kernel:%{expand:%build_kernel_packages}}
269
270 %if %{with userspace}
271 %configure \
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
280
281 %{__make} \
282         %{?with_verbose:V=1}
283
284 %if %{with python2}
285 cd contrib/pyzfs
286 %py_build
287 cd ../..
288 %endif
289
290 %if %{with python3}
291 cd contrib/pyzfs
292 %py3_build
293 cd ../..
294 %endif
295 %endif
296
297 %install
298 rm -rf $RPM_BUILD_ROOT
299
300 %if %{with kernel}
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}
305 %endif
306
307 %if %{with userspace}
308 %{__make} install \
309         DESTDIR=$RPM_BUILD_ROOT \
310         DEFAULT_INIT_DIR=/etc/rc.d/init.d
311
312 %if %{with python2}
313 %{__rm} -rf $RPM_BUILD_ROOT%{py_sitescriptdir}
314 cd contrib/pyzfs
315 %py_install
316
317 %py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
318 %py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
319
320 %py_postclean
321 cd ../..
322 %{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/libzfs_core/test
323 %endif
324
325 %if %{with python3}
326 %{__rm} -rf $RPM_BUILD_ROOT{%{py3_sitescriptdir},/usr/local/share/python3*}
327 cd contrib/pyzfs
328 %py3_install
329 cd ../..
330 %{__rm} -r $RPM_BUILD_ROOT%{py3_sitescriptdir}/libzfs_core/test
331 %endif
332
333 install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
334 %{__mv} $RPM_BUILD_ROOT%{_npkgconfigdir}/* $RPM_BUILD_ROOT%{_pkgconfigdir}
335
336 # Debian specific stuff
337 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/initramfs-tools
338
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
343 %endif
344
345 %clean
346 rm -rf $RPM_BUILD_ROOT
347
348 %post   libs -p /sbin/ldconfig
349 %postun libs -p /sbin/ldconfig
350
351 %if %{with userspace}
352 %files
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/*
403 %dir %{_datadir}/zfs
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*
424
425 %files libs
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
437
438 %files devel
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
447 %{_libdir}/libzfs.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
454
455 %files static
456 %defattr(644,root,root,755)
457 %{_libdir}/libnvpair.a
458 %{_libdir}/libuutil.a
459 %{_libdir}/libzfs.a
460 %{_libdir}/libzfs_core.a
461 %{_libdir}/libzpool.a
462
463 %files -n dracut-zfs
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
478
479 %if %{with python2}
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
485 %endif
486
487 %if %{with python3}
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
493 %endif
494 %endif
495
496 %if %{with kernel}
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
503 %endif
This page took 0.071385 seconds and 4 git commands to generate.