/[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 1757911 - (show annotations) (download)
Fri Nov 19 17:52:30 2021 UTC (2 years, 4 months ago) by tmb
File size: 58367 byte(s)
- Revert "ACPI: scan: Release PM resources blocked by unused objects"

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

  ViewVC Help
Powered by ViewVC 1.1.30