3 # Output a simple RPM spec file.
4 # This version assumes a minimum of RPM 4.0.3.
6 # The only gothic bit here is redefining install_post to avoid
7 # stripping the symbols from files in the kernel which we want
12 # how we were called determines which rpms we build and how we build them
13 if [ "$1" = prebuilt ]; then
15 MAKE="$MAKE -f $srctree/Makefile"
20 if grep -q CONFIG_MODULES=y .config; then
26 if grep -q CONFIG_DRM=y .config; then
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"
36 test -n "$LOCALVERSION" && MAKE="$MAKE LOCALVERSION=$LOCALVERSION"
38 # We can label the here-doc lines for conditional output to the spec file
41 # $S: this line is enabled only when building source package
42 # $M: this line is enabled only when CONFIG_MODULES is enabled
43 sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
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 Source: kernel-$__KERNELRELEASE.tar.gz
54 $S BuildRequires: bc binutils bison dwarves elfutils-libelf-devel flex
55 $S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
57 # $UTS_MACHINE as a fallback of _arch in case
58 # /usr/lib/rpm/platform/*/macros was not included.
59 %define _arch %{?_arch:$UTS_MACHINE}
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 $__KERNELRELEASE 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 $__KERNELRELEASE kernel package.
88 $S rm -f scripts/basic/fixdep scripts/kconfig/conf
89 $S rm -f tools/objtool/{fixdep,objtool}
92 $S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
95 mkdir -p %{buildroot}/boot
97 mkdir -p %{buildroot}/boot/efi
98 cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
99 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
101 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
103 $M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
104 $MAKE %{?_smp_mflags} 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 mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
110 $S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
111 $S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
112 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
113 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
119 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
120 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
121 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
122 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
123 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
124 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
128 if [ -x /sbin/new-kernel-pkg ]; then
129 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
130 elif [ -x /usr/bin/kernel-install ]; then
131 kernel-install remove $KERNELRELEASE
135 if [ -x /sbin/update-bootloader ]; then
136 /sbin/update-bootloader --remove $KERNELRELEASE
140 %defattr (-, root, root)
141 $M /lib/modules/$KERNELRELEASE
142 $M %exclude /lib/modules/$KERNELRELEASE/build
143 $M %exclude /lib/modules/$KERNELRELEASE/source
147 %defattr (-, root, root)
151 $S$M %defattr (-, root, root)
152 $S$M /usr/src/kernels/$KERNELRELEASE
153 $S$M /lib/modules/$KERNELRELEASE/build
154 $S$M /lib/modules/$KERNELRELEASE/source