/[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 881909 - (show annotations) (download)
Sun Sep 20 11:37:17 2015 UTC (8 years, 6 months ago) by tmb
File size: 43725 byte(s)
- update to 4.1.8
  * drop merged patches


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

  ViewVC Help
Powered by ViewVC 1.1.30