xref: /linux-6.15/scripts/package/mkspec (revision d4f65127)
11da177e4SLinus Torvalds#!/bin/sh
21da177e4SLinus Torvalds#
32174d292SMike Marciniszyn#	Output a simple RPM spec file.
4169dd780SArend van Spriel#	This version assumes a minimum of RPM 4.13
51da177e4SLinus Torvalds#
61da177e4SLinus Torvalds#	The only gothic bit here is redefining install_post to avoid
71da177e4SLinus Torvalds#	stripping the symbols from files in the kernel which we want
81da177e4SLinus Torvalds#
91da177e4SLinus Torvalds#	Patched for non-x86 by Opencon (L) 2002 <[email protected]>
101da177e4SLinus Torvalds#
111da177e4SLinus Torvalds
121da177e4SLinus Torvalds# how we were called determines which rpms we build and how we build them
135289c322SMasahiro Yamadaif [ "$1" = prebuilt ]; then
148c5d4b64SMasahiro Yamada	S=DEL
151da177e4SLinus Torvaldselse
168c5d4b64SMasahiro Yamada	S=
1781f59a26SMasahiro Yamada
1881f59a26SMasahiro Yamada	mkdir -p rpmbuild/SOURCES
1981f59a26SMasahiro Yamada	cp linux.tar.gz rpmbuild/SOURCES
2081f59a26SMasahiro Yamada	cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
21aa7d233fSMasahiro Yamada	"${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch
221da177e4SLinus Torvaldsfi
231da177e4SLinus Torvalds
2481f59a26SMasahiro Yamadaif grep -q CONFIG_MODULES=y include/config/auto.conf; then
250b7f12f5SMasahiro Yamada	M=
260b7f12f5SMasahiro Yamadaelse
270b7f12f5SMasahiro Yamada	M=DEL
280b7f12f5SMasahiro Yamadafi
290b7f12f5SMasahiro Yamada
308c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file
318c5d4b64SMasahiro Yamada#
328c5d4b64SMasahiro Yamada# Labels:
338c5d4b64SMasahiro Yamada#  $S: this line is enabled only when building source package
340b7f12f5SMasahiro Yamada#  $M: this line is enabled only when CONFIG_MODULES is enabled
358c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF
36a06d9ef8SMasahiro Yamada%define ARCH ${ARCH}
3793ed5605SMasahiro Yamada%define KERNELRELEASE ${KERNELRELEASE}
38a06d9ef8SMasahiro Yamada
39*d4f65127SMasahiro Yamada# _arch is undefined if /usr/lib/rpm/platform/*/macros was not included.
40*d4f65127SMasahiro Yamada%{!?_arch: %define _arch dummy}
4119286825SMasahiro Yamada%{!?make: %define make make}
42a06d9ef8SMasahiro Yamada%define makeflags %{?_smp_mflags} ARCH=%{ARCH}
4319286825SMasahiro Yamada
448c5d4b64SMasahiro Yamada	Name: kernel
458c5d4b64SMasahiro Yamada	Summary: The Linux Kernel
46d5d2d4ccSMasahiro Yamada	Version: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g')
478c5d4b64SMasahiro Yamada	Release: $(cat .version 2>/dev/null || echo 1)
488c5d4b64SMasahiro Yamada	License: GPL
498c5d4b64SMasahiro Yamada	Group: System Environment/Kernel
508c5d4b64SMasahiro Yamada	Vendor: The Linux Community
5116a122c7SAlexander A. Klimov	URL: https://www.kernel.org
526fc91752SMasahiro Yamada$S	Source0: linux.tar.gz
5381f59a26SMasahiro Yamada$S	Source1: config
5405e96e96SMasahiro Yamada$S	Source2: diff.patch
5593ed5605SMasahiro Yamada	Provides: kernel-%{KERNELRELEASE}
5602a893bcSMasahiro Yamada$S	BuildRequires: bc binutils bison dwarves
5702a893bcSMasahiro Yamada$S	BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
588818039fSIvan Vecera$S	BuildRequires: gcc make openssl openssl-devel perl python3 rsync
598818039fSIvan Vecera
608c5d4b64SMasahiro Yamada	%define __spec_install_post /usr/lib/rpm/brp-compress || :
618c5d4b64SMasahiro Yamada	%define debug_package %{nil}
621da177e4SLinus Torvalds
638c5d4b64SMasahiro Yamada	%description
648c5d4b64SMasahiro Yamada	The Linux Kernel, the operating system core itself
658c5d4b64SMasahiro Yamada
668c5d4b64SMasahiro Yamada	%package headers
678c5d4b64SMasahiro Yamada	Summary: Header files for the Linux kernel for use by glibc
688c5d4b64SMasahiro Yamada	Group: Development/System
698c5d4b64SMasahiro Yamada	Obsoletes: kernel-headers
708c5d4b64SMasahiro Yamada	Provides: kernel-headers = %{version}
718c5d4b64SMasahiro Yamada	%description headers
728c5d4b64SMasahiro Yamada	Kernel-headers includes the C header files that specify the interface
738c5d4b64SMasahiro Yamada	between the Linux kernel and userspace libraries and programs.  The
748c5d4b64SMasahiro Yamada	header files define structures and constants that are needed for
758c5d4b64SMasahiro Yamada	building most standard programs and are also needed for rebuilding the
768c5d4b64SMasahiro Yamada	glibc package.
778c5d4b64SMasahiro Yamada
780b7f12f5SMasahiro Yamada$S$M	%package devel
795d8e41b5SMasahiro Yamada$S$M	Summary: Development package for building kernel modules to match the %{version} kernel
800b7f12f5SMasahiro Yamada$S$M	Group: System Environment/Kernel
810b7f12f5SMasahiro Yamada$S$M	AutoReqProv: no
820b7f12f5SMasahiro Yamada$S$M	%description -n kernel-devel
830b7f12f5SMasahiro Yamada$S$M	This package provides kernel headers and makefiles sufficient to build modules
845d8e41b5SMasahiro Yamada$S$M	against the %{version} kernel package.
850b7f12f5SMasahiro Yamada$S$M
868c5d4b64SMasahiro Yamada$S	%prep
876fc91752SMasahiro Yamada$S	%setup -q -n linux
8881f59a26SMasahiro Yamada$S	cp %{SOURCE1} .config
8905e96e96SMasahiro Yamada$S	patch -p1 < %{SOURCE2}
908c5d4b64SMasahiro Yamada$S
918c5d4b64SMasahiro Yamada$S	%build
9293ed5605SMasahiro Yamada$S	%{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release}
938c5d4b64SMasahiro Yamada$S
948c5d4b64SMasahiro Yamada	%install
95002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot
968c5d4b64SMasahiro Yamada	%ifarch ia64
97002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot/efi
9893ed5605SMasahiro Yamada	cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE}
9993ed5605SMasahiro Yamada	ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/
1008c5d4b64SMasahiro Yamada	%else
10193ed5605SMasahiro Yamada	cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE}
1028c5d4b64SMasahiro Yamada	%endif
103fe809b82SMasahiro Yamada$M	%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
104fe809b82SMasahiro Yamada	%{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
10593ed5605SMasahiro Yamada	cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE}
10693ed5605SMasahiro Yamada	cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
10793ed5605SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/build
10893ed5605SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/source
109fe66b5d2SMasahiro Yamada$S$M	%{make} %{makeflags} run-command KBUILD_RUN_COMMAND='\${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
11093ed5605SMasahiro Yamada$S$M	cd %{buildroot}/lib/modules/%{KERNELRELEASE}
11193ed5605SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/%{KERNELRELEASE} build
11293ed5605SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/%{KERNELRELEASE} source
1138c5d4b64SMasahiro Yamada
1148c5d4b64SMasahiro Yamada	%clean
115002494d8SMasahiro Yamada	rm -rf %{buildroot}
1168c5d4b64SMasahiro Yamada
1178c5d4b64SMasahiro Yamada	%post
11893ed5605SMasahiro Yamada	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then
11993ed5605SMasahiro Yamada	cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm
12093ed5605SMasahiro Yamada	cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm
12193ed5605SMasahiro Yamada	rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE}
12293ed5605SMasahiro Yamada	/sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
12393ed5605SMasahiro Yamada	rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
1241da177e4SLinus Torvalds	fi
1251da177e4SLinus Torvalds
1268c5d4b64SMasahiro Yamada	%preun
1278c5d4b64SMasahiro Yamada	if [ -x /sbin/new-kernel-pkg ]; then
12893ed5605SMasahiro Yamada	new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img
129eea6f62bSJavier Martinez Canillas	elif [ -x /usr/bin/kernel-install ]; then
13093ed5605SMasahiro Yamada	kernel-install remove %{KERNELRELEASE}
1311da177e4SLinus Torvalds	fi
1321da177e4SLinus Torvalds
1338c5d4b64SMasahiro Yamada	%postun
1348c5d4b64SMasahiro Yamada	if [ -x /sbin/update-bootloader ]; then
13593ed5605SMasahiro Yamada	/sbin/update-bootloader --remove %{KERNELRELEASE}
136b9a54424SJérôme Glisse	fi
1372174d292SMike Marciniszyn
1388c5d4b64SMasahiro Yamada	%files
1398c5d4b64SMasahiro Yamada	%defattr (-, root, root)
14093ed5605SMasahiro Yamada$M	/lib/modules/%{KERNELRELEASE}
14193ed5605SMasahiro Yamada$M	%exclude /lib/modules/%{KERNELRELEASE}/build
14293ed5605SMasahiro Yamada$M	%exclude /lib/modules/%{KERNELRELEASE}/source
1438c5d4b64SMasahiro Yamada	/boot/*
1448c5d4b64SMasahiro Yamada
1458c5d4b64SMasahiro Yamada	%files headers
1468c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1478c5d4b64SMasahiro Yamada	/usr/include
1480b7f12f5SMasahiro Yamada$S$M
1490b7f12f5SMasahiro Yamada$S$M	%files devel
1500b7f12f5SMasahiro Yamada$S$M	%defattr (-, root, root)
15193ed5605SMasahiro Yamada$S$M	/usr/src/kernels/%{KERNELRELEASE}
15293ed5605SMasahiro Yamada$S$M	/lib/modules/%{KERNELRELEASE}/build
15393ed5605SMasahiro Yamada$S$M	/lib/modules/%{KERNELRELEASE}/source
1548c5d4b64SMasahiro YamadaEOF
155