xref: /openbmc/linux/scripts/package/mkspec (revision c0605cd6)
1#!/bin/sh
2#
3#	Output a simple RPM spec file.
4#	This version assumes a minimum of RPM 4.0.3.
5#
6#	The only gothic bit here is redefining install_post to avoid
7#	stripping the symbols from files in the kernel which we want
8#
9#	Patched for non-x86 by Opencon (L) 2002 <opencon@rio.skydome.net>
10#
11
12# how we were called determines which rpms we build and how we build them
13if [ "$1" = prebuilt ]; then
14	S=DEL
15	MAKE="$MAKE -f $srctree/Makefile"
16else
17	S=
18fi
19
20if grep -q CONFIG_MODULES=y .config; then
21	M=
22else
23	M=DEL
24fi
25
26if grep -q CONFIG_DRM=y .config; then
27	PROVIDES=kernel-drm
28fi
29
30PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
31__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
32EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
33--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
34--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
35
36# We can label the here-doc lines for conditional output to the spec file
37#
38# Labels:
39#  $S: this line is enabled only when building source package
40#  $M: this line is enabled only when CONFIG_MODULES is enabled
41sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
42	Name: kernel
43	Summary: The Linux Kernel
44	Version: $__KERNELRELEASE
45	Release: $(cat .version 2>/dev/null || echo 1)
46	License: GPL
47	Group: System Environment/Kernel
48	Vendor: The Linux Community
49	URL: https://www.kernel.org
50$S	Source: kernel-$__KERNELRELEASE.tar.gz
51	Provides: $PROVIDES
52	# $UTS_MACHINE as a fallback of _arch in case
53	# /usr/lib/rpm/platform/*/macros was not included.
54	%define _arch %{?_arch:$UTS_MACHINE}
55	%define __spec_install_post /usr/lib/rpm/brp-compress || :
56	%define debug_package %{nil}
57
58	%description
59	The Linux Kernel, the operating system core itself
60
61	%package headers
62	Summary: Header files for the Linux kernel for use by glibc
63	Group: Development/System
64	Obsoletes: kernel-headers
65	Provides: kernel-headers = %{version}
66	%description headers
67	Kernel-headers includes the C header files that specify the interface
68	between the Linux kernel and userspace libraries and programs.  The
69	header files define structures and constants that are needed for
70	building most standard programs and are also needed for rebuilding the
71	glibc package.
72
73$S$M	%package devel
74$S$M	Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
75$S$M	Group: System Environment/Kernel
76$S$M	AutoReqProv: no
77$S$M	%description -n kernel-devel
78$S$M	This package provides kernel headers and makefiles sufficient to build modules
79$S$M	against the $__KERNELRELEASE kernel package.
80$S$M
81$S	%prep
82$S	%setup -q
83$S
84$S	%build
85$S	$MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
86$S
87	%install
88	mkdir -p %{buildroot}/boot
89	%ifarch ia64
90	mkdir -p %{buildroot}/boot/efi
91	cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
92	ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
93	%else
94	cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
95	%endif
96$M	$MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
97	$MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
98	cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
99	cp .config %{buildroot}/boot/config-$KERNELRELEASE
100$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
101$S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
102$S$M	mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
103$S$M	tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
104$S$M	cd %{buildroot}/lib/modules/$KERNELRELEASE
105$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE build
106$S$M	ln -sf /usr/src/kernels/$KERNELRELEASE source
107
108	%clean
109	rm -rf %{buildroot}
110
111	%post
112	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
113	cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
114	cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
115	rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
116	/sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
117	rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
118	fi
119
120	%preun
121	if [ -x /sbin/new-kernel-pkg ]; then
122	new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
123	elif [ -x /usr/bin/kernel-install ]; then
124	kernel-install remove $KERNELRELEASE
125	fi
126
127	%postun
128	if [ -x /sbin/update-bootloader ]; then
129	/sbin/update-bootloader --remove $KERNELRELEASE
130	fi
131
132	%files
133	%defattr (-, root, root)
134$M	/lib/modules/$KERNELRELEASE
135$M	%exclude /lib/modules/$KERNELRELEASE/build
136$M	%exclude /lib/modules/$KERNELRELEASE/source
137	/boot/*
138
139	%files headers
140	%defattr (-, root, root)
141	/usr/include
142$S$M
143$S$M	%files devel
144$S$M	%defattr (-, root, root)
145$S$M	/usr/src/kernels/$KERNELRELEASE
146$S$M	/lib/modules/$KERNELRELEASE/build
147$S$M	/lib/modules/$KERNELRELEASE/source
148EOF
149