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 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 Source0: linux.tar.gz 51$S Source1: .config 52 Provides: $PROVIDES 53$S BuildRequires: bc binutils bison dwarves 54$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 55$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync 56 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} 62 63 %description 64 The Linux Kernel, the operating system core itself 65 66 %package headers 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} 71 %description headers 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 76 glibc package. 77 78$S$M %package devel 79$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel 80$S$M Group: System Environment/Kernel 81$S$M AutoReqProv: no 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. 85$S$M 86$S %prep 87$S %setup -q -n linux 88$S cp %{SOURCE1} . 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} INSTALL_MOD_PATH=%{buildroot} modules_install 103 $MAKE %{?_smp_mflags} 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