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

  ViewVC Help
Powered by ViewVC 1.1.30