xref: /linux-6.15/scripts/package/mkspec (revision c90b3bbf)
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=
1881f59a26SMasahiro Yamada
1981f59a26SMasahiro Yamada	mkdir -p rpmbuild/SOURCES
2081f59a26SMasahiro Yamada	cp linux.tar.gz rpmbuild/SOURCES
2181f59a26SMasahiro Yamada	cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
22aa7d233fSMasahiro Yamada	"${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch
231da177e4SLinus Torvaldsfi
241da177e4SLinus Torvalds
2581f59a26SMasahiro Yamadaif grep -q CONFIG_MODULES=y include/config/auto.conf; then
260b7f12f5SMasahiro Yamada	M=
270b7f12f5SMasahiro Yamadaelse
280b7f12f5SMasahiro Yamada	M=DEL
290b7f12f5SMasahiro Yamadafi
300b7f12f5SMasahiro Yamada
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
368c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file
378c5d4b64SMasahiro Yamada#
388c5d4b64SMasahiro Yamada# Labels:
398c5d4b64SMasahiro Yamada#  $S: this line is enabled only when building source package
400b7f12f5SMasahiro Yamada#  $M: this line is enabled only when CONFIG_MODULES is enabled
418c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF
428c5d4b64SMasahiro Yamada	Name: kernel
438c5d4b64SMasahiro Yamada	Summary: The Linux Kernel
448c5d4b64SMasahiro Yamada	Version: $__KERNELRELEASE
458c5d4b64SMasahiro Yamada	Release: $(cat .version 2>/dev/null || echo 1)
468c5d4b64SMasahiro Yamada	License: GPL
478c5d4b64SMasahiro Yamada	Group: System Environment/Kernel
488c5d4b64SMasahiro Yamada	Vendor: The Linux Community
4916a122c7SAlexander A. Klimov	URL: https://www.kernel.org
506fc91752SMasahiro Yamada$S	Source0: linux.tar.gz
5181f59a26SMasahiro Yamada$S	Source1: config
5205e96e96SMasahiro Yamada$S	Source2: diff.patch
53*c90b3bbfSMasahiro Yamada	Provides: kernel-$KERNELRELEASE
5402a893bcSMasahiro Yamada$S	BuildRequires: bc binutils bison dwarves
5502a893bcSMasahiro Yamada$S	BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
568818039fSIvan Vecera$S	BuildRequires: gcc make openssl openssl-devel perl python3 rsync
578818039fSIvan Vecera
583089b2beSMasahiro Yamada	# $UTS_MACHINE as a fallback of _arch in case
593089b2beSMasahiro Yamada	# /usr/lib/rpm/platform/*/macros was not included.
603089b2beSMasahiro Yamada	%define _arch %{?_arch:$UTS_MACHINE}
618c5d4b64SMasahiro Yamada	%define __spec_install_post /usr/lib/rpm/brp-compress || :
628c5d4b64SMasahiro Yamada	%define debug_package %{nil}
631da177e4SLinus Torvalds
648c5d4b64SMasahiro Yamada	%description
658c5d4b64SMasahiro Yamada	The Linux Kernel, the operating system core itself
668c5d4b64SMasahiro Yamada
678c5d4b64SMasahiro Yamada	%package headers
688c5d4b64SMasahiro Yamada	Summary: Header files for the Linux kernel for use by glibc
698c5d4b64SMasahiro Yamada	Group: Development/System
708c5d4b64SMasahiro Yamada	Obsoletes: kernel-headers
718c5d4b64SMasahiro Yamada	Provides: kernel-headers = %{version}
728c5d4b64SMasahiro Yamada	%description headers
738c5d4b64SMasahiro Yamada	Kernel-headers includes the C header files that specify the interface
748c5d4b64SMasahiro Yamada	between the Linux kernel and userspace libraries and programs.  The
758c5d4b64SMasahiro Yamada	header files define structures and constants that are needed for
768c5d4b64SMasahiro Yamada	building most standard programs and are also needed for rebuilding the
778c5d4b64SMasahiro Yamada	glibc package.
788c5d4b64SMasahiro Yamada
790b7f12f5SMasahiro Yamada$S$M	%package devel
800b7f12f5SMasahiro Yamada$S$M	Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
810b7f12f5SMasahiro Yamada$S$M	Group: System Environment/Kernel
820b7f12f5SMasahiro Yamada$S$M	AutoReqProv: no
830b7f12f5SMasahiro Yamada$S$M	%description -n kernel-devel
840b7f12f5SMasahiro Yamada$S$M	This package provides kernel headers and makefiles sufficient to build modules
850b7f12f5SMasahiro Yamada$S$M	against the $__KERNELRELEASE kernel package.
860b7f12f5SMasahiro Yamada$S$M
878c5d4b64SMasahiro Yamada$S	%prep
886fc91752SMasahiro Yamada$S	%setup -q -n linux
8981f59a26SMasahiro Yamada$S	cp %{SOURCE1} .config
9005e96e96SMasahiro Yamada$S	patch -p1 < %{SOURCE2}
918c5d4b64SMasahiro Yamada$S
928c5d4b64SMasahiro Yamada$S	%build
93f6e09b07SMasahiro Yamada$S	$MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
948c5d4b64SMasahiro Yamada$S
958c5d4b64SMasahiro Yamada	%install
96002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot
978c5d4b64SMasahiro Yamada	%ifarch ia64
98002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot/efi
992e07005fSJanis Schoetterl-Glausch	cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
100002494d8SMasahiro Yamada	ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
1018c5d4b64SMasahiro Yamada	%else
1022e07005fSJanis Schoetterl-Glausch	cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
1038c5d4b64SMasahiro Yamada	%endif
1047adf14d8SMasahiro Yamada$M	$MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
1057adf14d8SMasahiro Yamada	$MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
106002494d8SMasahiro Yamada	cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
107002494d8SMasahiro Yamada	cp .config %{buildroot}/boot/config-$KERNELRELEASE
108002494d8SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
109002494d8SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
110002494d8SMasahiro Yamada$S$M	mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
1118a6105c4SJason Gunthorpe$S$M	tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
112002494d8SMasahiro Yamada$S$M	cd %{buildroot}/lib/modules/$KERNELRELEASE
1130b7f12f5SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE build
1140b7f12f5SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE source
1158c5d4b64SMasahiro Yamada
1168c5d4b64SMasahiro Yamada	%clean
117002494d8SMasahiro Yamada	rm -rf %{buildroot}
1188c5d4b64SMasahiro Yamada
1198c5d4b64SMasahiro Yamada	%post
1208c5d4b64SMasahiro Yamada	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
1218c5d4b64SMasahiro Yamada	cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
1228c5d4b64SMasahiro Yamada	cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
1238c5d4b64SMasahiro Yamada	rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
1248c5d4b64SMasahiro Yamada	/sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
1258c5d4b64SMasahiro Yamada	rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
1261da177e4SLinus Torvalds	fi
1271da177e4SLinus Torvalds
1288c5d4b64SMasahiro Yamada	%preun
1298c5d4b64SMasahiro Yamada	if [ -x /sbin/new-kernel-pkg ]; then
1308c5d4b64SMasahiro Yamada	new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
131eea6f62bSJavier Martinez Canillas	elif [ -x /usr/bin/kernel-install ]; then
132eea6f62bSJavier Martinez Canillas	kernel-install remove $KERNELRELEASE
1331da177e4SLinus Torvalds	fi
1341da177e4SLinus Torvalds
1358c5d4b64SMasahiro Yamada	%postun
1368c5d4b64SMasahiro Yamada	if [ -x /sbin/update-bootloader ]; then
1378c5d4b64SMasahiro Yamada	/sbin/update-bootloader --remove $KERNELRELEASE
138b9a54424SJérôme Glisse	fi
1392174d292SMike Marciniszyn
1408c5d4b64SMasahiro Yamada	%files
1418c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1420b7f12f5SMasahiro Yamada$M	/lib/modules/$KERNELRELEASE
1430b7f12f5SMasahiro Yamada$M	%exclude /lib/modules/$KERNELRELEASE/build
1440b7f12f5SMasahiro Yamada$M	%exclude /lib/modules/$KERNELRELEASE/source
1458c5d4b64SMasahiro Yamada	/boot/*
1468c5d4b64SMasahiro Yamada
1478c5d4b64SMasahiro Yamada	%files headers
1488c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1498c5d4b64SMasahiro Yamada	/usr/include
1500b7f12f5SMasahiro Yamada$S$M
1510b7f12f5SMasahiro Yamada$S$M	%files devel
1520b7f12f5SMasahiro Yamada$S$M	%defattr (-, root, root)
1530b7f12f5SMasahiro Yamada$S$M	/usr/src/kernels/$KERNELRELEASE
1540b7f12f5SMasahiro Yamada$S$M	/lib/modules/$KERNELRELEASE/build
1550b7f12f5SMasahiro Yamada$S$M	/lib/modules/$KERNELRELEASE/source
1568c5d4b64SMasahiro YamadaEOF
157