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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 812200 - (show annotations) (download)
Sun Jan 25 19:27:34 2015 UTC (8 years, 10 months ago) by tmb
File size: 42592 byte(s)
- update to 3.14.30
  * drop merged patches


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

  ViewVC Help
Powered by ViewVC 1.1.28