• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
13 if [ "$1" = prebuilt ]; then
14 	S=DEL
15 	MAKE="$MAKE -f $srctree/Makefile"
16 else
17 	S=
18 fi
19 
20 if grep -q CONFIG_MODULES=y .config; then
21 	M=
22 else
23 	M=DEL
24 fi
25 
26 if grep -q CONFIG_DRM=y .config; then
27 	PROVIDES=kernel-drm
28 fi
29 
30 PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
31 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
32 EXCLUDES="$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
41 sed -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 	%define __spec_install_post /usr/lib/rpm/brp-compress || :
53 	%define debug_package %{nil}
54 
55 	%description
56 	The Linux Kernel, the operating system core itself
57 
58 	%package headers
59 	Summary: Header files for the Linux kernel for use by glibc
60 	Group: Development/System
61 	Obsoletes: kernel-headers
62 	Provides: kernel-headers = %{version}
63 	%description headers
64 	Kernel-headers includes the C header files that specify the interface
65 	between the Linux kernel and userspace libraries and programs.  The
66 	header files define structures and constants that are needed for
67 	building most standard programs and are also needed for rebuilding the
68 	glibc package.
69 
70 $S$M	%package devel
71 $S$M	Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
72 $S$M	Group: System Environment/Kernel
73 $S$M	AutoReqProv: no
74 $S$M	%description -n kernel-devel
75 $S$M	This package provides kernel headers and makefiles sufficient to build modules
76 $S$M	against the $__KERNELRELEASE kernel package.
77 $S$M
78 $S	%prep
79 $S	%setup -q
80 $S
81 $S	%build
82 $S	$MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
83 $S
84 	%install
85 	mkdir -p %{buildroot}/boot
86 	%ifarch ia64
87 	mkdir -p %{buildroot}/boot/efi
88 	cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
89 	ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
90 	%else
91 	cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
92 	%endif
93 $M	$MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
94 	$MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
95 	cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
96 	cp .config %{buildroot}/boot/config-$KERNELRELEASE
97 	bzip2 -9 --keep vmlinux
98 	mv vmlinux.bz2 %{buildroot}/boot/vmlinux-$KERNELRELEASE.bz2
99 $S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
100 $S$M	rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
101 $S$M	mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
102 $S$M	tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
103 $S$M	cd %{buildroot}/lib/modules/$KERNELRELEASE
104 $S$M	ln -sf /usr/src/kernels/$KERNELRELEASE build
105 $S$M	ln -sf /usr/src/kernels/$KERNELRELEASE source
106 
107 	%clean
108 	rm -rf %{buildroot}
109 
110 	%post
111 	if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
112 	cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
113 	cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
114 	rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
115 	/sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
116 	rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
117 	fi
118 
119 	%preun
120 	if [ -x /sbin/new-kernel-pkg ]; then
121 	new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
122 	elif [ -x /usr/bin/kernel-install ]; then
123 	kernel-install remove $KERNELRELEASE
124 	fi
125 
126 	%postun
127 	if [ -x /sbin/update-bootloader ]; then
128 	/sbin/update-bootloader --remove $KERNELRELEASE
129 	fi
130 
131 	%files
132 	%defattr (-, root, root)
133 $M	/lib/modules/$KERNELRELEASE
134 $M	%exclude /lib/modules/$KERNELRELEASE/build
135 $M	%exclude /lib/modules/$KERNELRELEASE/source
136 	/boot/*
137 
138 	%files headers
139 	%defattr (-, root, root)
140 	/usr/include
141 $S$M
142 $S$M	%files devel
143 $S$M	%defattr (-, root, root)
144 $S$M	/usr/src/kernels/$KERNELRELEASE
145 $S$M	/lib/modules/$KERNELRELEASE/build
146 $S$M	/lib/modules/$KERNELRELEASE/source
147 EOF
148