3 # Output a simple RPM spec file.
4 # This version assumes a minimum of RPM 4.13
6 # The only gothic bit here is redefining install_post to avoid
7 # stripping the symbols from files in the kernel which we want
9 # Patched for non-x86 by Opencon (L) 2002 <opencon@rio.skydome.net>
12 # how we were called determines which rpms we build and how we build them
13 if [ "$1" = prebuilt ]; then
18 mkdir -p rpmbuild/SOURCES
19 cp linux.tar.gz rpmbuild/SOURCES
20 cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
21 "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch
24 if grep -q CONFIG_MODULES=y include/config/auto.conf; then
30 # We can label the here-doc lines for conditional output to the spec file
33 # $S: this line is enabled only when building source package
34 # $M: this line is enabled only when CONFIG_MODULES is enabled
35 sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
37 %define KERNELRELEASE ${KERNELRELEASE}
39 # _arch is undefined if /usr/lib/rpm/platform/*/macros was not included.
40 %{!?_arch: %define _arch dummy}
41 %{!?make: %define make make}
42 %define makeflags %{?_smp_mflags} ARCH=%{ARCH}
45 Summary: The Linux Kernel
46 Version: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g')
47 Release: $(cat .version 2>/dev/null || echo 1)
49 Group: System Environment/Kernel
50 Vendor: The Linux Community
51 URL: https://www.kernel.org
52 $S Source0: linux.tar.gz
54 $S Source2: diff.patch
55 Provides: kernel-%{KERNELRELEASE}
56 $S BuildRequires: bc binutils bison dwarves
57 $S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
58 $S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
60 %define __spec_install_post /usr/lib/rpm/brp-compress || :
61 %define debug_package %{nil}
64 The Linux Kernel, the operating system core itself
67 Summary: Header files for the Linux kernel for use by glibc
68 Group: Development/System
69 Obsoletes: kernel-headers
70 Provides: kernel-headers = %{version}
72 Kernel-headers includes the C header files that specify the interface
73 between the Linux kernel and userspace libraries and programs. The
74 header files define structures and constants that are needed for
75 building most standard programs and are also needed for rebuilding the
79 $S$M Summary: Development package for building kernel modules to match the %{version} kernel
80 $S$M Group: System Environment/Kernel
82 $S$M %description -n kernel-devel
83 $S$M This package provides kernel headers and makefiles sufficient to build modules
84 $S$M against the %{version} kernel package.
88 $S cp %{SOURCE1} .config
89 $S patch -p1 < %{SOURCE2}
92 $S %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release}
95 mkdir -p %{buildroot}/boot
97 mkdir -p %{buildroot}/boot/efi
98 cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE}
99 ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/
101 cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE}
103 $M %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
104 %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
105 cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE}
106 cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
107 $S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/build
108 $S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/source
109 $S$M %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='\${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
110 $S$M cd %{buildroot}/lib/modules/%{KERNELRELEASE}
111 $S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} build
112 $S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} source
118 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then
119 cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm
120 cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm
121 rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE}
122 /sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
123 rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
127 if [ -x /sbin/new-kernel-pkg ]; then
128 new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img
129 elif [ -x /usr/bin/kernel-install ]; then
130 kernel-install remove %{KERNELRELEASE}
134 if [ -x /sbin/update-bootloader ]; then
135 /sbin/update-bootloader --remove %{KERNELRELEASE}
139 %defattr (-, root, root)
140 $M /lib/modules/%{KERNELRELEASE}
141 $M %exclude /lib/modules/%{KERNELRELEASE}/build
142 $M %exclude /lib/modules/%{KERNELRELEASE}/source
146 %defattr (-, root, root)
150 $S$M %defattr (-, root, root)
151 $S$M /usr/src/kernels/%{KERNELRELEASE}
152 $S$M /lib/modules/%{KERNELRELEASE}/build
153 $S$M /lib/modules/%{KERNELRELEASE}/source