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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1772892 - (show annotations) (download)
Fri Feb 11 09:51:19 2022 UTC (2 years, 2 months ago) by tmb
File size: 59084 byte(s)
update to 5.15.23
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 15
37 # sublevel is now used for -stable patches
38 %define sublevel 23
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 # breaks bpftool build on mga8
256 Source100: tools-build-remove-needless-libpython-version-feature-check-that-breaks-test-all-fast-path.patch
257 # breaks cifs NTLM support
258 Source101: fs-cifs-remove-support-for-NTLM-and-weaker-authenticati.patch
259 # breaks plymouth (mga#29925)
260 Source102: video-vga16fb-only-probe-for-ega-and-vga-16-color-graphic-cards.patch
261
262 ####################################################################
263 #
264 # Patches
265
266 #
267 # Patch0 to Patch10 are for core kernel upgrades.
268 #
269
270 %if %sublevel
271 Patch1: https://cdn.kernel.org/pub/linux/kernel/v%{kernelversion}.x/patch-%{kernelversion}.%{patchlevel}.%{sublevel}.xz
272 %endif
273 %if %{rcX}
274 # (tmb) Created with:
275 # wget https://git.kernel.org/torvalds/p/v5.10-rc7/v5.9 -O patch-5.10-rc7
276 # xz -6e patch-5.10-rc7
277 Patch2: patch-%{kernelversion}.%{patchlevel}-rc%{rcX}.xz
278 %endif
279
280 ###
281 ### Stable Queue can be big
282 ### Patches from 100-999
283 ###
284 ### add patches here by copying contents of kernel matching queue-x.y from:
285 ### https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git/tree/
286 ### to SOURCES, generate patchlist with generate-patchlist.sh and paste it here
287 ###
288
289 ###
290 ### Arch
291 ### Patches from 1000
292 ###
293
294 # laptop needing pci=assign-busses (#18989, needs to be submitted upstream)
295 Patch1000: x86-pci-toshiba-equium-a60-assign-busses.patch
296
297 # If users choose a bad video mode, allow to jump to
298 # a working one (TTL: forever)
299 Patch1001: x86-boot-video-80x25-if-break.patch
300
301 # Allow poweroff on UP machines running SMP kernels
302 Patch1005: x86-default_poweroff_up_machines.patch
303
304 # raise vmalloc to fix https://bugs.mageia.org/show_bug.cgi?id=904
305 Patch1010: x86-increase-default-minimum-vmalloc-area-by-64MB-to-192MB.patch
306
307 # slows down boot
308 Patch1015: Revert-cpufreq-pcc-Enable-autoload-of-pcc-cpufreq-fo.patch
309
310 # fixes new hw not being properly detected
311 Patch1020: x86-pci-ignore-e820-reservations-for-bridge-windows-on-newer-systems.patch
312
313 # intel_pstate
314 Patch1025: cpufreq-intel_pstate-ITMT-support-for-overclocked-sy.patch
315
316 ###
317 ### ACPI
318 ###
319
320 # CLEVO M360S acpi irq workaround
321 Patch1100: acpi-CLEVO-M360S-disable_acpi_irq.patch
322
323 # Clevo M720SR freezes with C3
324 Patch1105: acpi-processor-M720SR-limit-to-C2.patch
325
326 # backlight fixes
327 Patch1110: ACPI-video-Add-a-quirk-to-force-acpi-video-backlight.patch
328
329 # ACPI PM fixes (TTL: 5.16)
330 Patch1130: x86-ACPI-State-Optimize-C3-entry-on-AMD-CPUs.patch
331
332 ###
333 ### Block
334 ###
335
336 # FIXME: Don't know know why this is needed
337 Patch1200: scsi-megaraid-new-sysfs-name.patch
338
339 # adds aliases to support upgrade from old dm-raid45 patch
340 Patch1215: dm-raid-aliases.patch
341
342 # disable floppy autoloading (mga #4696)
343 Patch1220: block-floppy-disable-pnp-modalias.patch
344
345 # ahci
346 Patch1240: Add-AHCI-support-for-ASM1062-JBM575-cards.patch
347
348 ###
349 ### Crypto
350 ###
351
352 ###
353 ### dma
354 ###
355
356 ###
357 ### File-system
358 ###
359
360 # aufs diffed from: https://github.com/sfjro/aufs5-linux/tree/aufs5.15 (mga#8314)
361 Patch1310: fs-aufs5.15.patch
362 # symbol exports needed for modular aufs
363 Patch1311: fs-aufs5.15-symbol-exports.patch
364 # set aufs tristate
365 Patch1312: fs-aufs5.15-tristate.patch
366
367 # procfs
368 Patch1360: fs-procfs-do-not-list-TID-0-in-proc-pid-task.patch
369 # exec
370 Patch1365: fs-exec-require-argv0-presence-in-do_execveat_common.patch
371
372 ###
373 ### FireWire
374 ###
375
376 # adding module aliases to ease upgrade from ieee1394
377 Patch1400: firewire-ieee1394-module-aliases.patch
378
379 ###
380 ### Firmware
381 ###
382
383 ###
384 ### GPU/DRM
385 ###
386
387 # amdgpu
388 # switch SI and CIK from radeon to amdgpu
389 Patch1520: drm-amdgpu-SI-and-CIK-enabled-by-default.patch
390
391 # new Q57 Host Bridge id
392 Patch1530: char-agp-intel-new-Q57-id.patch
393
394 # i915
395 # DG1
396 Patch1540: drm-i915-Add-pci-ids-and-uapi-for-DG1.patch
397 # Alder Lake S
398 Patch1541: drm-i915-adl_s-Remove-require_force_probe-protection.patch
399 # Raptor Lake S
400 Patch1542: drm-i915-rpl-s-Add-PCI-IDS-for-Raptor-Lake-S.patch
401 Patch1543: drm-i915-rpl-s-Add-PCH-Support-for-Raptor-Lake-S.patch
402 Patch1544: drm-i915-rpl-s-Enable-guc-submission-by-default.patch
403 # Alder Lake N
404 Patch1545: drm-i915-adl-n-Enable-ADL-N-platform.patch
405 #
406 Patch1546: drm-i915-gen11-Moving-WAs-to-icl_gt_workarounds_init.patch
407
408 # https://bugzilla.kernel.org/show_bug.cgi?id=206653#c19
409 Patch1552: i2c_nvidia_gpu-change-err-into-info.patch
410
411 # 5.15.17 regression
412 Patch1560: Revert-drm-nouveau-pmu-gm200-avoid-touching-PMU-outs.patch
413
414 ###
415 ### hwmon
416 ###
417
418 # k10temp
419 Patch1600: x86-amd_nb-Add-AMD-Family-19h-Models-10h-1Fh-and-A0h-AFh-PCI-IDs.patch
420 Patch1601: hwmon-k10temp-Remove-unused-definitions.patch
421 Patch1602: hwmon-k10temp-Add-support-for-AMD-Family-19h-Models-10h-1Fh-and-A0h-AFh.patch
422 Patch1603: hwmon-k10temp-Support-up-to-12-CCDs-on-AMD-Family-of-processors.patch
423
424 # asus
425 Patch1610: hwmon-nct6775-Use-superio_-function-pointers-in-sio_.patch
426 Patch1611: hwmon-nct6775-Use-nct6775_-function-pointers-in-nct6.patch
427 Patch1612: hwmon-nct6775-Support-access-via-Asus-WMI.patch
428 Patch1613: hwmon-nct6775-Add-additional-ASUS-motherboards.patch
429 Patch1614: hwmon-nct6775-add-Pro-WS-X570-ACE.patch
430 Patch1615: hwmon-nct6775-add-ProArt-X570-CREATOR-WIFI.patch
431 Patch1616: hwmon-asus_wmi_ec_sensors-Support-B550-Asus-WMI.patch
432 Patch1617: hwmon-asus_wmi_sensors-Support-X370-Asus-WMI.patch
433
434 ###
435 ### i2c
436 ###
437
438 ###
439 ### Input
440 ###
441
442 Patch1700: input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch
443
444 ###
445 ### HID
446 ###
447
448 Patch1750: hid-intel-ish-hid-ipc-Specify-no-cache-snooping-on-TGL-and-ADL.patch
449
450 ###
451 ### kernel
452 ###
453
454 # CVE-2021-4204
455 Patch1800: bpf-prevent-helper-argument-PTR_TO_ALLOC_MEM-to-have-offset-other-than-0.patch
456
457 ###
458 ### MFD
459 ###
460
461 ###
462 ### MM
463 ###
464
465 ###
466 ### Network
467 ###
468
469 # SiS 190 fixes
470 Patch1900: net-sis190-fix-list-usage.patch
471
472 # netfilter IFWLOG support
473 Patch1910: net-netfilter-IFWLOG.patch
474 Patch1911: net-netfilter-IFWLOG-mdv.patch
475 Patch1912: net-netfilter-IFWLOG-2.6.35-buildfix.patch
476 Patch1913: net-netfilter-IFWLOG-2.6.37-buildfix.patch
477 Patch1914: net-ipv4-netfilter-ipt_IFWLOG-3.6-buildfix.patch
478 Patch1915: net-netfilter-IFWLOG-3.7-buildfix.patch
479 Patch1916: net-netfilter-IFWLOG-remove-unused-label.patch
480 Patch1917: net-netfilter-ipt_IFWLOG-4.12-buildfix.patch
481 Patch1918: net-netfilter-IFWLOG-5.0-buildfix.patch
482
483 # netfilter psd support
484 Patch1920: net-netfilter-psd.patch
485 Patch1921: net-netfilter-psd-mdv.patch
486 Patch1922: net-netfilter-psd-2.6.35-buildfix.patch
487 Patch1923: net-netfilter-psd-fix-redefines.patch
488
489 # rtw88 wifi
490 # add alias for the replaced r8822be staging driver
491 Patch1930: net-wireless-rtw88-add-r8822be-alias.patch
492 # add alias for the replaced 8723de 3rdparty driver
493 Patch1931: net-wireless-rtw88-add-8723de-alias.patch
494 # TTL: 5.16
495 Patch1932: net-wireless-rtw88-8821c-support-RFE-type4-wifi-NIC.patch
496 Patch1933: net-wireless-rtw88-8821c-correct-2.4G-tx-power-for-type-2-4-NIC.patch
497 Patch1936: net-wireless-rtw88-dont-check-CRC-of-VHT-SIG-B-in-802.11ac-signal.patch
498
499 # amd-xgbe
500 Patch1945: net-amd-xgbe-Add-Support-for-Yellow-Carp-Ethernet-device.patch
501
502 # rtw89 patchset v7 for 802.11ax hw (TTL: 5.16)
503 Patch1960: net-wireless-rtw89-add-Realtek-802.11ax-driver.patch
504 Patch1961: net-wireless-rtw89-Fix-two-spelling-mistakes-in-debug-messages.patch
505 Patch1962: net-wireless-rtw89-Remove-redundant-check-of-ret-after-call-to-rt.patch
506 Patch1963: net-wireless-rtw89-fix-return-value-check-in-rtw89_cam_send_sec_k.patch
507 Patch1964: net-wireless-rtw89-remove-unneeded-semicolon.patch
508 Patch1965: net-wireless-rtw89-fix-error-function-parameter.patch
509 Patch1966: net-wireless-rtw89-remove-duplicate-register-definitions.patch
510 Patch1967: net-wireless-rtw89-fix-return-value-in-hfc_pub_cfg_chk.patch
511 Patch1968: net-wireless-rtw89-Fix-variable-dereferenced-before-check-sta.patch
512 Patch1969: net-wireless-rtw89-update-partition-size-of-firmware-header-on-skb-data.patch
513 Patch1970: net-wireless-rtw89-8852a-correct-bit-definition-of-dfs_en.patch
514
515 # iwlfiwi
516 Patch1980: net-wireless-iwlwifi-add-new-pci-id-for-6235.patch
517 Patch1981: net-wireless-iwlwifi-add-new-killer-devices-to-the-driver.patch
518 Patch1982: net-wireless-iwlwifi-add-new-device-id-7F70.patch
519 Patch1983: net-wireless-iwlwifi-pcie-fix-killer-name-matching-for-AX200.patch
520 Patch1984: net-wireless-iwlwifi-pcie-remove-two-duplicate-PNJ-device-entries.patch
521 Patch1985: net-wireless-iwlwifi-add-missing-entries-for-Gf4-with-So-and-SoF.patch
522 Patch1986: net-wireless-iwlwifi-swap-1650i-and-1650s-killer-struct-names.patch
523 Patch1987: net-wireless-iwlwifi-add-new-Qu-Hr-device.patch
524 Patch1988: net-wireless-iwlwifi-add-new-ax1650-killer-device.patch
525 Patch1990: net-wireless-iwlwifi-mvm-check-if-SAR-GEO-is-supported-before-sending-command.patch
526 Patch1991: net-wireless-iwlwifi-fix-use-after-free.patch
527
528 ###
529 ### PCI
530 ###
531
532 ###
533 ### pinctrl
534 ###
535
536 ###
537 ### Platform
538 ###
539
540 # Allow access to Shuttle WMI interface controls
541 # (Mainly allow turning on/off webcam and wireless on Shuttle DA18IE and DA18IM)
542 Patch2050: platform-x86-add-shuttle-wmi-driver.patch
543 Patch2051: platform-x86-shuttle-wmi-drop-devinit-exit.patch
544 Patch2052: platform-x86-shuttle-wmi-4.2-buildfix.patch
545 Patch2053: platform-x86-shuttle-wmi-4.13-buildfix.patch
546 Patch2054: platform-x86-shuttle-wmi-kernel-5.5.patch
547
548 ###
549 ### PM
550 ###
551
552 ###
553 ### Sound
554 ###
555
556 Patch2150: sound-alsa-hda-fix-general-protection-fault-in-azx_runtime_idle.patch
557 # adl
558 Patch2160: ALSA-hda-Add-AlderLake-N-PCI-ID.patch
559 Patch2161: ALSA-hda-Add-new-AlderLake-P-variant-PCI-ID.patch
560
561 ###
562 ### SPI
563 ###
564
565 ###
566 ### Staging
567 ###
568
569 ###
570 ### Thermal
571 ###
572
573 ###
574 ### Thunderbolt
575 ###
576
577 ###
578 ### USB
579 ###
580
581 Patch2300: hid-usbhid-IBM-BladeCenterHS20-quirk.patch
582
583 Patch2310: usb-storage-unusual_devs-add-id.patch
584 Patch2311: usb-storage-unusual_devs-add-id-2.6.37-buildfix.patch
585
586 ###
587 ### V4L
588 ###
589
590 # pwc driver name in /proc/bus/devices, /sys fix and "advertisement" removal
591 Patch2400: media-usb-pwc-lie-in-proc-usb-devices.patch
592
593 ###
594 ### Video
595 ###
596
597 # Mageia framebuffer boot logo
598 Patch2500: video-mageia-logo.patch
599
600 # mga compat option
601 Patch2501: video-console-vgacon-treat-nokmsboot-as-nomodeset.patch
602
603 ###
604 ### Virt
605 ###
606
607 # fix gcc-10 build
608 Patch2550: KVM-squelch-uninitialized-variable-warning.patch
609
610 ###
611 ### Tools
612 ###
613
614 # wipe powerpc refrence so we can nuke dangling symlinks (mga#17676)
615 Patch2600: tools-testing-selftest-Makefile-remove-powerpc-reference.patch
616
617 # fix perf build
618 Patch2605: tools-perf-ui-include-slang.patch
619
620 ###
621 ### UAPI
622 ###
623
624 Patch2700: uapi-avoid-namespace-conflict-in-linux-posix_types.h.patch
625
626 ###
627 ### 3rdparty
628 ###
629
630 Patch3000: 3rd-3rdparty-tree.patch
631 Patch3001: 3rd-3rdparty-merge.patch
632
633 # ndiswrapper
634 Patch3100: 3rd-ndiswrapper-1.63.patch
635 Patch3101: 3rd-ndiswrapper-Kconfig.patch
636 Patch3102: 3rd-ndiswrapper-Makefile-build-fix.patch
637 Patch3103: 3rd-niswrapper-Kconfig-Makefile.patch
638
639 # add rtl8812 support (mga#21043)
640 # from https://github.com/aircrack-ng/rtl8812au.git
641 Patch3200: 3rd-rtl8812au.patch
642 Patch3201: 3rd-rtl8812au-Kconfig-Makefile.patch
643 Patch3202: 3rd-rtl8812au-rename.patch
644
645 # add rtl8723de support (mga#22559)
646 Patch3300: 3rd-rtl8723de.patch
647 Patch3301: 3rd-rtl8723de-Kconfig-Makefile.patch
648 Patch3302: 3rd-rtl8723de-fix-redefine.patch
649 Patch3303: 3rd-rtl8723de-nodebug.patch
650 Patch3304: 3rd-rtl8223de-kernel-5.6.patch
651 Patch3305: 3rd-rtl8723de-add-kernel-5.8-support.patch
652
653 # viahss
654 Patch3400: 3rd-viahss-0.92.patch
655 Patch3401: 3rd-viahss-config.patch
656 Patch3402: 3rd-viahss-module-license.patch
657 Patch3403: 3rd-viahss-2.6.35-buildfix.patch
658 Patch3404: 3rd-viahss-3.0-buildfix.patch
659 Patch3405: 3rd-viahss-Kconfig-Makefile.patch
660
661 # rtl8821ce (mga#24605) -- https://github.com/tomaspinho/rtl8821ce
662 Patch3500: 3rd-rtl8821ce.patch
663 Patch3501: 3rd-rtl8821ce-Kconfig-Makefile.patch
664 Patch3502: 3rd-rtl8821ce-5.8-fix.patch
665 Patch3503: 3rd-rtl8821ce-kernel-5.10.patch
666 Patch3504: 3rd-rtl8821ce-kernel-5.12.patch
667 Patch3505: 3rd-rtl8821ce-kernel-5.15.patch
668
669 # fix Kconfig files for 3rdparty:
670 Patch3900: 3rd-fix-kconfig.patch
671
672 ###
673 ### Python fixes
674 ###
675 Patch4000: linux-5.15-python3.patch
676
677 ###
678 ### TTY
679 ###
680
681 ###
682 ### Security fixes
683 ###
684 Patch5002: CVE-2019-12379.patch
685 #
686 # CVE-2020-16119
687 # https://bugzilla.redhat.com/show_bug.cgi?id=1886374
688 # https://bugzilla.redhat.com/show_bug.cgi?id=1888083
689 Patch5003: CVE-2020-16119-DCCP-CCID-structure-use-after-free.patch
690
691 ###
692 ### Cosmetic fixes (e.g. typos, spelling, etc.)
693 ###
694
695 ### Fixes from FC kernel
696 # Inspur Advantech PCI ids
697 Patch7000: 0001-scsi-smartpqi-add-inspur-advantech-ids.patch
698 # Vulcan AHCI PCI bar (aarch64)
699 Patch7001: 0001-Vulcan-AHCI-PCI-bar-fix-for-Broadcom-Vulcan-early-si.patch
700
701 #END
702 ####################################################################
703
704 # Defines for the things that are needed for all the kernels
705 #
706 %define common_desc_kernel The kernel package contains the Linux kernel (vmlinuz), the core of your \
707 Mageia operating system. The kernel handles the basic functions \
708 of the operating system: memory allocation, process allocation, device \
709 input and output, etc.
710
711 %define common_desc_kernel_smp This kernel relies on in-kernel smp alternatives to switch between up & smp \
712 mode depending on detected hardware. To force the kernel to boot in single \
713 processor mode, use the "nosmp" boot parameter.
714
715 ### Global Requires/Provides
716 %define requires1 bootloader-utils >= 1.16-1
717 %define requires2 dracut >= 046-2
718 %define requires3 kmod >= 12-2
719 %define requires4 sysfsutils >= 2.1.0-16
720 %define requires5 kernel-firmware >= 20190603-1
721 # ldetect-lst with SI/CIK swich from radeon to amdgpu
722 %define requires6 ldetect-lst >= 0.6.25-1
723
724 %define kprovides1 %{kname} = %{kverrel}
725 %define kprovides2 kernel = %{tar_ver}
726 %define kprovides3 alsa = 1.0.26
727 %define kprovides_server drbd-api = 88
728
729 # conflict dkms packages that dont support kernel-5.10
730 %define kconflicts1 dkms-broadcom-wl < 6.30.223.271-58
731 %define kconflicts2 dkms-nvidia-current < 460.32.03-1
732 %define kconflicts3 dkms-nvidia390 < 390.141-1
733 %define kconflicts4 dkms-nvidia340 < 340.108-15
734 %define kconflicts5 dkms-nvidia304 < 304.137-3
735 %define kconflicts6 dkms-virtualbox < 6.1.18-1
736 %define kconflicts7 dkms-xtables-addons < 3.13-2
737 # (tmb) conflict older btrfs-progs to get the new in same transaction and in initrd
738 %define kconflicts8 btrfs-progs < 5.10-1
739 # (tmb) conflict too old radeon-firmware to get the uvd firmwares in initrd
740 %define kconflicts9 radeon-firmware < 20201218-1
741 # (tmb) conflict old firmware to get the firmwares in initrd
742 %define kconflicts10 kernel-firmware-nonfree < 20201230-1
743 # (tmb) conflict old microcode to get updated ones in initrd for early loading
744 %define kconflicts11 microcode < 0.20201118-2
745 # (tmb) conflict old theme to get mga8 theme in initrd
746 %define kconflicts12 mageia-gfxboot-theme < 4.5.14.11-2
747 # (tmb) conflict too old grub2(-efi)
748 %define kconflicts13 grub2 < 2.02.0-15
749 %define kconflicts14 grub2-efi < 2.02.0-15
750 # (tmb) conflict too old efibootmgr
751 %define kconflicts15 efibootmgr < 16-3
752 # (tmb) force new theme in initrd
753 %define kconflicts16 mageia-theme < 8.0-2
754
755 Autoreqprov: no
756
757 %if 0%{?mageia} >= 8
758 BuildRequires: gcc >= 10.3.0-1
759 BuildRequires: binutils >= 1:2.35.2-1
760 %else
761 BuildRequires: gcc >= 8.4.0-1
762 BuildRequires: binutils >= 1:2.33.1-1
763 %endif
764 BuildRequires: kmod >= 12-2
765 BuildRequires: bc
766 # for crypto stuff
767 BuildRequires: pkgconfig(openssl)
768 # since 4.16
769 BuildRequires: bison
770 BuildRequires: diffutils
771 BuildRequires: elfutils-devel
772 BuildRequires: flex
773 # for headers_install
774 BuildRequires: rsync
775 # for cpupower
776 %if %{build_cpupower}
777 BuildRequires: pkgconfig(libpci)
778 %endif
779 # for perf
780 %if %{build_perf}
781 BuildRequires: audit-devel
782 BuildRequires: binutils-devel
783 BuildRequires: gtk2-devel
784 BuildRequires: libunwind-devel
785 BuildRequires: newt-devel
786 BuildRequires: python3-devel
787 BuildRequires: zlib-devel
788 BuildRequires: asciidoc
789 BuildRequires: xmlto-notex
790 BuildRequires: perl-devel
791 %if 0%{?mageia} >= 8
792 BuildRequires: systemtap-sdt-devel
793 BuildRequires: babeltrace-devel
794 %else
795 BuildRequires: libbabeltrace-devel
796 %endif
797 %ifarch %{ix86} x86_64
798 BuildRequires: numa-devel
799 %endif
800 %endif
801 %if %{build_bpftool}
802 BuildRequires: python3-docutils
803 BuildRequires: cap-devel
804 %endif
805
806 %description
807 %common_desc_kernel
808 %ifnarch %{arm}
809 %common_desc_kernel_smp
810 %endif
811
812 # mkflavour() name flavour processor
813 # name: the flavour name in the package name
814 # flavour: first parameter of CreateKernel()
815 %define mkflavour() \
816 %package -n %{kname}-%{1}-%{buildrel} \
817 Version: %{fakever} \
818 Release: %{fakerel} \
819 Provides: %kprovides1 %kprovides2 %kprovides3 \
820 %{expand:%%{?kprovides_%{1}:Provides: %{kprovides_%{1}}}} \
821 Provides: %{kname}-%{1} \
822 Requires(pre): %requires1 %requires2 %requires3 %requires4 \
823 Requires: %requires2 %requires5 %requires6 \
824 Conflicts: %kconflicts1 %kconflicts2 %kconflicts3 \
825 Conflicts: %kconflicts4 %kconflicts5 %kconflicts6 \
826 Conflicts: %kconflicts7 %kconflicts8 %kconflicts9 \
827 Conflicts: %kconflicts10 %kconflicts11 %kconflicts12 \
828 Conflicts: %kconflicts13 %kconflicts14 %kconflicts15 \
829 Conflicts: %kconflicts16 \
830 %if 0%{?mageia} >= 8 \
831 Obsoletes: crda \
832 Obsoletes: crda-devel \
833 Obsoletes: fuse-exfat \
834 %endif \
835 Provides: should-restart = system \
836 Provides: installonlypkg(kernel) \
837 Recommends: iw cpupower microcode \
838 Recommends: %{kname}-%{1}-latest \
839 %ifarch %{ix86} \
840 Conflicts: arch(x86_64) \
841 %endif \
842 Summary: %{expand:%{summary_%(echo %{1} | sed -e "s/-/_/")}} \
843 Group: System/Kernel and hardware \
844 %description -n %{kname}-%{1}-%{buildrel} \
845 %common_desc_kernel %{expand:%{info_%(echo %{1} | sed -e "s/-/_/")}} \
846 %ifnarch %{arm} \
847 %common_desc_kernel_smp \
848 %endif \
849 \
850 %if %build_devel \
851 %package -n %{kname}-%{1}-devel-%{buildrel} \
852 Version: %{fakever} \
853 Release: %{fakerel} \
854 Requires: glibc-devel ncurses-devel make gcc perl \
855 Requires: gcc >= 5.5.0-1 \
856 %ifarch x86_64 \
857 Requires: pkgconfig(libelf) \
858 %endif \
859 Summary: The kernel-devel files for %{kname}-%{1}-%{buildrel} \
860 Group: Development/Kernel \
861 Provides: %{kname}-devel = %{kverrel} \
862 Provides: %{kname}-%{1}-devel \
863 Recommends: %{kname}-%{1}-devel-latest \
864 %ifarch %{ix86} \
865 Conflicts: arch(x86_64) \
866 %endif \
867 %description -n %{kname}-%{1}-devel-%{buildrel} \
868 This package contains the kernel files (headers and build tools) \
869 that should be enough to build additional drivers for \
870 use with %{kname}-%{1}-%{buildrel}. \
871 \
872 If you want to build your own kernel, you need to install the full \
873 %{kname}-source-%{buildrel} rpm. \
874 \
875 %endif \
876 \
877 %if %build_debug \
878 %package -n %{kname}-%{1}-%{buildrel}-debuginfo \
879 Version: %{fakever} \
880 Release: %{fakerel} \
881 Summary: Files with debuginfo for %{kname}-%{1}-%{buildrel} \
882 Group: Development/Debug \
883 Provides: kernel-debug = %{kverrel} \
884 %ifarch %{ix86} \
885 Conflicts: arch(x86_64) \
886 %endif \
887 %description -n %{kname}-%{1}-%{buildrel}-debuginfo \
888 This package contains the files with debuginfo to aid in debug tasks \
889 when using %{kname}-%{1}-%{buildrel}. \
890 \
891 If you need to look at debug information or use some application that \
892 needs debugging info from the kernel, this package may help. \
893 \
894 %endif \
895 \
896 %package -n %{kname}-%{1}-latest \
897 Version: %{kversion} \
898 Release: %{rpmrel} \
899 Summary: Virtual rpm for latest %{kname}-%{1} \
900 Group: System/Kernel and hardware \
901 Requires: %{kname}-%{1}-%{buildrel} \
902 %ifarch %{ix86} \
903 Conflicts: arch(x86_64) \
904 %endif \
905 Obsoletes: vboxadditions-kernel-%{1}-latest \
906 Obsoletes: kernel-tmb-%{1}-latest \
907 %description -n %{kname}-%{1}-latest \
908 This package is a virtual rpm that aims to make sure you always have the \
909 latest %{kname}-%{1} installed... \
910 \
911 %if %build_devel \
912 %package -n %{kname}-%{1}-devel-latest \
913 Version: %{kversion} \
914 Release: %{rpmrel} \
915 Summary: Virtual rpm for latest %{kname}-%{1}-devel \
916 Group: Development/Kernel \
917 Requires: %{kname}-%{1}-devel-%{buildrel} \
918 %ifarch %{ix86} \
919 Conflicts: arch(x86_64) \
920 %endif \
921 Provides: %{kname}-devel-latest \
922 Obsoletes: kernel-tmb-%{1}-devel-latest \
923 %description -n %{kname}-%{1}-devel-latest \
924 This package is a virtual rpm that aims to make sure you always have the \
925 latest %{kname}-%{1}-devel installed... \
926 \
927 %endif \
928 \
929 %posttrans -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-posttrans \
930 %postun -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-postun \
931 \
932 %if %build_devel \
933 %post -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-post \
934 %preun -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-preun \
935 %postun -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1}-postun \
936 %endif \
937 \
938 %files -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1} \
939 %files -n %{kname}-%{1}-latest \
940 \
941 %if %build_devel \
942 %files -n %{kname}-%{1}-devel-%{buildrel} -f kernel_devel_files.%{1} \
943 %files -n %{kname}-%{1}-devel-latest \
944 %endif \
945 \
946 %if %build_debug \
947 %files -n %{kname}-%{1}-%{buildrel}-debuginfo -f kernel_debug_files.%{1} \
948 %endif
949
950 %ifarch %{ix86}
951 #
952 # kernel-desktop586: i586, smp-alternatives, 4GB
953 #
954 %if %build_desktop586
955 %define summary_desktop586 Linux kernel for desktop use with i586 and less than 4GB RAM
956 %define info_desktop586 This kernel is compiled for desktop use, single or \
957 multiple i586 processor(s)/core(s) and less than 4GB RAM (usually 3-3.5GB \
958 detected, if you need/want to use all 4GB or more, install kernel-server), \
959 using HZ_1000, voluntary preempt, CFS cpu scheduler and cfq i/o scheduler.
960 %mkflavour desktop586
961 %endif
962 %endif
963
964 #
965 # kernel-desktop: i686, smp-alternatives, 4 GB / x86_64
966 #
967 %if %build_desktop
968 %ifarch %{ix86}
969 %define summary_desktop Linux Kernel for desktop use with i686 and less than 4GB RAM
970 %define info_desktop This kernel is compiled for desktop use, single or \
971 multiple i686 processor(s)/core(s) and less than 4GB RAM (usually 3-3.5GB \
972 detected, if you need/want to use all 4GB or more, install kernel-server), \
973 using HZ_1000, voluntary preempt, CFS cpu scheduler and cfq i/o scheduler.
974 %else
975 %define summary_desktop Linux Kernel for desktop use with %{_arch}
976 %define info_desktop This kernel is compiled for desktop use, single or \
977 multiple %{_arch} processor(s)/core(s), using HZ_1000, voluntary preempt, \
978 CFS cpu scheduler and cfq i/o scheduler.
979 %endif
980 %mkflavour desktop
981 %endif
982
983 #
984 # kernel-server: i686, smp-alternatives, 64 GB / x86_64
985 #
986 %if %build_server
987 %ifarch %{ix86}
988 %define summary_server Linux Kernel for server use with i686 & 64GB RAM
989 %define info_server This kernel is compiled for server use, single or \
990 multiple i686 processor(s)/core(s) and up to 64GB RAM using PAE, using \
991 no preempt, HZ_100, CFS cpu scheduler and cfq i/o scheduler.
992 %else
993 %define summary_server Linux Kernel for server use with %{_arch}
994 %define info_server This kernel is compiled for server use, single or \
995 multiple %{_arch} processor(s)/core(s), using no preempt, HZ_100, \
996 CFS cpu scheduler and cfq i/o scheduler.
997 %endif
998 %mkflavour server
999 %endif
1000
1001 #
1002 # kernel-source
1003 #
1004 %if %build_source
1005 %package -n %{kname}-source-%{buildrel}
1006 Version: %{fakever}
1007 Release: %{fakerel}
1008 Requires: glibc-devel, ncurses-devel, make, gcc, perl, diffutils
1009 Summary: The Linux source code for %{kname}-%{buildrel}
1010 Group: Development/Kernel
1011 Autoreqprov: no
1012 Provides: kernel-source = %{kverrel}
1013 Buildarch: noarch
1014
1015 %description -n %{kname}-source-%{buildrel}
1016 The %{kname}-source package contains the source code files for the Mageia
1017 kernel. Theese source files are only needed if you want to build your
1018 own custom kernel that is better tuned to your particular hardware.
1019
1020 If you only want the files needed to build 3rdparty (nVidia, Ati, dkms-*,...)
1021 drivers against, install the *-devel-* rpm that is matching your kernel.
1022
1023 #
1024 # kernel-source-latest: virtual rpm
1025 #
1026 %package -n %{kname}-source-latest
1027 Version: %{kversion}
1028 Release: %{rpmrel}
1029 Summary: Virtual rpm for latest %{kname}-source
1030 Group: Development/Kernel
1031 Requires: %{kname}-source-%{buildrel}
1032 Buildarch: noarch
1033
1034 %description -n %{kname}-source-latest
1035 This package is a virtual rpm that aims to make sure you always have the
1036 latest %{kname}-source installed...
1037 %endif
1038
1039 #
1040 # kernel-doc: documentation for the Linux kernel
1041 #
1042 %if %build_doc
1043 %package -n %{kname}-doc
1044 Version: %{kversion}
1045 Release: %{rpmrel}
1046 Summary: Various documentation bits found in the %{kname} source
1047 Group: Documentation
1048 Buildarch: noarch
1049
1050 %description -n %{kname}-doc
1051 This package contains documentation files from the %{kname} source.
1052 Various bits of information about the Linux kernel and the device drivers
1053 shipped with it are documented in these files. You also might want install
1054 this package if you need a reference to the options that can be passed to
1055 Linux kernel modules at load time.
1056 %endif
1057
1058 #
1059 # kernel userspace-headers
1060 #
1061 %if %{build_uheaders}
1062 %package -n %{kname}-userspace-headers
1063 Version: %{kversion}
1064 Release: %{rpmrel}
1065 Summary: Linux kernel header files for userspace
1066 Group: System/Kernel and hardware
1067 %rename linux-userspace-headers
1068 Provides: kernel-headers = 1:%{version}-%{release}
1069
1070 %description -n %{kname}-userspace-headers
1071 C header files from the Linux kernel. The header files define structures
1072 and constants that are needed for building most standard programs.
1073
1074 This package is not suitable for building kernel modules.
1075 %endif
1076
1077 #
1078 # kernel/tools
1079 #
1080 %if %{build_perf}
1081 %package -n perf
1082 Version: %{kversion}
1083 Release: %{rpmrel}
1084 Summary: perf tool and the supporting documentation
1085 Group: System/Kernel and hardware
1086
1087 %description -n perf
1088 the perf tool and the supporting documentation.
1089 %endif
1090
1091 %if %{build_cpupower}
1092 %package -n cpupower
1093 Version: %{kversion}
1094 Release: %{rpmrel}
1095 Summary: the cpupower tools
1096 Group: System/Kernel and hardware
1097 Requires(post): rpm-helper >= 0.24.8-1
1098 Requires(preun): rpm-helper >= 0.24.8-1
1099 Obsoletes: cpufreq cpufrequtils
1100
1101 %description -n cpupower
1102 the cpupower tools.
1103
1104 %post -n cpupower
1105 %_post_service cpupower
1106
1107 %preun -n cpupower
1108 %_preun_service cpupower
1109
1110 %package -n cpupower-devel
1111 Version: %{kversion}
1112 Release: %{rpmrel}
1113 Summary: devel files for cpupower
1114 Group: Development/Kernel
1115 Requires: cpupower = %{kversion}-%{rpmrel}
1116 Conflicts: %{_lib}cpufreq-devel
1117
1118 %description -n cpupower-devel
1119 This package contains the development files for cpupower.
1120 %endif
1121
1122 %if %{build_bpftool}
1123 %package -n bpftool
1124 Summary: Inspection and simple manipulation of eBPF programs and maps
1125 Group: System/Kernel and hardware
1126
1127 %description -n bpftool
1128 This package contains the bpftool, which allows inspection and simple
1129 manipulation of eBPF programs and maps.
1130 %endif
1131
1132 %if %{build_libbpf}
1133 %package -n %{_lib}bpf0
1134 Summary: The bpf library from kernel source
1135 Group: System/Libraries
1136
1137 %description -n %{_lib}bpf0
1138 This package contains the kernel source bpf library.
1139
1140 %package -n %{_lib}bpf-devel
1141 Summary: Developement files for the bpf library from kernel source
1142 Group: Development/Kernel
1143 Requires: %{_lib}bpf0
1144
1145 %description -n %{_lib}bpf-devel
1146 This package includes libraries and header files needed for development
1147 of applications which use bpf library from kernel source.
1148 %endif
1149
1150 #
1151 # End packages - here begins build stage
1152 #
1153 %prep
1154 %setup -q -n %top_dir_name -c
1155
1156 cd %src_dir
1157
1158 %autopatch -p1
1159
1160 # PATCH END
1161
1162 # breaks bpftool build on mga8
1163 patch -p1 -R <%{SOURCE100}
1164 # breaks cifs NTLL on mga8
1165 patch -p1 -R <%{SOURCE101}
1166 # breaks plymouth
1167 patch -p1 -R <%{SOURCE102}
1168
1169 #
1170 # Setup Begin
1171 #
1172
1173 # install x86 defconfigs
1174 install -m 644 %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} %{SOURCE15} arch/x86/configs/
1175 # install arm64 defconfigs
1176 install -m 644 %{SOURCE16} %{SOURCE17} arch/arm64/configs/
1177 # install arm defconfigs
1178 install -m 644 %{SOURCE18} arch/arm/configs/
1179
1180 # make sure the kernel has the sublevel we know it has...
1181 LC_ALL=C perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{sublevel}/" Makefile
1182
1183 # get rid of unwanted files
1184 find . -name '*~' -o -name '*.orig' -o -name '*.append' | %kxargs rm -f
1185
1186 # fix missing exec flag on file introduced in 4.14.10-rc1
1187 chmod 755 tools/objtool/sync-check.sh
1188
1189 %build
1190 # Common target directories
1191 %define _kerneldir /usr/src/kernel-%{kversion}-%{buildrpmrel}
1192 %define _bootdir /boot
1193 %define _modulesdir /lib/modules
1194 %define _efidir %{_bootdir}/efi/mageia
1195
1196 # Directories definition needed for building
1197 %define temp_root %{build_dir}/temp-root
1198 %define temp_source %{temp_root}%{_kerneldir}
1199 %define temp_boot %{temp_root}%{_bootdir}
1200 %define temp_modules %{temp_root}%{_modulesdir}
1201
1202 PrepareKernel() {
1203 name=$1
1204 extension=$2
1205
1206 echo "Make config for kernel $extension"
1207
1208 %smake ARCH=%{target_arch} -s mrproper
1209
1210 if [ "%{target_arch}" == "i386" -o "%{target_arch}" == "x86_64" ]; then
1211 conf_dir=arch/x86/configs
1212 else
1213 conf_dir=arch/%{target_arch}/configs
1214 fi
1215 if [ -z "$name" ]; then
1216 cp $conf_dir/defconfig-%{target_arch}-desktop .config
1217 else
1218 cp $conf_dir/defconfig-%{target_arch}-$name .config
1219 fi
1220
1221 # make sure EXTRAVERSION says what we want it to say
1222 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -$extension/" Makefile
1223
1224 %smake ARCH=%{target_arch} oldconfig
1225 }
1226
1227 BuildKernel() {
1228 KernelVer=$1
1229
1230 echo "Building kernel $KernelVer"
1231
1232 %kmake ARCH=%{target_arch} -s all
1233
1234 # Start installing stuff
1235 install -d %{temp_boot}
1236 install -m 644 System.map %{temp_boot}/System.map-$KernelVer
1237 install -m 644 .config %{temp_boot}/config-$KernelVer
1238 xz -c Module.symvers > %{temp_boot}/symvers-$KernelVer.xz
1239
1240 %ifarch %{arm}
1241 IMAGE=zImage
1242 %else
1243 %ifarch aarch64
1244 IMAGE=Image.gz
1245 %else
1246 IMAGE=bzImage
1247 %endif
1248 %endif
1249 cp -f arch/%{target_arch}/boot/$IMAGE %{temp_boot}/vmlinuz-$KernelVer
1250
1251 %ifarch %{arm} aarch64
1252 install -d %{temp_root}%{_libdir}/linux-$KernelVer/
1253 find arch/%{target_arch}/boot/dts/ -name *.dtb -execdir install -D -m644 {} %{temp_root}%{_libdir}/linux-$KernelVer/{} \;
1254 %endif
1255
1256 # modules
1257 install -d %{temp_modules}/$KernelVer
1258 %smake ARCH=%{target_arch} INSTALL_MOD_PATH=%{temp_root} KERNELRELEASE=$KernelVer modules_install
1259 }
1260
1261 SaveDevel() {
1262 devel_flavour=$1
1263
1264 DevelRoot=/usr/src/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}
1265 TempDevelRoot=%{temp_root}$DevelRoot
1266
1267 mkdir -p $TempDevelRoot
1268 for i in $(find . -name 'Makefile*'); do cp -R --parents $i $TempDevelRoot;done
1269 for i in $(find . -name 'Kconfig*' -o -name 'Kbuild*'); do cp -R --parents $i $TempDevelRoot;done
1270 cp -fR include $TempDevelRoot
1271 cp -fR scripts $TempDevelRoot
1272 cp -fR kernel/bounds.c $TempDevelRoot/kernel
1273 cp -fR tools/include $TempDevelRoot/tools/
1274 # needed for selinux
1275 cp -R --parents security/selinux/include/*.h $TempDevelRoot
1276 %ifarch %{arm}
1277 cp -fR arch/%{target_arch}/tools $TempDevelRoot/arch/%{target_arch}/
1278 cp -fR arch/%{target_arch}/kernel/signal.h $TempDevelRoot/arch/%{target_arch}/kernel/
1279 %endif
1280 %ifarch aarch64
1281 cp -fR arch/x86/entry/syscalls/syscall_32.tbl $TempDevelRoot/arch/x86/entry/syscalls/
1282 cp -fR arch/arm64/kernel/vdso/*.{S,sh} $TempDevelRoot/arch/arm64/kernel/vdso/
1283 cp -fR arch/arm64/kernel/vdso/vgettimeofday.c $TempDevelRoot/arch/arm64/kernel/vdso/
1284 cp -fR arch/arm64/tools/{cpucaps,gen-cpucaps.awk} $TempDevelRoot/arch/arm64/tools/
1285 # aarch64 build wants x86 syscall tables
1286 cp -fR arch/x86/entry/syscalls/syscall_{32,64}.tbl $TempDevelRoot/arch/x86/entry/syscalls/
1287 cp -fR lib/vdso/gettimeofday.c $TempDevelRoot/lib/vdso/
1288 %endif
1289 %ifarch %{ix86} x86_64
1290 cp -fR arch/x86/kernel/asm-offsets.{c,s} $TempDevelRoot/arch/x86/kernel/
1291 cp -fR arch/x86/kernel/asm-offsets_{32,64}.c $TempDevelRoot/arch/x86/kernel/
1292 cp -fR arch/x86/lib/insn.c $TempDevelRoot/arch/x86/lib/
1293 cp -fR arch/x86/purgatory/* $TempDevelRoot/arch/x86/purgatory/
1294 cp -fR arch/x86/entry/syscalls/syscall* $TempDevelRoot/arch/x86/entry/syscalls/
1295 cp -fR arch/x86/include $TempDevelRoot/arch/x86/
1296 cp -fR arch/x86/tools $TempDevelRoot/arch/x86/
1297 %else
1298 cp -fR arch/%{target_arch}/kernel/asm-offsets.{c,s} $TempDevelRoot/arch/%{target_arch}/kernel/
1299 for f in $(find arch/%{target_arch} -name include); do cp -fR --parents $f $TempDevelRoot; done
1300 %endif
1301 cp -fR .config Module.symvers $TempDevelRoot
1302
1303 # Needed for truecrypt build (Danny)
1304 cp -fR drivers/md/dm.h $TempDevelRoot/drivers/md/
1305
1306 # needed by include/generated/timeconst.h
1307 cp -fR kernel/time/timeconst.bc $TempDevelRoot/kernel/time/
1308
1309 # Needed for lirc_gpio (#39004)
1310 cp -fR drivers/media/pci/bt8xx/bttv{,p}.h $TempDevelRoot/drivers/media/pci/bt8xx/
1311 cp -fR drivers/media/pci/bt8xx/bt848.h $TempDevelRoot/drivers/media/pci/bt8xx/
1312 cp -fR drivers/media/common/btcx-risc.h $TempDevelRoot/drivers/media/common/
1313
1314 # aufs has a special file needed
1315 cp -fR fs/aufs/magic.mk $TempDevelRoot/fs/aufs/
1316
1317 # rtl8821ce has special files needed
1318 cp -fR 3rdparty/rtl8821ce/halmac.mk $TempDevelRoot/3rdparty/rtl8821ce/
1319 cp -fR 3rdparty/rtl8821ce/rtl8821c.mk $TempDevelRoot/3rdparty/rtl8821ce/
1320 mkdir -p $TempDevelRoot/3rdparty/rtl8821ce/hal/phydm/
1321 cp -fR 3rdparty/rtl8821ce/hal/phydm/phydm.mk $TempDevelRoot/3rdparty/rtl8821ce/hal/phydm/
1322 mkdir -p $TempDevelRoot/3rdparty/rtl8812au/hal/phydm/
1323 cp -fR 3rdparty/rtl8812au/hal/phydm/phydm.mk $TempDevelRoot/3rdparty/rtl8812au/hal/phydm/
1324
1325 %ifarch x86_64
1326 # orc unwinder needs theese
1327 cp -fR tools/build/Build{,.include} $TempDevelRoot/tools/build
1328 cp -fR tools/build/fixdep.c $TempDevelRoot/tools/build
1329 cp -fR tools/lib/{rbtree.c,ctype.c,str_error_r.c,string.c} $TempDevelRoot/tools/lib
1330 cp -fR tools/lib/subcmd/* $TempDevelRoot/tools/lib/subcmd
1331 cp -fR tools/objtool/* $TempDevelRoot/tools/objtool
1332 cp -fR tools/scripts/utilities.mak $TempDevelRoot/tools/scripts
1333 mkdir -p $TempDevelRoot/tools/arch/x86/tools
1334 cp -fR tools/arch/x86/tools/gen-insn-attr-x86.awk $TempDevelRoot/tools/arch/x86/tools/
1335 mkdir -p $TempDevelRoot/tools/arch/x86/lib
1336 cp -fR tools/arch/x86/lib/{inat.c,insn.c,x86-opcode-map.txt} $TempDevelRoot/tools/arch/x86/lib/
1337 mkdir -p $TempDevelRoot/tools/arch/x86/include/asm
1338 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/
1339 %endif
1340
1341 for i in alpha arc avr32 blackfin c6x cris csky frv h8300 hexagon ia64 m32r m68k m68knommu metag microblaze \
1342 mips mn10300 nds32 nios2 openrisc parisc powerpc riscv s390 score sh sparc tile unicore32 xtensa; do
1343 rm -rf $TempDevelRoot/arch/$i
1344 rm -rf $TempDevelRoot/scripts/dtc/include-prefixes/$i
1345 rm -rf $TempDevelRoot/tools/arch/$i
1346 done
1347
1348 %ifnarch %{arm} aarch64
1349 rm -rf $TempDevelRoot/arch/arm*
1350 rm -rf $TempDevelRoot/include/kvm/arm*
1351 rm -rf $TempDevelRoot/include/soc
1352 rm -rf $TempDevelRoot/scripts/dtc/include-prefixes/arm*
1353 rm -rf $TempDevelRoot/tools/arch/arm*
1354 %endif
1355 %ifnarch %{ix86} x86_64
1356 rm -rf $TempDevelRoot/arch/x86
1357 rm -rf $TempDevelRoot/tools/arch/x86
1358 # arch/x86/ras/Kconfig is included by drivers/ras/Kconfig
1359 # and kconfig's source command seems to be evaluated even under a false conditional
1360 mkdir -p $TempDevelRoot/arch/x86/ras
1361 cp -fR arch/x86/ras/Kconfig $TempDevelRoot/arch/x86/ras
1362 %endif
1363
1364 # Clean the scripts tree, and make sure everything is ok (sanity check)
1365 # running prepare+scripts (tree was already "prepared" in build)
1366 pushd $TempDevelRoot >/dev/null
1367 %smake ARCH=%{target_arch} -s prepare scripts
1368 %smake ARCH=%{target_arch} -s clean
1369 popd >/dev/null
1370 rm -f $TempDevelRoot/.config.old
1371
1372 # fix permissions
1373 chmod -R a+rX $TempDevelRoot
1374
1375 # disable mrproper in -devel rpms
1376 patch -p1 --fuzz=0 -d $TempDevelRoot -i %{SOURCE2}
1377
1378 kernel_devel_files=../kernel_devel_files.$devel_flavour
1379
1380
1381 ### Create the kernel_devel_files.*
1382 cat > $kernel_devel_files <<EOF
1383 %dir $DevelRoot
1384 %dir $DevelRoot/arch
1385 %dir $DevelRoot/include
1386 $DevelRoot/3rdparty
1387 $DevelRoot/Documentation
1388 %ifarch %{arm} aarch64
1389 $DevelRoot/arch/arm
1390 $DevelRoot/arch/arm64
1391 %endif
1392 $DevelRoot/arch/um
1393 %ifarch %{ix86} x86_64
1394 $DevelRoot/arch/x86
1395 %else
1396 $DevelRoot/arch/x86/ras
1397 %endif
1398 $DevelRoot/block
1399 $DevelRoot/certs
1400 $DevelRoot/crypto
1401 $DevelRoot/drivers
1402 $DevelRoot/fs
1403 $DevelRoot/include/acpi
1404 $DevelRoot/include/asm-generic
1405 $DevelRoot/include/clocksource
1406 $DevelRoot/include/config
1407 $DevelRoot/include/crypto
1408 $DevelRoot/include/drm
1409 $DevelRoot/include/dt-bindings
1410 $DevelRoot/include/generated
1411 $DevelRoot/include/keys
1412 $DevelRoot/include/kunit
1413 $DevelRoot/include/kvm
1414 $DevelRoot/include/linux
1415 $DevelRoot/include/math-emu
1416 $DevelRoot/include/media
1417 $DevelRoot/include/memory
1418 $DevelRoot/include/misc
1419 $DevelRoot/include/net
1420 $DevelRoot/include/pcmcia
1421 $DevelRoot/include/ras
1422 $DevelRoot/include/rdma
1423 $DevelRoot/include/scsi
1424 %ifarch %{arm} aarch64
1425 $DevelRoot/include/soc
1426 %endif
1427 $DevelRoot/include/sound
1428 $DevelRoot/include/target
1429 $DevelRoot/include/trace
1430 $DevelRoot/include/uapi
1431 $DevelRoot/include/vdso/*.h
1432 $DevelRoot/include/video
1433 $DevelRoot/include/xen
1434 $DevelRoot/init
1435 $DevelRoot/ipc
1436 $DevelRoot/kernel
1437 $DevelRoot/lib
1438 $DevelRoot/mm
1439 $DevelRoot/net
1440 $DevelRoot/samples
1441 $DevelRoot/scripts
1442 $DevelRoot/security
1443 $DevelRoot/sound
1444 $DevelRoot/tools
1445 $DevelRoot/usr
1446 $DevelRoot/virt
1447 $DevelRoot/.config
1448 $DevelRoot/Kbuild
1449 $DevelRoot/Kconfig
1450 $DevelRoot/Makefile
1451 $DevelRoot/Module.symvers
1452 $DevelRoot/arch/Kconfig
1453 %doc README.kernel-sources
1454 EOF
1455
1456
1457 ### Create -devel Post script on the fly
1458 cat > $kernel_devel_files-post <<EOF
1459 if [ -d /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel} ]; then
1460 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/{build,source}
1461 ln -sf $DevelRoot /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build
1462 ln -sf $DevelRoot /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source
1463 fi
1464 EOF
1465
1466
1467 ### Create -devel Preun script on the fly
1468 cat > $kernel_devel_files-preun <<EOF
1469 if [ -L /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build ]; then
1470 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build
1471 fi
1472 if [ -L /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source ]; then
1473 rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source
1474 fi
1475 exit 0
1476 EOF
1477
1478 ### Create -devel Postun script on the fly
1479 cat > $kernel_devel_files-postun <<EOF
1480 rm -rf /usr/src/kernel-%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
1481 EOF
1482 }
1483
1484 SaveDebug() {
1485 debug_flavour=$1
1486
1487 install -m 644 vmlinux \
1488 %{temp_boot}/vmlinux-%{kversion}-$debug_flavour-%{buildrpmrel}
1489 kernel_debug_files=../kernel_debug_files.$debug_flavour
1490 echo "%{_bootdir}/vmlinux-%{kversion}-$debug_flavour-%{buildrpmrel}" \
1491 >> $kernel_debug_files
1492
1493 find %{temp_modules}/%{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1494 -name "*.ko" | \
1495 %kxargs -I '{}' objcopy --only-keep-debug '{}' '{}'.debug
1496 find %{temp_modules}/%{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1497 -name "*.ko" | %kxargs -I '{}' \
1498 sh -c 'cd `dirname {}`; \
1499 objcopy --add-gnu-debuglink=`basename {}`.debug \
1500 --strip-debug `basename {}`'
1501
1502 pushd %{temp_modules}
1503 find %{kversion}-$debug_flavour-%{buildrpmrel}/kernel \
1504 -name "*.ko.debug" > debug_module_list
1505 popd
1506 cat %{temp_modules}/debug_module_list | \
1507 sed 's|\(.*\)|%{_modulesdir}/\1|' >> $kernel_debug_files
1508 cat %{temp_modules}/debug_module_list | \
1509 sed 's|\(.*\)|%exclude %{_modulesdir}/\1|' \
1510 >> ../kernel_exclude_debug_files.$debug_flavour
1511 rm -f %{temp_modules}/debug_module_list
1512 }
1513
1514 CreateFiles() {
1515 kernel_flavour=$1
1516
1517 kernel_files=../kernel_files.$kernel_flavour
1518
1519 ker="vmlinuz"
1520 ### Create the kernel_files.*
1521 cat > $kernel_files <<EOF
1522 %{_bootdir}/System.map-%{kversion}-$kernel_flavour-%{buildrpmrel}
1523 %{_bootdir}/symvers-%{kversion}-$kernel_flavour-%{buildrpmrel}.xz
1524 %{_bootdir}/config-%{kversion}-$kernel_flavour-%{buildrpmrel}
1525 %{_bootdir}/$ker-%{kversion}-$kernel_flavour-%{buildrpmrel}
1526 %dir %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/
1527 %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/kernel
1528 %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/modules.*
1529 %doc README.kernel-sources
1530 %ifarch %arm aarch64
1531 %dir %{_libdir}/linux-%{kversion}-$kernel_flavour-%{buildrpmrel}
1532 %{_libdir}/linux-%{kversion}-$kernel_flavour-%{buildrpmrel}/*.dtb
1533 %endif
1534 EOF
1535
1536 %if %build_debug
1537 cat ../kernel_exclude_debug_files.$kernel_flavour >> $kernel_files
1538 %endif
1539
1540 ### Create kernel Posttrans script
1541 cat > $kernel_files-posttrans <<EOF
1542 %if %build_devel
1543 # create kernel-devel symlinks if matching -devel- rpm is installed
1544 if [ -d /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} ]; then
1545 ln -sf /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/build
1546 ln -sf /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel}/source
1547 fi
1548 %endif
1549 if [ -z "$DURING_INSTALL" ] ; then
1550 if [ -x /usr/sbin/dkms_autoinstaller -a -d /usr/src/kernel-%{kversion}-$kernel_flavour-%{buildrpmrel} ]; then
1551 /usr/sbin/dkms_autoinstaller start %{kversion}-$kernel_flavour-%{buildrpmrel}
1552 fi
1553 fi
1554 /sbin/installkernel %{kversion}-$kernel_flavour-%{buildrpmrel}
1555 pushd /boot > /dev/null
1556 if [ -e initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img ]; then
1557 ln -sf vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel} vmlinuz-$kernel_flavour
1558 ln -sf vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel} vmlinuz
1559 ln -sf initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img initrd-$kernel_flavour.img
1560 ln -sf initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img initrd.img
1561 fi
1562 popd > /dev/null
1563 EOF
1564
1565 ### Create kernel Postun script on the fly
1566 cat > $kernel_files-postun <<EOF
1567 pushd /boot > /dev/null
1568 if [ -f "vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel}" ]; then
1569 echo "The kernel is still installed in postun, probably a reinstall, skipping cleanup." >&2
1570 exit
1571 fi
1572 if [ -L vmlinuz-$kernel_flavour ]; then
1573 if [ "$(readlink vmlinuz-$kernel_flavour)" = "vmlinuz-%{kversion}-$kernel_flavour-%{buildrpmrel}" ]; then
1574 rm -f vmlinuz-$kernel_flavour
1575 fi
1576 fi
1577 if [ -L initrd-$kernel_flavour.img ]; then
1578 if [ "$(readlink initrd-$kernel_flavour.img)" = "initrd-%{kversion}-$kernel_flavour-%{buildrpmrel}.img" ]; then
1579 rm -f initrd-$kernel_flavour.img
1580 fi
1581 fi
1582 popd > /dev/null
1583 rm -rf /lib/modules/%{kversion}-$kernel_flavour-%{buildrpmrel} >/dev/null
1584 /sbin/kernel_remove_initrd %{kversion}-$kernel_flavour-%{buildrpmrel}
1585 /sbin/installkernel -R %{kversion}-$kernel_flavour-%{buildrpmrel}
1586 if [ -d /var/lib/dkms ]; then
1587 rm -f /var/lib/dkms/*/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}-%{_target_cpu} >/dev/null
1588 rm -rf /var/lib/dkms/*/*/%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
1589 rm -f /var/lib/dkms-binary/*/kernel-%{kversion}-$devel_flavour-%{buildrpmrel}-%{_target_cpu} >/dev/null
1590 rm -rf /var/lib/dkms-binary/*/*/%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
1591 fi
1592 EOF
1593 }
1594
1595
1596 CreateKernel() {
1597 flavour=$1
1598
1599 PrepareKernel $flavour $flavour-%{buildrpmrel}
1600
1601 BuildKernel %{kversion}-$flavour-%{buildrpmrel}
1602 %if %build_devel
1603 SaveDevel $flavour
1604 %endif
1605 %if %build_debug
1606 SaveDebug $flavour
1607 %endif
1608 CreateFiles $flavour
1609 }
1610
1611
1612 ###
1613 # DO it...
1614 ###
1615
1616
1617 # Create a simulacro of buildroot
1618 rm -rf %{temp_root}
1619 install -d %{temp_root}
1620
1621
1622 # make sure we are in the directory
1623 cd %src_dir
1624
1625 %ifarch %{ix86}
1626 %if %build_desktop586
1627 CreateKernel desktop586
1628 %endif
1629 %endif
1630
1631 %if %build_desktop
1632 CreateKernel desktop
1633 %endif
1634
1635 %if %build_server
1636 CreateKernel server
1637 %endif
1638
1639 # set extraversion to match srpm to get nice version reported by the tools
1640 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{rpmrel}/" Makefile
1641
1642 # build perf
1643 %if %{build_perf}
1644 # perf
1645 %smake -s -C tools/perf NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 \
1646 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 NO_JVMTI=1 prefix=%{_prefix} lib=%{_lib} all
1647 %smake -C tools/perf -s prefix=%{_prefix} man
1648 %endif
1649
1650 %if %{build_cpupower}
1651 # cpupower
1652 # make sure version-gen.sh is executable.
1653 chmod +x tools/power/cpupower/utils/version-gen.sh
1654 %make_build -C tools/power/cpupower CPUFREQ_BENCH=false
1655 %endif
1656
1657 # build bpftool
1658 %if %{build_bpftool}
1659 pushd tools/bpf/bpftool
1660 make
1661 popd
1662 %endif
1663
1664 # build libbpf
1665 %if %{build_libbpf}
1666 pushd tools/lib/bpf
1667 make V=1
1668 popd
1669 %endif
1670
1671 # We don't make to repeat the depend code at the install phase
1672 %if %build_source
1673 PrepareKernel "" %{buildrpmrel}custom
1674 %smake ARCH=%{target_arch} -s mrproper
1675 %endif
1676
1677
1678 ###
1679 ### install
1680 ###
1681 %install
1682 install -m 644 %{SOURCE4} .
1683
1684 cd %src_dir
1685
1686 # Directories definition needed for installing
1687 %define target_source %{buildroot}%{_kerneldir}
1688 %define target_boot %{buildroot}%{_bootdir}
1689 %define target_modules %{buildroot}%{_modulesdir}
1690 %define target_headers %{buildroot}%{_prefix}
1691
1692 # We want to be able to test several times the install part
1693 rm -rf %{buildroot}
1694 cp -a %{temp_root} %{buildroot}
1695
1696 # Create directories infastructure
1697 %if %build_source
1698 install -d %{target_source}
1699
1700 tar cf - . | tar xf - -C %{target_source}
1701 chmod -R a+rX %{target_source}
1702
1703 # we remove all the source files that we don't ship
1704 # first architecture files
1705 for i in alpha arc avr32 blackfin c6x cris csky frv h8300 hexagon ia64 m32r m68k m68knommu metag microblaze \
1706 mips nds32 nios2 openrisc parisc powerpc riscv s390 score sh sh64 sparc tile unicore32 v850 xtensa mn10300; do
1707 rm -rf %{target_source}/arch/$i
1708 rm -rf %{target_source}/scripts/dtc/include-prefixes/$i
1709 rm -rf %{target_source}/tools/arch/$i
1710 rm -rf %{target_source}/tools/testing/selftests/$i
1711 done
1712 %ifnarch %{arm} aarch64
1713 rm -rf %{target_source}/include/kvm/arm*
1714 rm -rf %{target_source}/scripts/dtc/include-prefixes/arm*
1715 rm -rf %{target_source}/tools/arch/arm*
1716 %endif
1717
1718 # other misc files
1719 rm -f %{target_source}/{.clang-format,.config.old,.config.cmd,.lst,.mailmap,.get_maintainer.ignore}
1720 rm -f %{target_source}/{.missing-syscalls.d,.cocciconfig,.gitattributes}
1721 rm -rf %{target_source}/.tmp_depmod/
1722
1723 # more cleaning
1724 pushd %{target_source}
1725 # lots of gitignore files
1726 find -iname ".gitignore" -delete
1727 # clean tools tree
1728 %smake -C tools clean
1729 %smake -C tools/build clean
1730 %smake -C tools/build/feature clean
1731 # dont ship generated vdso.so*
1732 %ifarch aarch64
1733 rm -f arch/arm64/kernel/vdso/vdso.so*
1734 %endif
1735 popd
1736
1737 # nuke last as it gets re-created
1738 rm -f %{target_source}/.cache.mk
1739
1740 #endif %build_source
1741 %endif
1742
1743 # compressing modules
1744 %if %{build_modxz}
1745 find %{target_modules} -name "*.ko" | %kxargs xz -6
1746 %else
1747 find %{target_modules} -name "*.ko" | %kxargs gzip -9
1748 %endif
1749
1750 # We used to have a copy of PrepareKernel here
1751 # Now, we make sure that the thing in the linux dir is what we want it to be
1752 for i in %{target_modules}/*; do
1753 rm -f $i/build $i/source
1754 done
1755
1756 # sniff, if we compressed all the modules, we change the stamp :(
1757 # we really need the depmod -ae here
1758 pushd %{target_modules}
1759 for i in *; do
1760 /sbin/depmod -ae -b %{buildroot} -F %{target_boot}/System.map-$i $i
1761 echo $?
1762 done
1763
1764 for i in *; do
1765 pushd $i
1766 echo "Creating modules.description for $i"
1767 modules=`find . -name "*.ko.[g,x]z"`
1768 echo $modules | xargs /sbin/modinfo \
1769 | perl -lne 'print "$name\t$1" if $name && /^description:\s*(.*)/; $name = $1 if m!^filename:\s*(.*)\.k?o!; $name =~ s!.*/!!' > modules.description
1770 popd
1771 done
1772 popd
1773
1774 # need to set extraversion to match srpm again to avoid rebuild
1775 LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{rpmrel}/" Makefile
1776
1777 # install userspace-headers
1778 %if %{build_uheaders}
1779 %smake ARCH=%{target_arch} headers_install INSTALL_HDR_PATH=%{target_headers}
1780 # for drakx
1781 cp include/linux/pci_ids.h %{target_headers}/include/linux/
1782 %endif
1783
1784 %if %{build_perf}
1785 # perf tool binary and supporting scripts/binaries
1786 %smake -s -C tools/perf V=1 DESTDIR=%{buildroot} NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 \
1787 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 NO_JVMTI=1 prefix=%{_prefix} lib=%{_lib} install
1788
1789 # perf man pages (note: implicit rpm magic compresses them later)
1790 make -C tools/perf V=1 DESTDIR=%{buildroot} prefix=%{_prefix} install-man
1791
1792 # remove perf files we dont ship
1793 rm -rf %{buildroot}/usr/lib/perf/examples
1794 rm -rf %{buildroot}/usr/lib/perf/include/bpf
1795 rm -rf %{buildroot}/usr/include/perf/perf_dlfilter.h
1796 %endif
1797
1798 %if %{build_cpupower}
1799 make -C tools/power/cpupower DESTDIR=%{buildroot} libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install
1800 rm -f %{buildroot}%{_libdir}/*.{a,la}
1801 %find_lang cpupower
1802 mv cpupower.lang ../
1803 chmod 0755 %{buildroot}%{_libdir}/libcpupower.so*
1804 mkdir -p %{buildroot}%{_unitdir} %{buildroot}%{_sysconfdir}/sysconfig
1805 install -m644 %{SOURCE50} %{buildroot}%{_unitdir}/cpupower.service
1806 install -m644 %{SOURCE51} %{buildroot}%{_sysconfdir}/sysconfig/cpupower
1807 %endif
1808
1809 # install bpftool
1810 %if %{build_bpftool}
1811 pushd tools/bpf/bpftool
1812 make DESTDIR=%{buildroot} prefix=%{_prefix} bash_compdir=%{_sysconfdir}/bash_completion.d/ mandir=%{_mandir} install doc-install
1813 popd
1814 %endif
1815
1816 # install libbpf
1817 %if %{build_libbpf}
1818 pushd tools/lib/bpf
1819 make DESTDIR=%{buildroot} prefix=%{_prefix} libdir=%{_libdir} V=1 install install_headers
1820 popd
1821 %endif
1822
1823 ###
1824 ### clean
1825 ###
1826 %clean
1827 rm -rf %{buildroot}
1828
1829
1830 # We don't want to remove this, the whole reason of its existence is to be
1831 # able to do several rpm --short-circuit -bi for testing install
1832 # phase without repeating compilation phase
1833 #rm -rf %{temp_root}
1834
1835 ###
1836 ### source and doc file lists
1837 ###
1838
1839 %if %build_source
1840 %files -n %{kname}-source-%{buildrel}
1841 %doc %{_kerneldir}/LICENSES
1842 %dir %{_kerneldir}
1843 %dir %{_kerneldir}/arch
1844 %dir %{_kerneldir}/include
1845 %{_kerneldir}/3rdparty
1846 %{_kerneldir}/Documentation
1847 %{_kerneldir}/arch/Kconfig
1848 %{_kerneldir}/arch/arm
1849 %{_kerneldir}/arch/arm64
1850 %{_kerneldir}/arch/um
1851 %{_kerneldir}/arch/x86
1852 %{_kerneldir}/block
1853 %{_kerneldir}/certs
1854 %{_kerneldir}/crypto
1855 %{_kerneldir}/drivers
1856 %{_kerneldir}/fs
1857 %{_kerneldir}/include/acpi
1858 %{_kerneldir}/include/asm-generic
1859 %{_kerneldir}/include/clocksource
1860 %{_kerneldir}/include/crypto
1861 %{_kerneldir}/include/drm
1862 %{_kerneldir}/include/dt-bindings
1863 %{_kerneldir}/include/keys
1864 %{_kerneldir}/include/kunit
1865 %{_kerneldir}/include/kvm
1866 %{_kerneldir}/include/linux
1867 %{_kerneldir}/include/math-emu
1868 %{_kerneldir}/include/media
1869 %{_kerneldir}/include/memory
1870 %{_kerneldir}/include/misc
1871 %{_kerneldir}/include/net
1872 %{_kerneldir}/include/pcmcia
1873 %{_kerneldir}/include/ras
1874 %{_kerneldir}/include/rdma
1875 %{_kerneldir}/include/scsi
1876 %{_kerneldir}/include/soc
1877 %{_kerneldir}/include/sound
1878 %{_kerneldir}/include/target
1879 %{_kerneldir}/include/trace
1880 %{_kerneldir}/include/uapi
1881 %{_kerneldir}/include/vdso/*.h
1882 %{_kerneldir}/include/video
1883 %{_kerneldir}/include/xen
1884 %{_kerneldir}/init
1885 %{_kerneldir}/ipc
1886 %{_kerneldir}/kernel
1887 %{_kerneldir}/lib
1888 %{_kerneldir}/mm
1889 %{_kerneldir}/net
1890 %{_kerneldir}/virt
1891 %{_kerneldir}/samples
1892 %{_kerneldir}/scripts
1893 %{_kerneldir}/security
1894 %{_kerneldir}/sound
1895 %{_kerneldir}/tools
1896 %{_kerneldir}/usr
1897 %{_kerneldir}/COPYING
1898 %{_kerneldir}/CREDITS
1899 %{_kerneldir}/Kbuild
1900 %{_kerneldir}/Kconfig
1901 %{_kerneldir}/MAINTAINERS
1902 %{_kerneldir}/Makefile
1903 %{_kerneldir}/README
1904 %doc README.kernel-sources
1905
1906 %files -n %{kname}-source-latest
1907 %endif
1908
1909 %if %build_doc
1910 %files -n %{kname}-doc
1911 %doc linux-%{tar_ver}/Documentation/*
1912 %endif
1913
1914 %if %build_uheaders
1915 %files -n %{kname}-userspace-headers
1916 %defattr(0644,root,root,0755)
1917 %{_includedir}/asm/
1918 %{_includedir}/asm-generic/
1919 %{_includedir}/drm/
1920 %{_includedir}/linux/
1921 %{_includedir}/misc/
1922 %{_includedir}/mtd/
1923 %{_includedir}/rdma/
1924 %{_includedir}/scsi/
1925 %{_includedir}/sound/
1926 %{_includedir}/video/
1927 %{_includedir}/xen/
1928 %endif
1929
1930 %if %{build_perf}
1931 %files -n perf
1932 %{_bindir}/perf
1933 %{_bindir}/trace
1934 %{_datadir}/perf-core/strace/groups/file
1935 %{_datadir}/perf-core/strace/groups/string
1936 %{_datadir}/doc/perf-tip/tips.txt
1937 %dir %{_libdir}/traceevent
1938 %dir %{_libdir}/traceevent/plugins
1939 %{_libdir}/traceevent/plugins/plugin_*
1940 %dir %{_prefix}/libexec/perf-core
1941 %{_prefix}/libexec/perf-core/*
1942 %{_mandir}/man[1-8]/perf*
1943 %{_sysconfdir}/bash_completion.d/perf
1944 %endif
1945
1946 %if %{build_cpupower}
1947 %files -n cpupower -f cpupower.lang
1948 %config(noreplace) %{_sysconfdir}/sysconfig/cpupower
1949 %{_bindir}/cpupower
1950 %{_datadir}/bash-completion/completions/cpupower
1951 %{_libdir}/libcpupower.so.0
1952 %{_libdir}/libcpupower.so.0.0.1
1953 %{_unitdir}/cpupower.service
1954 %{_mandir}/man[1-8]/cpupower*
1955
1956 %files -n cpupower-devel
1957 %{_libdir}/libcpupower.so
1958 %{_includedir}/cpuidle.h
1959 %{_includedir}/cpufreq.h
1960 %endif
1961
1962 %if %{build_bpftool}
1963 %files -n bpftool
1964 %{_sbindir}/bpftool
1965 %{_sysconfdir}/bash_completion.d/bpftool
1966 %{_mandir}/man8/bpftool-*.8*
1967 %{_mandir}/man8/bpftool.8*
1968 %endif
1969
1970 %if %{build_libbpf}
1971 %files -n %{_lib}bpf0
1972 %{_libdir}/libbpf.so.0
1973 %{_libdir}/libbpf.so.0.5.0
1974
1975 %files -n %{_lib}bpf-devel
1976 %{_libdir}/libbpf.a
1977 %{_libdir}/libbpf.so
1978 %{_libdir}/pkgconfig/libbpf.pc
1979 %{_includedir}/bpf/bpf.h
1980 %{_includedir}/bpf/bpf_core_read.h
1981 %{_includedir}/bpf/bpf_endian.h
1982 %{_includedir}/bpf/bpf_helper_defs.h
1983 %{_includedir}/bpf/bpf_helpers.h
1984 %{_includedir}/bpf/bpf_tracing.h
1985 %{_includedir}/bpf/btf.h
1986 %{_includedir}/bpf/libbpf.h
1987 %{_includedir}/bpf/libbpf_common.h
1988 %{_includedir}/bpf/libbpf_legacy.h
1989 %{_includedir}/bpf/skel_internal.h
1990 %{_includedir}/bpf/xsk.h
1991 %endif

  ViewVC Help
Powered by ViewVC 1.1.30