/[packages]/updates/5/kernel/current/SPECS/kernel.spec
ViewVC logotype

Contents of /updates/5/kernel/current/SPECS/kernel.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 818313 - (show annotations) (download)
Tue Mar 10 22:16:04 2015 UTC (9 years, 1 month ago) by tmb
Original Path: cauldron/kernel/current/SPECS/kernel.spec
File size: 42931 byte(s)
update requires/conflicts on firmware to ensure latest is added to initrd
1 # -*- Mode: rpm-spec -*-
2 #
3 # This Specfile is based on kernel-tmb spec done by
4 # Thomas Backlund <tmb@mandriva.org>
5 #
6 # The mkflavour() macroization done by Anssi Hannula <anssi@mandriva.org>
7 #
8 # Note! remember to push kernel-userspace-headers and
9 # the preouilt kernel drivers (kmod-<driver>)
10 #
11 # Mageia kernels use kernel.org versioning
12 #
13 %define kernelversion 3
14 %define patchlevel 19
15 # sublevel is now used for -stable patches
16 %define sublevel 1
17 # extstable is for extended stable patches
18 %define extstable 0
19
20 # Package release
21 %define mgarel 1
22
23 # kernel Makefile extraversion is substituted by
24 # kpatch wich are either 0 (empty), rc (kpatch)
25 %define kpatch 0
26 # kernel.org -gitX patch (only the number after "git")
27 %define kgit 0
28
29 # kernel base name (also name of srpm)
30 %define kname kernel
31
32 # Patch tarball tag
33 %define ktag mga
34
35 %define rpmtag %{distsuffix}%{mgaver}
36 %if %kpatch
37 %if %kgit
38 %define rpmrel %mkrel 0.%{kpatch}.%{kgit}.%{mgarel}
39 %else
40 %define rpmrel %mkrel 0.%{kpatch}.%{mgarel}
41 %endif
42 %else
43 %define rpmrel %mkrel %{mgarel}
44 %endif
45
46 # fakerel and fakever never change, they are used to fool
47 # rpm/urpmi/smart and ensure the kernels are installed,
48 # not upgraded so old kernel is not overwritten or removed
49 %define fakever 1
50 %define fakerel %mkrel 1
51
52 # version defines
53 %if %extstable
54 %define kversion %{kernelversion}.%{patchlevel}.%{sublevel}.%{extstable}
55 %else
56 %define kversion %{kernelversion}.%{patchlevel}.%{sublevel}
57 %endif
58 %define kverrel %{kversion}-%{rpmrel}
59
60 # When we are using a pre/rc patch, the tarball is a sublevel -1
61 %if %kpatch
62 %if %sublevel
63 %define tar_ver %{kernelversion}.%{patchlevel}
64 %else
65 %define tar_ver %{kernelversion}.%(expr %{patchlevel} - 1)
66 %endif
67 %define patch_ver %{kversion}-%{kpatch}-%{ktag}%{mgarel}
68 %else
69 %define tar_ver %{kernelversion}.%{patchlevel}
70 %define patch_ver %{kversion}-%{ktag}%{mgarel}
71 %endif
72
73 # Used for not making too long names for rpms or search paths
74 %if %kpatch
75 %if %kgit
76 %define buildrpmrel 0.%{kpatch}.%{kgit}.%{mgarel}%{rpmtag}
77 %else
78 %define buildrpmrel 0.%{kpatch}.%{mgarel}%{rpmtag}
79 %endif
80 %else
81 %define buildrpmrel %{mgarel}%{rpmtag}
82 %endif
83 %define buildrel %{kversion}-%{buildrpmrel}
84
85 # Having different top level names for packges means that you have to remove
86 # them by hard :(
87 %define top_dir_name %{kname}-%{_arch}
88
89 %define build_dir ${RPM_BUILD_DIR}/%{top_dir_name}
90 %define src_dir %{build_dir}/linux-%{tar_ver}
91
92 # Disable useless debug rpms...
93 %define _enable_debug_packages %{nil}
94 %define debug_package %{nil}
95
96 # Build defines
97 %define build_doc 1
98 %define build_source 1
99 %define build_devel 1
100
101 %define build_debug 1
102
103 # Build desktop i586 / 4GB
104 %ifarch %{ix86}
105 %define build_desktop586 1
106 %endif
107
108 # Build desktop (i686 / 4GB) / x86_64
109 %define build_desktop 1
110
111 # Build server (i686 / 64GB)/x86_64 / sparc64 sets
112 %define build_server 1
113
114 # build perf and cpupower tools
115 %define build_perf 1
116 %define build_cpupower 1
117
118 # compress modules with xz
119 %define build_modxz 1
120
121 # ARM builds
122 %ifarch %{arm}
123 %define build_desktop 0
124 %define build_server 0
125 %define build_iop32x 0
126 %define build_kirkwood 1
127 %define build_versatile 1
128 # no cpupower tools on arm yet
129 %define build_cpupower 0
130 # arm is currently not using xz
131 %define build_modxz 0
132 %endif
133 # End of user definitions
134
135 # buildtime flags
136 %{?_without_desktop586: %global build_desktop586 0}
137 %{?_without_desktop: %global build_desktop 0}
138 %{?_without_server: %global build_server 0}
139 %{?_without_doc: %global build_doc 0}
140 %{?_without_source: %global build_source 0}
141 %{?_without_devel: %global build_devel 0}
142 %{?_without_debug: %global build_debug 0}
143 %{?_without_perf: %global build_perf 0}
144 %{?_without_cpupower: %global build_cpupower 0}
145 %{?_without_modxz: %global build_modxz 0}
146
147 %{?_with_desktop586: %global build_desktop586 1}
148 %{?_with_desktop: %global build_desktop 1}
149 %{?_with_server: %global build_server 1}
150 %{?_with_doc: %global build_doc 1}
151 %{?_with_source: %global build_source 1}
152 %{?_with_devel: %global build_devel 1}
153 %{?_with_debug: %global build_debug 1}
154 %{?_with_perf: %global build_perf 1}
155 %{?_with_cpupower: %global build_cpupower 1}
156 %{?_with_modxz: %global build_modxz 1}
157
158 # ARM builds
159 %{?_with_iop32x: %global build_iop32x 1}
160 %{?_with_kirkwood: %global build_kirkwood 1}
161 %{?_with_versatile: %global build_versatile 1}
162 %{?_without_iop32x: %global build_iop32x 0}
163 %{?_without_kirkwood: %global build_kirkwood 0}
164 %{?_without_versatile: %global build_versatile 0}
165
166 # For the .nosrc.rpm
167 %define build_nosrc 0
168 %{?_with_nosrc: %global build_nosrc 1}
169
170 %if %(if [ -z "$CC" ] ; then echo 0; else echo 1; fi)
171 %define kmake %make CC="$CC"
172 %else
173 %define kmake %make
174 %endif
175 # there are places where parallel make don't work
176 %define smake make
177
178 # Parallelize xargs invocations on smp machines
179 %define kxargs xargs %([ -z "$RPM_BUILD_NCPUS" ] \\\
180 && RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
181 [ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-P $RPM_BUILD_NCPUS")
182
183 # Sparc arch wants sparc64 kernels
184 %define target_arch %(echo %{_arch} | sed -e 's/mips.*/mips/' -e 's/arm.*/arm/')
185
186
187 #
188 # SRC RPM description
189 #
190 Summary: Linux kernel built for Mageia
191 Name: %{kname}
192 Version: %{kversion}
193 Release: %{rpmrel}
194 License: GPLv2
195 Group: System/Kernel and hardware
196 ExclusiveArch: %{ix86} x86_64 %{arm}
197 ExclusiveOS: Linux
198 URL: http://www.kernel.org
199
200 ####################################################################
201 #
202 # Sources
203 #
204 ### This is for full SRC RPM
205 Source0: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/linux-%{tar_ver}.tar.xz
206 Source1: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/linux-%{tar_ver}.tar.sign
207 ### This is for stripped SRC RPM
208 %if %build_nosrc
209 NoSource: 0
210 %endif
211 # This is for disabling *config, mrproper, prepare, scripts on -devel rpms
212 Source2: disable-mrproper-prepare-scripts-configs-in-devel-rpms.patch
213
214 Source4: README.kernel-sources
215
216 # config and systemd service file from fedora
217 Source50: cpupower.service
218 Source51: cpupower.config
219
220 # our patch tarball
221 Source100: linux-%{patch_ver}.tar.xz
222
223 ####################################################################
224 #
225 # Patches
226
227 #
228 # Patch0 to Patch100 are for core kernel upgrades.
229 #
230
231 # Pre linus patch: ftp://ftp.kernel.org/pub/linux/kernel/v3.0/testing
232
233 %if %kpatch
234 %if %sublevel
235 Patch2: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/stable-review/patch-%{kversion}-%{kpatch}.xz
236 Source11: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/stable-review/patch-%{kversion}-%{kpatch}.sign
237 %else
238 Patch1: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/testing/patch-%{kernelversion}.%{patchlevel}-%{kpatch}.xz
239 Source10: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/testing/patch-%{kernelversion}.%{patchlevel}-%{kpatch}.sign
240 %endif
241 %endif
242 %if %kgit
243 Patch2: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/snapshots/patch-%{kernelversion}.%{patchlevel}-%{kpatch}-git%{kgit}.xz
244 Source11: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/snapshots/patch-%{kernelversion}.%{patchlevel}-%{kpatch}-git%{kgit}.sign
245 %endif
246 %if %sublevel
247 %if %kpatch
248 %define prev_sublevel %(expr %{sublevel} - 1)
249 %if %prev_sublevel
250 Patch1: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/patch-%{kernelversion}.%{patchlevel}.%{prev_sublevel}.xz
251 Source10: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/patch-%{kernelversion}.%{patchlevel}.%{prev_sublevel}.sign
252 %endif
253 %else
254 Patch1: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/patch-%{kernelversion}.%{patchlevel}.%{sublevel}.xz
255 Source10: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/patch-%{kernelversion}.%{patchlevel}.%{sublevel}.sign
256 %endif
257 %endif
258 %if %extstable
259 Patch3: patch-%{kernelversion}.%{patchlevel}.%{sublevel}.%{extstable}.patch
260 %endif
261
262 #END
263 ####################################################################
264
265 # Defines for the things that are needed for all the kernels
266 #
267 %define common_desc_kernel The kernel package contains the Linux kernel (vmlinuz), the core of your \
268 Mageia operating system. The kernel handles the basic functions \
269 of the operating system: memory allocation, process allocation, device \
270 input and output, etc.
271
272 %define common_desc_kernel_smp This kernel relies on in-kernel smp alternatives to switch between up & smp \
273 mode depending on detected hardware. To force the kernel to boot in single \
274 processor mode, use the "nosmp" boot parameter.
275
276 ### Global Requires/Provides
277 %define requires1 bootloader-utils >= 1.16-1
278 %define requires2 dracut >= 038-12
279 %define requires3 kmod >= 12-2
280 %define requires4 sysfsutils >= 2.1.0-16
281 %define requires5 kernel-firmware >= 20150309-1
282
283 %define kprovides1 %{kname} = %{kverrel}
284 %define kprovides2 kernel = %{tar_ver}
285 %define kprovides3 alsa = 1.0.26
286 %define kprovides_server drbd-api = 88
287
288 %define kobsoletes1 dkms-r8192se <= 0019.1207.2010-2
289 %define kobsoletes2 dkms-lzma <= 4.43-32
290 %define kobsoletes3 dkms-psb <= 4.41.1-7
291 # conflict dkms packages that dont support kernel-3.17
292 %define kconflicts1 dkms-broadcom-wl < 6.30.223.141-11
293 %define kconflicts2 dkms-fglrx < 14.010.1006-4
294 %define kconflicts3 dkms-nvidia-current < 340.32-1
295 %define kconflicts4 dkms-nvidia304 < 304.123-1
296 %define kconflicts5 dkms-virtualbox < 4.3.20-1
297 # not supported by x11-server-1.16
298 %define kconflicts6 dkms-nvidia173 <= 173.14.39
299 # (tmb) nvidia96xx does not support this kernel or x11-server-1.13
300 %define kconflicts7 dkms-nvidia96xx <= 96.43.23
301 %define kconflicts8 dkms-xtables-addons < 2.5-3
302 # (tmb) conflict too old lvm2 rules to make upgrades work (tv, mga #9536)
303 %define kconflicts9 lvm2 < 2.02.98-3
304 # (tmb) conflict too old drakxtools-backend to avoid bogus root=/dev/ (#9536)
305 %define kconflicts10 drakxtools-backend < 15.37-1
306 # (tmb) conflict older btrfs-progs to get the new in same transaction and in initrd
307 %define kconflicts11 btrfs-progs < 3.14.2-1
308 # (tmb) conflict too old plymouth (#10128)
309 %define kconflicts12 plymouth < 0.8.6.1-8
310 # (tmb) conflict too old radeon-firmware to get the uvd firmwares in initrd
311 %define kconflicts13 radeon-firmware < 20150204-1
312 # (tmb) conflict old irmware to get the firmwares in initrd
313 %define kconflicts14 kernel-firmware-nonfree < 20150309-1
314
315 Autoreqprov: no
316
317 BuildRequires: gcc >= 4.8.2-1
318 BuildRequires: binutils >= 1:2.24-0.20131016.1
319 BuildRequires: kmod >= 12-2
320 BuildRequires: bc
321 # for cpupower
322 %if %{build_cpupower}
323 BuildRequires: pciutils-devel
324 %endif
325 # for perf
326 %if %{build_perf}
327 BuildRequires: audit-devel
328 BuildRequires: binutils-devel
329 BuildRequires: elfutils-devel
330 BuildRequires: gtk2-devel
331 BuildRequires: libunwind-devel
332 BuildRequires: newt-devel
333 BuildRequires: python-devel
334 BuildRequires: zlib-devel
335 BuildRequires: asciidoc
336 BuildRequires: bison
337 BuildRequires: flex
338 BuildRequires: xmlto
339 BuildRequires: perl-devel
340 BuildRequires: numa-devel
341 %endif
342
343
344 %description
345 %common_desc_kernel
346 %ifnarch %{arm}
347 %common_desc_kernel_smp
348 %endif
349
350 # Define obsolete/provides to help automatic upgrades of old kernel-xen-pvops
351 %define latest_obsoletes_server kernel-xen-pvops-latest < 3.2.1-1
352 %define latest_provides_server kernel-xen-pvops-latest = %{kverrel}
353 %define latest_obsoletes_devel_server kernel-xen-pvops-devel-latest < 3.2.1-1
354 %define latest_provides_devel_server kernel-xen-pvops-devel-latest = %{kverrel}
355 # Define obsolete/provides to help automatic upgrades of old kernel-netbook
356 %define latest_obsoletes_desktop kernel-netbook-latest < 3.7.0-0.rc8.1
357 %define latest_provides_desktop kernel-netbook-latest = %{kverrel}
358 %define latest_obsoletes_devel_desktop kernel-netbook-devel-latest < 3.7.0-0.rc8.1
359 %define latest_provides_devel_desktop kernel-netbook-devel-latest = %{kverrel}
360
361 # mkflavour() name flavour processor
362 # name: the flavour name in the package name
363 # flavour: first parameter of CreateKernel()
364 %define mkflavour() \
365 %package -n %{kname}-%{1}-%{buildrel} \
366 Version: %{fakever} \
367 Release: %{fakerel} \
368 Provides: %kprovides1 %kprovides2 %kprovides3 \
369 %{expand:%%{?kprovides_%{1}:Provides: %{kprovides_%{1}}}} \
370 Provides: %{kname}-%{1} \
371 Requires(pre): %requires1 %requires2 %requires3 %requires4 \
372 Requires: %requires2 %requires5 \
373 Obsoletes: %kobsoletes1 %kobsoletes2 %kobsoletes3 \
374 Conflicts: %kconflicts1 %kconflicts2 %kconflicts3 \
375 Conflicts: %kconflicts4 %kconflicts5 %kconflicts6 \
376 Conflicts: %kconflicts7 %kconflicts8 %kconflicts9 \
377 Conflicts: %kconflicts10 %kconflicts11 %kconflicts12 \
378 Conflicts: %kconflicts13 %kconflicts14 \
379 Provides: should-restart = system \
380 Recommends: crda iw cpupower \
381 Recommends: %{kname}-%{1}-latest \
382 %ifarch %{ix86} \
383 Conflicts: arch(x86_64) \
384 %endif \
385 Summary: %{expand:%{summary_%(echo %{1} | sed -e "s/-/_/")}} \
386 Group: System/Kernel and hardware \
387 %description -n %{kname}-%{1}-%{buildrel} \
388 %common_desc_kernel %{expand:%{info_%(echo %{1} | sed -e "s/-/_/")}} \
389 %ifnarch %{arm} \
390 %common_desc_kernel_smp \
391 %endif \
392 \
393 %if %build_devel \
394 %package -n %{kname}-%{1}-devel-%{buildrel} \
395 Version: %{fakever} \
396 Release: %{fakerel} \
397 Requires: glibc-devel ncurses-devel make gcc perl \
398 Summary: The kernel-devel files for %{kname}-%{1}-%{buildrel} \
399 Group: Development/Kernel \
400 Provides: %{kname}-devel = %{kverrel} \
401 Provides: %{kname}-%{1}-devel \
402 Recommends: %{kname}-%{1}-devel-latest \
403 %ifarch %{ix86} \
404 Conflicts: arch(x86_64) \
405 %endif \
406 %description -n %{kname}-%{1}-devel-%{buildrel} \
407 This package contains the kernel files (headers and build tools) \
408 that should be enough to build additional drivers for \
409 use with %{kname}-%{1}-%{buildrel}. \
410 \
411 If you want to build your own kernel, you need to install the full \
412 %{kname}-source-%{buildrel} rpm. \
413 \
414 %endif \
415 \
416 %if %build_debug \
417 %package -n %{kname}-%{1}-%{buildrel}-debuginfo \
418 Version: %{fakever} \
419 Release: %{fakerel} \
420 Summary: Files with debuginfo for %{kname}-%{1}-%{buildrel} \
421 Group: Development/Debug \
422 Provides: kernel-debug = %{kverrel} \
423 %ifarch %{ix86} \
424 Conflicts: arch(x86_64) \
425 %endif \
426 %description -n %{kname}-%{1}-%{buildrel}-debuginfo \
427 This package contains the files with debuginfo to aid in debug tasks \
428 when using %{kname}-%{1}-%{buildrel}. \
429 \
430 If you need to look at debug information or use some application that \
431 needs debugging info from the kernel, this package may help. \
432 \
433 %endif \
434 \
435 %package -n %{kname}-%{1}-latest \
436 Version: %{kversion} \
437 Release: %{rpmrel} \
438 Summary: Virtual rpm for latest %{kname}-%{1} \
439 Group: System/Kernel and hardware \
440 Requires: %{kname}-%{1}-%{buildrel} \
441 %ifarch %{ix86} \
442 Conflicts: arch(x86_64) \
443 %endif \
444 %{expand:%%{?latest_obsoletes_%{1}:Obsoletes: %{latest_obsoletes_%{1}}}} \
445 %{expand:%%{?latest_provides_%{1}:Provides: %{latest_provides_%{1}}}} \
446 %description -n %{kname}-%{1}-latest \
447 This package is a virtual rpm that aims to make sure you always have the \
448 latest %{kname}-%{1} installed... \
449 \
450 %if %build_devel \
451 %package -n %{kname}-%{1}-devel-latest \
452 Version: %{kversion} \
453 Release: %{rpmrel} \
454 Summary: Virtual rpm for latest %{kname}-%{1}-devel \
455 Group: Development/Kernel \
456 Requires: %{kname}-%{1}-devel-%{buildrel} \
457 %ifarch %{ix86} \
458 Conflicts: arch(x86_64) \
459 %endif \
460 Provides: %{kname}-devel-latest \
461 %{expand:%%{?latest_obsoletes_devel_%{1}:Obsoletes: %{latest_obsoletes_devel_%{1}}}} \
462 %{expand:%%{?latest_provides_devel_%{1}:Provides: %{latest_provides_devel_%{1}}}} \
463 %description -n %{kname}-%{1}-devel-latest \
464 This package is a virtual rpm that aims to make sure you always have the \
465 latest %{kname}-%{1}-devel installed... \
466 \
467 %endif \
468 \
469 %posttrans -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-posttrans \
470 %preun -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-preun \
471 %postun -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-postun \
472 \
473 %if %build_devel \
474 %post -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-post \
475 %preun -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-preun \
476 %postun -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-postun \
477 %endif \
478 \
479 %files -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1} \
480 %files -n %{kname}-%{1}-latest \
481 \
482 %if %build_devel \
483 %files -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1} \
484 %files -n %{kname}-%{1}-devel-latest \
485 %endif \
486 \
487 %if %build_debug \
488 %files -n %{kname}-%{1}-%{buildrel}-debuginfo -f kernel_debug_files.%{1} \
489 %endif
490
491 %ifarch %{ix86}
492 #
493 # kernel-desktop586: i586, smp-alternatives, 4GB
494 #
495 %if %build_desktop586
496 %define summary_desktop586 Linux kernel for desktop use with i586 and less than 4GB RAM
497 %define info_desktop586 This kernel is compiled for desktop use, single or \
498 multiple i586 processor(s)/core(s) and less than 4GB RAM (usually 3-3.5GB \
499 detected, if you need/want to use all 4GB or more, install kernel-server), \
500 using HZ_1000, voluntary preempt, CFS cpu scheduler and cfq i/o scheduler.
501 %mkflavour desktop586
502 %endif
503 %endif
504
505 #
506 # kernel-desktop: i686, smp-alternatives, 4 GB / x86_64
507 #
508 %if %build_desktop
509 %ifarch %{ix86}
510 %define summary_desktop Linux Kernel for desktop use with i686 and less than 4GB RAM
511 %define info_desktop This kernel is compiled for desktop use, single or \
512 multiple i686 processor(s)/core(s) and less than 4GB RAM (usually 3-3.5GB \
513 detected, if you need/want to use all 4GB or more, install kernel-server), \
514 using HZ_1000, voluntary preempt, CFS cpu scheduler and cfq i/o scheduler.
515 %else
516 %define summary_desktop Linux Kernel for desktop use with %{_arch}
517 %define info_desktop This kernel is compiled for desktop use, single or \
518 multiple %{_arch} processor(s)/core(s), using HZ_1000, voluntary preempt, \
519 CFS cpu scheduler and cfq i/o scheduler.
520 %endif
521 %mkflavour desktop
522 %endif
523
524 #
525 # kernel-server: i686, smp-alternatives, 64 GB / x86_64
526 #
527 %if %build_server
528 %ifarch %{ix86}
529 %define summary_server Linux Kernel for server use with i686 & 64GB RAM
530 %define info_server This kernel is compiled for server use, single or \
531 multiple i686 processor(s)/core(s) and up to 64GB RAM using PAE, using \
532 no preempt, HZ_100, CFS cpu scheduler and cfq i/o scheduler.
533 %else
534 %define summary_server Linux Kernel for server use with %{_arch}
535 %define info_server This kernel is compiled for server use, single or \
536 multiple %{_arch} processor(s)/core(s), using no preempt, HZ_100, \
537 CFS cpu scheduler and cfq i/o scheduler.
538 %endif
539 %mkflavour server
540 %endif
541
542 #
543 # ARM kernels
544 #
545 %ifarch %{arm}
546 %if %build_iop32x
547 %define summary_iop32x Linux Kernel for Arm machines based on Xscale IOP32X
548 %define info_iop32x This kernel is compiled for iop32x boxes. It will run on n2100 \
549 or ss4000e or sanmina boards.
550 %mkflavour iop32x
551 %endif
552 %if %build_kirkwood
553 %define summary_kirkwood Linux Kernel for Arm machines based on Kirkwood
554 %define info_kirkwood This kernel is compiled for kirkwood boxes. It will run on openrd boards.
555 %mkflavour kirkwood
556 %endif
557 %if %build_versatile
558 %define summary_versatile Linux Kernel for Versatile arm machines
559 %define info_versatile This kernel is compiled for Versatile boxes. It will run on Qemu for instance.
560 %mkflavour versatile
561 %endif
562 %endif
563
564 #
565 # kernel-source
566 #
567 %if %build_source
568 %package -n %{kname}-source-%{buildrel}
569 Version: %{fakever}
570 Release: %{fakerel}
571 Requires: glibc-devel, ncurses-devel, make, gcc, perl, diffutils
572 Summary: The Linux source code for %{kname}-%{buildrel}
573 Group: Development/Kernel
574 Autoreqprov: no
575 Provides: kernel-source = %{kverrel}
576 Buildarch: noarch
577
578 %description -n %{kname}-source-%{buildrel}
579 The %{kname}-source package contains the source code files for the Mageia
580 kernel. Theese source files are only needed if you want to build your
581 own custom kernel that is better tuned to your particular hardware.
582
583 If you only want the files needed to build 3rdparty (nVidia, Ati, dkms-*,...)
584 drivers against, install the *-devel-* rpm that is matching your kernel.
585
586 #
587 # kernel-source-latest: virtual rpm
588 #
589 %package -n %{kname}-source-latest
590 Version: %{kversion}
591 Release: %{rpmrel}
592 Summary: Virtual rpm for latest %{kname}-source
593 Group: Development/Kernel
594 Requires: %{kname}-source-%{buildrel}
595 Buildarch: noarch
596
597 %description -n %{kname}-source-latest
598 This package is a virtual rpm that aims to make sure you always have the
599 latest %{kname}-source installed...
600 %endif
601
602 #
603 # kernel-doc: documentation for the Linux kernel
604 #
605 %if %build_doc
606 %package -n %{kname}-doc
607 Version: %{kversion}
608 Release: %{rpmrel}
609 Summary: Various documentation bits found in the %{kname} source
610 Group: Documentation
611 Buildarch: noarch
612
613 %description -n %{kname}-doc
614 This package contains documentation files from the %{kname} source.
615 Various bits of information about the Linux kernel and the device drivers
616 shipped with it are documented in these files. You also might want install
617 this package if you need a reference to the options that can be passed to
618 Linux kernel modules at load time.
619 %endif
620
621 #
622 # kernel/tools
623 #
624 %if %{build_perf}
625 %package -n perf
626 Version: %{kversion}
627 Release: %{rpmrel}
628 Summary: perf tool and the supporting documentation
629 Group: System/Kernel and hardware
630
631 %description -n perf
632 the perf tool and the supporting documentation.
633 %endif
634
635 %if %{build_cpupower}
636 %package -n cpupower
637 Version: %{kversion}
638 Release: %{rpmrel}
639 Summary: the cpupower tools
640 Group: System/Kernel and hardware
641 Requires(post): rpm-helper >= 0.24.8-1
642 Requires(preun): rpm-helper >= 0.24.8-1
643 Obsoletes: cpufreq cpufrequtils
644
645 %description -n cpupower
646 the cpupower tools.
647
648 %post -n cpupower
649 %_post_service cpupower
650
651 %preun -n cpupower
652 %_preun_service cpupower
653
654 %package -n cpupower-devel
655 Version: %{kversion}
656 Release: %{rpmrel}
657 Summary: devel files for cpupower
658 Group: Development/Kernel
659 Requires: cpupower = %{kversion}-%{rpmrel}
660 Conflicts: %{_lib}cpufreq-devel
661
662 %description -n cpupower-devel
663 This package contains the development files for cpupower.
664 %endif
665
666
667 #
668 # End packages - here begins build stage
669 #
670 %prep
671 %setup -q -n %top_dir_name -c
672 %setup -q -n %top_dir_name -D -T -a100
673
674 %define patches_dir ../%{patch_ver}/
675
676 cd %src_dir
677
678 %if %sublevel
679 %if %kpatch
680 %if %prev_sublevel
681 %patch1 -p1
682 %endif
683 %patch2 -p1
684 %else
685 %patch1 -p1
686 %endif
687 %else
688 %if %kpatch
689 %patch1 -p1
690 %endif
691 %endif
692 %if %kgit
693 %patch2 -p1
694 %endif
695 %if %extstable
696 %patch3 -p1
697 %endif
698
699 %{patches_dir}/scripts/apply_patches
700
701 # PATCH END
702
703
704 #
705 # Setup Begin
706 #
707
708 # Prepare all the variables for calling create_configs
709
710 %if %build_debug
711 %define debug --debug
712 %else
713 %define debug --no-debug
714 %endif
715
716
717 %{patches_dir}/scripts/create_configs %debug --user_cpu="%{target_arch}"
718
719 # make sure the kernel has the sublevel we know it has...
720 LC_ALL=C perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{sublevel}/" Makefile
721
722 # get rid of unwanted files
723 find . -name '*~' -o -name '*.orig' -o -name '*.append' | %kxargs rm -f
724
725
726 %build
727 # Common target directories
728 %define _kerneldir /usr/src/kernel-%{kversion}-%{buildrpmrel}
729 %define _bootdir /boot
730 %define _modulesdir /lib/modules
731 %define _efidir %{_bootdir}/efi/mageia
732
733 # Directories definition needed for building
734 %define temp_root %{build_dir}/temp-root
735 %define temp_source %{temp_root}%{_kerneldir}
736 %define temp_boot %{temp_root}%{_bootdir}
737 %define temp_modules %{temp_root}%{_modulesdir}
738
739 PrepareKernel() {
740 name=$1
741 extension=$2
742 x86_dir=arch/x86/configs
743
744 echo "Make config for kernel $extension"
745
746 %smake -s mrproper
747
748 if [ "%{target_arch}" == "i386" -o "%{target_arch}" == "x86_64" ]; then
749 if [ -z "$name" ]; then
750 cp ${x86_dir}/%{target_arch}_defconfig-desktop .config
751 else
752 cp ${x86_dir}/%{target_arch}_defconfig-$name .config
753 fi
754 else
755 if [ -z "$name" ]; then
756 cp arch/%{target_arch}/defconfig-desktop .config
757 else
758 cp arch/%{target_arch}/defconfig-$name .config
759 fi
760 fi
761
762 # make sure EXTRAVERSION says what we want it to say
763 %if %extstable
764 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = .%{extstable}-$extension/" Makefile
765 %else
766 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -$extension/" Makefile
767 %endif
768
769 %smake oldconfig
770 }
771
772 BuildKernel() {
773 KernelVer=$1
774
775 echo "Building kernel $KernelVer"
776
777 %kmake -s all
778
779 %ifarch %{arm}
780 make dtbs
781 %endif
782
783 # Start installing stuff
784 install -d %{temp_boot}
785 install -m 644 System.map %{temp_boot}/System.map-$KernelVer
786 install -m 644 .config %{temp_boot}/config-$KernelVer
787 xz -c Module.symvers > %{temp_boot}/symvers-$KernelVer.xz
788
789 %ifarch %{arm}
790 cp -f arch/arm/boot/zImage %{temp_boot}/vmlinuz-$KernelVer
791 install -d %{temp_root}/usr/lib/linux-$KernelVer/
792 for d in arch/arm/boot/dts/*.dtb; do \
793 install -D -m644 $d %{temp_root}/usr/lib/linux-$KernelVer/$(basename $d); \
794 done
795 %else
796 cp -f arch/%{target_arch}/boot/bzImage %{temp_boot}/vmlinuz-$KernelVer
797 %endif
798
799 # modules
800 install -d %{temp_modules}/$KernelVer
801 %smake INSTALL_MOD_PATH=%{temp_root} KERNELRELEASE=$KernelVer modules_install
802
803 # remove /lib/firmware, we use a separate kernel-firmware
804 rm -rf %{temp_root}/lib/firmware
805 }
806
807 SaveDevel() {
808 devel_flavour=$1
809
810 DevelRoot=/usr/src/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}
811 TempDevelRoot=%{temp_root}$DevelRoot
812
813 mkdir -p $TempDevelRoot
814 for i in $(find . -name 'Makefile*'); do cp -R --parents $i $TempDevelRoot;done
815 for i in $(find . -name 'Kconfig*' -o -name 'Kbuild*'); do cp -R --parents $i $TempDevelRoot;done
816 cp -fR Documentation/DocBook/media/*.b64 $TempDevelRoot/Documentation/DocBook/media/
817 cp -fR include $TempDevelRoot
818 cp -fR scripts $TempDevelRoot
819 cp -fR kernel/bounds.c $TempDevelRoot/kernel
820 cp -fR tools/include $TempDevelRoot/tools/
821 %ifarch %{arm}
822 cp -fR arch/%{target_arch}/tools $TempDevelRoot/arch/%{target_arch}/
823 %endif
824 %ifarch %{ix86} x86_64
825 cp -fR arch/x86/kernel/asm-offsets.{c,s} $TempDevelRoot/arch/x86/kernel/
826 cp -fR arch/x86/kernel/asm-offsets_{32,64}.c $TempDevelRoot/arch/x86/kernel/
827 cp -fR arch/x86/purgatory/* $TempDevelRoot/arch/x86/purgatory/
828 cp -fR arch/x86/syscalls/syscall* $TempDevelRoot/arch/x86/syscalls/
829 cp -fR arch/x86/include $TempDevelRoot/arch/x86/
830 cp -fR arch/x86/tools $TempDevelRoot/arch/x86/
831 %else
832 cp -fR arch/%{target_arch}/kernel/asm-offsets.{c,s} $TempDevelRoot/arch/%{target_arch}/kernel/
833 for f in $(find arch/%{target_arch} -name include); do cp -fR --parents $f $TempDevelRoot; done
834 %endif
835 cp -fR .config Module.symvers $TempDevelRoot
836 cp -fR 3rdparty/mkbuild.pl $TempDevelRoot/3rdparty
837
838 # Needed for truecrypt build (Danny)
839 cp -fR drivers/md/dm.h $TempDevelRoot/drivers/md/
840
841 # Needed for lguest
842 cp -fR drivers/lguest/lg.h $TempDevelRoot/drivers/lguest/
843
844 # Needed for lirc_gpio (#39004)
845 cp -fR drivers/media/pci/bt8xx/bttv{,p}.h $TempDevelRoot/drivers/media/pci/bt8xx/
846 cp -fR drivers/media/pci/bt8xx/bt848.h $TempDevelRoot/drivers/media/pci/bt8xx/
847 cp -fR drivers/media/common/btcx-risc.h $TempDevelRoot/drivers/media/common/
848
849 # Needed for external dvb tree (#41418)
850 cp -fR drivers/media/dvb-core/*.h $TempDevelRoot/drivers/media/dvb-core/
851 cp -fR drivers/media/dvb-frontends/lgdt330x.h $TempDevelRoot/drivers/media/dvb-frontends/
852
853 # add acpica header files, needed for fglrx build
854 cp -fR drivers/acpi/acpica/*.h $TempDevelRoot/drivers/acpi/acpica/
855
856 # aufs2 has a special file needed
857 cp -fR fs/aufs/magic.mk $TempDevelRoot/fs/aufs
858
859 for i in alpha arc avr32 blackfin c6x cris frv h8300 hexagon ia64 m32r m68k m68knommu metag microblaze \
860 mips mn10300 nios2 openrisc parisc powerpc s390 score sh sparc tile unicore32 xtensa; do
861 rm -rf $TempDevelRoot/arch/$i
862 done
863
864 %ifnarch %{arm}
865 rm -rf $TempDevelRoot/arch/arm*
866 rm -rf $TempDevelRoot/include/kvm/arm*
867 rm -rf $TempDevelRoot/include/soc
868 %endif
869 %ifnarch %{ix86} x86_64
870 rm -rf $TempDevelRoot/arch/x86
871 %endif
872
873 # Clean the scripts tree, and make sure everything is ok (sanity check)
874 # running prepare+scripts (tree was already "prepared" in build)
875 pushd $TempDevelRoot >/dev/null
876 %smake -s prepare scripts
877 %smake -s clean
878 popd >/dev/null
879 rm -f $TempDevelRoot/.config.old
880
881 # fix permissions
882 chmod -R a+rX $TempDevelRoot
883
884 # disable mrproper in -devel rpms
885 patch -p1 --fuzz=0 -d $TempDevelRoot -i %{SOURCE2}
886
887 kernel_devel_files=../kernel_devel_files.$devel_flavour
888
889
890 ### Create the kernel_devel_files.*
891 cat > $kernel_devel_files <<EOF
892 %dir $DevelRoot
893 %dir $DevelRoot/arch
894 %dir $DevelRoot/include
895 $DevelRoot/3rdparty
896 $DevelRoot/Documentation
897 %ifarch %{arm}
898 $DevelRoot/arch/arm
899 $DevelRoot/arch/arm64
900 %endif
901 $DevelRoot/arch/um
902 %ifarch %{ix86} x86_64
903 $DevelRoot/arch/x86
904 %endif
905 $DevelRoot/block
906 $DevelRoot/crypto
907 $DevelRoot/drivers
908 $DevelRoot/firmware
909 $DevelRoot/fs
910 $DevelRoot/include/Kbuild
911 $DevelRoot/include/acpi
912 $DevelRoot/include/asm-generic
913 $DevelRoot/include/clocksource
914 $DevelRoot/include/config
915 $DevelRoot/include/crypto
916 $DevelRoot/include/drm
917 $DevelRoot/include/dt-bindings
918 $DevelRoot/include/generated
919 $DevelRoot/include/keys
920 $DevelRoot/include/linux
921 $DevelRoot/include/math-emu
922 $DevelRoot/include/media
923 $DevelRoot/include/memory
924 $DevelRoot/include/misc
925 $DevelRoot/include/net
926 $DevelRoot/include/pcmcia
927 $DevelRoot/include/ras
928 $DevelRoot/include/rdma
929 $DevelRoot/include/rxrpc
930 $DevelRoot/include/scsi
931 %ifarch %{arm}
932 $DevelRoot/include/soc
933 %endif
934 $DevelRoot/include/sound
935 $DevelRoot/include/target
936 $DevelRoot/include/trace
937 $DevelRoot/include/uapi
938 $DevelRoot/include/video
939 $DevelRoot/include/xen
940 $DevelRoot/init
941 $DevelRoot/ipc
942 $DevelRoot/kernel
943 $DevelRoot/lib
944 $DevelRoot/mm
945 $DevelRoot/net
946 $DevelRoot/samples
947 $DevelRoot/scripts
948 $DevelRoot/security
949 $DevelRoot/sound
950 $DevelRoot/tools
951 $DevelRoot/usr
952 $DevelRoot/virt
953 $DevelRoot/.config
954 $DevelRoot/Kbuild
955 $DevelRoot/Kconfig
956 $DevelRoot/Makefile
957 $DevelRoot/Module.symvers
958 $DevelRoot/arch/Kconfig
959 %doc README.kernel-sources
960 EOF
961
962
963 ### Create -devel Post script on the fly
964 cat > $kernel_devel_files-post <<EOF
965 if [ -d /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel} ]; then
966 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/{build,source}
967 ln -sf $DevelRoot /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build
968 ln -sf $DevelRoot /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source
969 fi
970 EOF
971
972
973 ### Create -devel Preun script on the fly
974 cat > $kernel_devel_files-preun <<EOF
975 if [ -L /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build ]; then
976 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build
977 fi
978 if [ -L /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source ]; then
979 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source
980 fi
981 exit 0
982 EOF
983
984 ### Create -devel Postun script on the fly
985 cat > $kernel_devel_files-postun <<EOF
986 rm -rf /usr/src/kernel-%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
987 EOF
988 }
989
990 SaveDebug() {
991 debug_flavour=$1
992
993 install -m 644 vmlinux \
994 %{temp_boot}/vmlinux-%{kversion}-$debug_flavour-%{buildrpmrel}
995 kernel_debug_files=../kernel_debug_files.$debug_flavour
996 echo "%{_bootdir}/vmlinux-%{kversion}-$debug_flavour-%{buildrpmrel}" \
997 >> $kernel_debug_files
998
999 find %{temp_modules}/%{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1000 -name "*.ko" | \
1001 %kxargs -I '{}' objcopy --only-keep-debug '{}' '{}'.debug
1002 find %{temp_modules}/%{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1003 -name "*.ko" | %kxargs -I '{}' \
1004 sh -c 'cd `dirname {}`; \
1005 objcopy --add-gnu-debuglink=`basename {}`.debug \
1006 --strip-debug `basename {}`'
1007
1008 pushd %{temp_modules}
1009 find %{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1010 -name "*.ko.debug" > debug_module_list
1011 popd
1012 cat %{temp_modules}/debug_module_list | \
1013 sed 's|\(.*\)|%{_modulesdir}/\1|' >> $kernel_debug_files
1014 cat %{temp_modules}/debug_module_list | \
1015 sed 's|\(.*\)|%exclude %{_modulesdir}/\1|' \
1016 >> ../kernel_exclude_debug_files.$debug_flavour
1017 rm -f %{temp_modules}/debug_module_list
1018 }
1019
1020 CreateFiles() {
1021 kernel_flavour=$1
1022
1023 kernel_files=../kernel_files.$kernel_flavour
1024
1025 ker="vmlinuz"
1026 ### Create the kernel_files.*
1027 cat > $kernel_files <<EOF
1028 %{_bootdir}/System.map-%{kversion}-$kernel_flavour-%{buildrpmrel}
1029 %{_bootdir}/symvers-%{kversion}-$kernel_flavour-%{buildrpmrel}.xz
1030 %{_bootdir}/config-%{kversion}-$kernel_flavour-%{buildrpmrel}
1031 %{_bootdir}/$ker-%{kversion}-$kernel_flavour-%{buildrpmrel}
1032 %dir %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/
1033 %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/kernel
1034 %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/modules.*
1035 %doc README.kernel-sources
1036 %ifarch %arm
1037 %dir /usr/lib/linux-%{kversion}-$kernel_flavour-%{buildrpmrel}
1038 /usr/lib/linux-%{kversion}-$kernel_flavour-%{buildrpmrel}/*.dtb
1039 %endif
1040 EOF
1041
1042 %if %build_debug
1043 cat ../kernel_exclude_debug_files.$kernel_flavour >> $kernel_files
1044 %endif
1045
1046 ### Create kernel Posttrans script
1047 cat > $kernel_files-posttrans <<EOF
1048 %if %build_devel
1049 # create kernel-devel symlinks if matching -devel- rpm is installed
1050 if [ -d /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} ]; then
1051 rm -f /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/{build,source}
1052 ln -sf /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/build
1053 ln -sf /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/source
1054 fi
1055 %endif
1056 if [ -x /usr/sbin/dkms_autoinstaller -a -d /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} ]; then
1057 /usr/sbin/dkms_autoinstaller start %{kversion}-$kernel_flavour-%{buildrpmrel}
1058 fi
1059 %ifarch %{arm}
1060 /sbin/installkernel -i -N %{kversion}-$kernel_flavour-%{buildrpmrel}
1061 %else
1062 /sbin/installkernel %{kversion}-$kernel_flavour-%{buildrpmrel}
1063 pushd /boot > /dev/null
1064 if [ -L vmlinuz-$kernel_flavour ]; then
1065 rm -f vmlinuz-$kernel_flavour
1066 fi
1067 ln -sf vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel} vmlinuz-$kernel_flavour
1068 if [ -L initrd-$kernel_flavour.img ]; then
1069 rm -f initrd-$kernel_flavour.img
1070 fi
1071 ln -sf initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img initrd-$kernel_flavour.img
1072 popd > /dev/null
1073 %endif
1074 EOF
1075
1076 ### Create kernel Preun script on the fly
1077 cat > $kernel_files-preun <<EOF
1078 /sbin/installkernel -R %{kversion}-$kernel_flavour-%{buildrpmrel}
1079 pushd /boot > /dev/null
1080 if [ -L vmlinuz-$kernel_flavour ]; then
1081 if [ "$(readlink vmlinuz-$kernel_flavour)" = "vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel}" ]; then
1082 rm -f vmlinuz-$kernel_flavour
1083 fi
1084 fi
1085 if [ -L initrd-$kernel_flavour.img ]; then
1086 if [ "$(readlink initrd-$kernel_flavour.img)" = "initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img" ]; then
1087 rm -f initrd-$kernel_flavour.img
1088 fi
1089 fi
1090 popd > /dev/null
1091 %if %build_devel
1092 if [ -L /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/build ]; then
1093 rm -f /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/build
1094 fi
1095 if [ -L /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/source ]; then
1096 rm -f /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/source
1097 fi
1098 %endif
1099 exit 0
1100 EOF
1101
1102
1103 ### Create kernel Postun script on the fly
1104 cat > $kernel_files-postun <<EOF
1105 /sbin/kernel_remove_initrd %{kversion}-$kernel_flavour-%{buildrpmrel}
1106 rm -rf /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel} >/dev/null
1107 if [ -d /var/lib/dkms ]; then
1108 rm -f /var/lib/dkms/*/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}-%{_target_cpu} >/dev/null
1109 rm -rf /var/lib/dkms/*/*/%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
1110 rm -f /var/lib/dkms-binary/*/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}-%{_target_cpu} >/dev/null
1111 rm -rf /var/lib/dkms-binary/*/*/%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
1112 fi
1113 EOF
1114 }
1115
1116
1117 CreateKernel() {
1118 flavour=$1
1119
1120 PrepareKernel $flavour $flavour-%{buildrpmrel}
1121
1122 BuildKernel %{kversion}-$flavour-%{buildrpmrel}
1123 %if %build_devel
1124 SaveDevel $flavour
1125 %endif
1126 %if %build_debug
1127 SaveDebug $flavour
1128 %endif
1129 CreateFiles $flavour
1130 }
1131
1132
1133 ###
1134 # DO it...
1135 ###
1136
1137
1138 # Create a simulacro of buildroot
1139 rm -rf %{temp_root}
1140 install -d %{temp_root}
1141
1142
1143 # make sure we are in the directory
1144 cd %src_dir
1145
1146 %ifarch %{ix86}
1147 %if %build_desktop586
1148 CreateKernel desktop586
1149 %endif
1150 %endif
1151
1152 %if %build_desktop
1153 CreateKernel desktop
1154 %endif
1155
1156 %if %build_server
1157 CreateKernel server
1158 %endif
1159
1160 %ifarch %{arm}
1161 %if %build_iop32x
1162 CreateKernel iop32x
1163 %endif
1164 %if %build_kirkwood
1165 CreateKernel kirkwood
1166 %endif
1167 %if %build_versatile
1168 CreateKernel versatile
1169 %endif
1170 %endif
1171
1172 # set extraversion to match srpm to get nice version reported by the tools
1173 %if %extstable
1174 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = .%{extstable}-%{rpmrel}/" Makefile
1175 %else
1176 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{rpmrel}/" Makefile
1177 %endif
1178 # build perf
1179 %if %{build_perf}
1180 # perf
1181 %smake -C tools/perf -s HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} all
1182 %smake -C tools/perf -s prefix=%{_prefix} man
1183 %endif
1184
1185 %if %{build_cpupower}
1186 # cpupower
1187 # make sure version-gen.sh is executable.
1188 chmod +x tools/power/cpupower/utils/version-gen.sh
1189 %make -C tools/power/cpupower CPUFREQ_BENCH=false
1190 %endif
1191
1192 # We don't make to repeat the depend code at the install phase
1193 %if %build_source
1194 %ifarch %{arm}
1195 PrepareKernel "kirkwood" %{buildrpmrel}custom
1196 %else
1197 PrepareKernel "" %{buildrpmrel}custom
1198 %endif
1199 %smake -s mrproper
1200 %endif
1201
1202
1203 ###
1204 ### install
1205 ###
1206 %install
1207 install -m 644 %{SOURCE4} .
1208
1209 cd %src_dir
1210
1211 # Directories definition needed for installing
1212 %define target_source %{buildroot}%{_kerneldir}
1213 %define target_boot %{buildroot}%{_bootdir}
1214 %define target_modules %{buildroot}%{_modulesdir}
1215
1216 # We want to be able to test several times the install part
1217 rm -rf %{buildroot}
1218 cp -a %{temp_root} %{buildroot}
1219
1220 # Create directories infastructure
1221 %if %build_source
1222 install -d %{target_source}
1223
1224 tar cf - . | tar xf - -C %{target_source}
1225 chmod -R a+rX %{target_source}
1226
1227 # we remove all the source files that we don't ship
1228 # first architecture files
1229 for i in alpha arc avr32 blackfin c6x cris frv h8300 hexagon ia64 m32r m68k m68knommu metag microblaze \
1230 mips nios2 openrisc parisc powerpc s390 score sh sh64 sparc tile unicore32 v850 xtensa mn10300; do
1231 rm -rf %{target_source}/arch/$i
1232 done
1233 %ifnarch %{arm}
1234 rm -rf %{target_source}/include/kvm/arm*
1235 %endif
1236
1237 # other misc files
1238 rm -f %{target_source}/{.config.old,.config.cmd,.gitignore,.lst,.mailmap}
1239 rm -f %{target_source}/{.missing-syscalls.d,arch/.gitignore,firmware/.gitignore}
1240 rm -rf %{target_source}/.tmp_depmod/
1241
1242 #endif %build_source
1243 %endif
1244
1245 # compressing modules
1246 %if %{build_modxz}
1247 find %{target_modules} -name "*.ko" | %kxargs xz -6e
1248 %else
1249 find %{target_modules} -name "*.ko" | %kxargs gzip -9
1250 %endif
1251
1252 # We used to have a copy of PrepareKernel here
1253 # Now, we make sure that the thing in the linux dir is what we want it to be
1254 for i in %{target_modules}/*; do
1255 rm -f $i/build $i/source
1256 done
1257
1258 # sniff, if we compressed all the modules, we change the stamp :(
1259 # we really need the depmod -ae here
1260 pushd %{target_modules}
1261 for i in *; do
1262 /sbin/depmod -ae -b %{buildroot} -F %{target_boot}/System.map-$i $i
1263 echo $?
1264 done
1265
1266 for i in *; do
1267 pushd $i
1268 echo "Creating modules.description for $i"
1269 modules=`find . -name "*.ko.[g,x]z"`
1270 echo $modules | %kxargs /sbin/modinfo \
1271 | perl -lne 'print "$name\t$1" if $name && /^description:\s*(.*)/; $name = $1 if m!^filename:\s*(.*)\.k?o!; $name =~ s!.*/!!' > modules.description
1272 popd
1273 done
1274 popd
1275
1276 # need to set extraversion to match srpm again to avoid rebuild
1277 %if %extstable
1278 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = .%{extstable}-%{rpmrel}/" Makefile
1279 %else
1280 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{rpmrel}/" Makefile
1281 %endif
1282 %if %{build_perf}
1283 # perf tool binary and supporting scripts/binaries
1284 make -C tools/perf -s V=1 DESTDIR=%{buildroot} HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} install
1285
1286 # perf man pages (note: implicit rpm magic compresses them later)
1287 make -C tools/perf -s V=1 DESTDIR=%{buildroot} HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} install-man
1288 %endif
1289
1290 %if %{build_cpupower}
1291 make -C tools/power/cpupower DESTDIR=%{buildroot} libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install
1292 rm -f %{buildroot}%{_libdir}/*.{a,la}
1293 %find_lang cpupower
1294 mv cpupower.lang ../
1295 chmod 0755 %{buildroot}%{_libdir}/libcpupower.so*
1296 mkdir -p %{buildroot}%{_unitdir} %{buildroot}%{_sysconfdir}/sysconfig
1297 install -m644 %{SOURCE50} %{buildroot}%{_unitdir}/cpupower.service
1298 install -m644 %{SOURCE51} %{buildroot}%{_sysconfdir}/sysconfig/cpupower
1299 %endif
1300
1301 ###
1302 ### clean
1303 ###
1304 %clean
1305 rm -rf %{buildroot}
1306
1307
1308 # We don't want to remove this, the whole reason of its existence is to be
1309 # able to do several rpm --short-circuit -bi for testing install
1310 # phase without repeating compilation phase
1311 #rm -rf %{temp_root}
1312
1313 ###
1314 ### source and doc file lists
1315 ###
1316
1317 %if %build_source
1318 %files -n %{kname}-source-%{buildrel}
1319 %dir %{_kerneldir}
1320 %dir %{_kerneldir}/arch
1321 %dir %{_kerneldir}/include
1322 %{_kerneldir}/3rdparty
1323 %{_kerneldir}/Documentation
1324 %{_kerneldir}/arch/Kconfig
1325 %{_kerneldir}/arch/arm
1326 %{_kerneldir}/arch/arm64
1327 %{_kerneldir}/arch/um
1328 %{_kerneldir}/arch/x86
1329 %{_kerneldir}/block
1330 %{_kerneldir}/crypto
1331 %{_kerneldir}/drivers
1332 %{_kerneldir}/firmware
1333 %{_kerneldir}/fs
1334 %{_kerneldir}/include/Kbuild
1335 %{_kerneldir}/include/acpi
1336 %{_kerneldir}/include/asm-generic
1337 %{_kerneldir}/include/clocksource
1338 %{_kerneldir}/include/crypto
1339 %{_kerneldir}/include/drm
1340 %{_kerneldir}/include/dt-bindings
1341 %{_kerneldir}/include/keys
1342 %{_kerneldir}/include/linux
1343 %{_kerneldir}/include/math-emu
1344 %{_kerneldir}/include/media
1345 %{_kerneldir}/include/memory
1346 %{_kerneldir}/include/misc
1347 %{_kerneldir}/include/net
1348 %{_kerneldir}/include/pcmcia
1349 %{_kerneldir}/include/ras
1350 %{_kerneldir}/include/rdma
1351 %{_kerneldir}/include/rxrpc
1352 %{_kerneldir}/include/scsi
1353 %{_kerneldir}/include/soc
1354 %{_kerneldir}/include/sound
1355 %{_kerneldir}/include/target
1356 %{_kerneldir}/include/trace
1357 %{_kerneldir}/include/uapi
1358 %{_kerneldir}/include/video
1359 %{_kerneldir}/include/xen
1360 %{_kerneldir}/init
1361 %{_kerneldir}/ipc
1362 %{_kerneldir}/kernel
1363 %{_kerneldir}/lib
1364 %{_kerneldir}/mm
1365 %{_kerneldir}/net
1366 %{_kerneldir}/virt
1367 %{_kerneldir}/samples
1368 %{_kerneldir}/scripts
1369 %{_kerneldir}/security
1370 %{_kerneldir}/sound
1371 %{_kerneldir}/tools
1372 %{_kerneldir}/usr
1373 %{_kerneldir}/COPYING
1374 %{_kerneldir}/CREDITS
1375 %{_kerneldir}/Kbuild
1376 %{_kerneldir}/Kconfig
1377 %{_kerneldir}/MAINTAINERS
1378 %{_kerneldir}/Makefile
1379 %{_kerneldir}/README
1380 %{_kerneldir}/REPORTING-BUGS
1381 %doc README.kernel-sources
1382
1383 %files -n %{kname}-source-latest
1384 %endif
1385
1386 %if %build_doc
1387 %files -n %{kname}-doc
1388 %doc linux-%{tar_ver}/Documentation/*
1389 %endif
1390
1391 %if %{build_perf}
1392 %files -n perf
1393 %{_bindir}/perf
1394 %ifarch x86_64
1395 %{_bindir}/perf-read-vdso32
1396 %endif
1397 %{_bindir}/trace
1398 %{_prefix}/lib/libperf-gtk.so
1399 %dir %{_prefix}/lib/traceevent
1400 %dir %{_prefix}/lib/traceevent/plugins
1401 %{_prefix}/lib/traceevent/plugins/plugin_*
1402 %dir %{_prefix}/libexec/perf-core
1403 %{_prefix}/libexec/perf-core/*
1404 %{_mandir}/man[1-8]/perf*
1405 %{_sysconfdir}/bash_completion.d/perf
1406 %endif
1407
1408 %if %{build_cpupower}
1409 %files -n cpupower -f cpupower.lang
1410 %{_bindir}/cpupower
1411 %{_libdir}/libcpupower.so.0
1412 %{_libdir}/libcpupower.so.0.0.0
1413 %{_unitdir}/cpupower.service
1414 %{_mandir}/man[1-8]/cpupower*
1415 %config(noreplace) %{_sysconfdir}/sysconfig/cpupower
1416
1417 %files -n cpupower-devel
1418 %{_libdir}/libcpupower.so
1419 %{_includedir}/cpufreq.h
1420 %endif

  ViewVC Help
Powered by ViewVC 1.1.30