/[packages]/backports/8/kernel/current/SPECS/kernel.spec
ViewVC logotype

Contents of /backports/8/kernel/current/SPECS/kernel.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1751943 - (show annotations) (download)
Sun Oct 17 10:02:08 2021 UTC (2 years, 6 months ago) by tmb
File size: 59049 byte(s)
- update to 5.14.13
  * drop merged patches
- x86/fpu: Mask out the invalid MXCSR bits properly
- ACPI: PM: Include alternate AMDI0005 id in special behaviour
- drm/i915/dp: Skip the HW readout of DPCD on disabled encoders
- Revert "proc/wchan: use printk format instead of lookup_symbol_name()"


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

  ViewVC Help
Powered by ViewVC 1.1.30