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