]> git.proxmox.com Git - mirror_spl.git/blame_incremental - spl-modules.spec.in
Change spl-kmod-devel install path
[mirror_spl.git] / spl-modules.spec.in
... / ...
CommitLineData
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
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
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
24
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
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
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
102# SLES:
103%if %{defined suse_version}
104 %if %{undefined kver}
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
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}
124 %endif
125
126 %if %{undefined kverextra}
127 %define kverextra %(echo %{kver_kern} | cut -f3 -d'-')
128 %endif
129
130 %define kpkg_kern kernel-%{kverextra}
131 %define kpkg_dbug %{nil}
132 %define kpkg_dkms dkms
133
134 %define kdevpkg_kern kernel-source
135 %define kdevpkg_dbug %{nil}
136 %define kdevpkg_dkms dkms
137
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
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
150 %if %{undefined kdir}
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}
156 %endif
157
158 %if %{undefined kobj}
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}
164 %endif
165%else
166
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)
175 %else
176 %define kver_kern %{kver}
177 %define kver_dbug %{kver}.debug
178 %endif
179
180 %define kpkg_kern kernel
181 %define kpkg_dbug kernel-debug
182 %define kpkg_dkms dkms
183
184 %define kdevpkg_kern kernel-devel
185 %define kdevpkg_dbug kernel-debug-devel
186 %define kdevpkg_dkms dkms
187
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')
192 %else
193 %define kverpkg_kern %{kver_kern}
194 %define kverpkg_dbug %{kver_dbug}
195 %endif
196
197 %define koppkg =
198
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}
203 %else
204 %define kdir_kern %{_usrsrc}/kernels/%{kver_kern}-%{_target_cpu}
205 %define kdir_dbug %{_usrsrc}/kernels/%{kver_dbug}-%{_target_cpu}
206 %endif
207 %else
208 %define kdir_kern %{kdir}
209 %define kdir_dbug %{kdir}.debug
210 %endif
211
212 %if %{undefined kobj}
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
218 %endif
219%else
220
221# Fedora:
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)
229 %else
230 %define kver_kern %{kver}
231 %define kver_dbug %{kver}.debug
232 %endif
233
234 %define kpkg_kern kernel
235 %define kpkg_dbug kernel-debug
236 %define kpkg_dkms dkms
237
238 %define kdevpkg_kern kernel-devel
239 %define kdevpkg_dbug kernel-debug-devel
240 %define kdevpkg_dkms dkms
241
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')
245
246 %define koppkg =
247
248 %if %{undefined kdir}
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
254 %endif
255
256 %if %{undefined kobj}
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
262 %endif
263%else
264
265# Unsupported distro:
266 %if %{undefined kver}
267 %define kver_kern %(uname -r)
268 %define kver_dbug %{nil}
269 %else
270 %define kver_kern %{kver}
271 %define kver_dbug %{nil}
272 %endif
273
274 %define kverpkg_kern %{kver_kern}
275 %define kverpkg_dbug %{nil}
276 %define kverpkg_dkms %{nil}
277
278 %if %{undefined kdir}
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}
284 %endif
285
286 %if %{undefined kobj}
287 %define kobj_kern %{kdir_kern}
288 %define kobj_dbug %{nil}
289 %else
290 %define kobj_kern %{kobj}
291 %define kobj_dbug %{nil}
292 %endif
293
294%endif
295%endif
296%endif
297
298# Distro agnostic:
299%define name @PACKAGE@-modules
300%define version @VERSION@
301
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}
312%endif
313%if %{defined kpkg_dbug}
314%define req_dbug %{kpkg_dbug}
315%endif
316%if %{defined kpkg_dkms}
317%define req_dkms %{kpkg_dkms}
318%endif
319%if %{defined kdevpkg_kern}
320%define devreq_kern %{kdevpkg_kern}
321%endif
322%if %{defined kdevpkg_dbug}
323%define devreq_dbug %{kdevpkg_dbug}
324%endif
325%else
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}
333%endif
334%if %{defined kpkg_dbug}
335%define req_dbug %{kpkg_dbug} %{koppkg} %{kverpkg_dbug}
336%endif
337%if %{defined kpkg_dkms}
338%define req_dkms %{kpkg_dkms} >= %{kverpkg_dkms}
339%endif
340%if %{defined kdevpkg_kern}
341%define devreq_kern %{kdevpkg_kern} %{koppkg} %{kverpkg_kern}
342%endif
343%if %{defined kdevpkg_dbug}
344%define devreq_dbug %{kdevpkg_dbug} %{koppkg} %{kverpkg_dbug}
345%endif
346%endif
347
348
349Summary: Solaris Porting Layer Modules
350Group: Utilities/System
351Name: %{name}
352Version: %{version}
353Release: %{rel_kern}
354License: @LICENSE@
355URL: git://github.com/zfsonlinux/spl.git
356BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id} -un)
357Source: @PACKAGE@-%{version}.tar.gz
358
359%if %{?with_kernel}
360
361%if %{defined req_kern}
362Requires: %{req_kern}
363%endif
364%if %{defined kdevpkg_kern}
365BuildRequires: %{kdevpkg_kern}
366%endif
367
368%endif
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
376%if %{?with_kernel}
377
378%package devel
379Summary: Solaris Porting Layer Headers and Symbols
380Group: Development/Libraries
381Release: %{rel_kern}
382%if %{defined devreq_kern}
383Requires: %{devreq_kern}
384%endif
385%if %{defined kdevpkg_kern}
386BuildRequires: %{kdevpkg_kern}
387%endif
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
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
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
453%endif
454
455%prep
456%setup -n @PACKAGE@-%{version}
457%build
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} \
464 %{kdebug} %{kdebug_log} %{kdebug_kmem} %{kdebug_kmem_tracking}
465make
466make DESTDIR=$RPM_BUILD_ROOT install
467
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
475make DESTDIR=$RPM_BUILD_ROOT install
476
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
487%endif
488
489%clean
490rm -rf $RPM_BUILD_ROOT
491
492%if %{?with_kernel}
493
494%files
495%defattr(-, root, root)
496/lib/modules/%{kver_kern}/*
497
498%files devel
499%defattr(-,root,root)
500%{_prefix}/src/*/%{kver_kern}
501
502%post
503if [ -f /boot/System.map-%{kver_kern} ]; then
504 /sbin/depmod -ae -F /boot/System.map-%{kver_kern} %{kver_kern} || exit 0
505else
506 /sbin/depmod -a || exit 0
507fi
508
509%postun
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
516%postun devel
517rmdir %{_prefix}/src/@PACKAGE@-%{version}-@SPL_META_RELEASE@ 2>/dev/null
518exit 0
519
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)
529%{_prefix}/src/*/%{kver_dbug}
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
534else
535 /sbin/depmod -a || exit 0
536fi
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
545%postun debug-devel
546rmdir %{_prefix}/src/@PACKAGE@-%{version}-@SPL_META_RELEASE@ 2>/dev/null
547exit 0
548
549%endif
550%if %{?with_kernel_dkms}
551
552%files dkms
553%defattr(-,root,root)
554%{_prefix}/src/@PACKAGE@-%{version}
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