/[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 1762263 - (show annotations) (download)
Thu Dec 16 19:23:38 2021 UTC (2 years, 4 months ago) by tmb
File size: 58866 byte(s)
- revert "tools build: Remove needless libpython-version feature check
  that breaks test-all fast path" as it breaks bpftool build


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

  ViewVC Help
Powered by ViewVC 1.1.30