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

  ViewVC Help
Powered by ViewVC 1.1.30