xref: /linux-6.15/scripts/package/kernel.spec (revision bca17edb)
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%define __spec_install_post /usr/lib/rpm/brp-compress || :
649c803cdSMasahiro Yamada%define debug_package %{nil}
749c803cdSMasahiro Yamada
849c803cdSMasahiro YamadaName: kernel
949c803cdSMasahiro YamadaSummary: The Linux Kernel
1049c803cdSMasahiro YamadaVersion: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g')
1149c803cdSMasahiro YamadaRelease: %{pkg_release}
1249c803cdSMasahiro YamadaLicense: GPL
1349c803cdSMasahiro YamadaGroup: System Environment/Kernel
1449c803cdSMasahiro YamadaVendor: The Linux Community
1549c803cdSMasahiro YamadaURL: https://www.kernel.org
1649c803cdSMasahiro YamadaSource0: linux.tar.gz
1749c803cdSMasahiro YamadaSource1: config
1849c803cdSMasahiro YamadaSource2: diff.patch
1949c803cdSMasahiro YamadaProvides: kernel-%{KERNELRELEASE}
2049c803cdSMasahiro YamadaBuildRequires: bc binutils bison dwarves
2149c803cdSMasahiro YamadaBuildRequires: (elfutils-libelf-devel or libelf-devel) flex
2249c803cdSMasahiro YamadaBuildRequires: gcc make openssl openssl-devel perl python3 rsync
2349c803cdSMasahiro Yamada
2449c803cdSMasahiro Yamada%description
2549c803cdSMasahiro YamadaThe Linux Kernel, the operating system core itself
2649c803cdSMasahiro Yamada
2749c803cdSMasahiro Yamada%package headers
2849c803cdSMasahiro YamadaSummary: Header files for the Linux kernel for use by glibc
2949c803cdSMasahiro YamadaGroup: Development/System
3049c803cdSMasahiro YamadaObsoletes: kernel-headers
3149c803cdSMasahiro YamadaProvides: kernel-headers = %{version}
3249c803cdSMasahiro Yamada%description headers
3349c803cdSMasahiro YamadaKernel-headers includes the C header files that specify the interface
3449c803cdSMasahiro Yamadabetween the Linux kernel and userspace libraries and programs.  The
3549c803cdSMasahiro Yamadaheader files define structures and constants that are needed for
3649c803cdSMasahiro Yamadabuilding most standard programs and are also needed for rebuilding the
3749c803cdSMasahiro Yamadaglibc package.
3849c803cdSMasahiro Yamada
3949c803cdSMasahiro Yamada%if %{with_devel}
4049c803cdSMasahiro Yamada%package devel
4149c803cdSMasahiro YamadaSummary: Development package for building kernel modules to match the %{version} kernel
4249c803cdSMasahiro YamadaGroup: System Environment/Kernel
4349c803cdSMasahiro YamadaAutoReqProv: no
4449c803cdSMasahiro Yamada%description -n kernel-devel
4549c803cdSMasahiro YamadaThis package provides kernel headers and makefiles sufficient to build modules
4649c803cdSMasahiro Yamadaagainst the %{version} kernel package.
4749c803cdSMasahiro Yamada%endif
4849c803cdSMasahiro Yamada
4949c803cdSMasahiro Yamada%prep
5049c803cdSMasahiro Yamada%setup -q -n linux
5149c803cdSMasahiro Yamadacp %{SOURCE1} .config
5249c803cdSMasahiro Yamadapatch -p1 < %{SOURCE2}
5349c803cdSMasahiro Yamada
5449c803cdSMasahiro Yamada%build
5549c803cdSMasahiro Yamada%{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release}
5649c803cdSMasahiro Yamada
5749c803cdSMasahiro Yamada%install
58358de8b4SJose Ignacio Tornos Martinezmkdir -p %{buildroot}/lib/modules/%{KERNELRELEASE}
59358de8b4SJose Ignacio Tornos Martinezcp $(%{make} %{makeflags} -s image_name) %{buildroot}/lib/modules/%{KERNELRELEASE}/vmlinuz
6049c803cdSMasahiro Yamada%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
6149c803cdSMasahiro Yamada%{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
62358de8b4SJose Ignacio Tornos Martinezcp System.map %{buildroot}/lib/modules/%{KERNELRELEASE}
63358de8b4SJose Ignacio Tornos Martinezcp .config %{buildroot}/lib/modules/%{KERNELRELEASE}/config
6449c803cdSMasahiro Yamadaln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build
6549c803cdSMasahiro Yamada%if %{with_devel}
6649c803cdSMasahiro Yamada%{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
6749c803cdSMasahiro Yamada%endif
6849c803cdSMasahiro Yamada
69615b3a3dSMasahiro Yamada{
70615b3a3dSMasahiro Yamada	for x in System.map config kernel modules.builtin \
71615b3a3dSMasahiro Yamada			modules.builtin.modinfo modules.order vmlinuz; do
72615b3a3dSMasahiro Yamada		echo "/lib/modules/%{KERNELRELEASE}/${x}"
73615b3a3dSMasahiro Yamada	done
74615b3a3dSMasahiro Yamada
75615b3a3dSMasahiro Yamada	for x in alias alias.bin builtin.alias.bin builtin.bin dep dep.bin \
76615b3a3dSMasahiro Yamada					devname softdep symbols symbols.bin; do
77615b3a3dSMasahiro Yamada		echo "%ghost /lib/modules/%{KERNELRELEASE}/modules.${x}"
78615b3a3dSMasahiro Yamada	done
79615b3a3dSMasahiro Yamada
80*bca17edbSMasahiro Yamada	for x in System.map config vmlinuz; do
81*bca17edbSMasahiro Yamada		echo "%ghost /boot/${x}-%{KERNELRELEASE}"
82*bca17edbSMasahiro Yamada	done
83*bca17edbSMasahiro Yamada
84615b3a3dSMasahiro Yamada	echo "%exclude /lib/modules/%{KERNELRELEASE}/build"
85615b3a3dSMasahiro Yamada} > %{buildroot}/kernel.list
86615b3a3dSMasahiro Yamada
8749c803cdSMasahiro Yamada%clean
8849c803cdSMasahiro Yamadarm -rf %{buildroot}
8949c803cdSMasahiro Yamada
9049c803cdSMasahiro Yamada%post
91358de8b4SJose Ignacio Tornos Martinezif [ -x /usr/bin/kernel-install ]; then
92358de8b4SJose Ignacio Tornos Martinez	/usr/bin/kernel-install add %{KERNELRELEASE} /lib/modules/%{KERNELRELEASE}/vmlinuz
9349c803cdSMasahiro Yamadafi
94358de8b4SJose Ignacio Tornos Martinezfor file in vmlinuz System.map config; do
95358de8b4SJose Ignacio Tornos Martinez	if ! cmp --silent "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}"; then
96358de8b4SJose Ignacio Tornos Martinez		cp "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}"
97358de8b4SJose Ignacio Tornos Martinez	fi
98358de8b4SJose Ignacio Tornos Martinezdone
99615b3a3dSMasahiro Yamadaif [ ! -e "/lib/modules/%{KERNELRELEASE}/modules.dep" ]; then
100615b3a3dSMasahiro Yamada	/usr/sbin/depmod %{KERNELRELEASE}
101615b3a3dSMasahiro Yamadafi
10249c803cdSMasahiro Yamada
10349c803cdSMasahiro Yamada%preun
10449c803cdSMasahiro Yamadaif [ -x /sbin/new-kernel-pkg ]; then
10549c803cdSMasahiro Yamadanew-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img
10649c803cdSMasahiro Yamadaelif [ -x /usr/bin/kernel-install ]; then
10749c803cdSMasahiro Yamadakernel-install remove %{KERNELRELEASE}
10849c803cdSMasahiro Yamadafi
10949c803cdSMasahiro Yamada
11049c803cdSMasahiro Yamada%postun
11149c803cdSMasahiro Yamadaif [ -x /sbin/update-bootloader ]; then
11249c803cdSMasahiro Yamada/sbin/update-bootloader --remove %{KERNELRELEASE}
11349c803cdSMasahiro Yamadafi
11449c803cdSMasahiro Yamada
115615b3a3dSMasahiro Yamada%files -f %{buildroot}/kernel.list
11649c803cdSMasahiro Yamada%defattr (-, root, root)
117615b3a3dSMasahiro Yamada%exclude /kernel.list
11849c803cdSMasahiro Yamada
11949c803cdSMasahiro Yamada%files headers
12049c803cdSMasahiro Yamada%defattr (-, root, root)
12149c803cdSMasahiro Yamada/usr/include
12249c803cdSMasahiro Yamada
12349c803cdSMasahiro Yamada%if %{with_devel}
12449c803cdSMasahiro Yamada%files devel
12549c803cdSMasahiro Yamada%defattr (-, root, root)
12649c803cdSMasahiro Yamada/usr/src/kernels/%{KERNELRELEASE}
12749c803cdSMasahiro Yamada/lib/modules/%{KERNELRELEASE}/build
12849c803cdSMasahiro Yamada%endif
129