/[packages]/backports/6/kernel-joeghi/current/SPECS/kernel-joeghi.spec
ViewVC logotype

Contents of /backports/6/kernel-joeghi/current/SPECS/kernel-joeghi.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1131697 - (show annotations) (download)
Fri Jul 28 08:15:17 2017 UTC (6 years, 8 months ago) by ghibo
File size: 48082 byte(s)
- Sync with kernel 4.9.40-1.mga6.
- Generated patch ktime-20170728-003-get-rid-of-the-union.patch to fix building.

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

  ViewVC Help
Powered by ViewVC 1.1.30