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

  ViewVC Help
Powered by ViewVC 1.1.30