/[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 1757886 - (show annotations) (download)
Fri Nov 19 17:05:11 2021 UTC (2 years, 5 months ago) by tmb
File size: 58286 byte(s)
- update to 5.15.3
  * drop merged/obsolete patches
- add current -stable queue
- rebase mrproper, python3, shuttle-wmi patches
- update filelists
- update defconfigs
- enable Preasure Stall Information support (mga#29611)
- enable FS_ENCRYPTION support on all arches
- add kernel 5.15 buildfixes for rtl8812au, rtl8821ce
- update aufs to 5.15
- update rtw89 patchset to v7
- ALSA: hda: fix general protection fault in azx_runtime_idle
- drm/i915: Add pci ids and uapi for DG1
- drm/i915: Alder Lake S: Remove force_probe requirement
- drm/i915: Add Raptor Lake S support
- drm/nouveau: recognise GA106
- fbdev: Prevent probing generic drivers if a FB is already registered
- hwmon: (k10temp) Remove unused definitions
- hwmon: (k10temp) Add support for AMD Family 19h Models 10h-1Fh and A0h-AFh
- iomap: Fix inline extent handling in iomap_readpage
- iwlwifi: add new pci id for 6235
- procfs: do not list TID 0 in /proc/<pid>/task
- rtw89: update partition size of firmware header on skb->data
- x86/amd_nb: Add AMD Family 19h Models (10h-1Fh) and (A0h-AFh) PCI IDs
- x86/ACPI/State: Optimize C3 entry on AMD CPUs
- x86/PCI: Ignore E820 reservations for bridge windows on newer systems


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

  ViewVC Help
Powered by ViewVC 1.1.30