xref: /linux-6.15/scripts/package/mkspec (revision 8818039f)
11da177e4SLinus Torvalds#!/bin/sh
21da177e4SLinus Torvalds#
32174d292SMike Marciniszyn#	Output a simple RPM spec file.
42174d292SMike Marciniszyn#	This version assumes a minimum of RPM 4.0.3.
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
1521b42eb4SMasahiro Yamada	MAKE="$MAKE -f $srctree/Makefile"
161da177e4SLinus Torvaldselse
178c5d4b64SMasahiro Yamada	S=
181da177e4SLinus Torvaldsfi
191da177e4SLinus Torvalds
200b7f12f5SMasahiro Yamadaif grep -q CONFIG_MODULES=y .config; then
210b7f12f5SMasahiro Yamada	M=
220b7f12f5SMasahiro Yamadaelse
230b7f12f5SMasahiro Yamada	M=DEL
240b7f12f5SMasahiro Yamadafi
250b7f12f5SMasahiro Yamada
265289c322SMasahiro Yamadaif grep -q CONFIG_DRM=y .config; then
271da177e4SLinus Torvalds	PROVIDES=kernel-drm
281da177e4SLinus Torvaldsfi
291da177e4SLinus Torvalds
301da177e4SLinus TorvaldsPROVIDES="$PROVIDES kernel-$KERNELRELEASE"
315289c322SMasahiro Yamada__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
32b7dca6ddSMasahiro YamadaEXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
335289c322SMasahiro Yamada--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
34c93a0368SMasahiro Yamada--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
351da177e4SLinus Torvalds
36*8818039fSIvan Veceratest -n "$LOCALVERSION" && MAKE="$MAKE LOCALVERSION=$LOCALVERSION"
37*8818039fSIvan Vecera
388c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file
398c5d4b64SMasahiro Yamada#
408c5d4b64SMasahiro Yamada# Labels:
418c5d4b64SMasahiro Yamada#  $S: this line is enabled only when building source package
420b7f12f5SMasahiro Yamada#  $M: this line is enabled only when CONFIG_MODULES is enabled
438c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF
448c5d4b64SMasahiro Yamada	Name: kernel
458c5d4b64SMasahiro Yamada	Summary: The Linux Kernel
468c5d4b64SMasahiro Yamada	Version: $__KERNELRELEASE
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
528c5d4b64SMasahiro Yamada$S	Source: kernel-$__KERNELRELEASE.tar.gz
538c5d4b64SMasahiro Yamada	Provides: $PROVIDES
54*8818039fSIvan Vecera$S	BuildRequires: bc binutils bison dwarves elfutils-libelf-devel flex
55*8818039fSIvan Vecera$S	BuildRequires: gcc make openssl openssl-devel perl python3 rsync
56*8818039fSIvan Vecera
573089b2beSMasahiro Yamada	# $UTS_MACHINE as a fallback of _arch in case
583089b2beSMasahiro Yamada	# /usr/lib/rpm/platform/*/macros was not included.
593089b2beSMasahiro Yamada	%define _arch %{?_arch:$UTS_MACHINE}
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
790b7f12f5SMasahiro Yamada$S$M	Summary: Development package for building kernel modules to match the $__KERNELRELEASE 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
840b7f12f5SMasahiro Yamada$S$M	against the $__KERNELRELEASE kernel package.
850b7f12f5SMasahiro Yamada$S$M
868c5d4b64SMasahiro Yamada$S	%prep
878c5d4b64SMasahiro Yamada$S	%setup -q
88*8818039fSIvan Vecera$S	rm -f scripts/basic/fixdep scripts/kconfig/conf
89*8818039fSIvan Vecera$S	rm -f tools/objtool/{fixdep,objtool}
908c5d4b64SMasahiro Yamada$S
918c5d4b64SMasahiro Yamada$S	%build
9221b42eb4SMasahiro Yamada$S	$MAKE %{?_smp_mflags} 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
982e07005fSJanis Schoetterl-Glausch	cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
99002494d8SMasahiro Yamada	ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
1008c5d4b64SMasahiro Yamada	%else
1012e07005fSJanis Schoetterl-Glausch	cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
1028c5d4b64SMasahiro Yamada	%endif
10321b42eb4SMasahiro Yamada$M	$MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
10421b42eb4SMasahiro Yamada	$MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
105002494d8SMasahiro Yamada	cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
106002494d8SMasahiro Yamada	cp .config %{buildroot}/boot/config-$KERNELRELEASE
107002494d8SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
108002494d8SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
109002494d8SMasahiro Yamada$S$M	mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
1108a6105c4SJason Gunthorpe$S$M	tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
111002494d8SMasahiro Yamada$S$M	cd %{buildroot}/lib/modules/$KERNELRELEASE
1120b7f12f5SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE build
1130b7f12f5SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE source
1148c5d4b64SMasahiro Yamada
1158c5d4b64SMasahiro Yamada	%clean
116002494d8SMasahiro Yamada	rm -rf %{buildroot}
1178c5d4b64SMasahiro Yamada
1188c5d4b64SMasahiro Yamada	%post
1198c5d4b64SMasahiro Yamada	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
1208c5d4b64SMasahiro Yamada	cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
1218c5d4b64SMasahiro Yamada	cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
1228c5d4b64SMasahiro Yamada	rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
1238c5d4b64SMasahiro Yamada	/sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
1248c5d4b64SMasahiro Yamada	rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
1251da177e4SLinus Torvalds	fi
1261da177e4SLinus Torvalds
1278c5d4b64SMasahiro Yamada	%preun
1288c5d4b64SMasahiro Yamada	if [ -x /sbin/new-kernel-pkg ]; then
1298c5d4b64SMasahiro Yamada	new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
130eea6f62bSJavier Martinez Canillas	elif [ -x /usr/bin/kernel-install ]; then
131eea6f62bSJavier Martinez Canillas	kernel-install remove $KERNELRELEASE
1321da177e4SLinus Torvalds	fi
1331da177e4SLinus Torvalds
1348c5d4b64SMasahiro Yamada	%postun
1358c5d4b64SMasahiro Yamada	if [ -x /sbin/update-bootloader ]; then
1368c5d4b64SMasahiro Yamada	/sbin/update-bootloader --remove $KERNELRELEASE
137b9a54424SJérôme Glisse	fi
1382174d292SMike Marciniszyn
1398c5d4b64SMasahiro Yamada	%files
1408c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1410b7f12f5SMasahiro Yamada$M	/lib/modules/$KERNELRELEASE
1420b7f12f5SMasahiro Yamada$M	%exclude /lib/modules/$KERNELRELEASE/build
1430b7f12f5SMasahiro Yamada$M	%exclude /lib/modules/$KERNELRELEASE/source
1448c5d4b64SMasahiro Yamada	/boot/*
1458c5d4b64SMasahiro Yamada
1468c5d4b64SMasahiro Yamada	%files headers
1478c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1488c5d4b64SMasahiro Yamada	/usr/include
1490b7f12f5SMasahiro Yamada$S$M
1500b7f12f5SMasahiro Yamada$S$M	%files devel
1510b7f12f5SMasahiro Yamada$S$M	%defattr (-, root, root)
1520b7f12f5SMasahiro Yamada$S$M	/usr/src/kernels/$KERNELRELEASE
1530b7f12f5SMasahiro Yamada$S$M	/lib/modules/$KERNELRELEASE/build
1540b7f12f5SMasahiro Yamada$S$M	/lib/modules/$KERNELRELEASE/source
1558c5d4b64SMasahiro YamadaEOF
156