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 debug ...', defaults to disabled.
48 %if %{defined _with_debug}
49 %define kdebug --enable-debug
51 %if %{defined _without_debug}
52 %define kdebug --disable-debug
54 %define kdebug --disable-debug
58 # Set using 'rpmbuild ... --with debug-dmu-tx ...', defaults to disabled.
59 %if %{defined _with_debug_dmu_tx}
60 %define kdebug_dmu_tx --enable-debug-dmu-tx
62 %if %{defined _without_debug_dmu_tx}
63 %define kdebug_dmu_tx --disable-debug-dmu-tx
65 %define kdebug_dmu_tx --disable-debug-dmu-tx
70 %if %{defined suse_version}
73 %define kverextra ppc64
75 %define kverextra default
78 %if %{suse_version} >= 1100
79 %define klnk %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
80 %define krelease %{klnk}/include/config/kernel.release
82 %define klnk %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
83 %define krelease %{klnk}/.kernelrelease
86 %define kver_kern %((echo X; %{__cat} %{krelease} 2>/dev/null)|tail -1)
87 %define kver_dbug %{nil}
89 %define kver_kern %{kver}
90 %define kver_dbug %{nil}
93 %if %{undefined kverextra}
94 %define kverextra %(echo %{kver_kern} | cut -f3 -d'-')
97 %define kpkg_kern kernel-%{kverextra}
98 %define kpkg_dbug %{nil}
100 %define kdevpkg_kern kernel-source
101 %define kdevpkg_dbug %{nil}
103 %define kverpkg_kern %(echo %{kver_kern} | %{__sed} -e 's/-%{kverextra}//g')
104 %define kverpkg_dbug %{nil}
106 # The kernel and rpm versions do not strictly match under SLES11
107 # e.g. kernel version 2.6.27.19-5 != rpm version 2.6.27.19-5.1
108 %if %{suse_version} >= 1100
114 %if %{undefined kdir}
115 %define kdir_kern %{_usrsrc}/linux-%{kverpkg_kern}
116 %define kdir_dbug %{nil}
118 %define kdir_kern %{kdir}
119 %define kdir_dbug %{nil}
122 %if %{undefined kobj}
123 %define kobj_kern %{kdir_kern}-obj/%{_target_cpu}/%{kverextra}
124 %define kobj_dbug %{nil}
126 %define kobj_kern %{kobj}
127 %define kobj_dbug %{nil}
133 %if %{undefined kver}
134 %define klnk %{_usrsrc}/kernels/*/include/config
135 %define kver_kern %((echo X; %{__cat} %{klnk}/kernel.release
136 2>/dev/null) | tail -1)
137 %define kver_dbug %{nil}
139 %define kver_kern %{kver}
140 %define kver_dbug %{nil}
143 %define kpkg_kern chaos-kernel
144 %define kpkg_dbug %{nil}
146 %define kdevpkg_kern chaos-kernel-devel
147 %define kdevpkg_dbug %{nil}
149 %define kverpkg_kern %{kver_kern}
150 %define kverpkg_dbug %{nil}
154 %if %{undefined kdir}
155 %define kdir_kern %{_usrsrc}/kernels/%{kver_kern}
156 %define kdir_dbug %{nil}
158 %define kdir_kern %{kdir}
159 %define kdir_dbug %{nil}
162 %if %{undefined kobj}
163 %define kobj_kern %{kdir_kern}
164 %define kobj_dbug %{nil}
166 %define kobj_kern %{kobj}
167 %define kobj_dbug %{nil}
171 # RHEL 5.x/6.x, CHAOS 5.x:
172 %if %{defined el5} || %{defined el6} || %{defined ch5}
173 %if %{undefined kver}
174 %define klnk %{_usrsrc}/kernels/*/include/config
175 %define kver_kern %((echo X; ((%{__cat} %{klnk}/kernel.release
176 2>/dev/null) | %{__grep} -v debug)) | tail -1)
177 %define kver_dbug %((echo X; ((%{__cat} %{klnk}/kernel.release
178 2>/dev/null) | %{__grep} debug)) | tail -1)
180 %define kver_kern %{kver}
181 %define kver_dbug %{kver}.debug
184 %define kpkg_kern kernel
185 %define kpkg_dbug kernel-debug
187 %define kdevpkg_kern kernel-devel
188 %define kdevpkg_dbug kernel-debug-devel
190 %if %{defined el6} || %{defined ch5}
191 %define kverpkg_kern %(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g')
192 %define kverpkg_dbug %(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's/.debug//g')
194 %define kverpkg_kern %{kver_kern}
195 %define kverpkg_dbug %{kver_dbug}
200 %if %{undefined kdir}
201 %if %{defined el6} || %{defined ch5}
202 %define kdir_kern %{_usrsrc}/kernels/%{kver_kern}
203 %define kdir_dbug %{_usrsrc}/kernels/%{kver_dbug}
205 %define kdir_kern %{_usrsrc}/kernels/%{kver_kern}-%{_target_cpu}
206 %define kdir_dbug %{_usrsrc}/kernels/%{kver_dbug}-%{_target_cpu}
209 %define kdir_kern %{kdir}
210 %define kdir_dbug %{kdir}.debug
213 %if %{undefined kobj}
214 %define kobj_kern %{kdir_kern}
215 %define kobj_dbug %{kdir_dbug}
217 %define kobj_kern %{kobj}
218 %define kobj_dbug %{kobj}.debug
223 %if %{defined fedora}
224 %if %{undefined kver}
225 %define klnk %{_usrsrc}/kernels/*/include/config
226 %define kver_kern %((echo X; ((%{__cat} %{klnk}/kernel.release
227 2>/dev/null) | %{__grep} -v debug)) | tail -1)
228 %define kver_dbug %((echo X; ((%{__cat} %{klnk}/kernel.release
229 2>/dev/null) | %{__grep} debug)) | tail -1)
231 %define kver_kern %{kver}
232 %define kver_dbug %{kver}.debug
235 %define kpkg_kern kernel
236 %define kpkg_dbug kernel-debug
238 %define kdevpkg_kern kernel-devel
239 %define kdevpkg_dbug kernel-debug-devel
241 %define kverpkg_kern %(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g')
242 %define kverpkg_dbug %(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's/.debug//g')
246 %if %{undefined kdir}
247 %define kdir_kern %{_usrsrc}/kernels/%{kver_kern}
248 %define kdir_dbug %{_usrsrc}/kernels/%{kver_dbug}
250 %define kdir_kern %{kdir}
251 %define kdir_dbug %{kdir}.debug
254 %if %{undefined kobj}
255 %define kobj_kern %{kdir_kern}
256 %define kobj_dbug %{kdir_dbug}
258 %define kobj_kern %{kobj}
259 %define kobj_dbug %{kobj}.debug
263 # Unsupported distro:
264 %if %{undefined kver}
265 %define kver_kern %(uname -r)
266 %define kver_dbug %{nil}
268 %define kver_kern %{kver}
269 %define kver_dbug %{nil}
272 %define kverpkg_kern %{kver_kern}
273 %define kverpkg_dbug %{nil}
275 %if %{undefined kdir}
276 %define kdir_kern /lib/modules/%{kver_kern}/build
277 %define kdir_dbug %{nil}
279 %define kdir_kern %{kdir}
280 %define kdir_dbug %{nil}
283 %if %{undefined kobj}
284 %define kobj_kern %{kdir_kern}
285 %define kobj_dbug %{nil}
287 %define kobj_kern %{kobj}
288 %define kobj_dbug %{nil}
296 # spldir: Full path to the spl source headers
297 # splobj: Full path to the spl build objects
298 # splver: Spl version
299 # splpkg: Spl package name
300 # spldevpkg: Spl devel package name
301 # splverpkg: Spl package version
303 %if %{defined require_splver}
304 %define splver %{require_splver}
307 %if %{defined require_spldir}
308 %define spldir %{require_spldir}
311 %if %{defined require_splobj}
312 %define splobj %{require_splobj}
315 %if %{undefined splver}
316 %define spllnk_kern %{_usrsrc}/spl-*/%{kver_kern}
317 %define spllnk_dbug %{_usrsrc}/spl-*/%{kver_dbug}
319 %define splver_kern %((echo X; %{__cat} %{spllnk_kern}/spl.release
320 2>/dev/null) | tail -1)
321 %define splver_dbug %((echo X; %{__cat} %{spllnk_dbug}/spl.release
322 2>/dev/null) | tail -1)
324 %define splver_kern %{splver}
325 %define splver_dbug %{splver}
328 %define splpkg_kern spl-modules
329 %define splpkg_dbug spl-modules-debug
331 %define spldevpkg_kern spl-modules-devel
332 %define spldevpkg_dbug spl-modules-debug-devel
334 %define splverpkg_kern %{splver_kern}
335 %define splverpkg_dbug %{splver_dbug}
337 %if %{undefined spldir}
338 %define spldir_kern %{_usrsrc}/spl-%{splver_kern}/%{kver_kern}
339 %define spldir_dbug %{_usrsrc}/spl-%{splver_dbug}/%{kver_dbug}
341 %define spldir_kern %{spldir}
342 %define spldir_dbug %{spldir}.debug
345 %if %{undefined splobj}
346 %define splobj_kern %{spldir_kern}
347 %define splobj_dbug %{spldir_dbug}
349 %define splobj_kern %{splobj}
350 %define splobj_dbug %{splobj}.debug
355 %define name @PACKAGE@-modules
356 %define version @VERSION@
358 # The kernel version should only be appended to a binary RPM. When
359 # building a source RPM it must be kernel version agnostic. This means
360 # the source RPM must never specify a required kernel version, but the
361 # final RPM should be keyed to the kernel version it was built against.
362 %if %{defined build_src_rpm}
364 %define rel_kern @ZFS_META_RELEASE@
365 %define rel_dbug @ZFS_META_RELEASE@
367 %if %{defined kpkg_kern}
368 %define req_kern %{kpkg_kern}
370 %if %{defined kpkg_dbug}
371 %define req_dbug %{kpkg_dbug}
374 %define splreq_kern %{splpkg_kern}
375 %define splreq_dbug %{splpkg_dbug}
377 %define spldevreq_kern %{spldevpkg_kern}
378 %define spldevreq_dbug %{spldevpkg_dbug}
382 %define relext_kern %(echo %{kverpkg_kern} | %{__sed} -e 's/-/_/g')
383 %define relext_dbug %(echo %{kverpkg_dbug} | %{__sed} -e 's/-/_/g')
384 %define rel_kern @ZFS_META_RELEASE@_%{relext_kern}
385 %define rel_dbug @ZFS_META_RELEASE@_%{relext_dbug}
387 %if %{defined kpkg_kern}
388 %define req_kern %{kpkg_kern} %{koppkg} %{kverpkg_kern}
390 %if %{defined kpkg_dbug}
391 %define req_dbug %{kpkg_dbug} %{koppkg} %{kverpkg_dbug}
394 %define splreq_kern %{splpkg_kern} = %{splverpkg_kern}_%{relext_kern}
395 %define splreq_dbug %{splpkg_dbug} = %{splverpkg_dbug}_%{relext_dbug}
397 %define spldevreq_kern %{spldevpkg_kern} = %{splverpkg_kern}_%{relext_kern}
398 %define spldevreq_dbug %{spldevpkg_dbug} = %{splverpkg_dbug}_%{relext_dbug}
402 Summary: ZFS File System
403 Group: Utilities/System
407 License: @ZFS_META_LICENSE@
408 URL: git://github.com/zfsonlinux/zfs.git
409 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id} -un)
410 Source: @PACKAGE@-%{version}.tar.gz
414 %if %{defined req_kern}
415 Requires: %{req_kern}
417 %if %{defined kdevpkg_kern}
418 BuildRequires: %{kdevpkg_kern}
420 %if %{defined splreq_kern}
421 Requires: %{splreq_kern}
423 %if %{defined spldevpkg_kern}
424 BuildRequires: %{spldevpkg_kern}
426 Provides: lustre-backend-fs
431 The %{name} package contains kernel modules and support utilities for
432 the %{name} file system.
437 Summary: ZFS File System Headers and Symbols
438 Group: Development/Libraries
440 %if %{defined devreq_kern}
441 Requires: %{devreq_kern}
443 %if %{defined kdevpkg_kern}
444 BuildRequires: %{kdevpkg_kern}
446 %if %{defined spldevreq_kern}
447 Requires: %{spldevreq_kern}
449 %if %{defined spldevpkg_kern}
450 BuildRequires: %{spldevpkg_kern}
454 The %{name}-devel package contains the kernel header files and
455 Module.symvers symbols needed for building additional modules
459 %if %{?with_kernel_debug}
462 Summary: ZFS File System (Debug)
463 Group: Utilities/System
465 %if %{defined req_dbug}
466 Requires: %{req_dbug}
468 %if %{defined kdevpkg_dbug}
469 BuildRequires: %{kdevpkg_dbug}
471 %if %{defined splreq_dbug}
472 Requires: %{splreq_dbug}
474 %if %{defined spldevpkg_dbug}
475 BuildRequires: %{spldevpkg_dbug}
477 Provides: lustre-backend-fs
480 The %{name}-debug package contains debug kernel modules and support
481 utilities for the %{name} file system.
484 Summary: ZFS File System Headers and Symbols (Debug)
485 Group: Development/Libraries
487 %if %{defined devreq_dbug}
488 Requires: %{devreq_dbug}
490 %if %{defined kdevpkg_dbug}
491 BuildRequires: %{kdevpkg_dbug}
493 %if %{defined spldevreq_dbug}
494 Requires: %{spldevreq_dbug}
496 %if %{defined spldevpkg_dbug}
497 BuildRequires: %{spldevpkg_dbug}
500 %description debug-devel
501 The %{name}-debug-devel package contains the debug kernel header files
502 and Module.symvers symbols needed for building additional modules
508 %setup -n @PACKAGE@-%{version}
510 rm -rf $RPM_BUILD_ROOT
514 %configure --with-linux=%{kdir_kern} --with-linux-obj=%{kobj_kern} \
515 --with-spl=%{spldir_kern} --with-spl-obj=%{splobj_kern} \
516 --with-config=kernel %{kdebug} %{kdebug_dmu_tx}
518 make DESTDIR=$RPM_BUILD_ROOT install
521 %if %{?with_kernel_debug}
523 %configure --with-linux=%{kdir_dbug} --with-linux-obj=%{kobj_dbug} \
524 --with-spl=%{spldir_dbug} --with-spl-obj=%{splobj_dbug} \
525 --with-config=kernel %{kdebug} %{kdebug_dmu_tx}
527 make DESTDIR=$RPM_BUILD_ROOT install
532 rm -rf $RPM_BUILD_ROOT
537 %defattr(-, root, root)
538 /lib/modules/%{kver_kern}/*
541 %defattr(-,root,root)
542 %{_prefix}/src/*/%{kver_kern}/*
545 if [ -f /boot/System.map-%{kver_kern} ]; then
546 /sbin/depmod -ae -F /boot/System.map-%{kver_kern} %{kver_kern} || exit 0
548 /sbin/depmod -a || exit 0
552 if [ -f /boot/System.map-%{kver_kern} ]; then
553 /sbin/depmod -ae -F /boot/System.map-%{kver_kern} %{kver_kern} || exit 0
555 /sbin/depmod -a || exit 0
559 %if %{?with_kernel_debug}
562 %defattr(-, root, root)
563 /lib/modules/%{kver_dbug}/*
566 %defattr(-,root,root)
567 %{_prefix}/src/*/%{kver_dbug}/*
570 if [ -f /boot/System.map-%{kver_dbug} ]; then
571 /sbin/depmod -ae -F /boot/System.map-%{kver_dbug} %{kver_dbug} || exit 0
573 /sbin/depmod -a || exit 0
577 if [ -f /boot/System.map-%{kver_dbug} ]; then
578 /sbin/depmod -ae -F /boot/System.map-%{kver_dbug} %{kver_dbug} || exit 0
580 /sbin/depmod -a || exit 0