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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1190848 - (show annotations) (download)
Sat Jan 6 13:15:18 2018 UTC (6 years, 3 months ago) by tmb
File size: 44000 byte(s)
- update to 4.14.12
- add current -stable queue
- add BFQ performance updates from upstream
- enable PAGE_TABLE_ISOLATION on all x86_64 kernels
 (can be disabled at boot time with pti=off on kernel command line)
- iwlwifi: pcie: fix DMA memory mapping / unmapping
- update conflicts on microcode


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

  ViewVC Help
Powered by ViewVC 1.1.30