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 <opencon@rio.skydome.net> 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 36test -n "$LOCALVERSION" && MAKE="$MAKE LOCALVERSION=$LOCALVERSION" 37 38# We can label the here-doc lines for conditional output to the spec file 39# 40# Labels: 41# $S: this line is enabled only when building source package 42# $M: this line is enabled only when CONFIG_MODULES is enabled 43sed -e '/^DEL/d' -e 's/^\t*//' <<EOF 44 Name: kernel 45 Summary: The Linux Kernel 46 Version: $__KERNELRELEASE 47 Release: $(cat .version 2>/dev/null || echo 1) 48 License: GPL 49 Group: System Environment/Kernel 50 Vendor: The Linux Community 51 URL: https://www.kernel.org 52$S Source: kernel-$__KERNELRELEASE.tar.gz 53 Provides: $PROVIDES 54$S BuildRequires: bc binutils bison dwarves 55$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 56$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync 57 58 # $UTS_MACHINE as a fallback of _arch in case 59 # /usr/lib/rpm/platform/*/macros was not included. 60 %define _arch %{?_arch:$UTS_MACHINE} 61 %define __spec_install_post /usr/lib/rpm/brp-compress || : 62 %define debug_package %{nil} 63 64 %description 65 The Linux Kernel, the operating system core itself 66 67 %package headers 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} 72 %description headers 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 77 glibc package. 78 79$S$M %package devel 80$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel 81$S$M Group: System Environment/Kernel 82$S$M AutoReqProv: no 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 $__KERNELRELEASE kernel package. 86$S$M 87$S %prep 88$S %setup -q 89$S rm -f scripts/basic/fixdep scripts/kconfig/conf 90$S rm -f tools/objtool/{fixdep,objtool} 91$S 92$S %build 93$S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release} 94$S 95 %install 96 mkdir -p %{buildroot}/boot 97 %ifarch ia64 98 mkdir -p %{buildroot}/boot/efi 99 cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE 100 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ 101 %else 102 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE 103 %endif 104$M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install 105 $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 106 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE 107 cp .config %{buildroot}/boot/config-$KERNELRELEASE 108$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build 109$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source 110$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE 111$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE 112$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE 113$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build 114$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source 115 116 %clean 117 rm -rf %{buildroot} 118 119 %post 120 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then 121 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm 122 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm 123 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE 124 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 125 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 126 fi 127 128 %preun 129 if [ -x /sbin/new-kernel-pkg ]; then 130 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img 131 elif [ -x /usr/bin/kernel-install ]; then 132 kernel-install remove $KERNELRELEASE 133 fi 134 135 %postun 136 if [ -x /sbin/update-bootloader ]; then 137 /sbin/update-bootloader --remove $KERNELRELEASE 138 fi 139 140 %files 141 %defattr (-, root, root) 142$M /lib/modules/$KERNELRELEASE 143$M %exclude /lib/modules/$KERNELRELEASE/build 144$M %exclude /lib/modules/$KERNELRELEASE/source 145 /boot/* 146 147 %files headers 148 %defattr (-, root, root) 149 /usr/include 150$S$M 151$S$M %files devel 152$S$M %defattr (-, root, root) 153$S$M /usr/src/kernels/$KERNELRELEASE 154$S$M /lib/modules/$KERNELRELEASE/build 155$S$M /lib/modules/$KERNELRELEASE/source 156EOF 157