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}
38 %define pkg_release $("${srctree}/init/build-version")
40 # _arch is undefined if /usr/lib/rpm/platform/*/macros was not included.
41 %{!?_arch: %define _arch dummy}
42 %{!?make: %define make make}
43 %define makeflags %{?_smp_mflags} ARCH=%{ARCH}
46 Summary: The Linux Kernel
47 Version: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g')
48 Release: %{pkg_release}
50 Group: System Environment/Kernel
51 Vendor: The Linux Community
52 URL: https://www.kernel.org
56 Provides: kernel-%{KERNELRELEASE}
57 BuildRequires: bc binutils bison dwarves
58 BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
59 BuildRequires: gcc make openssl openssl-devel perl python3 rsync
61 %define __spec_install_post /usr/lib/rpm/brp-compress || :
62 %define debug_package %{nil}
65 The Linux Kernel, the operating system core itself
68 Summary: Header files for the Linux kernel for use by glibc
69 Group: Development/System
70 Obsoletes: kernel-headers
71 Provides: kernel-headers = %{version}
73 Kernel-headers includes the C header files that specify the interface
74 between the Linux kernel and userspace libraries and programs. The
75 header files define structures and constants that are needed for
76 building most standard programs and are also needed for rebuilding the
80 $S$M Summary: Development package for building kernel modules to match the %{version} kernel
81 $S$M Group: System Environment/Kernel
83 $S$M %description -n kernel-devel
84 $S$M This package provides kernel headers and makefiles sufficient to build modules
85 $S$M against the %{version} kernel package.
90 patch -p1 < %{SOURCE2}
93 %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release}
96 mkdir -p %{buildroot}/boot
98 mkdir -p %{buildroot}/boot/efi
99 cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE}
100 ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/
102 cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE}
104 %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
105 %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
106 cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE}
107 cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
108 ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build
109 ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/source
110 $S$M %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='\${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
116 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then
117 cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm
118 cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm
119 rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE}
120 /sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
121 rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
125 if [ -x /sbin/new-kernel-pkg ]; then
126 new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img
127 elif [ -x /usr/bin/kernel-install ]; then
128 kernel-install remove %{KERNELRELEASE}
132 if [ -x /sbin/update-bootloader ]; then
133 /sbin/update-bootloader --remove %{KERNELRELEASE}
137 %defattr (-, root, root)
138 /lib/modules/%{KERNELRELEASE}
139 %exclude /lib/modules/%{KERNELRELEASE}/build
140 %exclude /lib/modules/%{KERNELRELEASE}/source
144 %defattr (-, root, root)
148 $S$M %defattr (-, root, root)
149 $S$M /usr/src/kernels/%{KERNELRELEASE}
150 $S$M /lib/modules/%{KERNELRELEASE}/build
151 $S$M /lib/modules/%{KERNELRELEASE}/source