xref: /linux-6.15/scripts/package/mkspec (revision 81f59a26)
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
1521b42eb4SMasahiro Yamada	MAKE="$MAKE -f $srctree/Makefile"
161da177e4SLinus Torvaldselse
178c5d4b64SMasahiro Yamada	S=
18*81f59a26SMasahiro Yamada
19*81f59a26SMasahiro Yamada	mkdir -p rpmbuild/SOURCES
20*81f59a26SMasahiro Yamada	cp linux.tar.gz rpmbuild/SOURCES
21*81f59a26SMasahiro Yamada	cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
221da177e4SLinus Torvaldsfi
231da177e4SLinus Torvalds
24*81f59a26SMasahiro Yamadaif grep -q CONFIG_MODULES=y include/config/auto.conf; then
250b7f12f5SMasahiro Yamada	M=
260b7f12f5SMasahiro Yamadaelse
270b7f12f5SMasahiro Yamada	M=DEL
280b7f12f5SMasahiro Yamadafi
290b7f12f5SMasahiro Yamada
30*81f59a26SMasahiro Yamadaif grep -q CONFIG_DRM=y include/config/auto.conf; then
311da177e4SLinus Torvalds	PROVIDES=kernel-drm
321da177e4SLinus Torvaldsfi
331da177e4SLinus Torvalds
341da177e4SLinus TorvaldsPROVIDES="$PROVIDES kernel-$KERNELRELEASE"
355289c322SMasahiro Yamada__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
36b7dca6ddSMasahiro YamadaEXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
375289c322SMasahiro Yamada--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
38c93a0368SMasahiro Yamada--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
391da177e4SLinus Torvalds
408c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file
418c5d4b64SMasahiro Yamada#
428c5d4b64SMasahiro Yamada# Labels:
438c5d4b64SMasahiro Yamada#  $S: this line is enabled only when building source package
440b7f12f5SMasahiro Yamada#  $M: this line is enabled only when CONFIG_MODULES is enabled
458c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF
468c5d4b64SMasahiro Yamada	Name: kernel
478c5d4b64SMasahiro Yamada	Summary: The Linux Kernel
488c5d4b64SMasahiro Yamada	Version: $__KERNELRELEASE
498c5d4b64SMasahiro Yamada	Release: $(cat .version 2>/dev/null || echo 1)
508c5d4b64SMasahiro Yamada	License: GPL
518c5d4b64SMasahiro Yamada	Group: System Environment/Kernel
528c5d4b64SMasahiro Yamada	Vendor: The Linux Community
5316a122c7SAlexander A. Klimov	URL: https://www.kernel.org
546fc91752SMasahiro Yamada$S	Source0: linux.tar.gz
55*81f59a26SMasahiro Yamada$S	Source1: config
568c5d4b64SMasahiro Yamada	Provides: $PROVIDES
5702a893bcSMasahiro Yamada$S	BuildRequires: bc binutils bison dwarves
5802a893bcSMasahiro Yamada$S	BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
598818039fSIvan Vecera$S	BuildRequires: gcc make openssl openssl-devel perl python3 rsync
608818039fSIvan Vecera
613089b2beSMasahiro Yamada	# $UTS_MACHINE as a fallback of _arch in case
623089b2beSMasahiro Yamada	# /usr/lib/rpm/platform/*/macros was not included.
633089b2beSMasahiro Yamada	%define _arch %{?_arch:$UTS_MACHINE}
648c5d4b64SMasahiro Yamada	%define __spec_install_post /usr/lib/rpm/brp-compress || :
658c5d4b64SMasahiro Yamada	%define debug_package %{nil}
661da177e4SLinus Torvalds
678c5d4b64SMasahiro Yamada	%description
688c5d4b64SMasahiro Yamada	The Linux Kernel, the operating system core itself
698c5d4b64SMasahiro Yamada
708c5d4b64SMasahiro Yamada	%package headers
718c5d4b64SMasahiro Yamada	Summary: Header files for the Linux kernel for use by glibc
728c5d4b64SMasahiro Yamada	Group: Development/System
738c5d4b64SMasahiro Yamada	Obsoletes: kernel-headers
748c5d4b64SMasahiro Yamada	Provides: kernel-headers = %{version}
758c5d4b64SMasahiro Yamada	%description headers
768c5d4b64SMasahiro Yamada	Kernel-headers includes the C header files that specify the interface
778c5d4b64SMasahiro Yamada	between the Linux kernel and userspace libraries and programs.  The
788c5d4b64SMasahiro Yamada	header files define structures and constants that are needed for
798c5d4b64SMasahiro Yamada	building most standard programs and are also needed for rebuilding the
808c5d4b64SMasahiro Yamada	glibc package.
818c5d4b64SMasahiro Yamada
820b7f12f5SMasahiro Yamada$S$M	%package devel
830b7f12f5SMasahiro Yamada$S$M	Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
840b7f12f5SMasahiro Yamada$S$M	Group: System Environment/Kernel
850b7f12f5SMasahiro Yamada$S$M	AutoReqProv: no
860b7f12f5SMasahiro Yamada$S$M	%description -n kernel-devel
870b7f12f5SMasahiro Yamada$S$M	This package provides kernel headers and makefiles sufficient to build modules
880b7f12f5SMasahiro Yamada$S$M	against the $__KERNELRELEASE kernel package.
890b7f12f5SMasahiro Yamada$S$M
908c5d4b64SMasahiro Yamada$S	%prep
916fc91752SMasahiro Yamada$S	%setup -q -n linux
92*81f59a26SMasahiro Yamada$S	cp %{SOURCE1} .config
938c5d4b64SMasahiro Yamada$S
948c5d4b64SMasahiro Yamada$S	%build
95f6e09b07SMasahiro Yamada$S	$MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
968c5d4b64SMasahiro Yamada$S
978c5d4b64SMasahiro Yamada	%install
98002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot
998c5d4b64SMasahiro Yamada	%ifarch ia64
100002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot/efi
1012e07005fSJanis Schoetterl-Glausch	cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
102002494d8SMasahiro Yamada	ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
1038c5d4b64SMasahiro Yamada	%else
1042e07005fSJanis Schoetterl-Glausch	cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
1058c5d4b64SMasahiro Yamada	%endif
1067adf14d8SMasahiro Yamada$M	$MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
1077adf14d8SMasahiro Yamada	$MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
108002494d8SMasahiro Yamada	cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
109002494d8SMasahiro Yamada	cp .config %{buildroot}/boot/config-$KERNELRELEASE
110002494d8SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
111002494d8SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
112002494d8SMasahiro Yamada$S$M	mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
1138a6105c4SJason Gunthorpe$S$M	tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
114002494d8SMasahiro Yamada$S$M	cd %{buildroot}/lib/modules/$KERNELRELEASE
1150b7f12f5SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE build
1160b7f12f5SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE source
1178c5d4b64SMasahiro Yamada
1188c5d4b64SMasahiro Yamada	%clean
119002494d8SMasahiro Yamada	rm -rf %{buildroot}
1208c5d4b64SMasahiro Yamada
1218c5d4b64SMasahiro Yamada	%post
1228c5d4b64SMasahiro Yamada	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
1238c5d4b64SMasahiro Yamada	cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
1248c5d4b64SMasahiro Yamada	cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
1258c5d4b64SMasahiro Yamada	rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
1268c5d4b64SMasahiro Yamada	/sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
1278c5d4b64SMasahiro Yamada	rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
1281da177e4SLinus Torvalds	fi
1291da177e4SLinus Torvalds
1308c5d4b64SMasahiro Yamada	%preun
1318c5d4b64SMasahiro Yamada	if [ -x /sbin/new-kernel-pkg ]; then
1328c5d4b64SMasahiro Yamada	new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
133eea6f62bSJavier Martinez Canillas	elif [ -x /usr/bin/kernel-install ]; then
134eea6f62bSJavier Martinez Canillas	kernel-install remove $KERNELRELEASE
1351da177e4SLinus Torvalds	fi
1361da177e4SLinus Torvalds
1378c5d4b64SMasahiro Yamada	%postun
1388c5d4b64SMasahiro Yamada	if [ -x /sbin/update-bootloader ]; then
1398c5d4b64SMasahiro Yamada	/sbin/update-bootloader --remove $KERNELRELEASE
140b9a54424SJérôme Glisse	fi
1412174d292SMike Marciniszyn
1428c5d4b64SMasahiro Yamada	%files
1438c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1440b7f12f5SMasahiro Yamada$M	/lib/modules/$KERNELRELEASE
1450b7f12f5SMasahiro Yamada$M	%exclude /lib/modules/$KERNELRELEASE/build
1460b7f12f5SMasahiro Yamada$M	%exclude /lib/modules/$KERNELRELEASE/source
1478c5d4b64SMasahiro Yamada	/boot/*
1488c5d4b64SMasahiro Yamada
1498c5d4b64SMasahiro Yamada	%files headers
1508c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1518c5d4b64SMasahiro Yamada	/usr/include
1520b7f12f5SMasahiro Yamada$S$M
1530b7f12f5SMasahiro Yamada$S$M	%files devel
1540b7f12f5SMasahiro Yamada$S$M	%defattr (-, root, root)
1550b7f12f5SMasahiro Yamada$S$M	/usr/src/kernels/$KERNELRELEASE
1560b7f12f5SMasahiro Yamada$S$M	/lib/modules/$KERNELRELEASE/build
1570b7f12f5SMasahiro Yamada$S$M	/lib/modules/$KERNELRELEASE/source
1588c5d4b64SMasahiro YamadaEOF
159