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 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
32 # We can label the here-doc lines for conditional output to the spec file
35 # $S: this line is enabled only when building source package
36 # $M: this line is enabled only when CONFIG_MODULES is enabled
37 sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
39 %define KERNELRELEASE ${KERNELRELEASE}
41 %{!?make: %define make make}
42 %define makeflags %{?_smp_mflags} ARCH=%{ARCH}
45 Summary: The Linux Kernel
46 Version: $__KERNELRELEASE
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 # $UTS_MACHINE as a fallback of _arch in case
61 # /usr/lib/rpm/platform/*/macros was not included.
62 %{!?_arch: %define _arch $UTS_MACHINE}
63 %define __spec_install_post /usr/lib/rpm/brp-compress || :
64 %define debug_package %{nil}
67 The Linux Kernel, the operating system core itself
70 Summary: Header files for the Linux kernel for use by glibc
71 Group: Development/System
72 Obsoletes: kernel-headers
73 Provides: kernel-headers = %{version}
75 Kernel-headers includes the C header files that specify the interface
76 between the Linux kernel and userspace libraries and programs. The
77 header files define structures and constants that are needed for
78 building most standard programs and are also needed for rebuilding the
82 $S$M Summary: Development package for building kernel modules to match the %{version} kernel
83 $S$M Group: System Environment/Kernel
85 $S$M %description -n kernel-devel
86 $S$M This package provides kernel headers and makefiles sufficient to build modules
87 $S$M against the %{version} kernel package.
91 $S cp %{SOURCE1} .config
92 $S patch -p1 < %{SOURCE2}
95 $S %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release}
98 mkdir -p %{buildroot}/boot
100 mkdir -p %{buildroot}/boot/efi
101 cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE}
102 ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/
104 cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE}
106 $M %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
107 %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
108 cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE}
109 cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
110 $S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/build
111 $S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/source
112 $S$M %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='\${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
113 $S$M cd %{buildroot}/lib/modules/%{KERNELRELEASE}
114 $S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} build
115 $S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} source
121 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then
122 cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm
123 cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm
124 rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE}
125 /sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
126 rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
130 if [ -x /sbin/new-kernel-pkg ]; then
131 new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img
132 elif [ -x /usr/bin/kernel-install ]; then
133 kernel-install remove %{KERNELRELEASE}
137 if [ -x /sbin/update-bootloader ]; then
138 /sbin/update-bootloader --remove %{KERNELRELEASE}
142 %defattr (-, root, root)
143 $M /lib/modules/%{KERNELRELEASE}
144 $M %exclude /lib/modules/%{KERNELRELEASE}/build
145 $M %exclude /lib/modules/%{KERNELRELEASE}/source
149 %defattr (-, root, root)
153 $S$M %defattr (-, root, root)
154 $S$M /usr/src/kernels/%{KERNELRELEASE}
155 $S$M /lib/modules/%{KERNELRELEASE}/build
156 $S$M /lib/modules/%{KERNELRELEASE}/source