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-log ...', defaults to enabled.
70 %if %{defined _with_debug_log}
71 %define kdebug_log
--enable-debug
-log
73 %if %{defined _without_debug_log}
74 %define kdebug_log
--disable
-debug
-log
76 %define kdebug_log
--enable-debug
-log
80 # Set using 'rpmbuild ... --with debug-kmem ...', defaults to enabled.
81 %if %{defined _with_debug_kmem}
82 %define kdebug_kmem
--enable-debug
-kmem
84 %if %{defined _without_debug_kmem}
85 %define kdebug_kmem
--disable
-debug
-kmem
87 %define kdebug_kmem
--enable-debug
-kmem
91 # Set using 'rpmbuild ... --with debug-tracking ...', defaults to disabled.
92 %if %{defined _with_debug_kmem_tracking}
93 %define kdebug_kmem_tracking
--enable-debug
-kmem
-tracking
95 %if %{defined _without_debug_kmem_tracking}
96 %define kdebug_kmem_tracking
--disable
-debug
-kmem
-tracking
98 %define kdebug_kmem_tracking
--disable
-debug
-kmem
-tracking
103 %if %{defined suse_version}
104 %if %{undefined kver}
106 %define kverextra ppc64
108 %define kverextra default
111 %if %{suse_version} >= 1100
112 %define klnk
%{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
113 %define krelease
%{klnk}/include
/config
/kernel.release
115 %define klnk
%{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
116 %define krelease
%{klnk}/.kernelrelease
119 %define kver_kern %
((echo X
; %{__cat} %{krelease} 2>/dev
/null
)|tail
-1)
120 %define kver_dbug
%{nil}
122 %define kver_kern
%{kver}
123 %define kver_dbug
%{nil}
126 %if %{undefined kverextra}
127 %define kverextra %
(echo %{kver_kern} | cut
-f3
-d'
-'
)
130 %define kpkg_kern kernel
-%{kverextra}
131 %define kpkg_dbug
%{nil}
132 %define kpkg_dkms dkms
134 %define kdevpkg_kern kernel
-source
135 %define kdevpkg_dbug
%{nil}
136 %define kdevpkg_dkms dkms
138 %define kverpkg_kern %
(echo %{kver_kern} | %{__sed} -e 's/-%{kverextra}//g'
)
139 %define kverpkg_dbug
%{nil}
140 %define kverpkg_dkms
2.2.0.2
142 # The kernel and rpm versions do not strictly match under SLES11
143 # e.g. kernel version 2.6.27.19-5 != rpm version 2.6.27.19-5.1
144 %if %{suse_version} >= 1100
150 %if %{undefined kdir}
151 %define kdir_kern
%{_usrsrc}/linux-%{kverpkg_kern}
152 %define kdir_dbug
%{nil}
154 %define kdir_kern
%{kdir}
155 %define kdir_dbug
%{nil}
158 %if %{undefined kobj}
159 %define kobj_kern
%{kdir_kern}-obj/%{_target_cpu}/%{kverextra}
160 %define kobj_dbug
%{nil}
162 %define kobj_kern
%{kobj}
163 %define kobj_dbug
%{nil}
167 # RHEL 5.x/6.x, CHAOS 5.x:
168 %if %{defined el5} || %{defined el6} || %{defined ch5}
169 %if %{undefined kver}
170 %define klnk
%{_usrsrc}/kernels
/*/include
/config
171 %define kver_kern %
((echo X
; ((%{__cat} %{klnk}/kernel.release
172 2>/dev
/null
) |
%{__grep} -v debug
)) | tail
-1)
173 %define kver_dbug %
((echo X
; ((%{__cat} %{klnk}/kernel.release
174 2>/dev
/null
) |
%{__grep} debug
)) | tail
-1)
176 %define kver_kern
%{kver}
177 %define kver_dbug
%{kver}.debug
180 %define kpkg_kern kernel
181 %define kpkg_dbug kernel
-debug
182 %define kpkg_dkms dkms
184 %define kdevpkg_kern kernel
-devel
185 %define kdevpkg_dbug kernel
-debug
-devel
186 %define kdevpkg_dkms dkms
188 %define kverpkg_dkms
2.2.0.2
189 %if %{defined el6} || %{defined ch5}
190 %define kverpkg_kern %
(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g'
)
191 %define kverpkg_dbug %
(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's
/.debug
//g'
)
193 %define kverpkg_kern
%{kver_kern}
194 %define kverpkg_dbug
%{kver_dbug}
199 %if %{undefined kdir}
200 %if %{defined el6} || %{defined ch5}
201 %define kdir_kern
%{_usrsrc}/kernels/%{kver_kern}
202 %define kdir_dbug
%{_usrsrc}/kernels/%{kver_dbug}
204 %define kdir_kern
%{_usrsrc}/kernels/%{kver_kern}-%{_target_cpu}
205 %define kdir_dbug
%{_usrsrc}/kernels/%{kver_dbug}-%{_target_cpu}
208 %define kdir_kern
%{kdir}
209 %define kdir_dbug
%{kdir}.debug
212 %if %{undefined kobj}
213 %define kobj_kern
%{kdir_kern}
214 %define kobj_dbug
%{kdir_dbug}
216 %define kobj_kern
%{kobj}
217 %define kobj_dbug
%{kobj}.debug
222 %if %{defined fedora}
223 %if %{undefined kver}
224 %define klnk
%{_usrsrc}/kernels
/*/include
/config
225 %define kver_kern %
((echo X
; ((%{__cat} %{klnk}/kernel.release
226 2>/dev
/null
) |
%{__grep} -v debug
)) | tail
-1)
227 %define kver_dbug %
((echo X
; ((%{__cat} %{klnk}/kernel.release
228 2>/dev
/null
) |
%{__grep} debug
)) | tail
-1)
230 %define kver_kern
%{kver}
231 %define kver_dbug
%{kver}.debug
234 %define kpkg_kern kernel
235 %define kpkg_dbug kernel
-debug
236 %define kpkg_dkms dkms
238 %define kdevpkg_kern kernel
-devel
239 %define kdevpkg_dbug kernel
-debug
-devel
240 %define kdevpkg_dkms dkms
242 %define kverpkg_dkms
2.2.0.2
243 %define kverpkg_kern %
(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g'
)
244 %define kverpkg_dbug %
(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's
/.debug
//g'
)
248 %if %{undefined kdir}
249 %define kdir_kern
%{_usrsrc}/kernels/%{kver_kern}
250 %define kdir_dbug
%{_usrsrc}/kernels/%{kver_dbug}
252 %define kdir_kern
%{kdir}
253 %define kdir_dbug
%{kdir}.debug
256 %if %{undefined kobj}
257 %define kobj_kern
%{kdir_kern}
258 %define kobj_dbug
%{kdir_dbug}
260 %define kobj_kern
%{kobj}
261 %define kobj_dbug
%{kobj}.debug
265 # Unsupported distro:
266 %if %{undefined kver}
267 %define kver_kern %
(uname
-r
)
268 %define kver_dbug
%{nil}
270 %define kver_kern
%{kver}
271 %define kver_dbug
%{nil}
274 %define kverpkg_kern
%{kver_kern}
275 %define kverpkg_dbug
%{nil}
276 %define kverpkg_dkms
%{nil}
278 %if %{undefined kdir}
279 %define kdir_kern
/lib
/modules
/%{kver_kern}/build
280 %define kdir_dbug
%{nil}
282 %define kdir_kern
%{kdir}
283 %define kdir_dbug
%{nil}
286 %if %{undefined kobj}
287 %define kobj_kern
%{kdir_kern}
288 %define kobj_dbug
%{nil}
290 %define kobj_kern
%{kobj}
291 %define kobj_dbug
%{nil}
299 %define name @PACKAGE@
-modules
300 %define version @VERSION@
302 # The kernel version should only be appended to a binary RPM. When
303 # building a source RPM it must be kernel version agnostic. This means
304 # the source RPM must never specify a required kernel version, but the
305 # final RPM should be keyed to the kernel version it was built against.
306 %if %{defined build_src_rpm}
307 %define rel_kern @SPL_META_RELEASE@
308 %define rel_dbug @SPL_META_RELEASE@
309 %define rel_dkms @SPL_META_RELEASE@
310 %if %{defined kpkg_kern}
311 %define req_kern
%{kpkg_kern}
313 %if %{defined kpkg_dbug}
314 %define req_dbug
%{kpkg_dbug}
316 %if %{defined kpkg_dkms}
317 %define req_dkms
%{kpkg_dkms}
319 %if %{defined kdevpkg_kern}
320 %define devreq_kern
%{kdevpkg_kern}
322 %if %{defined kdevpkg_dbug}
323 %define devreq_dbug
%{kdevpkg_dbug}
326 %define relext_kern %
(echo %{kverpkg_kern} | %{__sed} -e 's
/-/_
/g'
)
327 %define relext_dbug %
(echo %{kverpkg_dbug} | %{__sed} -e 's
/-/_
/g'
)
328 %define rel_kern @SPL_META_RELEASE@_
%{relext_kern}
329 %define rel_dbug @SPL_META_RELEASE@_
%{relext_dbug}
330 %define rel_dkms @SPL_META_RELEASE@
331 %if %{defined kpkg_kern}
332 %define req_kern
%{kpkg_kern} %{koppkg} %{kverpkg_kern}
334 %if %{defined kpkg_dbug}
335 %define req_dbug
%{kpkg_dbug} %{koppkg} %{kverpkg_dbug}
337 %if %{defined kpkg_dkms}
338 %define req_dkms
%{kpkg_dkms} >= %{kverpkg_dkms}
340 %if %{defined kdevpkg_kern}
341 %define devreq_kern
%{kdevpkg_kern} %{koppkg} %{kverpkg_kern}
343 %if %{defined kdevpkg_dbug}
344 %define devreq_dbug
%{kdevpkg_dbug} %{koppkg} %{kverpkg_dbug}
349 Summary: Solaris Porting Layer Modules
350 Group: Utilities
/System
355 URL: git
://github.com
/zfsonlinux
/spl.git
356 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id} -un
)
357 Source: @PACKAGE@
-%{version}.tar.gz
361 %if %{defined req_kern}
362 Requires: %{req_kern}
364 %if %{defined kdevpkg_kern}
365 BuildRequires
: %{kdevpkg_kern}
371 The
%{name} package contains kernel modules
for emulating Solaris style
372 primatives
in the linux kernel. These include
, but are not limited to
:
373 atomic
, condvar
, debug
, error
, memory
, kobject
, kstat
, mutex
, rwlock
,
374 taskq
, thread
, time, and vnode APIs.
379 Summary: Solaris Porting Layer Headers and Symbols
380 Group: Development
/Libraries
382 %if %{defined devreq_kern}
383 Requires: %{devreq_kern}
385 %if %{defined kdevpkg_kern}
386 BuildRequires
: %{kdevpkg_kern}
390 The
%{name}-devel package contains the header files and Module{s}.symvers
391 symbols needed
for building additional modules which use
%{name}.
394 %if %{?with_kernel_debug}
397 Summary: Solaris Porting Layer Debug Modules
398 Group: Utilities
/System
400 %if %{defined req_dbug}
401 Requires: %{req_dbug}
403 %if %{defined kdevpkg_dbug}
404 BuildRequires
: %{kdevpkg_dbug}
408 The
%{name}-debug package contains kernel modules
for emulating Solaris
409 style primatives
in the linux kernel. These include
, but are not limited
410 to
: atomic
, condvar
, debug
, error
, memory
, kobject
, kstat
, mutex
,
411 rwlock
, taskq
, thread
, time, and vnode APIs.
414 Summary: Solaris Porting Layer Debug Headers and Symbols
415 Group: Development
/Libraries
417 %if %{defined devreq_dbug}
418 Requires: %{devreq_dbug}
420 %if %{defined kdevpkg_dbug}
421 BuildRequires
: %{kdevpkg_dbug}
424 %description debug
-devel
425 The
%{name}-debug
-devel package contains the header files and
426 Module
{s
}.symvers symbols needed
for building additional modules which
430 %if %{?with_kernel_dkms}
433 Summary: Solaris Porting Layer Modules
(DKMS
)
434 Group: Utilities
/System
438 %if %{defined req_dkms}
439 Requires: %{req_dkms}
441 %if %{defined kdevpkg_dkms}
442 BuildRequires
: %{kdevpkg_dkms}
446 The
%{name}-dkms package contains all the necessary pieces to build and
447 install Solaris Porting Layer
(SPL
) kernel modules with Dynamic Kernel
448 Modules Support
(DKMS
). The SPL modules emulate Solaris style primatives
449 in the the linux kernel. They include
, but are not limited to
: atomic
,
450 condvar
, debug
, error
, memory
, kobject
, kstat
, mutex
, rwlock
, taskq
,
451 thread
, time, and vnode APIs.
456 %setup -n @PACKAGE@
-%{version}
458 rm -rf $RPM_BUILD_ROOT
462 %configure --with
-config
=kernel \
463 --with
-linux
=%{kdir_kern} --with-linux-obj=%{kobj_kern} \
464 %{kdebug} %{kdebug_log} %{kdebug_kmem} %{kdebug_kmem_tracking}
466 make DESTDIR
=$RPM_BUILD_ROOT
install
469 %if %{?with_kernel_debug}
471 %configure --with
-config
=kernel \
472 --with
-linux
=%{kdir_dbug} --with-linux-obj=%{kobj_dbug} \
473 %{kdebug} %{kdebug_log} %{kdebug_kmem} %{kdebug_kmem_tracking}
475 make DESTDIR
=$RPM_BUILD_ROOT
install
478 %if %{?with_kernel_dkms}
480 %configure --with
-config
=kernel \
481 %{kdebug} %{kdebug_log} %{kdebug_kmem} %{kdebug_kmem_tracking}
483 mkdir -p $RPM_BUILD_ROOT
/%{_prefix}/src
484 tar
-xf @PACKAGE@
-%{version}.tar.gz -C $RPM_BUILD_ROOT/%{_prefix}/src
485 cp
-af dkms.conf $RPM_BUILD_ROOT
/%{_prefix}/src/@PACKAGE@-%{version}
490 rm -rf $RPM_BUILD_ROOT
495 %defattr(-, root
, root
)
496 /lib
/modules
/%{kver_kern}/*
499 %defattr(-,root
,root
)
500 %{_prefix}/src/*/%{kver_kern}
503 if [ -f
/boot
/System.map
-%{kver_kern} ]; then
504 /sbin
/depmod
-ae
-F
/boot
/System.map
-%{kver_kern} %{kver_kern} ||
exit 0
506 /sbin
/depmod
-a ||
exit 0
510 if [ -f
/boot
/System.map
-%{kver_kern} ]; then
511 /sbin
/depmod
-ae
-F
/boot
/System.map
-%{kver_kern} %{kver_kern} ||
exit 0
513 /sbin
/depmod
-a ||
exit 0
517 rmdir %{_prefix}/src/@PACKAGE@-%{version}-@SPL_META_RELEASE@
2>/dev
/null
521 %if %{?with_kernel_debug}
524 %defattr(-, root
, root
)
525 /lib
/modules
/%{kver_dbug}/*
528 %defattr(-,root
,root
)
529 %{_prefix}/src/*/%{kver_dbug}
532 if [ -f
/boot
/System.map
-%{kver_dbug} ]; then
533 /sbin
/depmod
-ae
-F
/boot
/System.map
-%{kver_dbug} %{kver_dbug} ||
exit 0
535 /sbin
/depmod
-a ||
exit 0
539 if [ -f
/boot
/System.map
-%{kver_dbug} ]; then
540 /sbin
/depmod
-ae
-F
/boot
/System.map
-%{kver_dbug} %{kver_dbug} ||
exit 0
542 /sbin
/depmod
-a ||
exit 0
546 rmdir %{_prefix}/src/@PACKAGE@-%{version}-@SPL_META_RELEASE@
2>/dev
/null
550 %if %{?with_kernel_dkms}
553 %defattr(-,root
,root
)
554 %{_prefix}/src/@PACKAGE@-%{version}
557 for POSTINST
in %{_prefix}/lib
/dkms
/common.postinst
; do
558 if [ -f $POSTINST
]; then
559 $POSTINST @PACKAGE@
%{version}
562 echo "WARNING
: $POSTINST does not exist."
564 echo -e "ERROR
: DKMS version is too old and @PACKAGE@ was not"
565 echo -e "built with legacy DKMS support."
566 echo -e "You must either rebuild @PACKAGE@ with legacy postinst"
567 echo -e "support or upgrade DKMS to a more current version."
572 echo -e "Uninstall of @PACKAGE@ module
(version
%{version}) beginning
:"
573 dkms remove
-m @PACKAGE@
-v
%{version} --all
--rpm_safe_upgrade