/[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 1800365 - (show annotations) (download)
Sat Mar 19 15:28:37 2022 UTC (2 years, 1 month ago) by tmb
File size: 59216 byte(s)
- update to 5.15.30
  * drop merged patches


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

  ViewVC Help
Powered by ViewVC 1.1.30