xref: /linux-6.15/scripts/package/mkspec (revision 2a291fc3)
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
13*2a291fc3SMasahiro Yamadaif [ -z "$1" ]; then
1481f59a26SMasahiro Yamada	mkdir -p rpmbuild/SOURCES
1581f59a26SMasahiro Yamada	cp linux.tar.gz rpmbuild/SOURCES
1681f59a26SMasahiro Yamada	cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
17aa7d233fSMasahiro Yamada	"${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch
181da177e4SLinus Torvaldsfi
191da177e4SLinus Torvalds
2081f59a26SMasahiro Yamadaif grep -q CONFIG_MODULES=y include/config/auto.conf; then
21*2a291fc3SMasahiro Yamadaecho '%define with_devel %{?_without_devel: 0} %{?!_without_devel: 1}'
220b7f12f5SMasahiro Yamadaelse
23*2a291fc3SMasahiro Yamadaecho '%define with_devel 0'
240b7f12f5SMasahiro Yamadafi
250b7f12f5SMasahiro Yamada
26*2a291fc3SMasahiro Yamadacat<<-EOF
27a06d9ef8SMasahiro Yamada%define ARCH ${ARCH}
2893ed5605SMasahiro Yamada%define KERNELRELEASE ${KERNELRELEASE}
291789fc91SMasahiro Yamada%define pkg_release $("${srctree}/init/build-version")
30a06d9ef8SMasahiro Yamada
31d4f65127SMasahiro Yamada# _arch is undefined if /usr/lib/rpm/platform/*/macros was not included.
32d4f65127SMasahiro Yamada%{!?_arch: %define _arch dummy}
3319286825SMasahiro Yamada%{!?make: %define make make}
34a06d9ef8SMasahiro Yamada%define makeflags %{?_smp_mflags} ARCH=%{ARCH}
3519286825SMasahiro Yamada
368c5d4b64SMasahiro Yamada	Name: kernel
378c5d4b64SMasahiro Yamada	Summary: The Linux Kernel
38d5d2d4ccSMasahiro Yamada	Version: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g')
391789fc91SMasahiro Yamada	Release: %{pkg_release}
408c5d4b64SMasahiro Yamada	License: GPL
418c5d4b64SMasahiro Yamada	Group: System Environment/Kernel
428c5d4b64SMasahiro Yamada	Vendor: The Linux Community
4316a122c7SAlexander A. Klimov	URL: https://www.kernel.org
441789fc91SMasahiro Yamada	Source0: linux.tar.gz
451789fc91SMasahiro Yamada	Source1: config
461789fc91SMasahiro Yamada	Source2: diff.patch
4793ed5605SMasahiro Yamada	Provides: kernel-%{KERNELRELEASE}
481789fc91SMasahiro Yamada	BuildRequires: bc binutils bison dwarves
491789fc91SMasahiro Yamada	BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
501789fc91SMasahiro Yamada	BuildRequires: gcc make openssl openssl-devel perl python3 rsync
518818039fSIvan Vecera
528c5d4b64SMasahiro Yamada	%define __spec_install_post /usr/lib/rpm/brp-compress || :
538c5d4b64SMasahiro Yamada	%define debug_package %{nil}
541da177e4SLinus Torvalds
558c5d4b64SMasahiro Yamada	%description
568c5d4b64SMasahiro Yamada	The Linux Kernel, the operating system core itself
578c5d4b64SMasahiro Yamada
588c5d4b64SMasahiro Yamada	%package headers
598c5d4b64SMasahiro Yamada	Summary: Header files for the Linux kernel for use by glibc
608c5d4b64SMasahiro Yamada	Group: Development/System
618c5d4b64SMasahiro Yamada	Obsoletes: kernel-headers
628c5d4b64SMasahiro Yamada	Provides: kernel-headers = %{version}
638c5d4b64SMasahiro Yamada	%description headers
648c5d4b64SMasahiro Yamada	Kernel-headers includes the C header files that specify the interface
658c5d4b64SMasahiro Yamada	between the Linux kernel and userspace libraries and programs.  The
668c5d4b64SMasahiro Yamada	header files define structures and constants that are needed for
678c5d4b64SMasahiro Yamada	building most standard programs and are also needed for rebuilding the
688c5d4b64SMasahiro Yamada	glibc package.
698c5d4b64SMasahiro Yamada
70*2a291fc3SMasahiro Yamada	%if %{with_devel}
71*2a291fc3SMasahiro Yamada	%package devel
72*2a291fc3SMasahiro Yamada	Summary: Development package for building kernel modules to match the %{version} kernel
73*2a291fc3SMasahiro Yamada	Group: System Environment/Kernel
74*2a291fc3SMasahiro Yamada	AutoReqProv: no
75*2a291fc3SMasahiro Yamada	%description -n kernel-devel
76*2a291fc3SMasahiro Yamada	This package provides kernel headers and makefiles sufficient to build modules
77*2a291fc3SMasahiro Yamada	against the %{version} kernel package.
78*2a291fc3SMasahiro Yamada	%endif
79*2a291fc3SMasahiro Yamada
801789fc91SMasahiro Yamada	%prep
811789fc91SMasahiro Yamada	%setup -q -n linux
821789fc91SMasahiro Yamada	cp %{SOURCE1} .config
831789fc91SMasahiro Yamada	patch -p1 < %{SOURCE2}
841789fc91SMasahiro Yamada
851789fc91SMasahiro Yamada	%build
861789fc91SMasahiro Yamada	%{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release}
871789fc91SMasahiro Yamada
888c5d4b64SMasahiro Yamada	%install
89002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot
908c5d4b64SMasahiro Yamada	%ifarch ia64
91002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot/efi
9293ed5605SMasahiro Yamada	cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE}
9393ed5605SMasahiro Yamada	ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/
948c5d4b64SMasahiro Yamada	%else
9593ed5605SMasahiro Yamada	cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE}
968c5d4b64SMasahiro Yamada	%endif
97b537925fSMasahiro Yamada	%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
98fe809b82SMasahiro Yamada	%{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
9993ed5605SMasahiro Yamada	cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE}
10093ed5605SMasahiro Yamada	cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
101b537925fSMasahiro Yamada	ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build
102b537925fSMasahiro Yamada	ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/source
103*2a291fc3SMasahiro Yamada	%if %{with_devel}
104*2a291fc3SMasahiro Yamada	%{make} %{makeflags} run-command KBUILD_RUN_COMMAND='\${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
105*2a291fc3SMasahiro Yamada	%endif
1068c5d4b64SMasahiro Yamada
1078c5d4b64SMasahiro Yamada	%clean
108002494d8SMasahiro Yamada	rm -rf %{buildroot}
1098c5d4b64SMasahiro Yamada
1108c5d4b64SMasahiro Yamada	%post
11193ed5605SMasahiro Yamada	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then
11293ed5605SMasahiro Yamada	cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm
11393ed5605SMasahiro Yamada	cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm
11493ed5605SMasahiro Yamada	rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE}
11593ed5605SMasahiro Yamada	/sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
11693ed5605SMasahiro Yamada	rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
1171da177e4SLinus Torvalds	fi
1181da177e4SLinus Torvalds
1198c5d4b64SMasahiro Yamada	%preun
1208c5d4b64SMasahiro Yamada	if [ -x /sbin/new-kernel-pkg ]; then
12193ed5605SMasahiro Yamada	new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img
122eea6f62bSJavier Martinez Canillas	elif [ -x /usr/bin/kernel-install ]; then
12393ed5605SMasahiro Yamada	kernel-install remove %{KERNELRELEASE}
1241da177e4SLinus Torvalds	fi
1251da177e4SLinus Torvalds
1268c5d4b64SMasahiro Yamada	%postun
1278c5d4b64SMasahiro Yamada	if [ -x /sbin/update-bootloader ]; then
12893ed5605SMasahiro Yamada	/sbin/update-bootloader --remove %{KERNELRELEASE}
129b9a54424SJérôme Glisse	fi
1302174d292SMike Marciniszyn
1318c5d4b64SMasahiro Yamada	%files
1328c5d4b64SMasahiro Yamada	%defattr (-, root, root)
133b537925fSMasahiro Yamada	/lib/modules/%{KERNELRELEASE}
134b537925fSMasahiro Yamada	%exclude /lib/modules/%{KERNELRELEASE}/build
135b537925fSMasahiro Yamada	%exclude /lib/modules/%{KERNELRELEASE}/source
1368c5d4b64SMasahiro Yamada	/boot/*
1378c5d4b64SMasahiro Yamada
1388c5d4b64SMasahiro Yamada	%files headers
1398c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1408c5d4b64SMasahiro Yamada	/usr/include
141*2a291fc3SMasahiro Yamada
142*2a291fc3SMasahiro Yamada	%if %{with_devel}
143*2a291fc3SMasahiro Yamada	%files devel
144*2a291fc3SMasahiro Yamada	%defattr (-, root, root)
145*2a291fc3SMasahiro Yamada	/usr/src/kernels/%{KERNELRELEASE}
146*2a291fc3SMasahiro Yamada	/lib/modules/%{KERNELRELEASE}/build
147*2a291fc3SMasahiro Yamada	/lib/modules/%{KERNELRELEASE}/source
148*2a291fc3SMasahiro Yamada	%endif
1498c5d4b64SMasahiro YamadaEOF
150