]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - spl-modules.spec.in
Remove Chaos 4.x RPM support
[FreeBSD/FreeBSD.git] / spl-modules.spec.in
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 debug ...', defaults to disabled.
48 %if %{defined _with_debug}
49  %define kdebug --enable-debug
50 %else
51  %if %{defined _without_debug}
52   %define kdebug --disable-debug
53  %else
54   %define kdebug --disable-debug
55  %endif
56 %endif
57
58 # Set using 'rpmbuild ... --with debug-log ...', defaults to enabled.
59 %if %{defined _with_debug_log}
60  %define kdebug_log --enable-debug-log
61 %else
62  %if %{defined _without_debug_log}
63   %define kdebug_log --disable-debug-log
64  %else
65   %define kdebug_log --enable-debug-log
66  %endif
67 %endif
68
69 # Set using 'rpmbuild ... --with debug-kmem ...', defaults to enabled.
70 %if %{defined _with_debug_kmem}
71  %define kdebug_kmem --enable-debug-kmem
72 %else
73  %if %{defined _without_debug_kmem}
74   %define kdebug_kmem --disable-debug-kmem
75  %else
76   %define kdebug_kmem --enable-debug-kmem
77  %endif
78 %endif
79
80 # Set using 'rpmbuild ... --with debug-tracking ...', defaults to disabled.
81 %if %{defined _with_debug_kmem_tracking}
82  %define kdebug_kmem_tracking --enable-debug-kmem-tracking
83 %else
84  %if %{defined _without_debug_kmem_tracking}
85   %define kdebug_kmem_tracking --disable-debug-kmem-tracking
86  %else
87   %define kdebug_kmem_tracking --disable-debug-kmem-tracking
88  %endif
89 %endif
90
91 # SLES:
92 %if %{defined suse_version}
93  %if %{undefined kver}
94   %ifarch ppc64
95    %define kverextra     ppc64
96   %else
97    %define kverextra     default
98   %endif
99
100   %if %{suse_version} >= 1100
101    %define klnk          %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
102    %define krelease      %{klnk}/include/config/kernel.release
103   %else
104    %define klnk          %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
105    %define krelease      %{klnk}/.kernelrelease
106   %endif
107
108   %define kver_kern      %((echo X; %{__cat} %{krelease} 2>/dev/null)|tail -1)
109   %define kver_dbug      %{nil}
110  %else
111   %define kver_kern      %{kver}
112   %define kver_dbug      %{nil}
113  %endif
114
115  %if %{undefined kverextra}
116   %define kverextra      %(echo %{kver_kern} | cut -f3 -d'-')
117  %endif
118
119  %define kpkg_kern       kernel-%{kverextra}
120  %define kpkg_dbug       %{nil}
121
122  %define kdevpkg_kern    kernel-source
123  %define kdevpkg_dbug    %{nil}
124
125  %define kverpkg_kern    %(echo %{kver_kern} | %{__sed} -e 's/-%{kverextra}//g')
126  %define kverpkg_dbug    %{nil}
127
128  # The kernel and rpm versions do not strictly match under SLES11
129  # e.g. kernel version 2.6.27.19-5 != rpm version 2.6.27.19-5.1
130  %if %{suse_version} >= 1100
131   %define koppkg         >=
132  %else
133   %define koppkg         =
134  %endif
135
136  %if %{undefined kdir}
137   %define kdir_kern      %{_usrsrc}/linux-%{kverpkg_kern}
138   %define kdir_dbug      %{nil}
139  %else
140   %define kdir_kern      %{kdir}
141   %define kdir_dbug      %{nil}
142  %endif
143
144  %if %{undefined kobj}
145   %define kobj_kern      %{kdir_kern}-obj/%{_target_cpu}/%{kverextra}
146   %define kobj_dbug      %{nil}
147  %else
148   %define kobj_kern      %{kobj}
149   %define kobj_dbug      %{nil}
150  %endif
151 %else
152
153 # RHEL 5.x/6.x, CHAOS 5.x:
154 %if %{defined el5} || %{defined el6} || %{defined ch5}
155  %if %{undefined kver}
156   %define klnk           %{_usrsrc}/kernels/*/include/config
157   %define kver_kern      %((echo X; ((%{__cat} %{klnk}/kernel.release
158                             2>/dev/null) | %{__grep} -v debug)) | tail -1)
159   %define kver_dbug      %((echo X; ((%{__cat} %{klnk}/kernel.release
160                             2>/dev/null) | %{__grep} debug)) | tail -1)
161  %else
162   %define kver_kern      %{kver}
163   %define kver_dbug      %{kver}.debug
164  %endif
165
166  %define kpkg_kern       kernel
167  %define kpkg_dbug       kernel-debug
168
169  %define kdevpkg_kern    kernel-devel
170  %define kdevpkg_dbug    kernel-debug-devel
171
172  %if %{defined el6} || %{defined ch5}
173   %define kverpkg_kern   %(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g')
174   %define kverpkg_dbug   %(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's/.debug//g')
175  %else
176   %define kverpkg_kern   %{kver_kern}
177   %define kverpkg_dbug   %{kver_dbug}
178  %endif
179
180  %define koppkg          =
181
182  %if %{undefined kdir}
183   %if %{defined el6} || %{defined ch5}
184    %define kdir_kern     %{_usrsrc}/kernels/%{kver_kern}
185    %define kdir_dbug     %{_usrsrc}/kernels/%{kver_dbug}
186   %else
187    %define kdir_kern     %{_usrsrc}/kernels/%{kver_kern}-%{_target_cpu}
188    %define kdir_dbug     %{_usrsrc}/kernels/%{kver_dbug}-%{_target_cpu}
189   %endif
190  %else
191   %define kdir_kern      %{kdir}
192   %define kdir_dbug      %{kdir}.debug
193  %endif
194
195  %if %{undefined kobj}
196   %define kobj_kern      %{kdir_kern}
197   %define kobj_dbug      %{kdir_dbug}
198  %else
199   %define kobj_kern      %{kobj}
200   %define kobj_dbug      %{kobj}.debug
201  %endif
202 %else
203
204 # Fedora:
205 %if %{defined fedora}
206  %if %{undefined kver}
207   %define klnk           %{_usrsrc}/kernels/*/include/config
208   %define kver_kern      %((echo X; ((%{__cat} %{klnk}/kernel.release
209                             2>/dev/null) | %{__grep} -v debug)) | tail -1)
210   %define kver_dbug      %((echo X; ((%{__cat} %{klnk}/kernel.release
211                             2>/dev/null) | %{__grep} debug)) | tail -1)
212  %else
213   %define kver_kern      %{kver}
214   %define kver_dbug      %{kver}.debug
215  %endif
216
217  %define kpkg_kern       kernel
218  %define kpkg_dbug       kernel-debug
219
220  %define kdevpkg_kern    kernel-devel
221  %define kdevpkg_dbug    kernel-debug-devel
222
223  %define kverpkg_kern    %(echo %{kver_kern} | %{__sed} -e 's/.%{_target_cpu}//g')
224  %define kverpkg_dbug    %(echo %{kver_dbug} | %{__sed} -e 's/.%{_target_cpu}//g' | %{__sed} -e 's/.debug//g')
225
226  %define koppkg          =
227
228  %if %{undefined kdir}
229   %define kdir_kern      %{_usrsrc}/kernels/%{kver_kern}
230   %define kdir_dbug      %{_usrsrc}/kernels/%{kver_dbug}
231  %else
232   %define kdir_kern      %{kdir}
233   %define kdir_dbug      %{kdir}.debug
234  %endif
235
236  %if %{undefined kobj}
237   %define kobj_kern      %{kdir_kern}
238   %define kobj_dbug      %{kdir_dbug}
239  %else
240   %define kobj_kern      %{kobj}
241   %define kobj_dbug      %{kobj}.debug
242  %endif
243 %else
244
245 # Unsupported distro:
246  %if %{undefined kver}
247   %define kver_kern      %(uname -r)
248   %define kver_dbug      %{nil}
249  %else
250   %define kver_kern      %{kver}
251   %define kver_dbug      %{nil}
252  %endif
253
254  %define kverpkg_kern    %{kver_kern}
255  %define kverpkg_dbug    %{nil}
256
257  %if %{undefined kdir}
258   %define kdir_kern      /lib/modules/%{kver_kern}/build
259   %define kdir_dbug      %{nil}
260  %else
261   %define kdir_kern      %{kdir}
262   %define kdir_dbug      %{nil}
263  %endif
264
265  %if %{undefined kobj}
266   %define kobj_kern      %{kdir_kern}
267   %define kobj_dbug      %{nil}
268  %else
269   %define kobj_kern      %{kobj}
270   %define kobj_dbug      %{nil}
271  %endif
272
273 %endif
274 %endif
275 %endif
276
277 # Distro agnostic:
278 %define name             @PACKAGE@-modules
279 %define version          @VERSION@
280
281 # The kernel version should only be appended to a binary RPM.  When
282 # building a source RPM it must be kernel version agnostic.  This means
283 # the source RPM must never specify a required kernel version, but the
284 # final RPM should be keyed to the kernel version it was built against.
285 %if %{defined build_src_rpm}
286 %define rel_kern         @SPL_META_RELEASE@
287 %define rel_dbug         @SPL_META_RELEASE@
288 %if %{defined kpkg_kern}
289 %define req_kern         %{kpkg_kern}
290 %endif
291 %if %{defined kpkg_dbug}
292 %define req_dbug         %{kpkg_dbug}
293 %endif
294 %if %{defined kdevpkg_kern}
295 %define devreq_kern      %{kdevpkg_kern}
296 %endif
297 %if %{defined kdevpkg_dbug}
298 %define devreq_dbug      %{kdevpkg_dbug}
299 %endif
300 %else
301 %define relext_kern      %(echo %{kverpkg_kern} | %{__sed} -e 's/-/_/g')
302 %define relext_dbug      %(echo %{kverpkg_dbug} | %{__sed} -e 's/-/_/g')
303 %define rel_kern         @SPL_META_RELEASE@_%{relext_kern}
304 %define rel_dbug         @SPL_META_RELEASE@_%{relext_dbug}
305 %if %{defined kpkg_kern}
306 %define req_kern         %{kpkg_kern} %{koppkg} %{kverpkg_kern}
307 %endif
308 %if %{defined kpkg_dbug}
309 %define req_dbug         %{kpkg_dbug} %{koppkg} %{kverpkg_dbug}
310 %endif
311 %if %{defined kdevpkg_kern}
312 %define devreq_kern      %{kdevpkg_kern} %{koppkg} %{kverpkg_kern}
313 %endif
314 %if %{defined kdevpkg_dbug}
315 %define devreq_dbug      %{kdevpkg_dbug} %{koppkg} %{kverpkg_dbug}
316 %endif
317 %endif
318
319
320 Summary:         Solaris Porting Layer Modules
321 Group:           Utilities/System
322 Name:            %{name}
323 Version:         %{version}
324 Release:         %{rel_kern}
325 License:         @LICENSE@
326 URL:             git://github.com/zfsonlinux/spl.git
327 BuildRoot:       %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id} -un)
328 Source:          @PACKAGE@-%{version}.tar.gz
329
330 %if %{?with_kernel}
331
332 %if %{defined req_kern}
333 Requires:        %{req_kern}
334 %endif
335 %if %{defined kdevpkg_kern}
336 BuildRequires:   %{kdevpkg_kern}
337 %endif
338
339 %endif
340
341 %description
342 The %{name} package contains kernel modules for emulating Solaris style
343 primatives in the linux kernel. These include, but are not limited to:
344 atomic, condvar, debug, error, memory, kobject, kstat, mutex, rwlock,
345 taskq, thread, time, and vnode APIs.
346
347 %if %{?with_kernel}
348
349 %package devel
350 Summary:         Solaris Porting Layer Headers and Symbols
351 Group:           Development/Libraries
352 Release:         %{rel_kern}
353 %if %{defined devreq_kern}
354 Requires:        %{devreq_kern}
355 %endif
356 %if %{defined kdevpkg_kern}
357 BuildRequires:   %{kdevpkg_kern}
358 %endif
359
360 %description devel
361 The %{name}-devel package contains the header files and Module{s}.symvers
362 symbols needed for building additional modules which use %{name}.
363
364 %endif
365 %if %{?with_kernel_debug}
366
367 %package debug
368 Summary:         Solaris Porting Layer Debug Modules
369 Group:           Utilities/System
370 Release:         %{rel_dbug}
371 %if %{defined req_dbug}
372 Requires:        %{req_dbug}
373 %endif
374 %if %{defined kdevpkg_dbug}
375 BuildRequires:   %{kdevpkg_dbug}
376 %endif
377
378 %description debug
379 The %{name}-debug package contains kernel modules for emulating Solaris
380 style primatives in the linux kernel. These include, but are not limited
381 to: atomic, condvar, debug, error, memory, kobject, kstat, mutex,
382 rwlock, taskq, thread, time, and vnode APIs.
383
384 %package debug-devel
385 Summary:         Solaris Porting Layer Debug Headers and Symbols
386 Group:           Development/Libraries
387 Release:         %{rel_dbug}
388 %if %{defined devreq_dbug}
389 Requires:        %{devreq_dbug}
390 %endif
391 %if %{defined kdevpkg_dbug}
392 BuildRequires:   %{kdevpkg_dbug}
393 %endif
394
395 %description debug-devel
396 The %{name}-debug-devel package contains the header files and
397 Module{s}.symvers symbols needed for building additional modules which
398 use %{name}-debug.
399
400 %endif
401
402 %prep
403 %setup -n @PACKAGE@-%{version}
404 %build
405 rm -rf $RPM_BUILD_ROOT
406
407 %if %{?with_kernel}
408
409 %configure --with-config=kernel \
410            --with-linux=%{kdir_kern} --with-linux-obj=%{kobj_kern} \
411            %{kdebug} %{kdebug_log} %{kdebug_kmem} %{kdebug_kmem_tracking}
412 make
413 make DESTDIR=$RPM_BUILD_ROOT install
414
415 %endif
416 %if %{?with_kernel_debug}
417
418 %configure --with-config=kernel \
419            --with-linux=%{kdir_dbug} --with-linux-obj=%{kobj_dbug} \
420            %{kdebug} %{kdebug_log} %{kdebug_kmem} %{kdebug_kmem_tracking}
421 make
422 make DESTDIR=$RPM_BUILD_ROOT install
423
424 %endif
425
426 %clean
427 rm -rf $RPM_BUILD_ROOT
428
429 %if %{?with_kernel}
430
431 %files
432 %defattr(-, root, root)
433 /lib/modules/%{kver_kern}/*
434
435 %files devel
436 %defattr(-,root,root)
437 %{_prefix}/src/*/%{kver_kern}/*
438
439 %post
440 if [ -f /boot/System.map-%{kver_kern} ]; then
441         /sbin/depmod -ae -F /boot/System.map-%{kver_kern} %{kver_kern} || exit 0
442 else
443         /sbin/depmod -a || exit 0
444 fi
445
446 %postun
447 if [ -f /boot/System.map-%{kver_kern} ]; then
448         /sbin/depmod -ae -F /boot/System.map-%{kver_kern} %{kver_kern} || exit 0
449 else
450         /sbin/depmod -a || exit 0
451 fi
452
453 %endif
454 %if %{?with_kernel_debug}
455
456 %files debug
457 %defattr(-, root, root)
458 /lib/modules/%{kver_dbug}/*
459
460 %files debug-devel
461 %defattr(-,root,root)
462 %{_prefix}/src/*/%{kver_dbug}/*
463
464 %post debug
465 if [ -f /boot/System.map-%{kver_dbug} ]; then
466         /sbin/depmod -ae -F /boot/System.map-%{kver_dbug} %{kver_dbug} || exit 0
467 else
468         /sbin/depmod -a || exit 0
469 fi
470
471 %postun debug
472 if [ -f /boot/System.map-%{kver_dbug} ]; then
473         /sbin/depmod -ae -F /boot/System.map-%{kver_dbug} %{kver_dbug} || exit 0
474 else
475         /sbin/depmod -a || exit 0
476 fi
477
478 %endif