/[packages]/backports/8/kernel/current/SPECS/kernel.spec
ViewVC logotype

Contents of /backports/8/kernel/current/SPECS/kernel.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1752330 - (show annotations) (download)
Wed Oct 20 11:45:39 2021 UTC (2 years, 6 months ago) by tmb
File size: 58972 byte(s)
- update to 5.14.14
  * drop merged patches
- x86/sme: Use #define USE_EARLY_PGTABLE_L5 in mem_encrypt_identity.c


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 # ----------------------------------------------------------------------------
9 # Consult this page for extra docs:
10 #
11 # https://wiki.mageia.org/en/Kernel_update_workflow
12 #
13 # (feel free to adjust the wiki-page when adding or removing features
14 # to the spec file).
15 #
16 # After building a new kernel, remember to push:
17 #
18 # kmod-virtualbox
19 # kmod-vboxadditions
20 # kmod-xtables-addons
21 # drakx-installer-images (both core and nonfree)
22 # ----------------------------------------------------------------------------
23 #
24 # Aarch64 still has problems with multithreaded rpmbuild 4.15-rc
25 %if 0%{?mageia} >= 8
26 %ifarch aarch64
27 %global _smp_nthreads_max 1
28 %endif
29 %endif
30
31 #
32 # Mageia kernels use kernel.org versioning
33 #
34 %define kernelversion 5
35 # WARNING: when patchlevel is bumped, please update drakx/kernel/list_modules.pm for new modules!!!
36 %define patchlevel 14
37 # sublevel is now used for -stable patches
38 %define sublevel 14
39
40 # Package release
41 %define mgarel 1
42
43 # kernel Makefile extraversion is substituted by
44 # rcX which are either 0 (empty), X (as in rcX)
45 %define rcX 0
46
47 # kernel base name (also name of srpm)
48 %define kname kernel
49
50 # Patch tarball tag
51 %define ktag mga
52
53 %define rpmtag %{distsuffix}%{mgaver}
54 %if %{rcX}
55 %define rpmrel %mkrel 0.rc%{rcX}.%{mgarel}
56 %else
57 %define rpmrel %mkrel %{mgarel}
58 %endif
59
60 # fakerel and fakever never change, they are used to fool
61 # rpm/urpmi/smart and ensure the kernels are installed,
62 # not upgraded so old kernel is not overwritten or removed
63 %define fakever 1
64 %define fakerel %mkrel 1
65
66 # version defines
67 %define kversion %{kernelversion}.%{patchlevel}.%{sublevel}
68 %define kverrel %{kversion}-%{rpmrel}
69
70 # When we are using a rcX patch, the tarball is a sublevel -1
71 %if %{rcX}
72 %if %sublevel
73 %define tar_ver %{kernelversion}.%{patchlevel}
74 %else
75 %define tar_ver %{kernelversion}.%(expr %{patchlevel} - 1)
76 %endif
77 %else
78 %define tar_ver %{kernelversion}.%{patchlevel}
79 %endif
80
81 # Used for not making too long names for rpms or search paths
82 %if %rcX
83 %define buildrpmrel 0.rc%{rcX}.%{mgarel}%{rpmtag}
84 %else
85 %define buildrpmrel %{mgarel}%{rpmtag}
86 %endif
87 %define buildrel %{kversion}-%{buildrpmrel}
88
89 # Having different top level names for packges means that you have to remove
90 # them by hard :(
91 %define top_dir_name %{kname}-%{_arch}
92
93 %define build_dir ${RPM_BUILD_DIR}/%{top_dir_name}
94 %define src_dir %{build_dir}/linux-%{tar_ver}
95
96 # Disable useless debug rpms...
97 %global _enable_debug_packages %{nil}
98 %global debug_package %{nil}
99 %global __debug_package %{nil}
100 %global __debug_install_post %{nil}
101 %global _build_id_links none
102
103 # no bytecompiling wanted as it breaks build on selftests we dont even ship
104 # for older buildsystems
105 %global _python_bytecompile_build 0
106 # for systems with >= rpm-mageia-setup-2.29-1.mga7
107 %global __brp_python_bytecompile %nil
108
109 # Build defines
110 %define build_doc 1
111 %define build_uheaders 1
112 %define build_source 1
113 %define build_devel 1
114
115 %define build_debug 0
116
117 # Build desktop i586 / 4GB
118 %ifarch %{ix86}
119 %define build_desktop586 1
120 %endif
121
122 # Build desktop (i686 / 4GB) / x86_64
123 %define build_desktop 1
124
125 # Build server (i686 / 64GB)/x86_64 / sparc64 sets
126 %define build_server 1
127
128 # build perf and cpupower tools
129 %define build_perf 1
130 %define build_cpupower 1
131
132 # bpf
133 %define build_bpftool 1
134 %define build_libbpf 1
135
136 # compress modules with xz
137 %define build_modxz 1
138
139 # ARM builds
140 %ifarch %{arm}
141 %define build_server 0
142 # no cpupower tools on arm yet
143 %define build_cpupower 0
144 # arm is currently not using xz
145 %define build_modxz 0
146 %endif
147 # Arm64 builds
148 %ifarch aarch64
149 %define build_cpupower 0
150 %endif
151 # End of user definitions
152
153 # buildtime flags
154 %{?_without_desktop586: %global build_desktop586 0}
155 %{?_without_desktop: %global build_desktop 0}
156 %{?_without_server: %global build_server 0}
157 %{?_without_doc: %global build_doc 0}
158 %{?_without_uheaders: %global build_uheaders 0}
159 %{?_without_source: %global build_source 0}
160 %{?_without_devel: %global build_devel 0}
161 %{?_without_debug: %global build_debug 0}
162 %{?_without_perf: %global build_perf 0}
163 %{?_without_cpupower: %global build_cpupower 0}
164 %{?_without_bpftool: %global build_bpftool 0}
165 %{?_without_libbpf: %global build_libbpf 0}
166 %{?_without_modxz: %global build_modxz 0}
167
168 %{?_with_desktop586: %global build_desktop586 1}
169 %{?_with_desktop: %global build_desktop 1}
170 %{?_with_server: %global build_server 1}
171 %{?_with_doc: %global build_doc 1}
172 %{?_with_uheaders: %global build_uheaders 1}
173 %{?_with_source: %global build_source 1}
174 %{?_with_devel: %global build_devel 1}
175 %{?_with_debug: %global build_debug 1}
176 %{?_with_perf: %global build_perf 1}
177 %{?_with_cpupower: %global build_cpupower 1}
178 %{?_with_bpftool: %global build_bpftool 1}
179 %{?_with_libbpf: %global build_libbpf 1}
180 %{?_with_modxz: %global build_modxz 1}
181
182 # For the .nosrc.rpm
183 %define build_nosrc 0
184 %{?_with_nosrc: %global build_nosrc 1}
185
186 %if %(if [ -z "$CC" ] ; then echo 0; else echo 1; fi)
187 %define kmake %make_build CC="$CC"
188 %else
189 %define kmake %make_build
190 %endif
191 # there are places where parallel make don't work
192 %define smake make
193
194 # Parallelize xargs invocations on smp machines
195 %define kxargs xargs %([ -z "$RPM_BUILD_NCPUS" ] \\\
196 && RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
197 [ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-P $RPM_BUILD_NCPUS")
198
199 # Sparc arch wants sparc64 kernels
200 %define target_arch %(echo %{_arch} | sed -e 's/arm.*/arm/' -e 's/aarch64/arm64/')
201
202
203 #
204 # SRC RPM description
205 #
206 Summary: Linux kernel built for Mageia
207 Name: %{kname}
208 Version: %{kversion}
209 Release: %{rpmrel}
210 License: GPLv2
211 Group: System/Kernel and hardware
212 ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
213 ExclusiveOS: Linux
214 URL: https://www.kernel.org/
215
216 ####################################################################
217 #
218 # Sources
219 #
220 ### This is for full SRC RPM
221 Source0: https://cdn.kernel.org/pub/linux/kernel/v%{kernelversion}.x/linux-%{tar_ver}.tar.xz
222 Source1: https://cdn.kernel.org/pub/linux/kernel/v%{kernelversion}.x/linux-%{tar_ver}.tar.sign
223 ### This is for stripped SRC RPM
224 %if %build_nosrc
225 NoSource: 0
226 %endif
227 # This is for disabling *config, mrproper, prepare, scripts on -devel rpms
228 Source2: disable-mrproper-in-devel-rpms.patch
229
230 Source4: README.kernel-sources
231
232 # for creating stable queue patchlist
233 Source5: generate-patchlist.sh
234
235 # copy to patched source tree along with the defconfigs and run it
236 Source10: defconfig-updater.sh
237 Source09: defconfig-updater-simple.sh
238 # x86_64 defconfigs
239 Source11: defconfig-x86_64-desktop
240 Source12: defconfig-x86_64-server
241 # i386 defconfigs
242 Source13: defconfig-i386-desktop586
243 Source14: defconfig-i386-desktop
244 Source15: defconfig-i386-server
245 # arm64 defconfigs
246 Source16: defconfig-arm64-desktop
247 Source17: defconfig-arm64-server
248 # arm defconfigs
249 Source18: defconfig-arm-desktop
250
251 # config and systemd service file from fedora
252 Source50: cpupower.service
253 Source51: cpupower.config
254
255 ####################################################################
256 #
257 # Patches
258
259 #
260 # Patch0 to Patch10 are for core kernel upgrades.
261 #
262
263 %if %sublevel
264 Patch1: https://cdn.kernel.org/pub/linux/kernel/v%{kernelversion}.x/patch-%{kernelversion}.%{patchlevel}.%{sublevel}.xz
265 %endif
266 %if %{rcX}
267 # (tmb) Created with:
268 # wget https://git.kernel.org/torvalds/p/v5.10-rc7/v5.9 -O patch-5.10-rc7
269 # xz -6e patch-5.10-rc7
270 Patch2: patch-%{kernelversion}.%{patchlevel}-rc%{rcX}.xz
271 %endif
272
273 ###
274 ### Stable Queue can be big
275 ### Patches from 100-999
276 ###
277 ### add patches here by copying contents of kernel matching queue-x.y from:
278 ### https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git/tree/
279 ### to SOURCES, generate patchlist with generate-patchlist.sh and paste it here
280 ###
281
282 ###
283 ### Arch
284 ### Patches from 1000
285 ###
286
287 # laptop needing pci=assign-busses (#18989, needs to be submitted upstream)
288 Patch1000: x86-pci-toshiba-equium-a60-assign-busses.patch
289
290 # If users choose a bad video mode, allow to jump to
291 # a working one (TTL: forever)
292 Patch1001: x86-boot-video-80x25-if-break.patch
293
294 # Allow poweroff on UP machines running SMP kernels
295 Patch1005: x86-default_poweroff_up_machines.patch
296
297 # raise vmalloc to fix https://bugs.mageia.org/show_bug.cgi?id=904
298 Patch1010: x86-increase-default-minimum-vmalloc-area-by-64MB-to-192MB.patch
299
300 # slows down boot
301 Patch1015: Revert-cpufreq-pcc-Enable-autoload-of-pcc-cpufreq-fo.patch
302
303 # fixes new hw not being properly detected
304 Source1020: x86-pci-ignore-e820-reservations-for-bridge-windows-on-newer-systems.patch
305
306 # sme
307 Patch1030: x86-sme-Use-define-USE_EARLY_PGTABLE_L5-in-mem_encrypt_identity.c.patch
308
309 ###
310 ### ACPI
311 ###
312
313 # CLEVO M360S acpi irq workaround
314 Patch1100: acpi-CLEVO-M360S-disable_acpi_irq.patch
315
316 # Clevo M720SR freezes with C3
317 Patch1105: acpi-processor-M720SR-limit-to-C2.patch
318
319 # backlight fixes
320 Patch1110: ACPI-video-Add-a-quirk-to-force-acpi-video-backlight.patch
321
322 # ACPI PM fixes (TTL: 5.15)
323 Patch1130: x86-ACPI-State-Optimize-C3-entry-on-AMD-CPUs.patch
324
325 ###
326 ### Block
327 ###
328
329 # FIXME: Don't know know why this is needed
330 Patch1200: scsi-megaraid-new-sysfs-name.patch
331
332 # adds aliases to support upgrade from old dm-raid45 patch
333 Patch1215: dm-raid-aliases.patch
334
335 # disable floppy autoloading (mga #4696)
336 Patch1220: block-floppy-disable-pnp-modalias.patch
337
338 ###
339 ### Crypto
340 ###
341
342 ###
343 ### dma
344 ###
345
346 ###
347 ### File-system
348 ###
349
350 # aufs diffed from: https://github.com/sfjro/aufs5-linux/tree/aufs5.14 (mga#8314)
351 Patch1310: fs-aufs5.14.patch
352 # symbol exports needed for modular aufs
353 Patch1311: fs-aufs5.14-symbol-exports.patch
354 # set aufs tristate
355 Patch1312: fs-aufs5.14-tristate.patch
356
357 # paragon ntfs rw driver (TTL 5.15)
358 # https://github.com/Paragon-Software-Group/linux-ntfs3.git
359 Patch1321: fs-ntfs3-Add-headers-and-misc-files.patch
360 Patch1322: fs-ntfs3-Add-initialization-of-super-block.patch
361 Patch1323: fs-ntfs3-Add-bitmap.patch
362 Patch1324: fs-ntfs3-Add-file-operations-and-implementation.patch
363 Patch1325: fs-ntfs3-Add-attrib-operations.patch
364 Patch1326: fs-ntfs3-Add-compression.patch
365 Patch1327: fs-ntfs3-Add-NTFS-journal.patch
366 Patch1328: fs-ntfs3-Add-Kconfig-Makefile-and-doc.patch
367 Patch1329: fs-ntfs3-Add-NTFS3-in-fs-Kconfig-and-fs-Makefile.patch
368 Patch1330: fs-ntfs3-Add-MAINTAINERS.patch
369 Patch1331: fs-ntfs3-Fix-various-spelling-mistakes.patch
370 Patch1332: fs-ntfs3-Use-linux-log2-is_power_of_2-function.patch
371 Patch1333: fs-ntfs3-Add-ifndef-define-to-all-header-files.patch
372 Patch1334: fs-ntfs3-Fix-integer-overflow-in-multiplication.patch
373 Patch1335: fs-ntfs3-Remove-unused-variable-cnt-in-ntfs_security.patch
374 Patch1336: fs-ntfs3-Fix-one-none-utf8-char-in-source-file.patch
375 Patch1337: fs-ntfs3-Fix-fall-through-warnings-for-Clang.patch
376 Patch1338: fs-ntfs3-Remove-unused-including-linux-version.h.patch
377 Patch1339: fs-ntfs3-Restyle-comment-block-in-ni_parse_reparse.patch
378 Patch1340: fs-ntfs3-Use-kernel-ALIGN-macros-over-driver-specifi.patch
379 Patch1341: fs-ntfs3-Do-not-use-driver-own-alloc-wrappers.patch
380 Patch1342: fs-ntfs3-Use-kcalloc-kmalloc_array-over-kzalloc-kmal.patch
381 Patch1343: fs-ntfs3-add-checks-for-allocation-failure.patch
382 Patch1344: fs-ntfs3-fix-an-error-code-in-ntfs_get_acl_ex.patch
383 Patch1345: fs-ntfs3-Fix-error-code-in-indx_add_allocate.patch
384 Patch1346: fs-ntfs3-Potential-NULL-dereference-in-hdr_find_spli.patch
385 Patch1347: fs-ntfs3-Fix-error-handling-in-indx_insert_into_root.patch
386 Patch1348: fs-ntfs3-Restyle-comments-to-better-align-with-kerne.patch
387 Patch1349: fs-ntfs3-Fix-integer-overflow-in-ni_fiemap-with-fiem.patch
388 Patch1350: fs-ntfs3-Remove-unnecessary-condition-checking-from-.patch
389 Patch1351: fs-ntfs3-Remove-GPL-boilerplates-from-decompress-lib.patch
390 Patch1352: fs-ntfs3-Change-how-module-init-info-messages-are-di.patch
391
392 # procfs
393 Patch1360: fs-procfs-do-not-list-TID-0-in-proc-pid-task.patch
394 Patch1361: revert-proc-wchan-use-printk-format-instead-of-lookup_symbol_name.patch
395
396 ###
397 ### FireWire
398 ###
399
400 # adding module aliases to ease upgrade from ieee1394
401 Patch1400: firewire-ieee1394-module-aliases.patch
402
403 ###
404 ### Firmware
405 ###
406
407 ###
408 ### GPU/DRM
409 ###
410
411 # amdgpu
412 Patch1510: drm-amdgpu-add-some-additional-RDNA2-PCI-IDs.patch
413
414 # switch SI and CIK from radeon to amdgpu
415 Patch1520: drm-amdgpu-SI-and-CIK-enabled-by-default.patch
416
417 # new Q57 Host Bridge id
418 Patch1530: char-agp-intel-new-Q57-id.patch
419
420 # 5.14.12 regression
421 Patch1535: drm-i915-dp-Skip-the-HW-readout-of-DPCD-on-disabled-encoders.patch
422
423 # https://bugzilla.kernel.org/show_bug.cgi?id=206653#c19
424 Patch1552: i2c_nvidia_gpu-change-err-into-info.patch
425
426 ###
427 ### hwmon
428 ###
429
430 # k10temp
431 Patch1610: hwmon-k10temp-support-Zen3-APUs.patch
432 Patch1611: hwmon-k10temp-Add-additional-missing-Zen2-and-Zen3-APUs.patch
433 Patch1612: hwmon-k10temp-Dont-show-Tdie-for-all-Zen-Zen2-Zen3-CPU-APU.patch
434
435 ###
436 ### i2c
437 ###
438
439 ###
440 ### Input
441 ###
442
443 Patch1700: input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch
444
445 ###
446 ### HID
447 ###
448
449 ###
450 ### MFD
451 ###
452
453 ###
454 ### MM
455 ###
456
457 ###
458 ### Network
459 ###
460
461 # SiS 190 fixes
462 Patch1900: net-sis190-fix-list-usage.patch
463
464 # netfilter IFWLOG support
465 Patch1910: net-netfilter-IFWLOG.patch
466 Patch1911: net-netfilter-IFWLOG-mdv.patch
467 Patch1912: net-netfilter-IFWLOG-2.6.35-buildfix.patch
468 Patch1913: net-netfilter-IFWLOG-2.6.37-buildfix.patch
469 Patch1914: net-ipv4-netfilter-ipt_IFWLOG-3.6-buildfix.patch
470 Patch1915: net-netfilter-IFWLOG-3.7-buildfix.patch
471 Patch1916: net-netfilter-IFWLOG-remove-unused-label.patch
472 Patch1917: net-netfilter-ipt_IFWLOG-4.12-buildfix.patch
473 Patch1918: net-netfilter-IFWLOG-5.0-buildfix.patch
474
475 # netfilter psd support
476 Patch1920: net-netfilter-psd.patch
477 Patch1921: net-netfilter-psd-mdv.patch
478 Patch1922: net-netfilter-psd-2.6.35-buildfix.patch
479 Patch1923: net-netfilter-psd-fix-redefines.patch
480
481 # rtw88 wifi
482 # add alias for the replaced r8822be staging driver
483 Patch1930: net-wireless-rtw88-add-r8822be-alias.patch
484 # add alias for the replaced 8723de 3rdparty driver
485 Patch1931: net-wireless-rtw88-add-8723de-alias.patch
486
487 # rtl8xxxu
488 Patch1940: net-wireless-rtl8xxxu-disable-interrupt_in-transfer-for-8188cu-and-8192cu.patch
489
490 # rtw89 patchset v7 for 802.11ax hw (TTL: 5.16)
491 Patch1960: net-wireless-rtw89-add-CAM-files.patch
492 Patch1961: net-wireless-rtw89-add-BT-coexistence-files.patch
493 Patch1962: net-wireless-rtw89-add-core-and-trx-files.patch
494 Patch1963: net-wireless-rtw89-add-debug-files.patch
495 Patch1964: net-wireless-rtw89-add-efuse-files.patch
496 Patch1965: net-wireless-rtw89-add-files-to-download-and-communicate-with-fir.patch
497 Patch1966: net-wireless-rtw89-add-MAC-files.patch
498 Patch1967: net-wireless-rtw89-implement-mac80211-ops.patch
499 Patch1968: net-wireless-rtw89-add-pci-files.patch
500 Patch1969: net-wireless-rtw89-add-phy-files.patch
501 Patch1970: net-wireless-rtw89-define-register-names.patch
502 Patch1971: net-wireless-rtw89-add-regulatory-support.patch
503 Patch1972: net-wireless-rtw89-8852a-add-8852a-specific-files.patch
504 Patch1973: net-wireless-rtw89-8852a-add-8852a-RFK-files.patch
505 Patch1974: net-wireless-rtw89-8852a-add-8852a-RFK-tables.patch
506 Patch1975: net-wireless-rtw89-8852a-add-8852a-tables-1-of-5.patch
507 Patch1976: net-wireless-rtw89-8852a-add-8852a-tables-2-of-5.patch
508 Patch1977: net-wireless-rtw89-8852a-add-8852a-tables-3-of-5.patch
509 Patch1978: net-wireless-rtw89-8852a-add-8852a-tables-4-of-5.patch
510 Patch1979: net-wireless-rtw89-8852a-add-8852a-tables-5-of-5.patch
511 Patch1980: net-wireless-rtw89-add-ser-to-recover-error-reported-by-firmware.patch
512 Patch1981: net-wireless-rtw89-add-PS-files.patch
513 Patch1982: net-wireless-rtw89-add-SAR-files.patch
514 Patch1983: net-wireless-rtw89-add-Kconfig-and-Makefile.patch
515
516 # iwlfiwi
517 Patch1996: net-wireless-iwlwifi-add-new-pci-id-for-6235.patch
518
519 ###
520 ### PCI
521 ###
522
523 ###
524 ### Platform
525 ###
526
527 # Allow access to Shuttle WMI interface controls
528 # (Mainly allow turning on/off webcam and wireless on Shuttle DA18IE and DA18IM)
529 Patch2050: platform-x86-add-shuttle-wmi-driver.patch
530 Patch2051: platform-x86-shuttle-wmi-drop-devinit-exit.patch
531 Patch2052: platform-x86-shuttle-wmi-4.2-buildfix.patch
532 Patch2053: platform-x86-shuttle-wmi-4.13-buildfix.patch
533 Patch2054: platform-x86-shuttle-wmi-kernel-5.5.patch
534
535 ###
536 ### PM
537 ###
538
539 ###
540 ### Sound
541 ###
542
543 ###
544 ### SPI
545 ###
546
547 ###
548 ### Staging
549 ###
550
551 # switch to new staging driver r8188eu (TTL 5.15)
552 Patch2200: staging-add-r8188eu.patch
553 Patch2201: staging-switch-from-rtl8188eu-to-r8188eu.patch
554
555 ###
556 ### Thermal
557 ###
558
559 ###
560 ### Thunderbolt
561 ###
562
563 ###
564 ### USB
565 ###
566
567 Patch2300: hid-usbhid-IBM-BladeCenterHS20-quirk.patch
568
569 Patch2310: usb-storage-unusual_devs-add-id.patch
570 Patch2311: usb-storage-unusual_devs-add-id-2.6.37-buildfix.patch
571
572 ###
573 ### V4L
574 ###
575
576 # pwc driver name in /proc/bus/devices, /sys fix and "advertisement" removal
577 Patch2400: media-usb-pwc-lie-in-proc-usb-devices.patch
578
579 ###
580 ### Video
581 ###
582
583 # Mageia framebuffer boot logo
584 Patch2500: video-mageia-logo.patch
585
586 # mga compat option
587 Patch2501: video-console-vgacon-treat-nokmsboot-as-nomodeset.patch
588
589 ###
590 ### Virt
591 ###
592
593 # fix gcc-10 build
594 Patch2550: KVM-squelch-uninitialized-variable-warning.patch
595
596 # null pointer deref fix
597 Patch2560: kvm-crash-in-5.14.1.patch
598
599 ###
600 ### Tools
601 ###
602
603 # wipe powerpc refrence so we can nuke dangling symlinks (mga#17676)
604 Patch2600: tools-testing-selftest-Makefile-remove-powerpc-reference.patch
605
606 # fix perf build
607 Patch2605: tools-perf-ui-include-slang.patch
608
609 ###
610 ### UAPI
611 ###
612
613 Patch2700: uapi-avoid-namespace-conflict-in-linux-posix_types.h.patch
614
615 ###
616 ### 3rdparty
617 ###
618
619 Patch3000: 3rd-3rdparty-tree.patch
620 Patch3001: 3rd-3rdparty-merge.patch
621
622 # ndiswrapper
623 Patch3100: 3rd-ndiswrapper-1.63.patch
624 Patch3101: 3rd-ndiswrapper-Kconfig.patch
625 Patch3102: 3rd-ndiswrapper-Makefile-build-fix.patch
626 Patch3103: 3rd-niswrapper-Kconfig-Makefile.patch
627
628 # add rtl8812 support (mga#21043)
629 # from https://github.com/aircrack-ng/rtl8812au.git
630 Patch3200: 3rd-rtl8812au.patch
631 Patch3201: 3rd-rtl8812au-Kconfig-Makefile.patch
632 Patch3202: 3rd-rtl8812au-rename.patch
633 Patch3203: 3rd-rtl8812au-kernel-5.12.patch
634
635 # add rtl8723de support (mga#22559)
636 Patch3300: 3rd-rtl8723de.patch
637 Patch3301: 3rd-rtl8723de-Kconfig-Makefile.patch
638 Patch3302: 3rd-rtl8723de-fix-redefine.patch
639 Patch3303: 3rd-rtl8723de-nodebug.patch
640 Patch3304: 3rd-rtl8223de-kernel-5.6.patch
641 Patch3305: 3rd-rtl8723de-add-kernel-5.8-support.patch
642
643 # viahss
644 Patch3400: 3rd-viahss-0.92.patch
645 Patch3401: 3rd-viahss-config.patch
646 Patch3402: 3rd-viahss-module-license.patch
647 Patch3403: 3rd-viahss-2.6.35-buildfix.patch
648 Patch3404: 3rd-viahss-3.0-buildfix.patch
649 Patch3405: 3rd-viahss-Kconfig-Makefile.patch
650
651 # rtl8821ce (mga#24605) -- https://github.com/tomaspinho/rtl8821ce
652 Patch3500: 3rd-rtl8821ce.patch
653 Patch3501: 3rd-rtl8821ce-Kconfig-Makefile.patch
654 Patch3502: 3rd-rtl8821ce-5.8-fix.patch
655 Patch3503: 3rd-rtl8821ce-kernel-5.10.patch
656 Patch3504: 3rd-rtl8821ce-kernel-5.12.patch
657
658 # fix Kconfig files for 3rdparty:
659 Patch3900: 3rd-fix-kconfig.patch
660
661 ###
662 ### Python fixes
663 ###
664 Patch4000: linux-5.14-python3.patch
665
666 ###
667 ### TTY
668 ###
669
670 ###
671 ### Security fixes
672 ###
673 Patch5002: CVE-2019-12379.patch
674 #
675 # CVE-2020-16119
676 # https://bugzilla.redhat.com/show_bug.cgi?id=1886374
677 # https://bugzilla.redhat.com/show_bug.cgi?id=1888083
678 Patch5003: CVE-2020-16119-DCCP-CCID-structure-use-after-free.patch
679
680 ###
681 ### Cosmetic fixes (e.g. typos, spelling, etc.)
682 ###
683
684 ### Fixes from FC kernel
685 # Inspur Advantech PCI ids
686 Patch7000: 0001-scsi-smartpqi-add-inspur-advantech-ids.patch
687 # Vulcan AHCI PCI bar (aarch64)
688 Patch7001: 0001-Vulcan-AHCI-PCI-bar-fix-for-Broadcom-Vulcan-early-si.patch
689
690 #END
691 ####################################################################
692
693 # Defines for the things that are needed for all the kernels
694 #
695 %define common_desc_kernel The kernel package contains the Linux kernel (vmlinuz), the core of your \
696 Mageia operating system. The kernel handles the basic functions \
697 of the operating system: memory allocation, process allocation, device \
698 input and output, etc.
699
700 %define common_desc_kernel_smp This kernel relies on in-kernel smp alternatives to switch between up & smp \
701 mode depending on detected hardware. To force the kernel to boot in single \
702 processor mode, use the "nosmp" boot parameter.
703
704 ### Global Requires/Provides
705 %define requires1 bootloader-utils >= 1.16-1
706 %define requires2 dracut >= 046-2
707 %define requires3 kmod >= 12-2
708 %define requires4 sysfsutils >= 2.1.0-16
709 %define requires5 kernel-firmware >= 20190603-1
710 # ldetect-lst with SI/CIK swich from radeon to amdgpu
711 %define requires6 ldetect-lst >= 0.6.25-1
712
713 %define kprovides1 %{kname} = %{kverrel}
714 %define kprovides2 kernel = %{tar_ver}
715 %define kprovides3 alsa = 1.0.26
716 %define kprovides_server drbd-api = 88
717
718 # conflict dkms packages that dont support kernel-5.12
719 %define kconflicts1 dkms-broadcom-wl < 6.30.223.271-61
720 %define kconflicts2 dkms-nvidia-current < 470.74-1
721 %define kconflicts3 dkms-nvidia390 < 390.144-1
722 %define kconflicts4 dkms-nvidia340 < 340.108-15
723 %define kconflicts5 dkms-nvidia304 < 304.137-3
724 %define kconflicts6 dkms-virtualbox < 6.1.20-1
725 %define kconflicts7 dkms-xtables-addons < 3.17-1
726 # (tmb) conflict older btrfs-progs to get the new in same transaction and in initrd
727 %define kconflicts8 btrfs-progs < 5.10-1
728 # (tmb) conflict too old radeon-firmware to get the uvd firmwares in initrd
729 %define kconflicts9 radeon-firmware < 20201218-1
730 # (tmb) conflict old firmware to get the firmwares in initrd
731 %define kconflicts10 kernel-firmware-nonfree < 20201230-1
732 # (tmb) conflict old microcode to get updated ones in initrd for early loading
733 %define kconflicts11 microcode < 0.20201118-2
734 # (tmb) conflict old theme to get mga8 theme in initrd
735 %define kconflicts12 mageia-gfxboot-theme < 4.5.14.11-2
736 # (tmb) conflict too old grub2(-efi)
737 %define kconflicts13 grub2 < 2.02.0-15
738 %define kconflicts14 grub2-efi < 2.02.0-15
739 # (tmb) conflict too old efibootmgr
740 %define kconflicts15 efibootmgr < 16-3
741 # (tmb) force new theme in initrd
742 %define kconflicts16 mageia-theme < 8.0-2
743
744 Autoreqprov: no
745
746 %if 0%{?mageia} >= 9
747 BuildRequires: gcc >= 11.1.0-0.RC.6
748 BuildRequires: binutils >= 1:2.36.1-7
749 %else
750 BuildRequires: gcc >= 8.4.0-1
751 BuildRequires: binutils >= 1:2.33.1-1
752 %endif
753 BuildRequires: kmod >= 12-2
754 BuildRequires: bc
755 # for crypto stuff
756 BuildRequires: pkgconfig(openssl)
757 # since 4.16
758 BuildRequires: bison
759 BuildRequires: diffutils
760 BuildRequires: elfutils-devel
761 BuildRequires: flex
762 # for headers_install
763 BuildRequires: rsync
764 # for cpupower
765 %if %{build_cpupower}
766 BuildRequires: pkgconfig(libpci)
767 %endif
768 # for perf
769 %if %{build_perf}
770 BuildRequires: audit-devel
771 BuildRequires: binutils-devel
772 BuildRequires: gtk2-devel
773 BuildRequires: libunwind-devel
774 BuildRequires: newt-devel
775 BuildRequires: python3-devel
776 BuildRequires: zlib-devel
777 BuildRequires: asciidoc
778 BuildRequires: xmlto-notex
779 BuildRequires: perl-devel
780 %if 0%{?mageia} >= 8
781 BuildRequires: systemtap-sdt-devel
782 BuildRequires: babeltrace-devel
783 %else
784 BuildRequires: libbabeltrace-devel
785 %endif
786 %ifarch %{ix86} x86_64
787 BuildRequires: numa-devel
788 %endif
789 %endif
790 %if %{build_bpftool}
791 BuildRequires: python3-docutils
792 BuildRequires: cap-devel
793 %endif
794
795 %description
796 %common_desc_kernel
797 %ifnarch %{arm}
798 %common_desc_kernel_smp
799 %endif
800
801 # mkflavour() name flavour processor
802 # name: the flavour name in the package name
803 # flavour: first parameter of CreateKernel()
804 %define mkflavour() \
805 %package -n %{kname}-%{1}-%{buildrel} \
806 Version: %{fakever} \
807 Release: %{fakerel} \
808 Provides: %kprovides1 %kprovides2 %kprovides3 \
809 %{expand:%%{?kprovides_%{1}:Provides: %{kprovides_%{1}}}} \
810 Provides: %{kname}-%{1} \
811 Requires(pre): %requires1 %requires2 %requires3 %requires4 \
812 Requires: %requires2 %requires5 %requires6 \
813 Conflicts: %kconflicts1 %kconflicts2 %kconflicts3 \
814 Conflicts: %kconflicts4 %kconflicts5 %kconflicts6 \
815 Conflicts: %kconflicts7 %kconflicts8 %kconflicts9 \
816 Conflicts: %kconflicts10 %kconflicts11 %kconflicts12 \
817 Conflicts: %kconflicts13 %kconflicts14 %kconflicts15 \
818 Conflicts: %kconflicts16 \
819 %if 0%{?mageia} >= 8 \
820 Obsoletes: crda \
821 Obsoletes: crda-devel \
822 Obsoletes: fuse-exfat \
823 %endif \
824 Provides: should-restart = system \
825 Provides: installonlypkg(kernel) \
826 Recommends: iw cpupower microcode \
827 Recommends: %{kname}-%{1}-latest \
828 %ifarch %{ix86} \
829 Conflicts: arch(x86_64) \
830 %endif \
831 Summary: %{expand:%{summary_%(echo %{1} | sed -e "s/-/_/")}} \
832 Group: System/Kernel and hardware \
833 %description -n %{kname}-%{1}-%{buildrel} \
834 %common_desc_kernel %{expand:%{info_%(echo %{1} | sed -e "s/-/_/")}} \
835 %ifnarch %{arm} \
836 %common_desc_kernel_smp \
837 %endif \
838 \
839 %if %build_devel \
840 %package -n %{kname}-%{1}-devel-%{buildrel} \
841 Version: %{fakever} \
842 Release: %{fakerel} \
843 Requires: glibc-devel ncurses-devel make gcc perl \
844 Requires: gcc >= 5.5.0-1 \
845 %ifarch x86_64 \
846 Requires: pkgconfig(libelf) \
847 %endif \
848 Summary: The kernel-devel files for %{kname}-%{1}-%{buildrel} \
849 Group: Development/Kernel \
850 Provides: %{kname}-devel = %{kverrel} \
851 Provides: %{kname}-%{1}-devel \
852 Recommends: %{kname}-%{1}-devel-latest \
853 %ifarch %{ix86} \
854 Conflicts: arch(x86_64) \
855 %endif \
856 %description -n %{kname}-%{1}-devel-%{buildrel} \
857 This package contains the kernel files (headers and build tools) \
858 that should be enough to build additional drivers for \
859 use with %{kname}-%{1}-%{buildrel}. \
860 \
861 If you want to build your own kernel, you need to install the full \
862 %{kname}-source-%{buildrel} rpm. \
863 \
864 %endif \
865 \
866 %if %build_debug \
867 %package -n %{kname}-%{1}-%{buildrel}-debuginfo \
868 Version: %{fakever} \
869 Release: %{fakerel} \
870 Summary: Files with debuginfo for %{kname}-%{1}-%{buildrel} \
871 Group: Development/Debug \
872 Provides: kernel-debug = %{kverrel} \
873 %ifarch %{ix86} \
874 Conflicts: arch(x86_64) \
875 %endif \
876 %description -n %{kname}-%{1}-%{buildrel}-debuginfo \
877 This package contains the files with debuginfo to aid in debug tasks \
878 when using %{kname}-%{1}-%{buildrel}. \
879 \
880 If you need to look at debug information or use some application that \
881 needs debugging info from the kernel, this package may help. \
882 \
883 %endif \
884 \
885 %package -n %{kname}-%{1}-latest \
886 Version: %{kversion} \
887 Release: %{rpmrel} \
888 Summary: Virtual rpm for latest %{kname}-%{1} \
889 Group: System/Kernel and hardware \
890 Requires: %{kname}-%{1}-%{buildrel} \
891 %ifarch %{ix86} \
892 Conflicts: arch(x86_64) \
893 %endif \
894 Obsoletes: vboxadditions-kernel-%{1}-latest \
895 Obsoletes: kernel-tmb-%{1}-latest \
896 %description -n %{kname}-%{1}-latest \
897 This package is a virtual rpm that aims to make sure you always have the \
898 latest %{kname}-%{1} installed... \
899 \
900 %if %build_devel \
901 %package -n %{kname}-%{1}-devel-latest \
902 Version: %{kversion} \
903 Release: %{rpmrel} \
904 Summary: Virtual rpm for latest %{kname}-%{1}-devel \
905 Group: Development/Kernel \
906 Requires: %{kname}-%{1}-devel-%{buildrel} \
907 %ifarch %{ix86} \
908 Conflicts: arch(x86_64) \
909 %endif \
910 Provides: %{kname}-devel-latest \
911 Obsoletes: kernel-tmb-%{1}-devel-latest \
912 %description -n %{kname}-%{1}-devel-latest \
913 This package is a virtual rpm that aims to make sure you always have the \
914 latest %{kname}-%{1}-devel installed... \
915 \
916 %endif \
917 \
918 %posttrans -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-posttrans \
919 %postun -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-postun \
920 \
921 %if %build_devel \
922 %post -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-post \
923 %preun -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-preun \
924 %postun -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-postun \
925 %endif \
926 \
927 %files -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1} \
928 %files -n %{kname}-%{1}-latest \
929 \
930 %if %build_devel \
931 %files -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1} \
932 %files -n %{kname}-%{1}-devel-latest \
933 %endif \
934 \
935 %if %build_debug \
936 %files -n %{kname}-%{1}-%{buildrel}-debuginfo -f kernel_debug_files.%{1} \
937 %endif
938
939 %ifarch %{ix86}
940 #
941 # kernel-desktop586: i586, smp-alternatives, 4GB
942 #
943 %if %build_desktop586
944 %define summary_desktop586 Linux kernel for desktop use with i586 and less than 4GB RAM
945 %define info_desktop586 This kernel is compiled for desktop use, single or \
946 multiple i586 processor(s)/core(s) and less than 4GB RAM (usually 3-3.5GB \
947 detected, if you need/want to use all 4GB or more, install kernel-server), \
948 using HZ_1000, voluntary preempt, CFS cpu scheduler and cfq i/o scheduler.
949 %mkflavour desktop586
950 %endif
951 %endif
952
953 #
954 # kernel-desktop: i686, smp-alternatives, 4 GB / x86_64
955 #
956 %if %build_desktop
957 %ifarch %{ix86}
958 %define summary_desktop Linux Kernel for desktop use with i686 and less than 4GB RAM
959 %define info_desktop This kernel is compiled for desktop use, single or \
960 multiple i686 processor(s)/core(s) and less than 4GB RAM (usually 3-3.5GB \
961 detected, if you need/want to use all 4GB or more, install kernel-server), \
962 using HZ_1000, voluntary preempt, CFS cpu scheduler and cfq i/o scheduler.
963 %else
964 %define summary_desktop Linux Kernel for desktop use with %{_arch}
965 %define info_desktop This kernel is compiled for desktop use, single or \
966 multiple %{_arch} processor(s)/core(s), using HZ_1000, voluntary preempt, \
967 CFS cpu scheduler and cfq i/o scheduler.
968 %endif
969 %mkflavour desktop
970 %endif
971
972 #
973 # kernel-server: i686, smp-alternatives, 64 GB / x86_64
974 #
975 %if %build_server
976 %ifarch %{ix86}
977 %define summary_server Linux Kernel for server use with i686 & 64GB RAM
978 %define info_server This kernel is compiled for server use, single or \
979 multiple i686 processor(s)/core(s) and up to 64GB RAM using PAE, using \
980 no preempt, HZ_100, CFS cpu scheduler and cfq i/o scheduler.
981 %else
982 %define summary_server Linux Kernel for server use with %{_arch}
983 %define info_server This kernel is compiled for server use, single or \
984 multiple %{_arch} processor(s)/core(s), using no preempt, HZ_100, \
985 CFS cpu scheduler and cfq i/o scheduler.
986 %endif
987 %mkflavour server
988 %endif
989
990 #
991 # kernel-source
992 #
993 %if %build_source
994 %package -n %{kname}-source-%{buildrel}
995 Version: %{fakever}
996 Release: %{fakerel}
997 Requires: glibc-devel, ncurses-devel, make, gcc, perl, diffutils
998 Summary: The Linux source code for %{kname}-%{buildrel}
999 Group: Development/Kernel
1000 Autoreqprov: no
1001 Provides: kernel-source = %{kverrel}
1002 Buildarch: noarch
1003
1004 %description -n %{kname}-source-%{buildrel}
1005 The %{kname}-source package contains the source code files for the Mageia
1006 kernel. Theese source files are only needed if you want to build your
1007 own custom kernel that is better tuned to your particular hardware.
1008
1009 If you only want the files needed to build 3rdparty (nVidia, Ati, dkms-*,...)
1010 drivers against, install the *-devel-* rpm that is matching your kernel.
1011
1012 #
1013 # kernel-source-latest: virtual rpm
1014 #
1015 %package -n %{kname}-source-latest
1016 Version: %{kversion}
1017 Release: %{rpmrel}
1018 Summary: Virtual rpm for latest %{kname}-source
1019 Group: Development/Kernel
1020 Requires: %{kname}-source-%{buildrel}
1021 Buildarch: noarch
1022
1023 %description -n %{kname}-source-latest
1024 This package is a virtual rpm that aims to make sure you always have the
1025 latest %{kname}-source installed...
1026 %endif
1027
1028 #
1029 # kernel-doc: documentation for the Linux kernel
1030 #
1031 %if %build_doc
1032 %package -n %{kname}-doc
1033 Version: %{kversion}
1034 Release: %{rpmrel}
1035 Summary: Various documentation bits found in the %{kname} source
1036 Group: Documentation
1037 Buildarch: noarch
1038
1039 %description -n %{kname}-doc
1040 This package contains documentation files from the %{kname} source.
1041 Various bits of information about the Linux kernel and the device drivers
1042 shipped with it are documented in these files. You also might want install
1043 this package if you need a reference to the options that can be passed to
1044 Linux kernel modules at load time.
1045 %endif
1046
1047 #
1048 # kernel userspace-headers
1049 #
1050 %if %{build_uheaders}
1051 %package -n %{kname}-userspace-headers
1052 Version: %{kversion}
1053 Release: %{rpmrel}
1054 Summary: Linux kernel header files for userspace
1055 Group: System/Kernel and hardware
1056 %rename linux-userspace-headers
1057 Provides: kernel-headers = 1:%{version}-%{release}
1058
1059 %description -n %{kname}-userspace-headers
1060 C header files from the Linux kernel. The header files define structures
1061 and constants that are needed for building most standard programs.
1062
1063 This package is not suitable for building kernel modules.
1064 %endif
1065
1066 #
1067 # kernel/tools
1068 #
1069 %if %{build_perf}
1070 %package -n perf
1071 Version: %{kversion}
1072 Release: %{rpmrel}
1073 Summary: perf tool and the supporting documentation
1074 Group: System/Kernel and hardware
1075
1076 %description -n perf
1077 the perf tool and the supporting documentation.
1078 %endif
1079
1080 %if %{build_cpupower}
1081 %package -n cpupower
1082 Version: %{kversion}
1083 Release: %{rpmrel}
1084 Summary: the cpupower tools
1085 Group: System/Kernel and hardware
1086 Requires(post): rpm-helper >= 0.24.8-1
1087 Requires(preun): rpm-helper >= 0.24.8-1
1088 Obsoletes: cpufreq cpufrequtils
1089
1090 %description -n cpupower
1091 the cpupower tools.
1092
1093 %post -n cpupower
1094 %_post_service cpupower
1095
1096 %preun -n cpupower
1097 %_preun_service cpupower
1098
1099 %package -n cpupower-devel
1100 Version: %{kversion}
1101 Release: %{rpmrel}
1102 Summary: devel files for cpupower
1103 Group: Development/Kernel
1104 Requires: cpupower = %{kversion}-%{rpmrel}
1105 Conflicts: %{_lib}cpufreq-devel
1106
1107 %description -n cpupower-devel
1108 This package contains the development files for cpupower.
1109 %endif
1110
1111 %if %{build_bpftool}
1112 %package -n bpftool
1113 Summary: Inspection and simple manipulation of eBPF programs and maps
1114 Group: System/Kernel and hardware
1115
1116 %description -n bpftool
1117 This package contains the bpftool, which allows inspection and simple
1118 manipulation of eBPF programs and maps.
1119 %endif
1120
1121 %if %{build_libbpf}
1122 %package -n %{_lib}bpf0
1123 Summary: The bpf library from kernel source
1124 Group: System/Libraries
1125
1126 %description -n %{_lib}bpf0
1127 This package contains the kernel source bpf library.
1128
1129 %package -n %{_lib}bpf-devel
1130 Summary: Developement files for the bpf library from kernel source
1131 Group: Development/Kernel
1132 Requires: %{_lib}bpf0
1133
1134 %description -n %{_lib}bpf-devel
1135 This package includes libraries and header files needed for development
1136 of applications which use bpf library from kernel source.
1137 %endif
1138
1139 #
1140 # End packages - here begins build stage
1141 #
1142 %prep
1143 %setup -q -n %top_dir_name -c
1144
1145 cd %src_dir
1146
1147 %autopatch -p1
1148
1149 # PATCH END
1150
1151 #
1152 # Setup Begin
1153 #
1154
1155 # install x86 defconfigs
1156 install -m 644 %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} %{SOURCE15} arch/x86/configs/
1157 # install arm64 defconfigs
1158 install -m 644 %{SOURCE16} %{SOURCE17} arch/arm64/configs/
1159 # install arm defconfigs
1160 install -m 644 %{SOURCE18} arch/arm/configs/
1161
1162 # make sure the kernel has the sublevel we know it has...
1163 LC_ALL=C perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{sublevel}/" Makefile
1164
1165 # get rid of unwanted files
1166 find . -name '*~' -o -name '*.orig' -o -name '*.append' | %kxargs rm -f
1167
1168 # fix missing exec flag on file introduced in 4.14.10-rc1
1169 chmod 755 tools/objtool/sync-check.sh
1170
1171 %build
1172 # Common target directories
1173 %define _kerneldir /usr/src/kernel-%{kversion}-%{buildrpmrel}
1174 %define _bootdir /boot
1175 %define _modulesdir /lib/modules
1176 %define _efidir %{_bootdir}/efi/mageia
1177
1178 # Directories definition needed for building
1179 %define temp_root %{build_dir}/temp-root
1180 %define temp_source %{temp_root}%{_kerneldir}
1181 %define temp_boot %{temp_root}%{_bootdir}
1182 %define temp_modules %{temp_root}%{_modulesdir}
1183
1184 PrepareKernel() {
1185 name=$1
1186 extension=$2
1187
1188 echo "Make config for kernel $extension"
1189
1190 %smake ARCH=%{target_arch} -s mrproper
1191
1192 if [ "%{target_arch}" == "i386" -o "%{target_arch}" == "x86_64" ]; then
1193 conf_dir=arch/x86/configs
1194 else
1195 conf_dir=arch/%{target_arch}/configs
1196 fi
1197 if [ -z "$name" ]; then
1198 cp $conf_dir/defconfig-%{target_arch}-desktop .config
1199 else
1200 cp $conf_dir/defconfig-%{target_arch}-$name .config
1201 fi
1202
1203 # make sure EXTRAVERSION says what we want it to say
1204 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -$extension/" Makefile
1205
1206 %smake ARCH=%{target_arch} oldconfig
1207 }
1208
1209 BuildKernel() {
1210 KernelVer=$1
1211
1212 echo "Building kernel $KernelVer"
1213
1214 %kmake ARCH=%{target_arch} -s all
1215
1216 # Start installing stuff
1217 install -d %{temp_boot}
1218 install -m 644 System.map %{temp_boot}/System.map-$KernelVer
1219 install -m 644 .config %{temp_boot}/config-$KernelVer
1220 xz -c Module.symvers > %{temp_boot}/symvers-$KernelVer.xz
1221
1222 %ifarch %{arm}
1223 IMAGE=zImage
1224 %else
1225 %ifarch aarch64
1226 IMAGE=Image.gz
1227 %else
1228 IMAGE=bzImage
1229 %endif
1230 %endif
1231 cp -f arch/%{target_arch}/boot/$IMAGE %{temp_boot}/vmlinuz-$KernelVer
1232
1233 %ifarch %{arm} aarch64
1234 install -d %{temp_root}%{_libdir}/linux-$KernelVer/
1235 find arch/%{target_arch}/boot/dts/ -name *.dtb -execdir install -D -m644 {} %{temp_root}%{_libdir}/linux-$KernelVer/{} \;
1236 %endif
1237
1238 # modules
1239 install -d %{temp_modules}/$KernelVer
1240 %smake ARCH=%{target_arch} INSTALL_MOD_PATH=%{temp_root} KERNELRELEASE=$KernelVer modules_install
1241 }
1242
1243 SaveDevel() {
1244 devel_flavour=$1
1245
1246 DevelRoot=/usr/src/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}
1247 TempDevelRoot=%{temp_root}$DevelRoot
1248
1249 mkdir -p $TempDevelRoot
1250 for i in $(find . -name 'Makefile*'); do cp -R --parents $i $TempDevelRoot;done
1251 for i in $(find . -name 'Kconfig*' -o -name 'Kbuild*'); do cp -R --parents $i $TempDevelRoot;done
1252 cp -fR include $TempDevelRoot
1253 cp -fR scripts $TempDevelRoot
1254 cp -fR kernel/bounds.c $TempDevelRoot/kernel
1255 cp -fR tools/include $TempDevelRoot/tools/
1256 # needed for selinux
1257 cp -R --parents security/selinux/include/*.h $TempDevelRoot
1258 %ifarch %{arm}
1259 cp -fR arch/%{target_arch}/tools $TempDevelRoot/arch/%{target_arch}/
1260 cp -fR arch/%{target_arch}/kernel/signal.h $TempDevelRoot/arch/%{target_arch}/kernel/
1261 %endif
1262 %ifarch aarch64
1263 cp -fR arch/x86/entry/syscalls/syscall_32.tbl $TempDevelRoot/arch/x86/entry/syscalls/
1264 cp -fR arch/arm64/kernel/vdso/*.{S,sh} $TempDevelRoot/arch/arm64/kernel/vdso/
1265 cp -fR arch/arm64/kernel/vdso/vgettimeofday.c $TempDevelRoot/arch/arm64/kernel/vdso/
1266 cp -fR arch/arm64/tools/{cpucaps,gen-cpucaps.awk} $TempDevelRoot/arch/arm64/tools/
1267 # aarch64 build wants x86 syscall tables
1268 cp -fR arch/x86/entry/syscalls/syscall_{32,64}.tbl $TempDevelRoot/arch/x86/entry/syscalls/
1269 cp -fR lib/vdso/gettimeofday.c $TempDevelRoot/lib/vdso/
1270 %endif
1271 %ifarch %{ix86} x86_64
1272 cp -fR arch/x86/kernel/asm-offsets.{c,s} $TempDevelRoot/arch/x86/kernel/
1273 cp -fR arch/x86/kernel/asm-offsets_{32,64}.c $TempDevelRoot/arch/x86/kernel/
1274 cp -fR arch/x86/lib/insn.c $TempDevelRoot/arch/x86/lib/
1275 cp -fR arch/x86/purgatory/* $TempDevelRoot/arch/x86/purgatory/
1276 cp -fR arch/x86/entry/syscalls/syscall* $TempDevelRoot/arch/x86/entry/syscalls/
1277 cp -fR arch/x86/include $TempDevelRoot/arch/x86/
1278 cp -fR arch/x86/tools $TempDevelRoot/arch/x86/
1279 %else
1280 cp -fR arch/%{target_arch}/kernel/asm-offsets.{c,s} $TempDevelRoot/arch/%{target_arch}/kernel/
1281 for f in $(find arch/%{target_arch} -name include); do cp -fR --parents $f $TempDevelRoot; done
1282 %endif
1283 cp -fR .config Module.symvers $TempDevelRoot
1284
1285 # Needed for truecrypt build (Danny)
1286 cp -fR drivers/md/dm.h $TempDevelRoot/drivers/md/
1287
1288 # needed by include/generated/timeconst.h
1289 cp -fR kernel/time/timeconst.bc $TempDevelRoot/kernel/time/
1290
1291 # Needed for lirc_gpio (#39004)
1292 cp -fR drivers/media/pci/bt8xx/bttv{,p}.h $TempDevelRoot/drivers/media/pci/bt8xx/
1293 cp -fR drivers/media/pci/bt8xx/bt848.h $TempDevelRoot/drivers/media/pci/bt8xx/
1294 cp -fR drivers/media/common/btcx-risc.h $TempDevelRoot/drivers/media/common/
1295
1296 # aufs has a special file needed
1297 cp -fR fs/aufs/magic.mk $TempDevelRoot/fs/aufs/
1298
1299 # rtl8821ce has special files needed
1300 cp -fR 3rdparty/rtl8821ce/halmac.mk $TempDevelRoot/3rdparty/rtl8821ce/
1301 cp -fR 3rdparty/rtl8821ce/rtl8821c.mk $TempDevelRoot/3rdparty/rtl8821ce/
1302 mkdir -p $TempDevelRoot/3rdparty/rtl8821ce/hal/phydm/
1303 cp -fR 3rdparty/rtl8821ce/hal/phydm/phydm.mk $TempDevelRoot/3rdparty/rtl8821ce/hal/phydm/
1304 mkdir -p $TempDevelRoot/3rdparty/rtl8812au/hal/phydm/
1305 cp -fR 3rdparty/rtl8812au/hal/phydm/phydm.mk $TempDevelRoot/3rdparty/rtl8812au/hal/phydm/
1306
1307 %ifarch x86_64
1308 # orc unwinder needs theese
1309 cp -fR tools/build/Build{,.include} $TempDevelRoot/tools/build
1310 cp -fR tools/build/fixdep.c $TempDevelRoot/tools/build
1311 cp -fR tools/lib/{rbtree.c,ctype.c,str_error_r.c,string.c} $TempDevelRoot/tools/lib
1312 cp -fR tools/lib/subcmd/* $TempDevelRoot/tools/lib/subcmd
1313 cp -fR tools/objtool/* $TempDevelRoot/tools/objtool
1314 cp -fR tools/scripts/utilities.mak $TempDevelRoot/tools/scripts
1315 mkdir -p $TempDevelRoot/tools/arch/x86/tools
1316 cp -fR tools/arch/x86/tools/gen-insn-attr-x86.awk $TempDevelRoot/tools/arch/x86/tools/
1317 mkdir -p $TempDevelRoot/tools/arch/x86/lib
1318 cp -fR tools/arch/x86/lib/{inat.c,insn.c,x86-opcode-map.txt} $TempDevelRoot/tools/arch/x86/lib/
1319 mkdir -p $TempDevelRoot/tools/arch/x86/include/asm
1320 cp -fR tools/arch/x86/include/asm/{asm.h,emulate_prefix.h,inat.h,inat_types.h,insn.h,nops.h,orc_types.h} $TempDevelRoot/tools/arch/x86/include/asm/
1321 %endif
1322
1323 for i in alpha arc avr32 blackfin c6x cris csky frv h8300 hexagon ia64 m32r m68k m68knommu metag microblaze \
1324 mips mn10300 nds32 nios2 openrisc parisc powerpc riscv s390 score sh sparc tile unicore32 xtensa; do
1325 rm -rf $TempDevelRoot/arch/$i
1326 rm -rf $TempDevelRoot/scripts/dtc/include-prefixes/$i
1327 rm -rf $TempDevelRoot/tools/arch/$i
1328 done
1329
1330 %ifnarch %{arm} aarch64
1331 rm -rf $TempDevelRoot/arch/arm*
1332 rm -rf $TempDevelRoot/include/kvm/arm*
1333 rm -rf $TempDevelRoot/include/soc
1334 rm -rf $TempDevelRoot/scripts/dtc/include-prefixes/arm*
1335 rm -rf $TempDevelRoot/tools/arch/arm*
1336 %endif
1337 %ifnarch %{ix86} x86_64
1338 rm -rf $TempDevelRoot/arch/x86
1339 rm -rf $TempDevelRoot/tools/arch/x86
1340 # arch/x86/ras/Kconfig is included by drivers/ras/Kconfig
1341 # and kconfig's source command seems to be evaluated even under a false conditional
1342 mkdir -p $TempDevelRoot/arch/x86/ras
1343 cp -fR arch/x86/ras/Kconfig $TempDevelRoot/arch/x86/ras
1344 %endif
1345
1346 # Clean the scripts tree, and make sure everything is ok (sanity check)
1347 # running prepare+scripts (tree was already "prepared" in build)
1348 pushd $TempDevelRoot >/dev/null
1349 %smake ARCH=%{target_arch} -s prepare scripts
1350 %smake ARCH=%{target_arch} -s clean
1351 popd >/dev/null
1352 rm -f $TempDevelRoot/.config.old
1353
1354 # fix permissions
1355 chmod -R a+rX $TempDevelRoot
1356
1357 # disable mrproper in -devel rpms
1358 patch -p1 --fuzz=0 -d $TempDevelRoot -i %{SOURCE2}
1359
1360 kernel_devel_files=../kernel_devel_files.$devel_flavour
1361
1362
1363 ### Create the kernel_devel_files.*
1364 cat > $kernel_devel_files <<EOF
1365 %dir $DevelRoot
1366 %dir $DevelRoot/arch
1367 %dir $DevelRoot/include
1368 $DevelRoot/3rdparty
1369 $DevelRoot/Documentation
1370 %ifarch %{arm} aarch64
1371 $DevelRoot/arch/arm
1372 $DevelRoot/arch/arm64
1373 %endif
1374 $DevelRoot/arch/um
1375 %ifarch %{ix86} x86_64
1376 $DevelRoot/arch/x86
1377 %else
1378 $DevelRoot/arch/x86/ras
1379 %endif
1380 $DevelRoot/block
1381 $DevelRoot/certs
1382 $DevelRoot/crypto
1383 $DevelRoot/drivers
1384 $DevelRoot/fs
1385 $DevelRoot/include/acpi
1386 $DevelRoot/include/asm-generic
1387 $DevelRoot/include/clocksource
1388 $DevelRoot/include/config
1389 $DevelRoot/include/crypto
1390 $DevelRoot/include/drm
1391 $DevelRoot/include/dt-bindings
1392 $DevelRoot/include/generated
1393 $DevelRoot/include/keys
1394 $DevelRoot/include/kunit
1395 $DevelRoot/include/kvm
1396 $DevelRoot/include/linux
1397 $DevelRoot/include/math-emu
1398 $DevelRoot/include/media
1399 $DevelRoot/include/memory
1400 $DevelRoot/include/misc
1401 $DevelRoot/include/net
1402 $DevelRoot/include/pcmcia
1403 $DevelRoot/include/ras
1404 $DevelRoot/include/rdma
1405 $DevelRoot/include/scsi
1406 %ifarch %{arm} aarch64
1407 $DevelRoot/include/soc
1408 %endif
1409 $DevelRoot/include/sound
1410 $DevelRoot/include/target
1411 $DevelRoot/include/trace
1412 $DevelRoot/include/uapi
1413 $DevelRoot/include/vdso/*.h
1414 $DevelRoot/include/video
1415 $DevelRoot/include/xen
1416 $DevelRoot/init
1417 $DevelRoot/ipc
1418 $DevelRoot/kernel
1419 $DevelRoot/lib
1420 $DevelRoot/mm
1421 $DevelRoot/net
1422 $DevelRoot/samples
1423 $DevelRoot/scripts
1424 $DevelRoot/security
1425 $DevelRoot/sound
1426 $DevelRoot/tools
1427 $DevelRoot/usr
1428 $DevelRoot/virt
1429 $DevelRoot/.config
1430 $DevelRoot/Kbuild
1431 $DevelRoot/Kconfig
1432 $DevelRoot/Makefile
1433 $DevelRoot/Module.symvers
1434 $DevelRoot/arch/Kconfig
1435 %doc README.kernel-sources
1436 EOF
1437
1438
1439 ### Create -devel Post script on the fly
1440 cat > $kernel_devel_files-post <<EOF
1441 if [ -d /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel} ]; then
1442 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/{build,source}
1443 ln -sf $DevelRoot /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build
1444 ln -sf $DevelRoot /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source
1445 fi
1446 EOF
1447
1448
1449 ### Create -devel Preun script on the fly
1450 cat > $kernel_devel_files-preun <<EOF
1451 if [ -L /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build ]; then
1452 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build
1453 fi
1454 if [ -L /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source ]; then
1455 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source
1456 fi
1457 exit 0
1458 EOF
1459
1460 ### Create -devel Postun script on the fly
1461 cat > $kernel_devel_files-postun <<EOF
1462 rm -rf /usr/src/kernel-%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
1463 EOF
1464 }
1465
1466 SaveDebug() {
1467 debug_flavour=$1
1468
1469 install -m 644 vmlinux \
1470 %{temp_boot}/vmlinux-%{kversion}-$debug_flavour-%{buildrpmrel}
1471 kernel_debug_files=../kernel_debug_files.$debug_flavour
1472 echo "%{_bootdir}/vmlinux-%{kversion}-$debug_flavour-%{buildrpmrel}" \
1473 >> $kernel_debug_files
1474
1475 find %{temp_modules}/%{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1476 -name "*.ko" | \
1477 %kxargs -I '{}' objcopy --only-keep-debug '{}' '{}'.debug
1478 find %{temp_modules}/%{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1479 -name "*.ko" | %kxargs -I '{}' \
1480 sh -c 'cd `dirname {}`; \
1481 objcopy --add-gnu-debuglink=`basename {}`.debug \
1482 --strip-debug `basename {}`'
1483
1484 pushd %{temp_modules}
1485 find %{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1486 -name "*.ko.debug" > debug_module_list
1487 popd
1488 cat %{temp_modules}/debug_module_list | \
1489 sed 's|\(.*\)|%{_modulesdir}/\1|' >> $kernel_debug_files
1490 cat %{temp_modules}/debug_module_list | \
1491 sed 's|\(.*\)|%exclude %{_modulesdir}/\1|' \
1492 >> ../kernel_exclude_debug_files.$debug_flavour
1493 rm -f %{temp_modules}/debug_module_list
1494 }
1495
1496 CreateFiles() {
1497 kernel_flavour=$1
1498
1499 kernel_files=../kernel_files.$kernel_flavour
1500
1501 ker="vmlinuz"
1502 ### Create the kernel_files.*
1503 cat > $kernel_files <<EOF
1504 %{_bootdir}/System.map-%{kversion}-$kernel_flavour-%{buildrpmrel}
1505 %{_bootdir}/symvers-%{kversion}-$kernel_flavour-%{buildrpmrel}.xz
1506 %{_bootdir}/config-%{kversion}-$kernel_flavour-%{buildrpmrel}
1507 %{_bootdir}/$ker-%{kversion}-$kernel_flavour-%{buildrpmrel}
1508 %dir %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/
1509 %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/kernel
1510 %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/modules.*
1511 %doc README.kernel-sources
1512 %ifarch %arm aarch64
1513 %dir %{_libdir}/linux-%{kversion}-$kernel_flavour-%{buildrpmrel}
1514 %{_libdir}/linux-%{kversion}-$kernel_flavour-%{buildrpmrel}/*.dtb
1515 %endif
1516 EOF
1517
1518 %if %build_debug
1519 cat ../kernel_exclude_debug_files.$kernel_flavour >> $kernel_files
1520 %endif
1521
1522 ### Create kernel Posttrans script
1523 cat > $kernel_files-posttrans <<EOF
1524 %if %build_devel
1525 # create kernel-devel symlinks if matching -devel- rpm is installed
1526 if [ -d /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} ]; then
1527 ln -sf /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/build
1528 ln -sf /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/source
1529 fi
1530 %endif
1531 if [ -z "$DURING_INSTALL" ] ; then
1532 if [ -x /usr/sbin/dkms_autoinstaller -a -d /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} ]; then
1533 /usr/sbin/dkms_autoinstaller start %{kversion}-$kernel_flavour-%{buildrpmrel}
1534 fi
1535 fi
1536 /sbin/installkernel %{kversion}-$kernel_flavour-%{buildrpmrel}
1537 pushd /boot > /dev/null
1538 if [ -e initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img ]; then
1539 ln -sf vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel} vmlinuz-$kernel_flavour
1540 ln -sf vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel} vmlinuz
1541 ln -sf initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img initrd-$kernel_flavour.img
1542 ln -sf initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img initrd.img
1543 fi
1544 popd > /dev/null
1545 EOF
1546
1547 ### Create kernel Postun script on the fly
1548 cat > $kernel_files-postun <<EOF
1549 pushd /boot > /dev/null
1550 if [ -f "vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel}" ]; then
1551 echo "The kernel is still installed in postun, probably a reinstall, skipping cleanup." >&2
1552 exit
1553 fi
1554 if [ -L vmlinuz-$kernel_flavour ]; then
1555 if [ "$(readlink vmlinuz-$kernel_flavour)" = "vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel}" ]; then
1556 rm -f vmlinuz-$kernel_flavour
1557 fi
1558 fi
1559 if [ -L initrd-$kernel_flavour.img ]; then
1560 if [ "$(readlink initrd-$kernel_flavour.img)" = "initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img" ]; then
1561 rm -f initrd-$kernel_flavour.img
1562 fi
1563 fi
1564 popd > /dev/null
1565 rm -rf /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel} >/dev/null
1566 /sbin/kernel_remove_initrd %{kversion}-$kernel_flavour-%{buildrpmrel}
1567 /sbin/installkernel -R %{kversion}-$kernel_flavour-%{buildrpmrel}
1568 if [ -d /var/lib/dkms ]; then
1569 rm -f /var/lib/dkms/*/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}-%{_target_cpu} >/dev/null
1570 rm -rf /var/lib/dkms/*/*/%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
1571 rm -f /var/lib/dkms-binary/*/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}-%{_target_cpu} >/dev/null
1572 rm -rf /var/lib/dkms-binary/*/*/%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
1573 fi
1574 EOF
1575 }
1576
1577
1578 CreateKernel() {
1579 flavour=$1
1580
1581 PrepareKernel $flavour $flavour-%{buildrpmrel}
1582
1583 BuildKernel %{kversion}-$flavour-%{buildrpmrel}
1584 %if %build_devel
1585 SaveDevel $flavour
1586 %endif
1587 %if %build_debug
1588 SaveDebug $flavour
1589 %endif
1590 CreateFiles $flavour
1591 }
1592
1593
1594 ###
1595 # DO it...
1596 ###
1597
1598
1599 # Create a simulacro of buildroot
1600 rm -rf %{temp_root}
1601 install -d %{temp_root}
1602
1603
1604 # make sure we are in the directory
1605 cd %src_dir
1606
1607 %ifarch %{ix86}
1608 %if %build_desktop586
1609 CreateKernel desktop586
1610 %endif
1611 %endif
1612
1613 %if %build_desktop
1614 CreateKernel desktop
1615 %endif
1616
1617 %if %build_server
1618 CreateKernel server
1619 %endif
1620
1621 # set extraversion to match srpm to get nice version reported by the tools
1622 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{rpmrel}/" Makefile
1623
1624 # build perf
1625 %if %{build_perf}
1626 # perf
1627 %smake -s -C tools/perf NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 \
1628 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 NO_JVMTI=1 prefix=%{_prefix} lib=%{_lib} all
1629 %smake -C tools/perf -s prefix=%{_prefix} man
1630 %endif
1631
1632 %if %{build_cpupower}
1633 # cpupower
1634 # make sure version-gen.sh is executable.
1635 chmod +x tools/power/cpupower/utils/version-gen.sh
1636 %make_build -C tools/power/cpupower CPUFREQ_BENCH=false
1637 %endif
1638
1639 # build bpftool
1640 %if %{build_bpftool}
1641 pushd tools/bpf/bpftool
1642 make
1643 popd
1644 %endif
1645
1646 # build libbpf
1647 %if %{build_libbpf}
1648 pushd tools/lib/bpf
1649 make V=1
1650 popd
1651 %endif
1652
1653 # We don't make to repeat the depend code at the install phase
1654 %if %build_source
1655 PrepareKernel "" %{buildrpmrel}custom
1656 %smake ARCH=%{target_arch} -s mrproper
1657 %endif
1658
1659
1660 ###
1661 ### install
1662 ###
1663 %install
1664 install -m 644 %{SOURCE4} .
1665
1666 cd %src_dir
1667
1668 # Directories definition needed for installing
1669 %define target_source %{buildroot}%{_kerneldir}
1670 %define target_boot %{buildroot}%{_bootdir}
1671 %define target_modules %{buildroot}%{_modulesdir}
1672 %define target_headers %{buildroot}%{_prefix}
1673
1674 # We want to be able to test several times the install part
1675 rm -rf %{buildroot}
1676 cp -a %{temp_root} %{buildroot}
1677
1678 # Create directories infastructure
1679 %if %build_source
1680 install -d %{target_source}
1681
1682 tar cf - . | tar xf - -C %{target_source}
1683 chmod -R a+rX %{target_source}
1684
1685 # we remove all the source files that we don't ship
1686 # first architecture files
1687 for i in alpha arc avr32 blackfin c6x cris csky frv h8300 hexagon ia64 m32r m68k m68knommu metag microblaze \
1688 mips nds32 nios2 openrisc parisc powerpc riscv s390 score sh sh64 sparc tile unicore32 v850 xtensa mn10300; do
1689 rm -rf %{target_source}/arch/$i
1690 rm -rf %{target_source}/scripts/dtc/include-prefixes/$i
1691 rm -rf %{target_source}/tools/arch/$i
1692 rm -rf %{target_source}/tools/testing/selftests/$i
1693 done
1694 %ifnarch %{arm} aarch64
1695 rm -rf %{target_source}/include/kvm/arm*
1696 rm -rf %{target_source}/scripts/dtc/include-prefixes/arm*
1697 rm -rf %{target_source}/tools/arch/arm*
1698 %endif
1699
1700 # other misc files
1701 rm -f %{target_source}/{.clang-format,.config.old,.config.cmd,.lst,.mailmap,.get_maintainer.ignore}
1702 rm -f %{target_source}/{.missing-syscalls.d,.cocciconfig,.gitattributes}
1703 rm -rf %{target_source}/.tmp_depmod/
1704
1705 # more cleaning
1706 pushd %{target_source}
1707 # lots of gitignore files
1708 find -iname ".gitignore" -delete
1709 # clean tools tree
1710 %smake -C tools clean
1711 %smake -C tools/build clean
1712 %smake -C tools/build/feature clean
1713 # dont ship generated vdso.so*
1714 %ifarch aarch64
1715 rm -f arch/arm64/kernel/vdso/vdso.so*
1716 %endif
1717 popd
1718
1719 # nuke last as it gets re-created
1720 rm -f %{target_source}/.cache.mk
1721
1722 #endif %build_source
1723 %endif
1724
1725 # compressing modules
1726 %if %{build_modxz}
1727 find %{target_modules} -name "*.ko" | %kxargs xz -6
1728 %else
1729 find %{target_modules} -name "*.ko" | %kxargs gzip -9
1730 %endif
1731
1732 # We used to have a copy of PrepareKernel here
1733 # Now, we make sure that the thing in the linux dir is what we want it to be
1734 for i in %{target_modules}/*; do
1735 rm -f $i/build $i/source
1736 done
1737
1738 # sniff, if we compressed all the modules, we change the stamp :(
1739 # we really need the depmod -ae here
1740 pushd %{target_modules}
1741 for i in *; do
1742 /sbin/depmod -ae -b %{buildroot} -F %{target_boot}/System.map-$i $i
1743 echo $?
1744 done
1745
1746 for i in *; do
1747 pushd $i
1748 echo "Creating modules.description for $i"
1749 modules=`find . -name "*.ko.[g,x]z"`
1750 echo $modules | xargs /sbin/modinfo \
1751 | perl -lne 'print "$name\t$1" if $name && /^description:\s*(.*)/; $name = $1 if m!^filename:\s*(.*)\.k?o!; $name =~ s!.*/!!' > modules.description
1752 popd
1753 done
1754 popd
1755
1756 # need to set extraversion to match srpm again to avoid rebuild
1757 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{rpmrel}/" Makefile
1758
1759 # install userspace-headers
1760 %if %{build_uheaders}
1761 %smake ARCH=%{target_arch} headers_install INSTALL_HDR_PATH=%{target_headers}
1762 # for drakx
1763 cp include/linux/pci_ids.h %{target_headers}/include/linux/
1764 %endif
1765
1766 %if %{build_perf}
1767 # perf tool binary and supporting scripts/binaries
1768 %smake -s -C tools/perf V=1 DESTDIR=%{buildroot} NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 \
1769 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 NO_JVMTI=1 prefix=%{_prefix} lib=%{_lib} install
1770
1771 # perf man pages (note: implicit rpm magic compresses them later)
1772 make -C tools/perf V=1 DESTDIR=%{buildroot} prefix=%{_prefix} install-man
1773
1774 # remove perf files we dont ship
1775 rm -rf %{buildroot}/usr/lib/perf/examples
1776 rm -rf %{buildroot}/usr/lib/perf/include/bpf
1777 rm -rf %{buildroot}/usr/include/perf/perf_dlfilter.h
1778 %endif
1779
1780 %if %{build_cpupower}
1781 make -C tools/power/cpupower DESTDIR=%{buildroot} libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install
1782 rm -f %{buildroot}%{_libdir}/*.{a,la}
1783 %find_lang cpupower
1784 mv cpupower.lang ../
1785 chmod 0755 %{buildroot}%{_libdir}/libcpupower.so*
1786 mkdir -p %{buildroot}%{_unitdir} %{buildroot}%{_sysconfdir}/sysconfig
1787 install -m644 %{SOURCE50} %{buildroot}%{_unitdir}/cpupower.service
1788 install -m644 %{SOURCE51} %{buildroot}%{_sysconfdir}/sysconfig/cpupower
1789 %endif
1790
1791 # install bpftool
1792 %if %{build_bpftool}
1793 pushd tools/bpf/bpftool
1794 make DESTDIR=%{buildroot} prefix=%{_prefix} bash_compdir=%{_sysconfdir}/bash_completion.d/ mandir=%{_mandir} install doc-install
1795 popd
1796 %endif
1797
1798 # install libbpf
1799 %if %{build_libbpf}
1800 pushd tools/lib/bpf
1801 make DESTDIR=%{buildroot} prefix=%{_prefix} libdir=%{_libdir} V=1 install install_headers
1802 popd
1803 %endif
1804
1805 ###
1806 ### clean
1807 ###
1808 %clean
1809 rm -rf %{buildroot}
1810
1811
1812 # We don't want to remove this, the whole reason of its existence is to be
1813 # able to do several rpm --short-circuit -bi for testing install
1814 # phase without repeating compilation phase
1815 #rm -rf %{temp_root}
1816
1817 ###
1818 ### source and doc file lists
1819 ###
1820
1821 %if %build_source
1822 %files -n %{kname}-source-%{buildrel}
1823 %doc %{_kerneldir}/LICENSES
1824 %dir %{_kerneldir}
1825 %dir %{_kerneldir}/arch
1826 %dir %{_kerneldir}/include
1827 %{_kerneldir}/3rdparty
1828 %{_kerneldir}/Documentation
1829 %{_kerneldir}/arch/Kconfig
1830 %{_kerneldir}/arch/arm
1831 %{_kerneldir}/arch/arm64
1832 %{_kerneldir}/arch/um
1833 %{_kerneldir}/arch/x86
1834 %{_kerneldir}/block
1835 %{_kerneldir}/certs
1836 %{_kerneldir}/crypto
1837 %{_kerneldir}/drivers
1838 %{_kerneldir}/fs
1839 %{_kerneldir}/include/acpi
1840 %{_kerneldir}/include/asm-generic
1841 %{_kerneldir}/include/clocksource
1842 %{_kerneldir}/include/crypto
1843 %{_kerneldir}/include/drm
1844 %{_kerneldir}/include/dt-bindings
1845 %{_kerneldir}/include/keys
1846 %{_kerneldir}/include/kunit
1847 %{_kerneldir}/include/kvm
1848 %{_kerneldir}/include/linux
1849 %{_kerneldir}/include/math-emu
1850 %{_kerneldir}/include/media
1851 %{_kerneldir}/include/memory
1852 %{_kerneldir}/include/misc
1853 %{_kerneldir}/include/net
1854 %{_kerneldir}/include/pcmcia
1855 %{_kerneldir}/include/ras
1856 %{_kerneldir}/include/rdma
1857 %{_kerneldir}/include/scsi
1858 %{_kerneldir}/include/soc
1859 %{_kerneldir}/include/sound
1860 %{_kerneldir}/include/target
1861 %{_kerneldir}/include/trace
1862 %{_kerneldir}/include/uapi
1863 %{_kerneldir}/include/vdso/*.h
1864 %{_kerneldir}/include/video
1865 %{_kerneldir}/include/xen
1866 %{_kerneldir}/init
1867 %{_kerneldir}/ipc
1868 %{_kerneldir}/kernel
1869 %{_kerneldir}/lib
1870 %{_kerneldir}/mm
1871 %{_kerneldir}/net
1872 %{_kerneldir}/virt
1873 %{_kerneldir}/samples
1874 %{_kerneldir}/scripts
1875 %{_kerneldir}/security
1876 %{_kerneldir}/sound
1877 %{_kerneldir}/tools
1878 %{_kerneldir}/usr
1879 %{_kerneldir}/COPYING
1880 %{_kerneldir}/CREDITS
1881 %{_kerneldir}/Kbuild
1882 %{_kerneldir}/Kconfig
1883 %{_kerneldir}/MAINTAINERS
1884 %{_kerneldir}/Makefile
1885 %{_kerneldir}/README
1886 %doc README.kernel-sources
1887
1888 %files -n %{kname}-source-latest
1889 %endif
1890
1891 %if %build_doc
1892 %files -n %{kname}-doc
1893 %doc linux-%{tar_ver}/Documentation/*
1894 %endif
1895
1896 %if %build_uheaders
1897 %files -n %{kname}-userspace-headers
1898 %defattr(0644,root,root,0755)
1899 %{_includedir}/asm/
1900 %{_includedir}/asm-generic/
1901 %{_includedir}/drm/
1902 %{_includedir}/linux/
1903 %{_includedir}/misc/
1904 %{_includedir}/mtd/
1905 %{_includedir}/rdma/
1906 %{_includedir}/scsi/
1907 %{_includedir}/sound/
1908 %{_includedir}/video/
1909 %{_includedir}/xen/
1910 %endif
1911
1912 %if %{build_perf}
1913 %files -n perf
1914 %{_bindir}/perf
1915 %{_bindir}/trace
1916 %{_datadir}/perf-core/strace/groups/file
1917 %{_datadir}/perf-core/strace/groups/string
1918 %{_datadir}/doc/perf-tip/tips.txt
1919 %dir %{_libdir}/traceevent
1920 %dir %{_libdir}/traceevent/plugins
1921 %{_libdir}/traceevent/plugins/plugin_*
1922 %dir %{_prefix}/libexec/perf-core
1923 %{_prefix}/libexec/perf-core/*
1924 %{_mandir}/man[1-8]/perf*
1925 %{_sysconfdir}/bash_completion.d/perf
1926 %endif
1927
1928 %if %{build_cpupower}
1929 %files -n cpupower -f cpupower.lang
1930 %config(noreplace) %{_sysconfdir}/sysconfig/cpupower
1931 %{_bindir}/cpupower
1932 %{_datadir}/bash-completion/completions/cpupower
1933 %{_libdir}/libcpupower.so.0
1934 %{_libdir}/libcpupower.so.0.0.1
1935 %{_unitdir}/cpupower.service
1936 %{_mandir}/man[1-8]/cpupower*
1937
1938 %files -n cpupower-devel
1939 %{_libdir}/libcpupower.so
1940 %{_includedir}/cpuidle.h
1941 %{_includedir}/cpufreq.h
1942 %endif
1943
1944 %if %{build_bpftool}
1945 %files -n bpftool
1946 %{_sbindir}/bpftool
1947 %{_sysconfdir}/bash_completion.d/bpftool
1948 %{_mandir}/man8/bpftool-*.8*
1949 %{_mandir}/man8/bpftool.8*
1950 %endif
1951
1952 %if %{build_libbpf}
1953 %files -n %{_lib}bpf0
1954 %{_libdir}/libbpf.so.0
1955 %{_libdir}/libbpf.so.0.5.0
1956
1957 %files -n %{_lib}bpf-devel
1958 %{_libdir}/libbpf.a
1959 %{_libdir}/libbpf.so
1960 %{_libdir}/pkgconfig/libbpf.pc
1961 %{_includedir}/bpf/bpf.h
1962 %{_includedir}/bpf/bpf_core_read.h
1963 %{_includedir}/bpf/bpf_endian.h
1964 %{_includedir}/bpf/bpf_helper_defs.h
1965 %{_includedir}/bpf/bpf_helpers.h
1966 %{_includedir}/bpf/bpf_tracing.h
1967 %{_includedir}/bpf/btf.h
1968 %{_includedir}/bpf/libbpf.h
1969 %{_includedir}/bpf/libbpf_common.h
1970 %{_includedir}/bpf/libbpf_legacy.h
1971 %{_includedir}/bpf/skel_internal.h
1972 %{_includedir}/bpf/xsk.h
1973 %endif

  ViewVC Help
Powered by ViewVC 1.1.30