]> git.proxmox.com Git - mirror_spl.git/blame - spl-modules.spec.in
Change spl-kmod-devel install path
[mirror_spl.git] / spl-modules.spec.in
CommitLineData
86933a6e
BB
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.
5
73358d5a
BB
6# kdir: Full path to the kernel source headers
7# kobj: Full path to the kernel build objects
8# kver: Kernel version
9# kpkg: Kernel package name
10# kdevpkg: Kernel devel package name
11# kverpkg: Kernel package version
12
26d77c44
BB
13%if %{defined require_kver}
14%define kver %{require_kver}
15%endif
16
17%if %{defined require_kdir}
18%define kdir %{require_kdir}
19%endif
20
21%if %{defined require_kobj}
22%define kobj %{require_kobj}
23%endif
86933a6e 24
92c2f755
PS
25# Set using 'rpmbuild ... --with kernel ...', defaults to enabled.
26%if %{defined _with_kernel}
27 %define with_kernel 1
28%else
29 %if %{defined _without_kernel}
30 %define with_kernel 0
31 %else
32 %define with_kernel 1
33 %endif
34%endif
35
36# Set using 'rpmbuild ... --with kernel-debug ...', defaults to disabled.
37%if %{defined _with_kernel_debug}
38 %define with_kernel_debug 1
39%else
40 %if %{defined _without_kernel_debug}
41 %define with_kernel_debug 0
42 %else
43 %define with_kernel_debug 0
44 %endif
45%endif
46
d83d25c2
PS
47# Set using 'rpmbuild ... --with kernel-dkms ...', defaults to disabled.
48%if %{defined _with_kernel_dkms}
49 %define with_kernel_dkms 1
50%else
51 %if %{defined _without_kernel_dkms}
52 %define with_kernel_dkms 0
53 %else
54 %define with_kernel_dkms 0
55 %endif
56%endif
57
3c208a54
BB
58# Set using 'rpmbuild ... --with debug ...', defaults to disabled.
59%if %{defined _with_debug}
60 %define kdebug --enable-debug
61%else
62 %if %{defined _without_debug}
63 %define kdebug --disable-debug
64 %else
65 %define kdebug --disable-debug
66 %endif
67%endif
68
69# Set using 'rpmbuild ... --with debug-log ...', defaults to enabled.
70%if %{defined _with_debug_log}
71 %define kdebug_log --enable-debug-log
72%else
73 %if %{defined _without_debug_log}
74 %define kdebug_log --disable-debug-log
75 %else
76 %define kdebug_log --enable-debug-log
77 %endif
78%endif
79
80# Set using 'rpmbuild ... --with debug-kmem ...', defaults to enabled.
81%if %{defined _with_debug_kmem}
82 %define kdebug_kmem --enable-debug-kmem
83%else
84 %if %{defined _without_debug_kmem}
85 %define kdebug_kmem --disable-debug-kmem
86 %else
87 %define kdebug_kmem --enable-debug-kmem
88 %endif
89%endif
90
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
94%else
95 %if %{defined _without_debug_kmem_tracking}
96 %define kdebug_kmem_tracking --disable-debug-kmem-tracking
97 %else
98 %define kdebug_kmem_tracking --disable-debug-kmem-tracking
99 %endif
100%endif
101
99879b25 102# SLES:
73358d5a 103%if %{defined suse_version}
86933a6e 104 %if %{undefined kver}
73358d5a
BB
105 %ifarch ppc64
106 %define kverextra ppc64
107 %else
108 %define kverextra default
109 %endif
110
111 %if %{suse_version} >= 1100
112 %define klnk %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
113 %define krelease %{klnk}/include/config/kernel.release
114 %else
115 %define klnk %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
116 %define krelease %{klnk}/.kernelrelease
117 %endif
118
92c2f755
PS
119 %define kver_kern %((echo X; %{__cat} %{krelease} 2>/dev/null)|tail -1)
120 %define kver_dbug %{nil}
121 %else
122 %define kver_kern %{kver}
123 %define kver_dbug %{nil}
86933a6e 124 %endif
73358d5a
BB
125
126 %if %{undefined kverextra}
92c2f755 127 %define kverextra %(echo %{kver_kern} | cut -f3 -d'-')
73358d5a
BB
128 %endif
129
92c2f755
PS
130 %define kpkg_kern kernel-%{kverextra}
131 %define kpkg_dbug %{nil}
d83d25c2 132 %define kpkg_dkms dkms
92c2f755
PS
133
134 %define kdevpkg_kern kernel-source
135 %define kdevpkg_dbug %{nil}
d83d25c2 136 %define kdevpkg_dkms dkms
92c2f755
PS
137
138 %define kverpkg_kern %(echo %{kver_kern} | %{__sed} -e 's/-%{kverextra}//g')
139 %define kverpkg_dbug %{nil}
d83d25c2 140 %define kverpkg_dkms 2.2.0.2
73358d5a
BB
141
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
145 %define koppkg >=
146 %else
147 %define koppkg =
148 %endif
149
86933a6e 150 %if %{undefined kdir}
92c2f755
PS
151 %define kdir_kern %{_usrsrc}/linux-%{kverpkg_kern}
152 %define kdir_dbug %{nil}
153 %else
154 %define kdir_kern %{kdir}
155 %define kdir_dbug %{nil}
86933a6e 156 %endif
92c2f755 157
86933a6e 158 %if %{undefined kobj}
92c2f755
PS
159 %define kobj_kern %{kdir_kern}-obj/%{_target_cpu}/%{kverextra}
160 %define kobj_dbug %{nil}
161 %else
162 %define kobj_kern %{kobj}
163 %define kobj_dbug %{nil}
86933a6e 164 %endif
86933a6e 165%else
73358d5a 166
af67391e
BB
167# RHEL 5.x/6.x, CHAOS 5.x:
168%if %{defined el5} || %{defined el6} || %{defined ch5}
73358d5a
BB
169 %if %{undefined kver}
170 %define klnk %{_usrsrc}/kernels/*/include/config
92c2f755
PS
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)
175 %else
176 %define kver_kern %{kver}
177 %define kver_dbug %{kver}.debug
73358d5a 178 %endif
92c2f755
PS
179
180 %define kpkg_kern kernel
181 %define kpkg_dbug kernel-debug
d83d25c2 182 %define kpkg_dkms dkms
92c2f755
PS
183
184 %define kdevpkg_kern kernel-devel
185 %define kdevpkg_dbug kernel-debug-devel
d83d25c2 186 %define kdevpkg_dkms dkms
92c2f755 187
d83d25c2 188 %define kverpkg_dkms 2.2.0.2
96cdefab 189 %if %{defined el6} || %{defined ch5}
92c2f755
PS
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')
edbbb609 192 %else
92c2f755
PS
193 %define kverpkg_kern %{kver_kern}
194 %define kverpkg_dbug %{kver_dbug}
edbbb609 195 %endif
92c2f755 196
73358d5a 197 %define koppkg =
92c2f755 198
73358d5a 199 %if %{undefined kdir}
96cdefab 200 %if %{defined el6} || %{defined ch5}
92c2f755
PS
201 %define kdir_kern %{_usrsrc}/kernels/%{kver_kern}
202 %define kdir_dbug %{_usrsrc}/kernels/%{kver_dbug}
96cdefab 203 %else
92c2f755
PS
204 %define kdir_kern %{_usrsrc}/kernels/%{kver_kern}-%{_target_cpu}
205 %define kdir_dbug %{_usrsrc}/kernels/%{kver_dbug}-%{_target_cpu}
96cdefab 206 %endif
92c2f755
PS
207 %else
208 %define kdir_kern %{kdir}
209 %define kdir_dbug %{kdir}.debug
73358d5a 210 %endif
92c2f755 211
73358d5a 212 %if %{undefined kobj}
92c2f755
PS
213 %define kobj_kern %{kdir_kern}
214 %define kobj_dbug %{kdir_dbug}
215 %else
216 %define kobj_kern %{kobj}
217 %define kobj_dbug %{kobj}.debug
73358d5a 218 %endif
86933a6e 219%else
73358d5a 220
99879b25 221# Fedora:
73358d5a 222%if %{defined fedora}
86933a6e
BB
223 %if %{undefined kver}
224 %define klnk %{_usrsrc}/kernels/*/include/config
92c2f755
PS
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)
229 %else
230 %define kver_kern %{kver}
231 %define kver_dbug %{kver}.debug
86933a6e 232 %endif
92c2f755
PS
233
234 %define kpkg_kern kernel
235 %define kpkg_dbug kernel-debug
d83d25c2 236 %define kpkg_dkms dkms
92c2f755
PS
237
238 %define kdevpkg_kern kernel-devel
239 %define kdevpkg_dbug kernel-debug-devel
d83d25c2 240 %define kdevpkg_dkms dkms
92c2f755 241
d83d25c2 242 %define kverpkg_dkms 2.2.0.2
92c2f755
PS
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')
245
73358d5a 246 %define koppkg =
92c2f755 247
86933a6e 248 %if %{undefined kdir}
92c2f755
PS
249 %define kdir_kern %{_usrsrc}/kernels/%{kver_kern}
250 %define kdir_dbug %{_usrsrc}/kernels/%{kver_dbug}
251 %else
252 %define kdir_kern %{kdir}
253 %define kdir_dbug %{kdir}.debug
86933a6e 254 %endif
92c2f755 255
86933a6e 256 %if %{undefined kobj}
92c2f755
PS
257 %define kobj_kern %{kdir_kern}
258 %define kobj_dbug %{kdir_dbug}
259 %else
260 %define kobj_kern %{kobj}
261 %define kobj_dbug %{kobj}.debug
86933a6e 262 %endif
86933a6e
BB
263%else
264
265# Unsupported distro:
266 %if %{undefined kver}
92c2f755
PS
267 %define kver_kern %(uname -r)
268 %define kver_dbug %{nil}
269 %else
270 %define kver_kern %{kver}
271 %define kver_dbug %{nil}
86933a6e 272 %endif
92c2f755
PS
273
274 %define kverpkg_kern %{kver_kern}
275 %define kverpkg_dbug %{nil}
d83d25c2 276 %define kverpkg_dkms %{nil}
92c2f755 277
86933a6e 278 %if %{undefined kdir}
92c2f755
PS
279 %define kdir_kern /lib/modules/%{kver_kern}/build
280 %define kdir_dbug %{nil}
281 %else
282 %define kdir_kern %{kdir}
283 %define kdir_dbug %{nil}
86933a6e 284 %endif
92c2f755 285
86933a6e 286 %if %{undefined kobj}
92c2f755
PS
287 %define kobj_kern %{kdir_kern}
288 %define kobj_dbug %{nil}
289 %else
290 %define kobj_kern %{kobj}
291 %define kobj_dbug %{nil}
86933a6e
BB
292 %endif
293
294%endif
295%endif
296%endif
297
298# Distro agnostic:
299%define name @PACKAGE@-modules
300%define version @VERSION@
86933a6e 301
86933a6e
BB
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}
92c2f755
PS
307%define rel_kern @SPL_META_RELEASE@
308%define rel_dbug @SPL_META_RELEASE@
d83d25c2 309%define rel_dkms @SPL_META_RELEASE@
92c2f755
PS
310%if %{defined kpkg_kern}
311%define req_kern %{kpkg_kern}
312%endif
313%if %{defined kpkg_dbug}
314%define req_dbug %{kpkg_dbug}
315%endif
d83d25c2
PS
316%if %{defined kpkg_dkms}
317%define req_dkms %{kpkg_dkms}
318%endif
92c2f755
PS
319%if %{defined kdevpkg_kern}
320%define devreq_kern %{kdevpkg_kern}
321%endif
322%if %{defined kdevpkg_dbug}
323%define devreq_dbug %{kdevpkg_dbug}
99879b25 324%endif
86933a6e 325%else
92c2f755
PS
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}
d83d25c2 330%define rel_dkms @SPL_META_RELEASE@
92c2f755
PS
331%if %{defined kpkg_kern}
332%define req_kern %{kpkg_kern} %{koppkg} %{kverpkg_kern}
333%endif
334%if %{defined kpkg_dbug}
335%define req_dbug %{kpkg_dbug} %{koppkg} %{kverpkg_dbug}
336%endif
d83d25c2
PS
337%if %{defined kpkg_dkms}
338%define req_dkms %{kpkg_dkms} >= %{kverpkg_dkms}
339%endif
92c2f755
PS
340%if %{defined kdevpkg_kern}
341%define devreq_kern %{kdevpkg_kern} %{koppkg} %{kverpkg_kern}
3cce0f13 342%endif
92c2f755
PS
343%if %{defined kdevpkg_dbug}
344%define devreq_dbug %{kdevpkg_dbug} %{koppkg} %{kverpkg_dbug}
86933a6e 345%endif
3cce0f13 346%endif
86933a6e 347
92c2f755 348
86933a6e
BB
349Summary: Solaris Porting Layer Modules
350Group: Utilities/System
351Name: %{name}
352Version: %{version}
92c2f755 353Release: %{rel_kern}
86933a6e 354License: @LICENSE@
a49bc996 355URL: git://github.com/zfsonlinux/spl.git
f44078fa 356BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id} -un)
86933a6e 357Source: @PACKAGE@-%{version}.tar.gz
92c2f755
PS
358
359%if %{?with_kernel}
360
361%if %{defined req_kern}
362Requires: %{req_kern}
3cce0f13 363%endif
92c2f755
PS
364%if %{defined kdevpkg_kern}
365BuildRequires: %{kdevpkg_kern}
366%endif
367
3cce0f13 368%endif
86933a6e
BB
369
370%description
371The %{name} package contains kernel modules for emulating Solaris style
372primatives in the linux kernel. These include, but are not limited to:
373atomic, condvar, debug, error, memory, kobject, kstat, mutex, rwlock,
374taskq, thread, time, and vnode APIs.
375
92c2f755
PS
376%if %{?with_kernel}
377
86933a6e
BB
378%package devel
379Summary: Solaris Porting Layer Headers and Symbols
380Group: Development/Libraries
92c2f755
PS
381Release: %{rel_kern}
382%if %{defined devreq_kern}
383Requires: %{devreq_kern}
3cce0f13 384%endif
92c2f755
PS
385%if %{defined kdevpkg_kern}
386BuildRequires: %{kdevpkg_kern}
3cce0f13 387%endif
86933a6e
BB
388
389%description devel
390The %{name}-devel package contains the header files and Module{s}.symvers
391symbols needed for building additional modules which use %{name}.
392
92c2f755
PS
393%endif
394%if %{?with_kernel_debug}
395
396%package debug
397Summary: Solaris Porting Layer Debug Modules
398Group: Utilities/System
399Release: %{rel_dbug}
400%if %{defined req_dbug}
401Requires: %{req_dbug}
402%endif
403%if %{defined kdevpkg_dbug}
404BuildRequires: %{kdevpkg_dbug}
405%endif
406
407%description debug
408The %{name}-debug package contains kernel modules for emulating Solaris
409style primatives in the linux kernel. These include, but are not limited
410to: atomic, condvar, debug, error, memory, kobject, kstat, mutex,
411rwlock, taskq, thread, time, and vnode APIs.
412
413%package debug-devel
414Summary: Solaris Porting Layer Debug Headers and Symbols
415Group: Development/Libraries
416Release: %{rel_dbug}
417%if %{defined devreq_dbug}
418Requires: %{devreq_dbug}
419%endif
420%if %{defined kdevpkg_dbug}
421BuildRequires: %{kdevpkg_dbug}
422%endif
423
424%description debug-devel
425The %{name}-debug-devel package contains the header files and
426Module{s}.symvers symbols needed for building additional modules which
427use %{name}-debug.
428
d83d25c2
PS
429%endif
430%if %{?with_kernel_dkms}
431
432%package dkms
433Summary: Solaris Porting Layer Modules (DKMS)
434Group: Utilities/System
435Release: %{rel_dkms}
436Provides: %{name}
437BuildArch: noarch
438%if %{defined req_dkms}
439Requires: %{req_dkms}
440%endif
441%if %{defined kdevpkg_dkms}
442BuildRequires: %{kdevpkg_dkms}
443%endif
444
445%description dkms
446The %{name}-dkms package contains all the necessary pieces to build and
447install Solaris Porting Layer (SPL) kernel modules with Dynamic Kernel
448Modules Support (DKMS). The SPL modules emulate Solaris style primatives
449in the the linux kernel. They include, but are not limited to: atomic,
450condvar, debug, error, memory, kobject, kstat, mutex, rwlock, taskq,
451thread, time, and vnode APIs.
452
92c2f755
PS
453%endif
454
86933a6e
BB
455%prep
456%setup -n @PACKAGE@-%{version}
457%build
92c2f755
PS
458rm -rf $RPM_BUILD_ROOT
459
460%if %{?with_kernel}
461
462%configure --with-config=kernel \
463 --with-linux=%{kdir_kern} --with-linux-obj=%{kobj_kern} \
3c208a54 464 %{kdebug} %{kdebug_log} %{kdebug_kmem} %{kdebug_kmem_tracking}
86933a6e 465make
92c2f755 466make DESTDIR=$RPM_BUILD_ROOT install
86933a6e 467
92c2f755
PS
468%endif
469%if %{?with_kernel_debug}
470
471%configure --with-config=kernel \
472 --with-linux=%{kdir_dbug} --with-linux-obj=%{kobj_dbug} \
473 %{kdebug} %{kdebug_log} %{kdebug_kmem} %{kdebug_kmem_tracking}
474make
86933a6e
BB
475make DESTDIR=$RPM_BUILD_ROOT install
476
d83d25c2
PS
477%endif
478%if %{?with_kernel_dkms}
479
480%configure --with-config=kernel \
481 %{kdebug} %{kdebug_log} %{kdebug_kmem} %{kdebug_kmem_tracking}
482make dist
483mkdir -p $RPM_BUILD_ROOT/%{_prefix}/src
484tar -xf @PACKAGE@-%{version}.tar.gz -C $RPM_BUILD_ROOT/%{_prefix}/src
485cp -af dkms.conf $RPM_BUILD_ROOT/%{_prefix}/src/@PACKAGE@-%{version}
486
92c2f755
PS
487%endif
488
86933a6e
BB
489%clean
490rm -rf $RPM_BUILD_ROOT
491
92c2f755
PS
492%if %{?with_kernel}
493
86933a6e
BB
494%files
495%defattr(-, root, root)
92c2f755 496/lib/modules/%{kver_kern}/*
86933a6e
BB
497
498%files devel
499%defattr(-,root,root)
36798290 500%{_prefix}/src/*/%{kver_kern}
86933a6e
BB
501
502%post
92c2f755
PS
503if [ -f /boot/System.map-%{kver_kern} ]; then
504 /sbin/depmod -ae -F /boot/System.map-%{kver_kern} %{kver_kern} || exit 0
86933a6e 505else
948914d2 506 /sbin/depmod -a || exit 0
86933a6e
BB
507fi
508
509%postun
92c2f755
PS
510if [ -f /boot/System.map-%{kver_kern} ]; then
511 /sbin/depmod -ae -F /boot/System.map-%{kver_kern} %{kver_kern} || exit 0
512else
513 /sbin/depmod -a || exit 0
514fi
515
36798290
BB
516%postun devel
517rmdir %{_prefix}/src/@PACKAGE@-%{version}-@SPL_META_RELEASE@ 2>/dev/null
518exit 0
519
92c2f755
PS
520%endif
521%if %{?with_kernel_debug}
522
523%files debug
524%defattr(-, root, root)
525/lib/modules/%{kver_dbug}/*
526
527%files debug-devel
528%defattr(-,root,root)
36798290 529%{_prefix}/src/*/%{kver_dbug}
92c2f755
PS
530
531%post debug
532if [ -f /boot/System.map-%{kver_dbug} ]; then
533 /sbin/depmod -ae -F /boot/System.map-%{kver_dbug} %{kver_dbug} || exit 0
86933a6e 534else
948914d2 535 /sbin/depmod -a || exit 0
86933a6e 536fi
92c2f755
PS
537
538%postun debug
539if [ -f /boot/System.map-%{kver_dbug} ]; then
540 /sbin/depmod -ae -F /boot/System.map-%{kver_dbug} %{kver_dbug} || exit 0
541else
542 /sbin/depmod -a || exit 0
543fi
544
36798290
BB
545%postun debug-devel
546rmdir %{_prefix}/src/@PACKAGE@-%{version}-@SPL_META_RELEASE@ 2>/dev/null
547exit 0
548
92c2f755 549%endif
d83d25c2
PS
550%if %{?with_kernel_dkms}
551
552%files dkms
553%defattr(-,root,root)
36798290 554%{_prefix}/src/@PACKAGE@-%{version}
d83d25c2
PS
555
556%post dkms
557for POSTINST in %{_prefix}/lib/dkms/common.postinst; do
558 if [ -f $POSTINST ]; then
559 $POSTINST @PACKAGE@ %{version}
560 exit $?
561 fi
562 echo "WARNING: $POSTINST does not exist."
563done
564echo -e "ERROR: DKMS version is too old and @PACKAGE@ was not"
565echo -e "built with legacy DKMS support."
566echo -e "You must either rebuild @PACKAGE@ with legacy postinst"
567echo -e "support or upgrade DKMS to a more current version."
568exit 1
569
570%preun dkms
571echo -e
572echo -e "Uninstall of @PACKAGE@ module (version %{version}) beginning:"
573dkms remove -m @PACKAGE@ -v %{version} --all --rpm_safe_upgrade
574exit 0
575
576%endif