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 8Name: kernel 9Summary: The Linux Kernel 10Version: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g') 11Release: %{pkg_release} 12License: GPL 13Group: System Environment/Kernel 14Vendor: The Linux Community 15URL: https://www.kernel.org 16Source0: linux.tar.gz 17Source1: config 18Source2: diff.patch 19Provides: kernel-%{KERNELRELEASE} 20BuildRequires: bc binutils bison dwarves 21BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 22BuildRequires: gcc make openssl openssl-devel perl python3 rsync 23 24%description 25The Linux Kernel, the operating system core itself 26 27%package headers 28Summary: Header files for the Linux kernel for use by glibc 29Group: Development/System 30Obsoletes: kernel-headers < %{version} 31Provides: kernel-headers = %{version} 32%description headers 33Kernel-headers includes the C header files that specify the interface 34between the Linux kernel and userspace libraries and programs. The 35header files define structures and constants that are needed for 36building most standard programs and are also needed for rebuilding the 37glibc package. 38 39%if %{with_devel} 40%package devel 41Summary: Development package for building kernel modules to match the %{version} kernel 42Group: System Environment/Kernel 43AutoReqProv: no 44%description -n kernel-devel 45This package provides kernel headers and makefiles sufficient to build modules 46against the %{version} kernel package. 47%endif 48 49%prep 50%setup -q -n linux 51cp %{SOURCE1} .config 52patch -p1 < %{SOURCE2} 53 54%build 55%{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release} 56 57%install 58mkdir -p %{buildroot}/lib/modules/%{KERNELRELEASE} 59cp $(%{make} %{makeflags} -s image_name) %{buildroot}/lib/modules/%{KERNELRELEASE}/vmlinuz 60# DEPMOD=true makes depmod no-op. We do not package depmod-generated files. 61%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} DEPMOD=true modules_install 62%{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 63cp System.map %{buildroot}/lib/modules/%{KERNELRELEASE} 64cp .config %{buildroot}/lib/modules/%{KERNELRELEASE}/config 65if %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='test -d ${srctree}/arch/${SRCARCH}/boot/dts' 2>/dev/null; then 66 %{make} %{makeflags} INSTALL_DTBS_PATH=%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb dtbs_install 67fi 68ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build 69%if %{with_devel} 70%{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}' 71%endif 72 73{ 74 echo "/lib/modules/%{KERNELRELEASE}" 75 76 for x in alias alias.bin builtin.alias.bin builtin.bin dep dep.bin \ 77 devname softdep symbols symbols.bin weakdep; do 78 echo "%ghost /lib/modules/%{KERNELRELEASE}/modules.${x}" 79 done 80 81 for x in System.map config vmlinuz; do 82 echo "%ghost /boot/${x}-%{KERNELRELEASE}" 83 done 84 85 if [ -d "%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb" ];then 86 find "%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb" -printf "%%%ghost /boot/dtb-%{KERNELRELEASE}/%%P\n" 87 fi 88 89 echo "%exclude /lib/modules/%{KERNELRELEASE}/build" 90} > %{buildroot}/kernel.list 91 92%clean 93rm -rf %{buildroot} 94 95%post 96if [ -x /usr/bin/kernel-install ]; then 97 /usr/bin/kernel-install add %{KERNELRELEASE} /lib/modules/%{KERNELRELEASE}/vmlinuz 98fi 99for file in vmlinuz System.map config; do 100 if ! cmp --silent "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}"; then 101 cp "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}" 102 fi 103done 104if [ -d "/lib/modules/%{KERNELRELEASE}/dtb" ] && \ 105 ! diff -rq "/lib/modules/%{KERNELRELEASE}/dtb" "/boot/dtb-%{KERNELRELEASE}" >/dev/null 2>&1; then 106 rm -rf "/boot/dtb-%{KERNELRELEASE}" 107 cp -r "/lib/modules/%{KERNELRELEASE}/dtb" "/boot/dtb-%{KERNELRELEASE}" 108fi 109if [ ! -e "/lib/modules/%{KERNELRELEASE}/modules.dep" ]; then 110 /usr/sbin/depmod %{KERNELRELEASE} 111fi 112 113%preun 114if [ -x /usr/bin/kernel-install ]; then 115kernel-install remove %{KERNELRELEASE} 116fi 117 118%files -f %{buildroot}/kernel.list 119%defattr (-, root, root) 120%exclude /kernel.list 121 122%files headers 123%defattr (-, root, root) 124/usr/include 125 126%if %{with_devel} 127%files devel 128%defattr (-, root, root) 129/usr/src/kernels/%{KERNELRELEASE} 130/lib/modules/%{KERNELRELEASE}/build 131%endif 132