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

  ViewVC Help
Powered by ViewVC 1.1.30