xref: /linux-6.15/scripts/package/mkspec (revision 05e96e96)
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
22*05e96e96SMasahiro Yamada	$(dirname $0)/gen-diff-patch rpmbuild/SOURCES/diff.patch rpmbuild/SOURCES/untracked.patch
23*05e96e96SMasahiro Yamada	touch rpmbuild/SOURCES/diff.patch rpmbuild/SOURCES/untracked.patch
241da177e4SLinus Torvaldsfi
251da177e4SLinus Torvalds
2681f59a26SMasahiro Yamadaif grep -q CONFIG_MODULES=y include/config/auto.conf; then
270b7f12f5SMasahiro Yamada	M=
280b7f12f5SMasahiro Yamadaelse
290b7f12f5SMasahiro Yamada	M=DEL
300b7f12f5SMasahiro Yamadafi
310b7f12f5SMasahiro Yamada
3281f59a26SMasahiro Yamadaif grep -q CONFIG_DRM=y include/config/auto.conf; then
331da177e4SLinus Torvalds	PROVIDES=kernel-drm
341da177e4SLinus Torvaldsfi
351da177e4SLinus Torvalds
361da177e4SLinus TorvaldsPROVIDES="$PROVIDES kernel-$KERNELRELEASE"
375289c322SMasahiro Yamada__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
38b7dca6ddSMasahiro YamadaEXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
395289c322SMasahiro Yamada--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
40c93a0368SMasahiro Yamada--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
411da177e4SLinus Torvalds
428c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file
438c5d4b64SMasahiro Yamada#
448c5d4b64SMasahiro Yamada# Labels:
458c5d4b64SMasahiro Yamada#  $S: this line is enabled only when building source package
460b7f12f5SMasahiro Yamada#  $M: this line is enabled only when CONFIG_MODULES is enabled
478c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF
488c5d4b64SMasahiro Yamada	Name: kernel
498c5d4b64SMasahiro Yamada	Summary: The Linux Kernel
508c5d4b64SMasahiro Yamada	Version: $__KERNELRELEASE
518c5d4b64SMasahiro Yamada	Release: $(cat .version 2>/dev/null || echo 1)
528c5d4b64SMasahiro Yamada	License: GPL
538c5d4b64SMasahiro Yamada	Group: System Environment/Kernel
548c5d4b64SMasahiro Yamada	Vendor: The Linux Community
5516a122c7SAlexander A. Klimov	URL: https://www.kernel.org
566fc91752SMasahiro Yamada$S	Source0: linux.tar.gz
5781f59a26SMasahiro Yamada$S	Source1: config
58*05e96e96SMasahiro Yamada$S	Source2: diff.patch
59*05e96e96SMasahiro Yamada$S	Source3: untracked.patch
608c5d4b64SMasahiro Yamada	Provides: $PROVIDES
6102a893bcSMasahiro Yamada$S	BuildRequires: bc binutils bison dwarves
6202a893bcSMasahiro Yamada$S	BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
638818039fSIvan Vecera$S	BuildRequires: gcc make openssl openssl-devel perl python3 rsync
648818039fSIvan Vecera
653089b2beSMasahiro Yamada	# $UTS_MACHINE as a fallback of _arch in case
663089b2beSMasahiro Yamada	# /usr/lib/rpm/platform/*/macros was not included.
673089b2beSMasahiro Yamada	%define _arch %{?_arch:$UTS_MACHINE}
688c5d4b64SMasahiro Yamada	%define __spec_install_post /usr/lib/rpm/brp-compress || :
698c5d4b64SMasahiro Yamada	%define debug_package %{nil}
701da177e4SLinus Torvalds
718c5d4b64SMasahiro Yamada	%description
728c5d4b64SMasahiro Yamada	The Linux Kernel, the operating system core itself
738c5d4b64SMasahiro Yamada
748c5d4b64SMasahiro Yamada	%package headers
758c5d4b64SMasahiro Yamada	Summary: Header files for the Linux kernel for use by glibc
768c5d4b64SMasahiro Yamada	Group: Development/System
778c5d4b64SMasahiro Yamada	Obsoletes: kernel-headers
788c5d4b64SMasahiro Yamada	Provides: kernel-headers = %{version}
798c5d4b64SMasahiro Yamada	%description headers
808c5d4b64SMasahiro Yamada	Kernel-headers includes the C header files that specify the interface
818c5d4b64SMasahiro Yamada	between the Linux kernel and userspace libraries and programs.  The
828c5d4b64SMasahiro Yamada	header files define structures and constants that are needed for
838c5d4b64SMasahiro Yamada	building most standard programs and are also needed for rebuilding the
848c5d4b64SMasahiro Yamada	glibc package.
858c5d4b64SMasahiro Yamada
860b7f12f5SMasahiro Yamada$S$M	%package devel
870b7f12f5SMasahiro Yamada$S$M	Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
880b7f12f5SMasahiro Yamada$S$M	Group: System Environment/Kernel
890b7f12f5SMasahiro Yamada$S$M	AutoReqProv: no
900b7f12f5SMasahiro Yamada$S$M	%description -n kernel-devel
910b7f12f5SMasahiro Yamada$S$M	This package provides kernel headers and makefiles sufficient to build modules
920b7f12f5SMasahiro Yamada$S$M	against the $__KERNELRELEASE kernel package.
930b7f12f5SMasahiro Yamada$S$M
948c5d4b64SMasahiro Yamada$S	%prep
956fc91752SMasahiro Yamada$S	%setup -q -n linux
9681f59a26SMasahiro Yamada$S	cp %{SOURCE1} .config
97*05e96e96SMasahiro Yamada$S	if [ -s %{SOURCE2} ]; then
98*05e96e96SMasahiro Yamada$S		patch -p1 < %{SOURCE2}
99*05e96e96SMasahiro Yamada$S	fi
100*05e96e96SMasahiro Yamada$S	if [ -s %{SOURCE3} ]; then
101*05e96e96SMasahiro Yamada$S		patch -p1 < %{SOURCE3}
102*05e96e96SMasahiro Yamada$S	fi
1038c5d4b64SMasahiro Yamada$S
1048c5d4b64SMasahiro Yamada$S	%build
105f6e09b07SMasahiro Yamada$S	$MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
1068c5d4b64SMasahiro Yamada$S
1078c5d4b64SMasahiro Yamada	%install
108002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot
1098c5d4b64SMasahiro Yamada	%ifarch ia64
110002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot/efi
1112e07005fSJanis Schoetterl-Glausch	cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
112002494d8SMasahiro Yamada	ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
1138c5d4b64SMasahiro Yamada	%else
1142e07005fSJanis Schoetterl-Glausch	cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
1158c5d4b64SMasahiro Yamada	%endif
1167adf14d8SMasahiro Yamada$M	$MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
1177adf14d8SMasahiro Yamada	$MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
118002494d8SMasahiro Yamada	cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
119002494d8SMasahiro Yamada	cp .config %{buildroot}/boot/config-$KERNELRELEASE
120002494d8SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
121002494d8SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
122002494d8SMasahiro Yamada$S$M	mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
1238a6105c4SJason Gunthorpe$S$M	tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
124002494d8SMasahiro Yamada$S$M	cd %{buildroot}/lib/modules/$KERNELRELEASE
1250b7f12f5SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE build
1260b7f12f5SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE source
1278c5d4b64SMasahiro Yamada
1288c5d4b64SMasahiro Yamada	%clean
129002494d8SMasahiro Yamada	rm -rf %{buildroot}
1308c5d4b64SMasahiro Yamada
1318c5d4b64SMasahiro Yamada	%post
1328c5d4b64SMasahiro Yamada	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
1338c5d4b64SMasahiro Yamada	cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
1348c5d4b64SMasahiro Yamada	cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
1358c5d4b64SMasahiro Yamada	rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
1368c5d4b64SMasahiro Yamada	/sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
1378c5d4b64SMasahiro Yamada	rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
1381da177e4SLinus Torvalds	fi
1391da177e4SLinus Torvalds
1408c5d4b64SMasahiro Yamada	%preun
1418c5d4b64SMasahiro Yamada	if [ -x /sbin/new-kernel-pkg ]; then
1428c5d4b64SMasahiro Yamada	new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
143eea6f62bSJavier Martinez Canillas	elif [ -x /usr/bin/kernel-install ]; then
144eea6f62bSJavier Martinez Canillas	kernel-install remove $KERNELRELEASE
1451da177e4SLinus Torvalds	fi
1461da177e4SLinus Torvalds
1478c5d4b64SMasahiro Yamada	%postun
1488c5d4b64SMasahiro Yamada	if [ -x /sbin/update-bootloader ]; then
1498c5d4b64SMasahiro Yamada	/sbin/update-bootloader --remove $KERNELRELEASE
150b9a54424SJérôme Glisse	fi
1512174d292SMike Marciniszyn
1528c5d4b64SMasahiro Yamada	%files
1538c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1540b7f12f5SMasahiro Yamada$M	/lib/modules/$KERNELRELEASE
1550b7f12f5SMasahiro Yamada$M	%exclude /lib/modules/$KERNELRELEASE/build
1560b7f12f5SMasahiro Yamada$M	%exclude /lib/modules/$KERNELRELEASE/source
1578c5d4b64SMasahiro Yamada	/boot/*
1588c5d4b64SMasahiro Yamada
1598c5d4b64SMasahiro Yamada	%files headers
1608c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1618c5d4b64SMasahiro Yamada	/usr/include
1620b7f12f5SMasahiro Yamada$S$M
1630b7f12f5SMasahiro Yamada$S$M	%files devel
1640b7f12f5SMasahiro Yamada$S$M	%defattr (-, root, root)
1650b7f12f5SMasahiro Yamada$S$M	/usr/src/kernels/$KERNELRELEASE
1660b7f12f5SMasahiro Yamada$S$M	/lib/modules/$KERNELRELEASE/build
1670b7f12f5SMasahiro Yamada$S$M	/lib/modules/$KERNELRELEASE/source
1688c5d4b64SMasahiro YamadaEOF
169