/[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 822494 - (show annotations) (download)
Thu May 21 22:17:12 2015 UTC (8 years, 11 months ago) by tmb
Original Path: cauldron/kernel/current/SPECS/kernel.spec
File size: 43529 byte(s)
- aio: fix serial draining in exit_aio()
- drm/i915: silence PCH transcoder FIFO underrun messages (mga#14869)
- gpio: sysfs: fix memory leaks and device hotplug
- mmc: card: Don't access RPMB partitions for normal read/write
- mmc: core: add missing pm event in mmc_pm_notify to fix hib restore
- mmc: sh_mmcif: Fix timeout value for command request
- mm/memory-failure: call shake_page() when error hits thp tail page
- mm: soft-offline: fix num_poisoned_pages counting on concurrent events
- pinctrl: Don't just pretend to protect pinctrl_maps, do it for real
- RDMA/CMA: Canonize IPv4 on IPV6 sockets properly


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 8
17 # extstable is for extended stable patches
18 %define extstable 0
19
20 # Package release
21 %define mgarel 2
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.19.1-1
308 # (tmb) conflict too old plymouth (mga#15486)
309 %define kconflicts12 plymouth < 0.8.6.1-13
310 # (tmb) conflict too old radeon-firmware to get the uvd firmwares in initrd
311 %define kconflicts13 radeon-firmware < 20150314-1
312 # (tmb) conflict old irmware to get the firmwares in initrd
313 %define kconflicts14 kernel-firmware-nonfree < 20150420-1
314 # (tmb) conflict old theme to get mga5 theme in initrd
315 %define kconflicts15 mageia-gfxboot-theme < 4.5.6.2-1
316 # (tmb) conflict too old grub2(-efi)
317 %define kconflicts16 grub2 < 2.02-0.git9752.18
318 %define kconflicts17 grub2-efi < 2.02-0.git9752.18
319 # (tmb) conflict too old efibootmgr
320 %define kconflicts18 efibootmgr < 0.11.0-7
321
322 Autoreqprov: no
323
324 BuildRequires: gcc >= 4.8.2-1
325 BuildRequires: binutils >= 1:2.24-0.20131016.1
326 BuildRequires: kmod >= 12-2
327 BuildRequires: bc
328 # for cpupower
329 %if %{build_cpupower}
330 BuildRequires: pciutils-devel
331 %endif
332 # for perf
333 %if %{build_perf}
334 BuildRequires: audit-devel
335 BuildRequires: binutils-devel
336 BuildRequires: elfutils-devel
337 BuildRequires: gtk2-devel
338 BuildRequires: libunwind-devel
339 BuildRequires: newt-devel
340 BuildRequires: python-devel
341 BuildRequires: zlib-devel
342 BuildRequires: asciidoc
343 BuildRequires: bison
344 BuildRequires: flex
345 BuildRequires: xmlto
346 BuildRequires: perl-devel
347 BuildRequires: numa-devel
348 %endif
349
350
351 %description
352 %common_desc_kernel
353 %ifnarch %{arm}
354 %common_desc_kernel_smp
355 %endif
356
357 # Define obsolete/provides to help automatic upgrades of old kernel-xen-pvops
358 %define latest_obsoletes_server kernel-xen-pvops-latest < 3.2.1-1
359 %define latest_provides_server kernel-xen-pvops-latest = %{kverrel}
360 %define latest_obsoletes_devel_server kernel-xen-pvops-devel-latest < 3.2.1-1
361 %define latest_provides_devel_server kernel-xen-pvops-devel-latest = %{kverrel}
362 # Define obsolete/provides to help automatic upgrades of old kernel-netbook
363 %define latest_obsoletes_desktop kernel-netbook-latest < 3.7.0-0.rc8.1
364 %define latest_provides_desktop kernel-netbook-latest = %{kverrel}
365 %define latest_obsoletes_devel_desktop kernel-netbook-devel-latest < 3.7.0-0.rc8.1
366 %define latest_provides_devel_desktop kernel-netbook-devel-latest = %{kverrel}
367
368 # mkflavour() name flavour processor
369 # name: the flavour name in the package name
370 # flavour: first parameter of CreateKernel()
371 %define mkflavour() \
372 %package -n %{kname}-%{1}-%{buildrel} \
373 Version: %{fakever} \
374 Release: %{fakerel} \
375 Provides: %kprovides1 %kprovides2 %kprovides3 \
376 %{expand:%%{?kprovides_%{1}:Provides: %{kprovides_%{1}}}} \
377 Provides: %{kname}-%{1} \
378 Requires(pre): %requires1 %requires2 %requires3 %requires4 \
379 Requires: %requires2 %requires5 \
380 Obsoletes: %kobsoletes1 %kobsoletes2 %kobsoletes3 \
381 Conflicts: %kconflicts1 %kconflicts2 %kconflicts3 \
382 Conflicts: %kconflicts4 %kconflicts5 %kconflicts6 \
383 Conflicts: %kconflicts7 %kconflicts8 %kconflicts9 \
384 Conflicts: %kconflicts10 %kconflicts11 %kconflicts12 \
385 Conflicts: %kconflicts13 %kconflicts14 %kconflicts15 \
386 Conflicts: %kconflicts16 %kconflicts17 %kconflicts18 \
387 Provides: should-restart = system \
388 Recommends: crda iw cpupower \
389 Recommends: %{kname}-%{1}-latest \
390 %ifarch %{ix86} \
391 Conflicts: arch(x86_64) \
392 %endif \
393 Summary: %{expand:%{summary_%(echo %{1} | sed -e "s/-/_/")}} \
394 Group: System/Kernel and hardware \
395 %description -n %{kname}-%{1}-%{buildrel} \
396 %common_desc_kernel %{expand:%{info_%(echo %{1} | sed -e "s/-/_/")}} \
397 %ifnarch %{arm} \
398 %common_desc_kernel_smp \
399 %endif \
400 \
401 %if %build_devel \
402 %package -n %{kname}-%{1}-devel-%{buildrel} \
403 Version: %{fakever} \
404 Release: %{fakerel} \
405 Requires: glibc-devel ncurses-devel make gcc perl \
406 Summary: The kernel-devel files for %{kname}-%{1}-%{buildrel} \
407 Group: Development/Kernel \
408 Provides: %{kname}-devel = %{kverrel} \
409 Provides: %{kname}-%{1}-devel \
410 Recommends: %{kname}-%{1}-devel-latest \
411 %ifarch %{ix86} \
412 Conflicts: arch(x86_64) \
413 %endif \
414 %description -n %{kname}-%{1}-devel-%{buildrel} \
415 This package contains the kernel files (headers and build tools) \
416 that should be enough to build additional drivers for \
417 use with %{kname}-%{1}-%{buildrel}. \
418 \
419 If you want to build your own kernel, you need to install the full \
420 %{kname}-source-%{buildrel} rpm. \
421 \
422 %endif \
423 \
424 %if %build_debug \
425 %package -n %{kname}-%{1}-%{buildrel}-debuginfo \
426 Version: %{fakever} \
427 Release: %{fakerel} \
428 Summary: Files with debuginfo for %{kname}-%{1}-%{buildrel} \
429 Group: Development/Debug \
430 Provides: kernel-debug = %{kverrel} \
431 %ifarch %{ix86} \
432 Conflicts: arch(x86_64) \
433 %endif \
434 %description -n %{kname}-%{1}-%{buildrel}-debuginfo \
435 This package contains the files with debuginfo to aid in debug tasks \
436 when using %{kname}-%{1}-%{buildrel}. \
437 \
438 If you need to look at debug information or use some application that \
439 needs debugging info from the kernel, this package may help. \
440 \
441 %endif \
442 \
443 %package -n %{kname}-%{1}-latest \
444 Version: %{kversion} \
445 Release: %{rpmrel} \
446 Summary: Virtual rpm for latest %{kname}-%{1} \
447 Group: System/Kernel and hardware \
448 Requires: %{kname}-%{1}-%{buildrel} \
449 %ifarch %{ix86} \
450 Conflicts: arch(x86_64) \
451 %endif \
452 %{expand:%%{?latest_obsoletes_%{1}:Obsoletes: %{latest_obsoletes_%{1}}}} \
453 %{expand:%%{?latest_provides_%{1}:Provides: %{latest_provides_%{1}}}} \
454 %description -n %{kname}-%{1}-latest \
455 This package is a virtual rpm that aims to make sure you always have the \
456 latest %{kname}-%{1} installed... \
457 \
458 %if %build_devel \
459 %package -n %{kname}-%{1}-devel-latest \
460 Version: %{kversion} \
461 Release: %{rpmrel} \
462 Summary: Virtual rpm for latest %{kname}-%{1}-devel \
463 Group: Development/Kernel \
464 Requires: %{kname}-%{1}-devel-%{buildrel} \
465 %ifarch %{ix86} \
466 Conflicts: arch(x86_64) \
467 %endif \
468 Provides: %{kname}-devel-latest \
469 %{expand:%%{?latest_obsoletes_devel_%{1}:Obsoletes: %{latest_obsoletes_devel_%{1}}}} \
470 %{expand:%%{?latest_provides_devel_%{1}:Provides: %{latest_provides_devel_%{1}}}} \
471 %description -n %{kname}-%{1}-devel-latest \
472 This package is a virtual rpm that aims to make sure you always have the \
473 latest %{kname}-%{1}-devel installed... \
474 \
475 %endif \
476 \
477 %posttrans -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-posttrans \
478 %preun -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-preun \
479 %postun -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-postun \
480 \
481 %if %build_devel \
482 %post -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-post \
483 %preun -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-preun \
484 %postun -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-postun \
485 %endif \
486 \
487 %files -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1} \
488 %files -n %{kname}-%{1}-latest \
489 \
490 %if %build_devel \
491 %files -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1} \
492 %files -n %{kname}-%{1}-devel-latest \
493 %endif \
494 \
495 %if %build_debug \
496 %files -n %{kname}-%{1}-%{buildrel}-debuginfo -f kernel_debug_files.%{1} \
497 %endif
498
499 %ifarch %{ix86}
500 #
501 # kernel-desktop586: i586, smp-alternatives, 4GB
502 #
503 %if %build_desktop586
504 %define summary_desktop586 Linux kernel for desktop use with i586 and less than 4GB RAM
505 %define info_desktop586 This kernel is compiled for desktop use, single or \
506 multiple i586 processor(s)/core(s) and less than 4GB RAM (usually 3-3.5GB \
507 detected, if you need/want to use all 4GB or more, install kernel-server), \
508 using HZ_1000, voluntary preempt, CFS cpu scheduler and cfq i/o scheduler.
509 %mkflavour desktop586
510 %endif
511 %endif
512
513 #
514 # kernel-desktop: i686, smp-alternatives, 4 GB / x86_64
515 #
516 %if %build_desktop
517 %ifarch %{ix86}
518 %define summary_desktop Linux Kernel for desktop use with i686 and less than 4GB RAM
519 %define info_desktop This kernel is compiled for desktop use, single or \
520 multiple i686 processor(s)/core(s) and less than 4GB RAM (usually 3-3.5GB \
521 detected, if you need/want to use all 4GB or more, install kernel-server), \
522 using HZ_1000, voluntary preempt, CFS cpu scheduler and cfq i/o scheduler.
523 %else
524 %define summary_desktop Linux Kernel for desktop use with %{_arch}
525 %define info_desktop This kernel is compiled for desktop use, single or \
526 multiple %{_arch} processor(s)/core(s), using HZ_1000, voluntary preempt, \
527 CFS cpu scheduler and cfq i/o scheduler.
528 %endif
529 %mkflavour desktop
530 %endif
531
532 #
533 # kernel-server: i686, smp-alternatives, 64 GB / x86_64
534 #
535 %if %build_server
536 %ifarch %{ix86}
537 %define summary_server Linux Kernel for server use with i686 & 64GB RAM
538 %define info_server This kernel is compiled for server use, single or \
539 multiple i686 processor(s)/core(s) and up to 64GB RAM using PAE, using \
540 no preempt, HZ_100, CFS cpu scheduler and cfq i/o scheduler.
541 %else
542 %define summary_server Linux Kernel for server use with %{_arch}
543 %define info_server This kernel is compiled for server use, single or \
544 multiple %{_arch} processor(s)/core(s), using no preempt, HZ_100, \
545 CFS cpu scheduler and cfq i/o scheduler.
546 %endif
547 %mkflavour server
548 %endif
549
550 #
551 # ARM kernels
552 #
553 %ifarch %{arm}
554 %if %build_iop32x
555 %define summary_iop32x Linux Kernel for Arm machines based on Xscale IOP32X
556 %define info_iop32x This kernel is compiled for iop32x boxes. It will run on n2100 \
557 or ss4000e or sanmina boards.
558 %mkflavour iop32x
559 %endif
560 %if %build_kirkwood
561 %define summary_kirkwood Linux Kernel for Arm machines based on Kirkwood
562 %define info_kirkwood This kernel is compiled for kirkwood boxes. It will run on openrd boards.
563 %mkflavour kirkwood
564 %endif
565 %if %build_versatile
566 %define summary_versatile Linux Kernel for Versatile arm machines
567 %define info_versatile This kernel is compiled for Versatile boxes. It will run on Qemu for instance.
568 %mkflavour versatile
569 %endif
570 %endif
571
572 #
573 # kernel-source
574 #
575 %if %build_source
576 %package -n %{kname}-source-%{buildrel}
577 Version: %{fakever}
578 Release: %{fakerel}
579 Requires: glibc-devel, ncurses-devel, make, gcc, perl, diffutils
580 Summary: The Linux source code for %{kname}-%{buildrel}
581 Group: Development/Kernel
582 Autoreqprov: no
583 Provides: kernel-source = %{kverrel}
584 Buildarch: noarch
585
586 %description -n %{kname}-source-%{buildrel}
587 The %{kname}-source package contains the source code files for the Mageia
588 kernel. Theese source files are only needed if you want to build your
589 own custom kernel that is better tuned to your particular hardware.
590
591 If you only want the files needed to build 3rdparty (nVidia, Ati, dkms-*,...)
592 drivers against, install the *-devel-* rpm that is matching your kernel.
593
594 #
595 # kernel-source-latest: virtual rpm
596 #
597 %package -n %{kname}-source-latest
598 Version: %{kversion}
599 Release: %{rpmrel}
600 Summary: Virtual rpm for latest %{kname}-source
601 Group: Development/Kernel
602 Requires: %{kname}-source-%{buildrel}
603 Buildarch: noarch
604
605 %description -n %{kname}-source-latest
606 This package is a virtual rpm that aims to make sure you always have the
607 latest %{kname}-source installed...
608 %endif
609
610 #
611 # kernel-doc: documentation for the Linux kernel
612 #
613 %if %build_doc
614 %package -n %{kname}-doc
615 Version: %{kversion}
616 Release: %{rpmrel}
617 Summary: Various documentation bits found in the %{kname} source
618 Group: Documentation
619 Buildarch: noarch
620
621 %description -n %{kname}-doc
622 This package contains documentation files from the %{kname} source.
623 Various bits of information about the Linux kernel and the device drivers
624 shipped with it are documented in these files. You also might want install
625 this package if you need a reference to the options that can be passed to
626 Linux kernel modules at load time.
627 %endif
628
629 #
630 # kernel/tools
631 #
632 %if %{build_perf}
633 %package -n perf
634 Version: %{kversion}
635 Release: %{rpmrel}
636 Summary: perf tool and the supporting documentation
637 Group: System/Kernel and hardware
638
639 %description -n perf
640 the perf tool and the supporting documentation.
641 %endif
642
643 %if %{build_cpupower}
644 %package -n cpupower
645 Version: %{kversion}
646 Release: %{rpmrel}
647 Summary: the cpupower tools
648 Group: System/Kernel and hardware
649 Requires(post): rpm-helper >= 0.24.8-1
650 Requires(preun): rpm-helper >= 0.24.8-1
651 Obsoletes: cpufreq cpufrequtils
652
653 %description -n cpupower
654 the cpupower tools.
655
656 %post -n cpupower
657 %_post_service cpupower
658
659 %preun -n cpupower
660 %_preun_service cpupower
661
662 %package -n cpupower-devel
663 Version: %{kversion}
664 Release: %{rpmrel}
665 Summary: devel files for cpupower
666 Group: Development/Kernel
667 Requires: cpupower = %{kversion}-%{rpmrel}
668 Conflicts: %{_lib}cpufreq-devel
669
670 %description -n cpupower-devel
671 This package contains the development files for cpupower.
672 %endif
673
674
675 #
676 # End packages - here begins build stage
677 #
678 %prep
679 %setup -q -n %top_dir_name -c
680 %setup -q -n %top_dir_name -D -T -a100
681
682 %define patches_dir ../%{patch_ver}/
683
684 cd %src_dir
685
686 %if %sublevel
687 %if %kpatch
688 %if %prev_sublevel
689 %patch1 -p1
690 %endif
691 %patch2 -p1
692 %else
693 %patch1 -p1
694 %endif
695 %else
696 %if %kpatch
697 %patch1 -p1
698 %endif
699 %endif
700 %if %kgit
701 %patch2 -p1
702 %endif
703 %if %extstable
704 %patch3 -p1
705 %endif
706
707 %{patches_dir}/scripts/apply_patches
708
709 # PATCH END
710
711
712 #
713 # Setup Begin
714 #
715
716 # Prepare all the variables for calling create_configs
717
718 %if %build_debug
719 %define debug --debug
720 %else
721 %define debug --no-debug
722 %endif
723
724
725 %{patches_dir}/scripts/create_configs %debug --user_cpu="%{target_arch}"
726
727 # make sure the kernel has the sublevel we know it has...
728 LC_ALL=C perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{sublevel}/" Makefile
729
730 # get rid of unwanted files
731 find . -name '*~' -o -name '*.orig' -o -name '*.append' | %kxargs rm -f
732
733
734 %build
735 # Common target directories
736 %define _kerneldir /usr/src/kernel-%{kversion}-%{buildrpmrel}
737 %define _bootdir /boot
738 %define _modulesdir /lib/modules
739 %define _efidir %{_bootdir}/efi/mageia
740
741 # Directories definition needed for building
742 %define temp_root %{build_dir}/temp-root
743 %define temp_source %{temp_root}%{_kerneldir}
744 %define temp_boot %{temp_root}%{_bootdir}
745 %define temp_modules %{temp_root}%{_modulesdir}
746
747 PrepareKernel() {
748 name=$1
749 extension=$2
750 x86_dir=arch/x86/configs
751
752 echo "Make config for kernel $extension"
753
754 %smake -s mrproper
755
756 if [ "%{target_arch}" == "i386" -o "%{target_arch}" == "x86_64" ]; then
757 if [ -z "$name" ]; then
758 cp ${x86_dir}/%{target_arch}_defconfig-desktop .config
759 else
760 cp ${x86_dir}/%{target_arch}_defconfig-$name .config
761 fi
762 else
763 if [ -z "$name" ]; then
764 cp arch/%{target_arch}/defconfig-desktop .config
765 else
766 cp arch/%{target_arch}/defconfig-$name .config
767 fi
768 fi
769
770 # make sure EXTRAVERSION says what we want it to say
771 %if %extstable
772 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = .%{extstable}-$extension/" Makefile
773 %else
774 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -$extension/" Makefile
775 %endif
776
777 %smake oldconfig
778 }
779
780 BuildKernel() {
781 KernelVer=$1
782
783 echo "Building kernel $KernelVer"
784
785 %kmake -s all
786
787 %ifarch %{arm}
788 make dtbs
789 %endif
790
791 # Start installing stuff
792 install -d %{temp_boot}
793 install -m 644 System.map %{temp_boot}/System.map-$KernelVer
794 install -m 644 .config %{temp_boot}/config-$KernelVer
795 xz -c Module.symvers > %{temp_boot}/symvers-$KernelVer.xz
796
797 %ifarch %{arm}
798 cp -f arch/arm/boot/zImage %{temp_boot}/vmlinuz-$KernelVer
799 install -d %{temp_root}/usr/lib/linux-$KernelVer/
800 for d in arch/arm/boot/dts/*.dtb; do \
801 install -D -m644 $d %{temp_root}/usr/lib/linux-$KernelVer/$(basename $d); \
802 done
803 %else
804 cp -f arch/%{target_arch}/boot/bzImage %{temp_boot}/vmlinuz-$KernelVer
805 %endif
806
807 # modules
808 install -d %{temp_modules}/$KernelVer
809 %smake INSTALL_MOD_PATH=%{temp_root} KERNELRELEASE=$KernelVer modules_install
810
811 # remove /lib/firmware, we use a separate kernel-firmware
812 rm -rf %{temp_root}/lib/firmware
813 }
814
815 SaveDevel() {
816 devel_flavour=$1
817
818 DevelRoot=/usr/src/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}
819 TempDevelRoot=%{temp_root}$DevelRoot
820
821 mkdir -p $TempDevelRoot
822 for i in $(find . -name 'Makefile*'); do cp -R --parents $i $TempDevelRoot;done
823 for i in $(find . -name 'Kconfig*' -o -name 'Kbuild*'); do cp -R --parents $i $TempDevelRoot;done
824 cp -fR Documentation/DocBook/media/*.b64 $TempDevelRoot/Documentation/DocBook/media/
825 cp -fR include $TempDevelRoot
826 cp -fR scripts $TempDevelRoot
827 cp -fR kernel/bounds.c $TempDevelRoot/kernel
828 cp -fR tools/include $TempDevelRoot/tools/
829 %ifarch %{arm}
830 cp -fR arch/%{target_arch}/tools $TempDevelRoot/arch/%{target_arch}/
831 %endif
832 %ifarch %{ix86} x86_64
833 cp -fR arch/x86/kernel/asm-offsets.{c,s} $TempDevelRoot/arch/x86/kernel/
834 cp -fR arch/x86/kernel/asm-offsets_{32,64}.c $TempDevelRoot/arch/x86/kernel/
835 cp -fR arch/x86/purgatory/* $TempDevelRoot/arch/x86/purgatory/
836 cp -fR arch/x86/syscalls/syscall* $TempDevelRoot/arch/x86/syscalls/
837 cp -fR arch/x86/include $TempDevelRoot/arch/x86/
838 cp -fR arch/x86/tools $TempDevelRoot/arch/x86/
839 %else
840 cp -fR arch/%{target_arch}/kernel/asm-offsets.{c,s} $TempDevelRoot/arch/%{target_arch}/kernel/
841 for f in $(find arch/%{target_arch} -name include); do cp -fR --parents $f $TempDevelRoot; done
842 %endif
843 cp -fR .config Module.symvers $TempDevelRoot
844 cp -fR 3rdparty/mkbuild.pl $TempDevelRoot/3rdparty
845
846 # Needed for truecrypt build (Danny)
847 cp -fR drivers/md/dm.h $TempDevelRoot/drivers/md/
848
849 # Needed for lguest
850 cp -fR drivers/lguest/lg.h $TempDevelRoot/drivers/lguest/
851
852 # Needed for lirc_gpio (#39004)
853 cp -fR drivers/media/pci/bt8xx/bttv{,p}.h $TempDevelRoot/drivers/media/pci/bt8xx/
854 cp -fR drivers/media/pci/bt8xx/bt848.h $TempDevelRoot/drivers/media/pci/bt8xx/
855 cp -fR drivers/media/common/btcx-risc.h $TempDevelRoot/drivers/media/common/
856
857 # Needed for external dvb tree (#41418)
858 cp -fR drivers/media/dvb-core/*.h $TempDevelRoot/drivers/media/dvb-core/
859 cp -fR drivers/media/dvb-frontends/lgdt330x.h $TempDevelRoot/drivers/media/dvb-frontends/
860
861 # add acpica header files, needed for fglrx build
862 cp -fR drivers/acpi/acpica/*.h $TempDevelRoot/drivers/acpi/acpica/
863
864 # aufs2 has a special file needed
865 cp -fR fs/aufs/magic.mk $TempDevelRoot/fs/aufs
866
867 for i in alpha arc avr32 blackfin c6x cris frv h8300 hexagon ia64 m32r m68k m68knommu metag microblaze \
868 mips mn10300 nios2 openrisc parisc powerpc s390 score sh sparc tile unicore32 xtensa; do
869 rm -rf $TempDevelRoot/arch/$i
870 done
871
872 %ifnarch %{arm}
873 rm -rf $TempDevelRoot/arch/arm*
874 rm -rf $TempDevelRoot/include/kvm/arm*
875 rm -rf $TempDevelRoot/include/soc
876 %endif
877 %ifnarch %{ix86} x86_64
878 rm -rf $TempDevelRoot/arch/x86
879 %endif
880
881 # Clean the scripts tree, and make sure everything is ok (sanity check)
882 # running prepare+scripts (tree was already "prepared" in build)
883 pushd $TempDevelRoot >/dev/null
884 %smake -s prepare scripts
885 %smake -s clean
886 popd >/dev/null
887 rm -f $TempDevelRoot/.config.old
888
889 # fix permissions
890 chmod -R a+rX $TempDevelRoot
891
892 # disable mrproper in -devel rpms
893 patch -p1 --fuzz=0 -d $TempDevelRoot -i %{SOURCE2}
894
895 kernel_devel_files=../kernel_devel_files.$devel_flavour
896
897
898 ### Create the kernel_devel_files.*
899 cat > $kernel_devel_files <<EOF
900 %dir $DevelRoot
901 %dir $DevelRoot/arch
902 %dir $DevelRoot/include
903 $DevelRoot/3rdparty
904 $DevelRoot/Documentation
905 %ifarch %{arm}
906 $DevelRoot/arch/arm
907 $DevelRoot/arch/arm64
908 %endif
909 $DevelRoot/arch/um
910 %ifarch %{ix86} x86_64
911 $DevelRoot/arch/x86
912 %endif
913 $DevelRoot/block
914 $DevelRoot/crypto
915 $DevelRoot/drivers
916 $DevelRoot/firmware
917 $DevelRoot/fs
918 $DevelRoot/include/Kbuild
919 $DevelRoot/include/acpi
920 $DevelRoot/include/asm-generic
921 $DevelRoot/include/clocksource
922 $DevelRoot/include/config
923 $DevelRoot/include/crypto
924 $DevelRoot/include/drm
925 $DevelRoot/include/dt-bindings
926 $DevelRoot/include/generated
927 $DevelRoot/include/keys
928 $DevelRoot/include/linux
929 $DevelRoot/include/math-emu
930 $DevelRoot/include/media
931 $DevelRoot/include/memory
932 $DevelRoot/include/misc
933 $DevelRoot/include/net
934 $DevelRoot/include/pcmcia
935 $DevelRoot/include/ras
936 $DevelRoot/include/rdma
937 $DevelRoot/include/rxrpc
938 $DevelRoot/include/scsi
939 %ifarch %{arm}
940 $DevelRoot/include/soc
941 %endif
942 $DevelRoot/include/sound
943 $DevelRoot/include/target
944 $DevelRoot/include/trace
945 $DevelRoot/include/uapi
946 $DevelRoot/include/video
947 $DevelRoot/include/xen
948 $DevelRoot/init
949 $DevelRoot/ipc
950 $DevelRoot/kernel
951 $DevelRoot/lib
952 $DevelRoot/mm
953 $DevelRoot/net
954 $DevelRoot/samples
955 $DevelRoot/scripts
956 $DevelRoot/security
957 $DevelRoot/sound
958 $DevelRoot/tools
959 $DevelRoot/usr
960 $DevelRoot/virt
961 $DevelRoot/.config
962 $DevelRoot/Kbuild
963 $DevelRoot/Kconfig
964 $DevelRoot/Makefile
965 $DevelRoot/Module.symvers
966 $DevelRoot/arch/Kconfig
967 %doc README.kernel-sources
968 EOF
969
970
971 ### Create -devel Post script on the fly
972 cat > $kernel_devel_files-post <<EOF
973 if [ -d /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel} ]; then
974 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/{build,source}
975 ln -sf $DevelRoot /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build
976 ln -sf $DevelRoot /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source
977 fi
978 EOF
979
980
981 ### Create -devel Preun script on the fly
982 cat > $kernel_devel_files-preun <<EOF
983 if [ -L /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build ]; then
984 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build
985 fi
986 if [ -L /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source ]; then
987 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source
988 fi
989 exit 0
990 EOF
991
992 ### Create -devel Postun script on the fly
993 cat > $kernel_devel_files-postun <<EOF
994 rm -rf /usr/src/kernel-%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
995 EOF
996 }
997
998 SaveDebug() {
999 debug_flavour=$1
1000
1001 install -m 644 vmlinux \
1002 %{temp_boot}/vmlinux-%{kversion}-$debug_flavour-%{buildrpmrel}
1003 kernel_debug_files=../kernel_debug_files.$debug_flavour
1004 echo "%{_bootdir}/vmlinux-%{kversion}-$debug_flavour-%{buildrpmrel}" \
1005 >> $kernel_debug_files
1006
1007 find %{temp_modules}/%{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1008 -name "*.ko" | \
1009 %kxargs -I '{}' objcopy --only-keep-debug '{}' '{}'.debug
1010 find %{temp_modules}/%{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1011 -name "*.ko" | %kxargs -I '{}' \
1012 sh -c 'cd `dirname {}`; \
1013 objcopy --add-gnu-debuglink=`basename {}`.debug \
1014 --strip-debug `basename {}`'
1015
1016 pushd %{temp_modules}
1017 find %{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1018 -name "*.ko.debug" > debug_module_list
1019 popd
1020 cat %{temp_modules}/debug_module_list | \
1021 sed 's|\(.*\)|%{_modulesdir}/\1|' >> $kernel_debug_files
1022 cat %{temp_modules}/debug_module_list | \
1023 sed 's|\(.*\)|%exclude %{_modulesdir}/\1|' \
1024 >> ../kernel_exclude_debug_files.$debug_flavour
1025 rm -f %{temp_modules}/debug_module_list
1026 }
1027
1028 CreateFiles() {
1029 kernel_flavour=$1
1030
1031 kernel_files=../kernel_files.$kernel_flavour
1032
1033 ker="vmlinuz"
1034 ### Create the kernel_files.*
1035 cat > $kernel_files <<EOF
1036 %{_bootdir}/System.map-%{kversion}-$kernel_flavour-%{buildrpmrel}
1037 %{_bootdir}/symvers-%{kversion}-$kernel_flavour-%{buildrpmrel}.xz
1038 %{_bootdir}/config-%{kversion}-$kernel_flavour-%{buildrpmrel}
1039 %{_bootdir}/$ker-%{kversion}-$kernel_flavour-%{buildrpmrel}
1040 %dir %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/
1041 %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/kernel
1042 %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/modules.*
1043 %doc README.kernel-sources
1044 %ifarch %arm
1045 %dir /usr/lib/linux-%{kversion}-$kernel_flavour-%{buildrpmrel}
1046 /usr/lib/linux-%{kversion}-$kernel_flavour-%{buildrpmrel}/*.dtb
1047 %endif
1048 EOF
1049
1050 %if %build_debug
1051 cat ../kernel_exclude_debug_files.$kernel_flavour >> $kernel_files
1052 %endif
1053
1054 ### Create kernel Posttrans script
1055 cat > $kernel_files-posttrans <<EOF
1056 %if %build_devel
1057 # create kernel-devel symlinks if matching -devel- rpm is installed
1058 if [ -d /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} ]; then
1059 rm -f /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/{build,source}
1060 ln -sf /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/build
1061 ln -sf /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/source
1062 fi
1063 %endif
1064 if [ -x /usr/sbin/dkms_autoinstaller -a -d /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} ]; then
1065 /usr/sbin/dkms_autoinstaller start %{kversion}-$kernel_flavour-%{buildrpmrel}
1066 fi
1067 %ifarch %{arm}
1068 /sbin/installkernel -i -N %{kversion}-$kernel_flavour-%{buildrpmrel}
1069 %else
1070 /sbin/installkernel %{kversion}-$kernel_flavour-%{buildrpmrel}
1071 pushd /boot > /dev/null
1072 if [ -L vmlinuz-$kernel_flavour ]; then
1073 rm -f vmlinuz-$kernel_flavour
1074 fi
1075 ln -sf vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel} vmlinuz-$kernel_flavour
1076 if [ -L initrd-$kernel_flavour.img ]; then
1077 rm -f initrd-$kernel_flavour.img
1078 fi
1079 ln -sf initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img initrd-$kernel_flavour.img
1080 if [ -e initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img ]; then
1081 ln -sf vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel} vmlinuz
1082 ln -sf initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img initrd.img
1083 fi
1084 popd > /dev/null
1085 %endif
1086 EOF
1087
1088 ### Create kernel Preun script on the fly
1089 cat > $kernel_files-preun <<EOF
1090 /sbin/installkernel -R %{kversion}-$kernel_flavour-%{buildrpmrel}
1091 pushd /boot > /dev/null
1092 if [ -L vmlinuz-$kernel_flavour ]; then
1093 if [ "$(readlink vmlinuz-$kernel_flavour)" = "vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel}" ]; then
1094 rm -f vmlinuz-$kernel_flavour
1095 fi
1096 fi
1097 if [ -L initrd-$kernel_flavour.img ]; then
1098 if [ "$(readlink initrd-$kernel_flavour.img)" = "initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img" ]; then
1099 rm -f initrd-$kernel_flavour.img
1100 fi
1101 fi
1102 popd > /dev/null
1103 %if %build_devel
1104 if [ -L /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/build ]; then
1105 rm -f /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/build
1106 fi
1107 if [ -L /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/source ]; then
1108 rm -f /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/source
1109 fi
1110 %endif
1111 exit 0
1112 EOF
1113
1114
1115 ### Create kernel Postun script on the fly
1116 cat > $kernel_files-postun <<EOF
1117 /sbin/kernel_remove_initrd %{kversion}-$kernel_flavour-%{buildrpmrel}
1118 rm -rf /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel} >/dev/null
1119 if [ -d /var/lib/dkms ]; then
1120 rm -f /var/lib/dkms/*/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}-%{_target_cpu} >/dev/null
1121 rm -rf /var/lib/dkms/*/*/%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
1122 rm -f /var/lib/dkms-binary/*/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}-%{_target_cpu} >/dev/null
1123 rm -rf /var/lib/dkms-binary/*/*/%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
1124 fi
1125 EOF
1126 }
1127
1128
1129 CreateKernel() {
1130 flavour=$1
1131
1132 PrepareKernel $flavour $flavour-%{buildrpmrel}
1133
1134 BuildKernel %{kversion}-$flavour-%{buildrpmrel}
1135 %if %build_devel
1136 SaveDevel $flavour
1137 %endif
1138 %if %build_debug
1139 SaveDebug $flavour
1140 %endif
1141 CreateFiles $flavour
1142 }
1143
1144
1145 ###
1146 # DO it...
1147 ###
1148
1149
1150 # Create a simulacro of buildroot
1151 rm -rf %{temp_root}
1152 install -d %{temp_root}
1153
1154
1155 # make sure we are in the directory
1156 cd %src_dir
1157
1158 %ifarch %{ix86}
1159 %if %build_desktop586
1160 CreateKernel desktop586
1161 %endif
1162 %endif
1163
1164 %if %build_desktop
1165 CreateKernel desktop
1166 %endif
1167
1168 %if %build_server
1169 CreateKernel server
1170 %endif
1171
1172 %ifarch %{arm}
1173 %if %build_iop32x
1174 CreateKernel iop32x
1175 %endif
1176 %if %build_kirkwood
1177 CreateKernel kirkwood
1178 %endif
1179 %if %build_versatile
1180 CreateKernel versatile
1181 %endif
1182 %endif
1183
1184 # set extraversion to match srpm to get nice version reported by the tools
1185 %if %extstable
1186 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = .%{extstable}-%{rpmrel}/" Makefile
1187 %else
1188 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{rpmrel}/" Makefile
1189 %endif
1190 # build perf
1191 %if %{build_perf}
1192 # perf
1193 %smake -C tools/perf -s HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} all
1194 %smake -C tools/perf -s prefix=%{_prefix} man
1195 %endif
1196
1197 %if %{build_cpupower}
1198 # cpupower
1199 # make sure version-gen.sh is executable.
1200 chmod +x tools/power/cpupower/utils/version-gen.sh
1201 %make -C tools/power/cpupower CPUFREQ_BENCH=false
1202 %endif
1203
1204 # We don't make to repeat the depend code at the install phase
1205 %if %build_source
1206 %ifarch %{arm}
1207 PrepareKernel "kirkwood" %{buildrpmrel}custom
1208 %else
1209 PrepareKernel "" %{buildrpmrel}custom
1210 %endif
1211 %smake -s mrproper
1212 %endif
1213
1214
1215 ###
1216 ### install
1217 ###
1218 %install
1219 install -m 644 %{SOURCE4} .
1220
1221 cd %src_dir
1222
1223 # Directories definition needed for installing
1224 %define target_source %{buildroot}%{_kerneldir}
1225 %define target_boot %{buildroot}%{_bootdir}
1226 %define target_modules %{buildroot}%{_modulesdir}
1227
1228 # We want to be able to test several times the install part
1229 rm -rf %{buildroot}
1230 cp -a %{temp_root} %{buildroot}
1231
1232 # Create directories infastructure
1233 %if %build_source
1234 install -d %{target_source}
1235
1236 tar cf - . | tar xf - -C %{target_source}
1237 chmod -R a+rX %{target_source}
1238
1239 # we remove all the source files that we don't ship
1240 # first architecture files
1241 for i in alpha arc avr32 blackfin c6x cris frv h8300 hexagon ia64 m32r m68k m68knommu metag microblaze \
1242 mips nios2 openrisc parisc powerpc s390 score sh sh64 sparc tile unicore32 v850 xtensa mn10300; do
1243 rm -rf %{target_source}/arch/$i
1244 done
1245 %ifnarch %{arm}
1246 rm -rf %{target_source}/include/kvm/arm*
1247 %endif
1248
1249 # other misc files
1250 rm -f %{target_source}/{.config.old,.config.cmd,.gitignore,.lst,.mailmap}
1251 rm -f %{target_source}/{.missing-syscalls.d,arch/.gitignore,firmware/.gitignore}
1252 rm -rf %{target_source}/.tmp_depmod/
1253
1254 #endif %build_source
1255 %endif
1256
1257 # compressing modules
1258 %if %{build_modxz}
1259 find %{target_modules} -name "*.ko" | %kxargs xz -6e
1260 %else
1261 find %{target_modules} -name "*.ko" | %kxargs gzip -9
1262 %endif
1263
1264 # We used to have a copy of PrepareKernel here
1265 # Now, we make sure that the thing in the linux dir is what we want it to be
1266 for i in %{target_modules}/*; do
1267 rm -f $i/build $i/source
1268 done
1269
1270 # sniff, if we compressed all the modules, we change the stamp :(
1271 # we really need the depmod -ae here
1272 pushd %{target_modules}
1273 for i in *; do
1274 /sbin/depmod -ae -b %{buildroot} -F %{target_boot}/System.map-$i $i
1275 echo $?
1276 done
1277
1278 for i in *; do
1279 pushd $i
1280 echo "Creating modules.description for $i"
1281 modules=`find . -name "*.ko.[g,x]z"`
1282 echo $modules | %kxargs /sbin/modinfo \
1283 | perl -lne 'print "$name\t$1" if $name && /^description:\s*(.*)/; $name = $1 if m!^filename:\s*(.*)\.k?o!; $name =~ s!.*/!!' > modules.description
1284 popd
1285 done
1286 popd
1287
1288 # need to set extraversion to match srpm again to avoid rebuild
1289 %if %extstable
1290 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = .%{extstable}-%{rpmrel}/" Makefile
1291 %else
1292 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{rpmrel}/" Makefile
1293 %endif
1294 %if %{build_perf}
1295 # perf tool binary and supporting scripts/binaries
1296 make -C tools/perf -s V=1 DESTDIR=%{buildroot} HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} install
1297
1298 # perf man pages (note: implicit rpm magic compresses them later)
1299 make -C tools/perf -s V=1 DESTDIR=%{buildroot} HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} install-man
1300 %endif
1301
1302 %if %{build_cpupower}
1303 make -C tools/power/cpupower DESTDIR=%{buildroot} libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install
1304 rm -f %{buildroot}%{_libdir}/*.{a,la}
1305 %find_lang cpupower
1306 mv cpupower.lang ../
1307 chmod 0755 %{buildroot}%{_libdir}/libcpupower.so*
1308 mkdir -p %{buildroot}%{_unitdir} %{buildroot}%{_sysconfdir}/sysconfig
1309 install -m644 %{SOURCE50} %{buildroot}%{_unitdir}/cpupower.service
1310 install -m644 %{SOURCE51} %{buildroot}%{_sysconfdir}/sysconfig/cpupower
1311 %endif
1312
1313 ###
1314 ### clean
1315 ###
1316 %clean
1317 rm -rf %{buildroot}
1318
1319
1320 # We don't want to remove this, the whole reason of its existence is to be
1321 # able to do several rpm --short-circuit -bi for testing install
1322 # phase without repeating compilation phase
1323 #rm -rf %{temp_root}
1324
1325 ###
1326 ### source and doc file lists
1327 ###
1328
1329 %if %build_source
1330 %files -n %{kname}-source-%{buildrel}
1331 %dir %{_kerneldir}
1332 %dir %{_kerneldir}/arch
1333 %dir %{_kerneldir}/include
1334 %{_kerneldir}/3rdparty
1335 %{_kerneldir}/Documentation
1336 %{_kerneldir}/arch/Kconfig
1337 %{_kerneldir}/arch/arm
1338 %{_kerneldir}/arch/arm64
1339 %{_kerneldir}/arch/um
1340 %{_kerneldir}/arch/x86
1341 %{_kerneldir}/block
1342 %{_kerneldir}/crypto
1343 %{_kerneldir}/drivers
1344 %{_kerneldir}/firmware
1345 %{_kerneldir}/fs
1346 %{_kerneldir}/include/Kbuild
1347 %{_kerneldir}/include/acpi
1348 %{_kerneldir}/include/asm-generic
1349 %{_kerneldir}/include/clocksource
1350 %{_kerneldir}/include/crypto
1351 %{_kerneldir}/include/drm
1352 %{_kerneldir}/include/dt-bindings
1353 %{_kerneldir}/include/keys
1354 %{_kerneldir}/include/linux
1355 %{_kerneldir}/include/math-emu
1356 %{_kerneldir}/include/media
1357 %{_kerneldir}/include/memory
1358 %{_kerneldir}/include/misc
1359 %{_kerneldir}/include/net
1360 %{_kerneldir}/include/pcmcia
1361 %{_kerneldir}/include/ras
1362 %{_kerneldir}/include/rdma
1363 %{_kerneldir}/include/rxrpc
1364 %{_kerneldir}/include/scsi
1365 %{_kerneldir}/include/soc
1366 %{_kerneldir}/include/sound
1367 %{_kerneldir}/include/target
1368 %{_kerneldir}/include/trace
1369 %{_kerneldir}/include/uapi
1370 %{_kerneldir}/include/video
1371 %{_kerneldir}/include/xen
1372 %{_kerneldir}/init
1373 %{_kerneldir}/ipc
1374 %{_kerneldir}/kernel
1375 %{_kerneldir}/lib
1376 %{_kerneldir}/mm
1377 %{_kerneldir}/net
1378 %{_kerneldir}/virt
1379 %{_kerneldir}/samples
1380 %{_kerneldir}/scripts
1381 %{_kerneldir}/security
1382 %{_kerneldir}/sound
1383 %{_kerneldir}/tools
1384 %{_kerneldir}/usr
1385 %{_kerneldir}/COPYING
1386 %{_kerneldir}/CREDITS
1387 %{_kerneldir}/Kbuild
1388 %{_kerneldir}/Kconfig
1389 %{_kerneldir}/MAINTAINERS
1390 %{_kerneldir}/Makefile
1391 %{_kerneldir}/README
1392 %{_kerneldir}/REPORTING-BUGS
1393 %doc README.kernel-sources
1394
1395 %files -n %{kname}-source-latest
1396 %endif
1397
1398 %if %build_doc
1399 %files -n %{kname}-doc
1400 %doc linux-%{tar_ver}/Documentation/*
1401 %endif
1402
1403 %if %{build_perf}
1404 %files -n perf
1405 %{_bindir}/perf
1406 %ifarch x86_64
1407 %{_bindir}/perf-read-vdso32
1408 %endif
1409 %{_bindir}/trace
1410 %{_libdir}/libperf-gtk.so
1411 %dir %{_libdir}/traceevent
1412 %dir %{_libdir}/traceevent/plugins
1413 %{_libdir}/traceevent/plugins/plugin_*
1414 %dir %{_prefix}/libexec/perf-core
1415 %{_prefix}/libexec/perf-core/*
1416 %{_mandir}/man[1-8]/perf*
1417 %{_sysconfdir}/bash_completion.d/perf
1418 %endif
1419
1420 %if %{build_cpupower}
1421 %files -n cpupower -f cpupower.lang
1422 %{_bindir}/cpupower
1423 %{_libdir}/libcpupower.so.0
1424 %{_libdir}/libcpupower.so.0.0.0
1425 %{_unitdir}/cpupower.service
1426 %{_mandir}/man[1-8]/cpupower*
1427 %config(noreplace) %{_sysconfdir}/sysconfig/cpupower
1428
1429 %files -n cpupower-devel
1430 %{_libdir}/libcpupower.so
1431 %{_includedir}/cpufreq.h
1432 %endif

  ViewVC Help
Powered by ViewVC 1.1.30