1#!/bin/sh 2# 3# Output a simple RPM spec file. 4# This version assumes a minimum of RPM 4.13 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 <[email protected]> 10# 11 12# how we were called determines which rpms we build and how we build them 13if [ "$1" = prebuilt ]; then 14 S=DEL 15 MAKE="$MAKE -f $srctree/Makefile" 16else 17 S= 18fi 19 20if grep -q CONFIG_MODULES=y .config; then 21 M= 22else 23 M=DEL 24fi 25 26if grep -q CONFIG_DRM=y .config; then 27 PROVIDES=kernel-drm 28fi 29 30PROVIDES="$PROVIDES kernel-$KERNELRELEASE" 31__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") 32EXCLUDES="$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 41sed -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$S BuildRequires: bc binutils bison dwarves 53$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 54$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync 55 56 # $UTS_MACHINE as a fallback of _arch in case 57 # /usr/lib/rpm/platform/*/macros was not included. 58 %define _arch %{?_arch:$UTS_MACHINE} 59 %define __spec_install_post /usr/lib/rpm/brp-compress || : 60 %define debug_package %{nil} 61 62 %description 63 The Linux Kernel, the operating system core itself 64 65 %package headers 66 Summary: Header files for the Linux kernel for use by glibc 67 Group: Development/System 68 Obsoletes: kernel-headers 69 Provides: kernel-headers = %{version} 70 %description headers 71 Kernel-headers includes the C header files that specify the interface 72 between the Linux kernel and userspace libraries and programs. The 73 header files define structures and constants that are needed for 74 building most standard programs and are also needed for rebuilding the 75 glibc package. 76 77$S$M %package devel 78$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel 79$S$M Group: System Environment/Kernel 80$S$M AutoReqProv: no 81$S$M %description -n kernel-devel 82$S$M This package provides kernel headers and makefiles sufficient to build modules 83$S$M against the $__KERNELRELEASE kernel package. 84$S$M 85$S %prep 86$S %setup -q 87$S rm -f scripts/basic/fixdep scripts/kconfig/conf 88$S rm -f tools/objtool/{fixdep,objtool} 89$S 90$S %build 91$S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release} 92$S 93 %install 94 mkdir -p %{buildroot}/boot 95 %ifarch ia64 96 mkdir -p %{buildroot}/boot/efi 97 cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE 98 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ 99 %else 100 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE 101 %endif 102$M $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE INSTALL_MOD_PATH=%{buildroot} modules_install 103 $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE INSTALL_HDR_PATH=%{buildroot}/usr headers_install 104 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE 105 cp .config %{buildroot}/boot/config-$KERNELRELEASE 106$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build 107$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source 108$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE 109$S$M tar cf - $EXCLUDES . | tar xf - -C %{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 113 114 %clean 115 rm -rf %{buildroot} 116 117 %post 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 124 fi 125 126 %preun 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 131 fi 132 133 %postun 134 if [ -x /sbin/update-bootloader ]; then 135 /sbin/update-bootloader --remove $KERNELRELEASE 136 fi 137 138 %files 139 %defattr (-, root, root) 140$M /lib/modules/$KERNELRELEASE 141$M %exclude /lib/modules/$KERNELRELEASE/build 142$M %exclude /lib/modules/$KERNELRELEASE/source 143 /boot/* 144 145 %files headers 146 %defattr (-, root, root) 147 /usr/include 148$S$M 149$S$M %files devel 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 154EOF 155