149c803cdSMasahiro Yamada# _arch is undefined if /usr/lib/rpm/platform/*/macros was not included. 249c803cdSMasahiro Yamada%{!?_arch: %define _arch dummy} 349c803cdSMasahiro Yamada%{!?make: %define make make} 449c803cdSMasahiro Yamada%define makeflags %{?_smp_mflags} ARCH=%{ARCH} 549c803cdSMasahiro Yamada 649c803cdSMasahiro YamadaName: kernel 749c803cdSMasahiro YamadaSummary: The Linux Kernel 849c803cdSMasahiro YamadaVersion: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g') 949c803cdSMasahiro YamadaRelease: %{pkg_release} 1049c803cdSMasahiro YamadaLicense: GPL 1149c803cdSMasahiro YamadaGroup: System Environment/Kernel 1249c803cdSMasahiro YamadaVendor: The Linux Community 1349c803cdSMasahiro YamadaURL: https://www.kernel.org 1449c803cdSMasahiro YamadaSource0: linux.tar.gz 1549c803cdSMasahiro YamadaSource1: config 1649c803cdSMasahiro YamadaSource2: diff.patch 1749c803cdSMasahiro YamadaProvides: kernel-%{KERNELRELEASE} 1849c803cdSMasahiro YamadaBuildRequires: bc binutils bison dwarves 19*5bd6bdd0SWangYuliBuildRequires: (elfutils-devel or libdw-devel) 2049c803cdSMasahiro YamadaBuildRequires: (elfutils-libelf-devel or libelf-devel) flex 2149c803cdSMasahiro YamadaBuildRequires: gcc make openssl openssl-devel perl python3 rsync 2249c803cdSMasahiro Yamada 2349c803cdSMasahiro Yamada%description 2449c803cdSMasahiro YamadaThe Linux Kernel, the operating system core itself 2549c803cdSMasahiro Yamada 2649c803cdSMasahiro Yamada%package headers 2749c803cdSMasahiro YamadaSummary: Header files for the Linux kernel for use by glibc 2849c803cdSMasahiro YamadaGroup: Development/System 29e61b190bSRafael AquiniObsoletes: kernel-headers < %{version} 3049c803cdSMasahiro YamadaProvides: kernel-headers = %{version} 3149c803cdSMasahiro Yamada%description headers 3249c803cdSMasahiro YamadaKernel-headers includes the C header files that specify the interface 3349c803cdSMasahiro Yamadabetween the Linux kernel and userspace libraries and programs. The 3449c803cdSMasahiro Yamadaheader files define structures and constants that are needed for 3549c803cdSMasahiro Yamadabuilding most standard programs and are also needed for rebuilding the 3649c803cdSMasahiro Yamadaglibc package. 3749c803cdSMasahiro Yamada 3849c803cdSMasahiro Yamada%if %{with_devel} 3949c803cdSMasahiro Yamada%package devel 4049c803cdSMasahiro YamadaSummary: Development package for building kernel modules to match the %{version} kernel 4149c803cdSMasahiro YamadaGroup: System Environment/Kernel 4249c803cdSMasahiro YamadaAutoReqProv: no 4349c803cdSMasahiro Yamada%description -n kernel-devel 4449c803cdSMasahiro YamadaThis package provides kernel headers and makefiles sufficient to build modules 4549c803cdSMasahiro Yamadaagainst the %{version} kernel package. 4649c803cdSMasahiro Yamada%endif 4749c803cdSMasahiro Yamada 48a7c699d0SUday Shankar%if %{with_debuginfo} 49a7c699d0SUday Shankar# list of debuginfo-related options taken from distribution kernel.spec 50a7c699d0SUday Shankar# files 51a7c699d0SUday Shankar%undefine _include_minidebuginfo 52a7c699d0SUday Shankar%undefine _find_debuginfo_dwz_opts 53a7c699d0SUday Shankar%undefine _unique_build_ids 54a7c699d0SUday Shankar%undefine _unique_debug_names 55a7c699d0SUday Shankar%undefine _unique_debug_srcs 56a7c699d0SUday Shankar%undefine _debugsource_packages 57a7c699d0SUday Shankar%undefine _debuginfo_subpackages 58a7c699d0SUday Shankar%global _find_debuginfo_opts -r 59a7c699d0SUday Shankar%global _missing_build_ids_terminate_build 1 60a7c699d0SUday Shankar%global _no_recompute_build_ids 1 61a7c699d0SUday Shankar%{debug_package} 62a7c699d0SUday Shankar%endif 63a7c699d0SUday Shankar# some (but not all) versions of rpmbuild emit %%debug_package with 64a7c699d0SUday Shankar# %%install. since we've already emitted it manually, that would cause 65a7c699d0SUday Shankar# a package redefinition error. ensure that doesn't happen 66a7c699d0SUday Shankar%define debug_package %{nil} 67a7c699d0SUday Shankar 68a7c699d0SUday Shankar# later, we make all modules executable so that find-debuginfo.sh strips 69a7c699d0SUday Shankar# them up. but they don't actually need to be executable, so remove the 70a7c699d0SUday Shankar# executable bit, taking care to do it _after_ find-debuginfo.sh has run 71a7c699d0SUday Shankar%define __spec_install_post \ 72a7c699d0SUday Shankar %{?__debug_package:%{__debug_install_post}} \ 73a7c699d0SUday Shankar %{__arch_install_post} \ 74a7c699d0SUday Shankar %{__os_install_post} \ 75a7c699d0SUday Shankar find %{buildroot}/lib/modules/%{KERNELRELEASE} -name "*.ko" -type f \\\ 76a7c699d0SUday Shankar | xargs --no-run-if-empty chmod u-x 77a7c699d0SUday Shankar 7849c803cdSMasahiro Yamada%prep 7949c803cdSMasahiro Yamada%setup -q -n linux 8049c803cdSMasahiro Yamadacp %{SOURCE1} .config 8149c803cdSMasahiro Yamadapatch -p1 < %{SOURCE2} 8249c803cdSMasahiro Yamada 8349c803cdSMasahiro Yamada%build 8449c803cdSMasahiro Yamada%{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release} 8549c803cdSMasahiro Yamada 8649c803cdSMasahiro Yamada%install 87358de8b4SJose Ignacio Tornos Martinezmkdir -p %{buildroot}/lib/modules/%{KERNELRELEASE} 88358de8b4SJose Ignacio Tornos Martinezcp $(%{make} %{makeflags} -s image_name) %{buildroot}/lib/modules/%{KERNELRELEASE}/vmlinuz 898d1001f7SMasahiro Yamada# DEPMOD=true makes depmod no-op. We do not package depmod-generated files. 908d1001f7SMasahiro Yamada%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} DEPMOD=true modules_install 9149c803cdSMasahiro Yamada%{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 92358de8b4SJose Ignacio Tornos Martinezcp System.map %{buildroot}/lib/modules/%{KERNELRELEASE} 93358de8b4SJose Ignacio Tornos Martinezcp .config %{buildroot}/lib/modules/%{KERNELRELEASE}/config 94097f1200SJose Ignacio Tornos Martinezif %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='test -d ${srctree}/arch/${SRCARCH}/boot/dts' 2>/dev/null; then 95097f1200SJose Ignacio Tornos Martinez %{make} %{makeflags} INSTALL_DTBS_PATH=%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb dtbs_install 96097f1200SJose Ignacio Tornos Martinezfi 9749c803cdSMasahiro Yamadaln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build 9849c803cdSMasahiro Yamada%if %{with_devel} 9949c803cdSMasahiro Yamada%{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}' 10049c803cdSMasahiro Yamada%endif 10149c803cdSMasahiro Yamada 102615b3a3dSMasahiro Yamada{ 1038d1001f7SMasahiro Yamada echo "/lib/modules/%{KERNELRELEASE}" 104615b3a3dSMasahiro Yamada 105615b3a3dSMasahiro Yamada for x in alias alias.bin builtin.alias.bin builtin.bin dep dep.bin \ 106d01c1407SJose Ignacio Tornos Martinez devname softdep symbols symbols.bin weakdep; do 107615b3a3dSMasahiro Yamada echo "%ghost /lib/modules/%{KERNELRELEASE}/modules.${x}" 108615b3a3dSMasahiro Yamada done 109615b3a3dSMasahiro Yamada 110bca17edbSMasahiro Yamada for x in System.map config vmlinuz; do 111bca17edbSMasahiro Yamada echo "%ghost /boot/${x}-%{KERNELRELEASE}" 112bca17edbSMasahiro Yamada done 113bca17edbSMasahiro Yamada 114097f1200SJose Ignacio Tornos Martinez if [ -d "%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb" ];then 115097f1200SJose Ignacio Tornos Martinez find "%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb" -printf "%%%ghost /boot/dtb-%{KERNELRELEASE}/%%P\n" 116097f1200SJose Ignacio Tornos Martinez fi 117097f1200SJose Ignacio Tornos Martinez 118615b3a3dSMasahiro Yamada echo "%exclude /lib/modules/%{KERNELRELEASE}/build" 119615b3a3dSMasahiro Yamada} > %{buildroot}/kernel.list 120615b3a3dSMasahiro Yamada 121a7c699d0SUday Shankar# make modules executable so that find-debuginfo.sh strips them. this 122a7c699d0SUday Shankar# will be undone later in %%__spec_install_post 123a7c699d0SUday Shankarfind %{buildroot}/lib/modules/%{KERNELRELEASE} -name "*.ko" -type f \ 124a7c699d0SUday Shankar | xargs --no-run-if-empty chmod u+x 125a7c699d0SUday Shankar 126a7c699d0SUday Shankar%if %{with_debuginfo} 127a7c699d0SUday Shankar# copying vmlinux directly to the debug directory means it will not get 128a7c699d0SUday Shankar# stripped (but its source paths will still be collected + fixed up) 129a7c699d0SUday Shankarmkdir -p %{buildroot}/usr/lib/debug/lib/modules/%{KERNELRELEASE} 130a7c699d0SUday Shankarcp vmlinux %{buildroot}/usr/lib/debug/lib/modules/%{KERNELRELEASE} 131a7c699d0SUday Shankar%endif 132a7c699d0SUday Shankar 13349c803cdSMasahiro Yamada%clean 13449c803cdSMasahiro Yamadarm -rf %{buildroot} 135a7c699d0SUday Shankarrm -f debugfiles.list debuglinks.list debugsourcefiles.list debugsources.list \ 136a7c699d0SUday Shankar elfbins.list 13749c803cdSMasahiro Yamada 13849c803cdSMasahiro Yamada%post 139358de8b4SJose Ignacio Tornos Martinezif [ -x /usr/bin/kernel-install ]; then 140358de8b4SJose Ignacio Tornos Martinez /usr/bin/kernel-install add %{KERNELRELEASE} /lib/modules/%{KERNELRELEASE}/vmlinuz 14149c803cdSMasahiro Yamadafi 142358de8b4SJose Ignacio Tornos Martinezfor file in vmlinuz System.map config; do 143358de8b4SJose Ignacio Tornos Martinez if ! cmp --silent "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}"; then 144358de8b4SJose Ignacio Tornos Martinez cp "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}" 145358de8b4SJose Ignacio Tornos Martinez fi 146358de8b4SJose Ignacio Tornos Martinezdone 147097f1200SJose Ignacio Tornos Martinezif [ -d "/lib/modules/%{KERNELRELEASE}/dtb" ] && \ 148097f1200SJose Ignacio Tornos Martinez ! diff -rq "/lib/modules/%{KERNELRELEASE}/dtb" "/boot/dtb-%{KERNELRELEASE}" >/dev/null 2>&1; then 149097f1200SJose Ignacio Tornos Martinez rm -rf "/boot/dtb-%{KERNELRELEASE}" 150097f1200SJose Ignacio Tornos Martinez cp -r "/lib/modules/%{KERNELRELEASE}/dtb" "/boot/dtb-%{KERNELRELEASE}" 151097f1200SJose Ignacio Tornos Martinezfi 152615b3a3dSMasahiro Yamadaif [ ! -e "/lib/modules/%{KERNELRELEASE}/modules.dep" ]; then 153615b3a3dSMasahiro Yamada /usr/sbin/depmod %{KERNELRELEASE} 154615b3a3dSMasahiro Yamadafi 15549c803cdSMasahiro Yamada 15649c803cdSMasahiro Yamada%preun 157fee9b6d1SMasahiro Yamadaif [ -x /usr/bin/kernel-install ]; then 15849c803cdSMasahiro Yamadakernel-install remove %{KERNELRELEASE} 15949c803cdSMasahiro Yamadafi 16049c803cdSMasahiro Yamada 161615b3a3dSMasahiro Yamada%files -f %{buildroot}/kernel.list 16249c803cdSMasahiro Yamada%defattr (-, root, root) 163615b3a3dSMasahiro Yamada%exclude /kernel.list 16449c803cdSMasahiro Yamada 16549c803cdSMasahiro Yamada%files headers 16649c803cdSMasahiro Yamada%defattr (-, root, root) 16749c803cdSMasahiro Yamada/usr/include 16849c803cdSMasahiro Yamada 16949c803cdSMasahiro Yamada%if %{with_devel} 17049c803cdSMasahiro Yamada%files devel 17149c803cdSMasahiro Yamada%defattr (-, root, root) 17249c803cdSMasahiro Yamada/usr/src/kernels/%{KERNELRELEASE} 17349c803cdSMasahiro Yamada/lib/modules/%{KERNELRELEASE}/build 17449c803cdSMasahiro Yamada%endif 175