| 1 | # _arch is undefined if /usr/lib/rpm/platform/*/macros was not included. |
| 2 | %{!?_arch: %define _arch dummy} |
| 3 | %{!?make: %define make make} |
| 4 | %define makeflags %{?_smp_mflags} ARCH=%{ARCH} |
| 5 | %define __spec_install_post /usr/lib/rpm/brp-compress || : |
| 6 | %define debug_package %{nil} |
| 7 | |
| 8 | Name: kernel |
| 9 | Summary: The Linux Kernel |
| 10 | Version: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g') |
| 11 | Release: %{pkg_release} |
| 12 | License: GPL |
| 13 | Group: System Environment/Kernel |
| 14 | Vendor: The Linux Community |
| 15 | URL: https://www.kernel.org |
| 16 | Source0: linux.tar.gz |
| 17 | Source1: config |
| 18 | Source2: diff.patch |
| 19 | Provides: kernel-%{KERNELRELEASE} |
| 20 | BuildRequires: bc binutils bison dwarves |
| 21 | BuildRequires: (elfutils-libelf-devel or libelf-devel) flex |
| 22 | BuildRequires: gcc make openssl openssl-devel perl python3 rsync |
| 23 | |
| 24 | %description |
| 25 | The Linux Kernel, the operating system core itself |
| 26 | |
| 27 | %package headers |
| 28 | Summary: Header files for the Linux kernel for use by glibc |
| 29 | Group: Development/System |
| 30 | Obsoletes: kernel-headers |
| 31 | Provides: kernel-headers = %{version} |
| 32 | %description headers |
| 33 | Kernel-headers includes the C header files that specify the interface |
| 34 | between the Linux kernel and userspace libraries and programs. The |
| 35 | header files define structures and constants that are needed for |
| 36 | building most standard programs and are also needed for rebuilding the |
| 37 | glibc package. |
| 38 | |
| 39 | %if %{with_devel} |
| 40 | %package devel |
| 41 | Summary: Development package for building kernel modules to match the %{version} kernel |
| 42 | Group: System Environment/Kernel |
| 43 | AutoReqProv: no |
| 44 | %description -n kernel-devel |
| 45 | This package provides kernel headers and makefiles sufficient to build modules |
| 46 | against the %{version} kernel package. |
| 47 | %endif |
| 48 | |
| 49 | %prep |
| 50 | %setup -q -n linux |
| 51 | cp %{SOURCE1} .config |
| 52 | patch -p1 < %{SOURCE2} |
| 53 | |
| 54 | %build |
| 55 | %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release} |
| 56 | |
| 57 | %install |
| 58 | mkdir -p %{buildroot}/boot |
| 59 | cp $(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE} |
| 60 | %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install |
| 61 | %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install |
| 62 | cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE} |
| 63 | cp .config %{buildroot}/boot/config-%{KERNELRELEASE} |
| 64 | ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build |
| 65 | %if %{with_devel} |
| 66 | %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}' |
| 67 | %endif |
| 68 | |
| 69 | %clean |
| 70 | rm -rf %{buildroot} |
| 71 | |
| 72 | %post |
| 73 | if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then |
| 74 | cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm |
| 75 | cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm |
| 76 | rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE} |
| 77 | /sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm |
| 78 | rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm |
| 79 | fi |
| 80 | |
| 81 | %preun |
| 82 | if [ -x /sbin/new-kernel-pkg ]; then |
| 83 | new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img |
| 84 | elif [ -x /usr/bin/kernel-install ]; then |
| 85 | kernel-install remove %{KERNELRELEASE} |
| 86 | fi |
| 87 | |
| 88 | %postun |
| 89 | if [ -x /sbin/update-bootloader ]; then |
| 90 | /sbin/update-bootloader --remove %{KERNELRELEASE} |
| 91 | fi |
| 92 | |
| 93 | %files |
| 94 | %defattr (-, root, root) |
| 95 | /lib/modules/%{KERNELRELEASE} |
| 96 | %exclude /lib/modules/%{KERNELRELEASE}/build |
| 97 | /boot/* |
| 98 | |
| 99 | %files headers |
| 100 | %defattr (-, root, root) |
| 101 | /usr/include |
| 102 | |
| 103 | %if %{with_devel} |
| 104 | %files devel |
| 105 | %defattr (-, root, root) |
| 106 | /usr/src/kernels/%{KERNELRELEASE} |
| 107 | /lib/modules/%{KERNELRELEASE}/build |
| 108 | %endif |