xref: /linux/scripts/package/mkspec (revision 93ed5605c6185edf3b47c433b257c00854f0a4e1)
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 <opencon@rio.skydome.net>
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
151da177e4SLinus Torvaldselse
168c5d4b64SMasahiro Yamada	S=
1781f59a26SMasahiro Yamada
1881f59a26SMasahiro Yamada	mkdir -p rpmbuild/SOURCES
1981f59a26SMasahiro Yamada	cp linux.tar.gz rpmbuild/SOURCES
2081f59a26SMasahiro Yamada	cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
21aa7d233fSMasahiro Yamada	"${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch
221da177e4SLinus Torvaldsfi
231da177e4SLinus Torvalds
2481f59a26SMasahiro Yamadaif grep -q CONFIG_MODULES=y include/config/auto.conf; then
250b7f12f5SMasahiro Yamada	M=
260b7f12f5SMasahiro Yamadaelse
270b7f12f5SMasahiro Yamada	M=DEL
280b7f12f5SMasahiro Yamadafi
290b7f12f5SMasahiro Yamada
305289c322SMasahiro Yamada__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
31b7dca6ddSMasahiro YamadaEXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
325289c322SMasahiro Yamada--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
33c93a0368SMasahiro Yamada--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
341da177e4SLinus Torvalds
358c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file
368c5d4b64SMasahiro Yamada#
378c5d4b64SMasahiro Yamada# Labels:
388c5d4b64SMasahiro Yamada#  $S: this line is enabled only when building source package
390b7f12f5SMasahiro Yamada#  $M: this line is enabled only when CONFIG_MODULES is enabled
408c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF
41a06d9ef8SMasahiro Yamada%define ARCH ${ARCH}
42*93ed5605SMasahiro Yamada%define KERNELRELEASE ${KERNELRELEASE}
43a06d9ef8SMasahiro Yamada
4419286825SMasahiro Yamada%{!?make: %define make make}
45a06d9ef8SMasahiro Yamada%define makeflags %{?_smp_mflags} ARCH=%{ARCH}
4619286825SMasahiro Yamada
478c5d4b64SMasahiro Yamada	Name: kernel
488c5d4b64SMasahiro Yamada	Summary: The Linux Kernel
498c5d4b64SMasahiro Yamada	Version: $__KERNELRELEASE
508c5d4b64SMasahiro Yamada	Release: $(cat .version 2>/dev/null || echo 1)
518c5d4b64SMasahiro Yamada	License: GPL
528c5d4b64SMasahiro Yamada	Group: System Environment/Kernel
538c5d4b64SMasahiro Yamada	Vendor: The Linux Community
5416a122c7SAlexander A. Klimov	URL: https://www.kernel.org
556fc91752SMasahiro Yamada$S	Source0: linux.tar.gz
5681f59a26SMasahiro Yamada$S	Source1: config
5705e96e96SMasahiro Yamada$S	Source2: diff.patch
58*93ed5605SMasahiro Yamada	Provides: kernel-%{KERNELRELEASE}
5902a893bcSMasahiro Yamada$S	BuildRequires: bc binutils bison dwarves
6002a893bcSMasahiro Yamada$S	BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
618818039fSIvan Vecera$S	BuildRequires: gcc make openssl openssl-devel perl python3 rsync
628818039fSIvan Vecera
633089b2beSMasahiro Yamada	# $UTS_MACHINE as a fallback of _arch in case
643089b2beSMasahiro Yamada	# /usr/lib/rpm/platform/*/macros was not included.
65233046a2SMasahiro Yamada	%{!?_arch: %define _arch $UTS_MACHINE}
668c5d4b64SMasahiro Yamada	%define __spec_install_post /usr/lib/rpm/brp-compress || :
678c5d4b64SMasahiro Yamada	%define debug_package %{nil}
681da177e4SLinus Torvalds
698c5d4b64SMasahiro Yamada	%description
708c5d4b64SMasahiro Yamada	The Linux Kernel, the operating system core itself
718c5d4b64SMasahiro Yamada
728c5d4b64SMasahiro Yamada	%package headers
738c5d4b64SMasahiro Yamada	Summary: Header files for the Linux kernel for use by glibc
748c5d4b64SMasahiro Yamada	Group: Development/System
758c5d4b64SMasahiro Yamada	Obsoletes: kernel-headers
768c5d4b64SMasahiro Yamada	Provides: kernel-headers = %{version}
778c5d4b64SMasahiro Yamada	%description headers
788c5d4b64SMasahiro Yamada	Kernel-headers includes the C header files that specify the interface
798c5d4b64SMasahiro Yamada	between the Linux kernel and userspace libraries and programs.  The
808c5d4b64SMasahiro Yamada	header files define structures and constants that are needed for
818c5d4b64SMasahiro Yamada	building most standard programs and are also needed for rebuilding the
828c5d4b64SMasahiro Yamada	glibc package.
838c5d4b64SMasahiro Yamada
840b7f12f5SMasahiro Yamada$S$M	%package devel
855d8e41b5SMasahiro Yamada$S$M	Summary: Development package for building kernel modules to match the %{version} kernel
860b7f12f5SMasahiro Yamada$S$M	Group: System Environment/Kernel
870b7f12f5SMasahiro Yamada$S$M	AutoReqProv: no
880b7f12f5SMasahiro Yamada$S$M	%description -n kernel-devel
890b7f12f5SMasahiro Yamada$S$M	This package provides kernel headers and makefiles sufficient to build modules
905d8e41b5SMasahiro Yamada$S$M	against the %{version} kernel package.
910b7f12f5SMasahiro Yamada$S$M
928c5d4b64SMasahiro Yamada$S	%prep
936fc91752SMasahiro Yamada$S	%setup -q -n linux
9481f59a26SMasahiro Yamada$S	cp %{SOURCE1} .config
9505e96e96SMasahiro Yamada$S	patch -p1 < %{SOURCE2}
968c5d4b64SMasahiro Yamada$S
978c5d4b64SMasahiro Yamada$S	%build
98*93ed5605SMasahiro Yamada$S	%{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release}
998c5d4b64SMasahiro Yamada$S
1008c5d4b64SMasahiro Yamada	%install
101002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot
1028c5d4b64SMasahiro Yamada	%ifarch ia64
103002494d8SMasahiro Yamada	mkdir -p %{buildroot}/boot/efi
104*93ed5605SMasahiro Yamada	cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE}
105*93ed5605SMasahiro Yamada	ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/
1068c5d4b64SMasahiro Yamada	%else
107*93ed5605SMasahiro Yamada	cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE}
1088c5d4b64SMasahiro Yamada	%endif
109fe809b82SMasahiro Yamada$M	%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
110fe809b82SMasahiro Yamada	%{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
111*93ed5605SMasahiro Yamada	cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE}
112*93ed5605SMasahiro Yamada	cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
113*93ed5605SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/build
114*93ed5605SMasahiro Yamada$S$M	rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/source
115*93ed5605SMasahiro Yamada$S$M	mkdir -p %{buildroot}/usr/src/kernels/%{KERNELRELEASE}
116*93ed5605SMasahiro Yamada$S$M	tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/%{KERNELRELEASE}
117*93ed5605SMasahiro Yamada$S$M	cd %{buildroot}/lib/modules/%{KERNELRELEASE}
118*93ed5605SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/%{KERNELRELEASE} build
119*93ed5605SMasahiro Yamada$S$M	ln -sf /usr/src/kernels/%{KERNELRELEASE} source
1208c5d4b64SMasahiro Yamada
1218c5d4b64SMasahiro Yamada	%clean
122002494d8SMasahiro Yamada	rm -rf %{buildroot}
1238c5d4b64SMasahiro Yamada
1248c5d4b64SMasahiro Yamada	%post
125*93ed5605SMasahiro Yamada	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then
126*93ed5605SMasahiro Yamada	cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm
127*93ed5605SMasahiro Yamada	cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm
128*93ed5605SMasahiro Yamada	rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE}
129*93ed5605SMasahiro Yamada	/sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
130*93ed5605SMasahiro Yamada	rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
1311da177e4SLinus Torvalds	fi
1321da177e4SLinus Torvalds
1338c5d4b64SMasahiro Yamada	%preun
1348c5d4b64SMasahiro Yamada	if [ -x /sbin/new-kernel-pkg ]; then
135*93ed5605SMasahiro Yamada	new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img
136eea6f62bSJavier Martinez Canillas	elif [ -x /usr/bin/kernel-install ]; then
137*93ed5605SMasahiro Yamada	kernel-install remove %{KERNELRELEASE}
1381da177e4SLinus Torvalds	fi
1391da177e4SLinus Torvalds
1408c5d4b64SMasahiro Yamada	%postun
1418c5d4b64SMasahiro Yamada	if [ -x /sbin/update-bootloader ]; then
142*93ed5605SMasahiro Yamada	/sbin/update-bootloader --remove %{KERNELRELEASE}
143b9a54424SJérôme Glisse	fi
1442174d292SMike Marciniszyn
1458c5d4b64SMasahiro Yamada	%files
1468c5d4b64SMasahiro Yamada	%defattr (-, root, root)
147*93ed5605SMasahiro Yamada$M	/lib/modules/%{KERNELRELEASE}
148*93ed5605SMasahiro Yamada$M	%exclude /lib/modules/%{KERNELRELEASE}/build
149*93ed5605SMasahiro Yamada$M	%exclude /lib/modules/%{KERNELRELEASE}/source
1508c5d4b64SMasahiro Yamada	/boot/*
1518c5d4b64SMasahiro Yamada
1528c5d4b64SMasahiro Yamada	%files headers
1538c5d4b64SMasahiro Yamada	%defattr (-, root, root)
1548c5d4b64SMasahiro Yamada	/usr/include
1550b7f12f5SMasahiro Yamada$S$M
1560b7f12f5SMasahiro Yamada$S$M	%files devel
1570b7f12f5SMasahiro Yamada$S$M	%defattr (-, root, root)
158*93ed5605SMasahiro Yamada$S$M	/usr/src/kernels/%{KERNELRELEASE}
159*93ed5605SMasahiro Yamada$S$M	/lib/modules/%{KERNELRELEASE}/build
160*93ed5605SMasahiro Yamada$S$M	/lib/modules/%{KERNELRELEASE}/source
1618c5d4b64SMasahiro YamadaEOF
162