1 # The following block is used to allow the source RPM to be rebuilt
2 # against specific kernels. It is preferable that rpmbuild define the
3 # require_kver, require_kdir, require_obj constants for us, but if it does not
4 # not we attempt to determine the correct values based on your distro.
6 # kdir: Full path to the kernel source headers
7 # kobj: Full path to the kernel build objects
9 # kpkg: Kernel package name
10 # kdevpkg: Kernel devel package name
11 # kverpkg: Kernel package version
13 %if %{defined require_kver}
14 %define kver
%{require_kver}
17 %if %{defined require_kdir}
18 %define kdir
%{require_kdir}
21 %if %{defined require_kobj}
22 %define kobj
%{require_kobj}
25 # Set using 'rpmbuild ... --with kernel ...', defaults to enabled.
26 %if %{defined _with_kernel}
29 %if %{defined _without_kernel}
36 # Set using 'rpmbuild ... --with kernel-debug ...', defaults to disabled.
37 %if %{defined _with_kernel_debug}
38 %define with_kernel_debug
1
40 %if %{defined _without_kernel_debug}
41 %define with_kernel_debug
0
43 %define with_kernel_debug
0
47 # Set using 'rpmbuild ... --with kernel-dkms ...', defaults to disabled.
48 %if %{defined _with_kernel_dkms}
49 %define with_kernel_dkms
1
51 %if %{defined _without_kernel_dkms}
52 %define with_kernel_dkms
0
54 %define with_kernel_dkms
0
58 # Set using 'rpmbuild ... --with debug ...', defaults to disabled.
59 %if %{defined _with_debug}
60 %define kdebug
--enable-debug
62 %if %{defined _without_debug}
63 %define kdebug
--disable
-debug
65 %define kdebug
--disable
-debug
69 # Set using 'rpmbuild ... --with debug-dmu-tx ...', defaults to disabled.
70 %if %{defined _with_debug_dmu_tx}
71 %define kdebug_dmu_tx
--enable-debug
-dmu
-tx
73 %if %{defined _without_debug_dmu_tx}
74 %define kdebug_dmu_tx
--disable
-debug
-dmu
-tx
76 %define kdebug_dmu_tx
--disable
-debug
-dmu
-tx
81 %if %{defined suse_version}
84 %define kverextra ppc64
86 %define kverextra default
89 %if %{suse_version} >= 1100
90 %define klnk
%{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
91 %define krelease
%{klnk}/include
/config
/kernel.release
93 %define klnk
%{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
94 %define krelease
%{klnk}/.kernelrelease
97 %define kver_kern %
((echo X
; %{__cat} %{krelease} 2>/dev
/null
)|tail
-1)
98 %define kver_dbug
%{nil}
100 %define kver_kern
%{kver}
101 %define kver_dbug
%{nil}
104 %if %{undefined kverextra}
105 %define kverextra %
(echo %{kver_kern} | cut
-f3
-d'
-'
)
108 %define kpkg_kern kernel
-%{kverextra}
109 %define kpkg_dbug
%{nil}
110 %define kpkg_dkms dkms
112 %define kdevpkg_kern kernel
-source
113 %define kdevpkg_dbug
%{nil}
114 %define kdevpkg_dkms dkms
116 %define kverpkg_kern %
(echo %{kver_kern} | %{__sed} -e 's/-%{kverextra}//g'
)
117 %define kverpkg_dbug
%{nil}
118 %define kverpkg_dkms
2.2.0.2
120 # The kernel and rpm versions do not strictly match under SLES11
121 # e.g. kernel version 2.6.27.19-5 != rpm version 2.6.27.19-5.1
122 %if %{suse_version} >= 1100
128 %if %{undefined kdir}
129 %define kdir_kern
%{_usrsrc}/linux-%{kverpkg_kern}
130 %define kdir_dbug
%{nil}
132 %define kdir_kern
%{kdir}
133 %define kdir_dbug
%{nil}
136 %if %{undefined kobj}
137 %define kobj_kern
%{kdir_kern}-obj/%{_target_cpu}/%{kverextra}
138 %define kobj_dbug
%{nil}
140 %define kobj_kern
%{kobj}
141 %define kobj_dbug
%{nil}
145 # RHEL 5.x/6.x, CHAOS 5.x:
146 %if %{defined el5} || %{defined el6} || %{defined ch5}
147 %if %{undefined kver}
148 %define klnk
%{_usrsrc}/kernels
/*/include
/config
149 %define kver_kern %
((echo X
; ((%{__cat} %{klnk}/kernel.release
150 2>/dev
/null
) |
%{__grep} -v debug
)) | tail
-1)
151 %define kver_dbug %
((echo X
; ((%{__cat} %{klnk}/kernel.release
152 2>/dev
/null
) |
%{__grep} debug
)) | tail
-1)
154 %define kver_kern
%{kver}
155 %define kver_dbug
%{kver}.debug
158 %define kpkg_kern kernel
159 %define kpkg_dbug kernel
-debug
160 %define kpkg_dkms dkms
162 %define kdevpkg_kern kernel
-devel
163 %define kdevpkg_dbug kernel
-debug
-devel
164 %define kdevpkg_dkms dkms
166 %define kverpkg_dkms
2.2.0.2
167 %if %{defined el6} || %{defined ch5}
168 %define kverpkg_kern %
(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g'
)
169 %define kverpkg_dbug %
(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's
/.debug
//g'
)
171 %define kverpkg_kern
%{kver_kern}
172 %define kverpkg_dbug
%{kver_dbug}
177 %if %{undefined kdir}
178 %if %{defined el6} || %{defined ch5}
179 %define kdir_kern
%{_usrsrc}/kernels/%{kver_kern}
180 %define kdir_dbug
%{_usrsrc}/kernels/%{kver_dbug}
182 %define kdir_kern
%{_usrsrc}/kernels/%{kver_kern}-%{_target_cpu}
183 %define kdir_dbug
%{_usrsrc}/kernels/%{kver_dbug}-%{_target_cpu}
186 %define kdir_kern
%{kdir}
187 %define kdir_dbug
%{kdir}.debug
190 %if %{undefined kobj}
191 %define kobj_kern
%{kdir_kern}
192 %define kobj_dbug
%{kdir_dbug}
194 %define kobj_kern
%{kobj}
195 %define kobj_dbug
%{kobj}.debug
200 %if %{defined fedora}
201 %if %{undefined kver}
202 %define klnk
%{_usrsrc}/kernels
/*/include
/config
203 %define kver_kern %
((echo X
; ((%{__cat} %{klnk}/kernel.release
204 2>/dev
/null
) |
%{__grep} -v debug
)) | tail
-1)
205 %define kver_dbug %
((echo X
; ((%{__cat} %{klnk}/kernel.release
206 2>/dev
/null
) |
%{__grep} debug
)) | tail
-1)
208 %define kver_kern
%{kver}
209 %define kver_dbug
%{kver}.debug
212 %define kpkg_kern kernel
213 %define kpkg_dbug kernel
-debug
214 %define kpkg_dkms dkms
216 %define kdevpkg_kern kernel
-devel
217 %define kdevpkg_dbug kernel
-debug
-devel
218 %define kdevpkg_dkms dkms
220 %define kverpkg_dkms
2.2.0.2
221 %define kverpkg_kern %
(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g'
)
222 %define kverpkg_dbug %
(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's
/.debug
//g'
)
226 %if %{undefined kdir}
227 %define kdir_kern
%{_usrsrc}/kernels/%{kver_kern}
228 %define kdir_dbug
%{_usrsrc}/kernels/%{kver_dbug}
230 %define kdir_kern
%{kdir}
231 %define kdir_dbug
%{kdir}.debug
234 %if %{undefined kobj}
235 %define kobj_kern
%{kdir_kern}
236 %define kobj_dbug
%{kdir_dbug}
238 %define kobj_kern
%{kobj}
239 %define kobj_dbug
%{kobj}.debug
243 # Unsupported distro:
244 %if %{undefined kver}
245 %define kver_kern %
(uname
-r
)
246 %define kver_dbug
%{nil}
248 %define kver_kern
%{kver}
249 %define kver_dbug
%{nil}
252 %define kverpkg_kern
%{kver_kern}
253 %define kverpkg_dbug
%{nil}
254 %define kverpkg_dkms
%{nil}
256 %if %{undefined kdir}
257 %define kdir_kern
/lib
/modules
/%{kver_kern}/build
258 %define kdir_dbug
%{nil}
260 %define kdir_kern
%{kdir}
261 %define kdir_dbug
%{nil}
264 %if %{undefined kobj}
265 %define kobj_kern
%{kdir_kern}
266 %define kobj_dbug
%{nil}
268 %define kobj_kern
%{kobj}
269 %define kobj_dbug
%{nil}
276 # spldir: Full path to the spl source headers
277 # splobj: Full path to the spl build objects
278 # splver: Spl version
279 # splpkg: Spl package name
280 # spldevpkg: Spl devel package name
281 # splverpkg: Spl package version
283 %if %{defined require_splver}
284 %define splver
%{require_splver}
287 %if %{defined require_spldir}
288 %define spldir
%{require_spldir}
291 %if %{defined require_splobj}
292 %define splobj
%{require_splobj}
295 %if %{undefined splver}
296 %define spllnk_kern
%{_usrsrc}/spl-*/%{kver_kern}
297 %define spllnk_dbug
%{_usrsrc}/spl-*/%{kver_dbug}
298 %define spllnk_dkms
%{_var}/lib
/dkms
/spl
/*/build
300 %define splver_kern %
((echo X
; %{__cat} %{spllnk_kern}/spl.release
301 2>/dev
/null
) | tail
-1)
302 %define splver_dbug %
((echo X
; %{__cat} %{spllnk_dbug}/spl.release
303 2>/dev
/null
) | tail
-1)
304 %define splver_dkms %
((echo X
; %{__cat} %{spllnk_dkms}/spl.release
305 2>/dev
/null
) | tail
-1)
307 %define splver_kern
%{splver}
308 %define splver_dbug
%{splver}
309 %define splver_dksm
%{splver}
312 %define splpkg_kern spl
-modules
313 %define splpkg_dbug spl
-modules
-debug
314 %define splpkg_dkms spl
-modules
-dkms
316 %define spldevpkg_kern spl
-modules
-devel
317 %define spldevpkg_dbug spl
-modules
-debug
-devel
318 %define spldevpkg_dkms spl
-modules
-dkms
320 %define splverpkg_kern
%{splver_kern}
321 %define splverpkg_dbug
%{splver_dbug}
322 %define splverpkg_dkms
%{splver_dkms}
324 %if %{undefined spldir}
325 %define spldir_kern
%{_usrsrc}/spl-%{splver_kern}/%{kver_kern}
326 %define spldir_dbug
%{_usrsrc}/spl-%{splver_dbug}/%{kver_dbug}
327 %define spldir_dkms
%{_usrsrc}/spl-%{splver_dkms}
329 %define spldir_kern
%{spldir}
330 %define spldir_dbug
%{spldir}.debug
331 %define spldir_dkms
%{spldir}
334 %if %{undefined splobj}
335 %define splobj_kern
%{spldir_kern}
336 %define splobj_dbug
%{spldir_dbug}
337 %define splobj_dkms
%{spldir_dkms}
339 %define splobj_kern
%{splobj}
340 %define splobj_dbug
%{splobj}.debug
341 %define splobj_dkms
%{splobj}
346 %define name @PACKAGE@
-modules
347 %define version @VERSION@
349 # The kernel version should only be appended to a binary RPM. When
350 # building a source RPM it must be kernel version agnostic. This means
351 # the source RPM must never specify a required kernel version, but the
352 # final RPM should be keyed to the kernel version it was built against.
353 %if %{defined build_src_rpm}
355 %define rel_kern @ZFS_META_RELEASE@
356 %define rel_dbug @ZFS_META_RELEASE@
357 %define rel_dkms @ZFS_META_RELEASE@
359 %if %{defined kpkg_kern}
360 %define req_kern
%{kpkg_kern}
362 %if %{defined kpkg_dbug}
363 %define req_dbug
%{kpkg_dbug}
365 %if %{defined kpkg_dkms}
366 %define req_dkms
%{kpkg_dkms}
369 %define splreq_kern
%{splpkg_kern}
370 %define splreq_dbug
%{splpkg_dbug}
371 %define splreq_dkms
%{splpkg_dkms}
373 %define spldevreq_kern
%{spldevpkg_kern}
374 %define spldevreq_dbug
%{spldevpkg_dbug}
375 %define spldevreq_dkms
%{spldevpkg_dkms}
379 %define relext_kern %
(echo %{kverpkg_kern} | %{__sed} -e 's
/-/_
/g'
)
380 %define relext_dbug %
(echo %{kverpkg_dbug} | %{__sed} -e 's
/-/_
/g'
)
381 %define rel_kern @ZFS_META_RELEASE@_
%{relext_kern}
382 %define rel_dbug @ZFS_META_RELEASE@_
%{relext_dbug}
383 %define rel_dkms @ZFS_META_RELEASE@
385 %if %{defined kpkg_kern}
386 %define req_kern
%{kpkg_kern} %{koppkg} %{kverpkg_kern}
388 %if %{defined kpkg_dbug}
389 %define req_dbug
%{kpkg_dbug} %{koppkg} %{kverpkg_dbug}
391 %if %{defined kpkg_dkms}
392 %define req_dkms
%{kpkg_dkms} >= %{kverpkg_dkms}
395 %define splreq_kern
%{splpkg_kern} = %{splverpkg_kern}_%{relext_kern}
396 %define splreq_dbug
%{splpkg_dbug} = %{splverpkg_dbug}_%{relext_dbug}
397 %define splreq_dkms
%{splpkg_dkms} = %{splverpkg_dkms}
399 %define spldevreq_kern
%{spldevpkg_kern} = %{splverpkg_kern}_%{relext_kern}
400 %define spldevreq_dbug
%{spldevpkg_dbug} = %{splverpkg_dbug}_%{relext_dbug}
401 %define spldevreq_dkms
%{spldevpkg_dkms} = %{splverpkg_dkms}
405 Summary: ZFS File System
406 Group: Utilities
/System
410 License: @ZFS_META_LICENSE@
411 URL: git
://github.com
/zfsonlinux
/zfs.git
412 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id} -un
)
413 Source: @PACKAGE@
-%{version}.tar.gz
417 %if %{defined req_kern}
418 Requires: %{req_kern}
420 %if %{defined kdevpkg_kern}
421 BuildRequires
: %{kdevpkg_kern}
423 %if %{defined splreq_kern}
424 Requires: %{splreq_kern}
426 %if %{defined spldevpkg_kern}
427 BuildRequires
: %{spldevpkg_kern}
429 Provides: lustre
-backend
-fs
434 The
%{name} package contains kernel modules and support utilities
for
435 the
%{name} file system.
440 Summary: ZFS File System Headers and Symbols
441 Group: Development
/Libraries
443 %if %{defined devreq_kern}
444 Requires: %{devreq_kern}
446 %if %{defined kdevpkg_kern}
447 BuildRequires
: %{kdevpkg_kern}
449 %if %{defined spldevreq_kern}
450 Requires: %{spldevreq_kern}
452 %if %{defined spldevpkg_kern}
453 BuildRequires
: %{spldevpkg_kern}
457 The
%{name}-devel package contains the kernel header files and
458 Module.symvers symbols needed
for building additional modules
462 %if %{?with_kernel_debug}
465 Summary: ZFS File System
(Debug
)
466 Group: Utilities
/System
468 %if %{defined req_dbug}
469 Requires: %{req_dbug}
471 %if %{defined kdevpkg_dbug}
472 BuildRequires
: %{kdevpkg_dbug}
474 %if %{defined splreq_dbug}
475 Requires: %{splreq_dbug}
477 %if %{defined spldevpkg_dbug}
478 BuildRequires
: %{spldevpkg_dbug}
480 Provides: lustre
-backend
-fs
483 The
%{name}-debug package contains debug kernel modules and support
484 utilities
for the
%{name} file system.
487 Summary: ZFS File System Headers and Symbols
(Debug
)
488 Group: Development
/Libraries
490 %if %{defined devreq_dbug}
491 Requires: %{devreq_dbug}
493 %if %{defined kdevpkg_dbug}
494 BuildRequires
: %{kdevpkg_dbug}
496 %if %{defined spldevreq_dbug}
497 Requires: %{spldevreq_dbug}
499 %if %{defined spldevpkg_dbug}
500 BuildRequires
: %{spldevpkg_dbug}
503 %description debug
-devel
504 The
%{name}-debug
-devel package contains the debug kernel header files
505 and Module.symvers symbols needed
for building additional modules
509 %if %{?with_kernel_dkms}
512 Summary: ZFS File System
(DKMS
)
513 Group: Utilities
/System
517 %if %{defined req_dkms}
518 Requires: %{req_dkms}
520 %if %{defined kdevpkg_dkms}
521 BuildRequires
: %{kdevpkg_dkms}
523 %if %{defined splreq_dkms}
524 Requires: %{splreq_dkms}
526 %if %{defined spldevpkg_dkms}
527 BuildRequires
: %{spldevpkg_dkms}
529 Provides: lustre
-backend
-fs
532 The
%{name}-dkms package contains the necessary pieces to build and
533 install the ZFS kernel modules with Dynamic Kernel Modules Support
539 %setup -n @PACKAGE@
-%{version}
541 rm -rf $RPM_BUILD_ROOT
545 %configure --with
-linux
=%{kdir_kern} --with-linux-obj=%{kobj_kern} \
546 --with
-spl
=%{spldir_kern} --with-spl-obj=%{splobj_kern} \
547 --with
-config
=kernel
%{kdebug} %{kdebug_dmu_tx}
549 make DESTDIR
=$RPM_BUILD_ROOT
install
552 %if %{?with_kernel_debug}
554 %configure --with
-linux
=%{kdir_dbug} --with-linux-obj=%{kobj_dbug} \
555 --with
-spl
=%{spldir_dbug} --with-spl-obj=%{splobj_dbug} \
556 --with
-config
=kernel
%{kdebug} %{kdebug_dmu_tx}
558 make DESTDIR
=$RPM_BUILD_ROOT
install
561 %if %{?with_kernel_dkms}
563 %configure %{kdebug} %{kdebug_dmu_tx}
565 mkdir -p $RPM_BUILD_ROOT
/%{_prefix}/src
566 tar
-xf @PACKAGE@
-%{version}.tar.gz -C $RPM_BUILD_ROOT/%{_prefix}/src
567 cp
-af dkms.conf $RPM_BUILD_ROOT
/%{_prefix}/src/@PACKAGE@-%{version}
572 rm -rf $RPM_BUILD_ROOT
577 %defattr(-, root
, root
)
578 /lib
/modules
/%{kver_kern}/*
581 %defattr(-,root
,root
)
582 %{_prefix}/src/*/%{kver_kern}/*
585 if [ -f
/boot
/System.map
-%{kver_kern} ]; then
586 /sbin
/depmod
-ae
-F
/boot
/System.map
-%{kver_kern} %{kver_kern} ||
exit 0
588 /sbin
/depmod
-a ||
exit 0
592 if [ -f
/boot
/System.map
-%{kver_kern} ]; then
593 /sbin
/depmod
-ae
-F
/boot
/System.map
-%{kver_kern} %{kver_kern} ||
exit 0
595 /sbin
/depmod
-a ||
exit 0
599 %if %{?with_kernel_debug}
602 %defattr(-, root
, root
)
603 /lib
/modules
/%{kver_dbug}/*
606 %defattr(-,root
,root
)
607 %{_prefix}/src/*/%{kver_dbug}/*
610 if [ -f
/boot
/System.map
-%{kver_dbug} ]; then
611 /sbin
/depmod
-ae
-F
/boot
/System.map
-%{kver_dbug} %{kver_dbug} ||
exit 0
613 /sbin
/depmod
-a ||
exit 0
617 if [ -f
/boot
/System.map
-%{kver_dbug} ]; then
618 /sbin
/depmod
-ae
-F
/boot
/System.map
-%{kver_dbug} %{kver_dbug} ||
exit 0
620 /sbin
/depmod
-a ||
exit 0
624 %if %{?with_kernel_dkms}
627 %defattr(-,root
,root
)
628 %{_prefix}/src/@PACKAGE@-%{version}/*
631 for POSTINST
in %{_prefix}/lib
/dkms
/common.postinst
; do
632 if [ -f $POSTINST
]; then
633 $POSTINST @PACKAGE@
%{version}
636 echo "WARNING
: $POSTINST does not exist."
638 echo -e "ERROR
: DKMS version is too old and @PACKAGE@ was not"
639 echo -e "built with legacy DKMS support."
640 echo -e "You must either rebuild @PACKAGE@ with legacy postinst"
641 echo -e "support or upgrade DKMS to a more current version."
646 echo -e "Uninstall of @PACKAGE@ module
(version
%{version}) beginning
:"
647 dkms remove
-m @PACKAGE@
-v
%{version} --all
--rpm_safe_upgrade