1#!/bin/sh 2# 3# Output a simple RPM spec file. 4# This version assumes a minimum of RPM 4.0.3. 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 Source: kernel-$__KERNELRELEASE.tar.gz 51 Provides: $PROVIDES 52 %define __spec_install_post /usr/lib/rpm/brp-compress || : 53 %define debug_package %{nil} 54 55 %description 56 The Linux Kernel, the operating system core itself 57 58 %package headers 59 Summary: Header files for the Linux kernel for use by glibc 60 Group: Development/System 61 Obsoletes: kernel-headers 62 Provides: kernel-headers = %{version} 63 %description headers 64 Kernel-headers includes the C header files that specify the interface 65 between the Linux kernel and userspace libraries and programs. The 66 header files define structures and constants that are needed for 67 building most standard programs and are also needed for rebuilding the 68 glibc package. 69 70$S$M %package devel 71$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel 72$S$M Group: System Environment/Kernel 73$S$M AutoReqProv: no 74$S$M %description -n kernel-devel 75$S$M This package provides kernel headers and makefiles sufficient to build modules 76$S$M against the $__KERNELRELEASE kernel package. 77$S$M 78$S %prep 79$S %setup -q 80$S 81$S %build 82$S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release} 83$S 84 %install 85 mkdir -p %{buildroot}/boot 86 %ifarch ia64 87 mkdir -p %{buildroot}/boot/efi 88 cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE 89 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ 90 %else 91 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE 92 %endif 93$M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install 94 $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 95 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE 96 cp .config %{buildroot}/boot/config-$KERNELRELEASE 97 bzip2 -9 --keep vmlinux 98 mv vmlinux.bz2 %{buildroot}/boot/vmlinux-$KERNELRELEASE.bz2 99$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build 100$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source 101$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE 102$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE 103$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE 104$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build 105$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source 106 107 %clean 108 rm -rf %{buildroot} 109 110 %post 111 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then 112 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm 113 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm 114 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE 115 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 116 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 117 fi 118 119 %preun 120 if [ -x /sbin/new-kernel-pkg ]; then 121 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img 122 elif [ -x /usr/bin/kernel-install ]; then 123 kernel-install remove $KERNELRELEASE 124 fi 125 126 %postun 127 if [ -x /sbin/update-bootloader ]; then 128 /sbin/update-bootloader --remove $KERNELRELEASE 129 fi 130 131 %files 132 %defattr (-, root, root) 133$M /lib/modules/$KERNELRELEASE 134$M %exclude /lib/modules/$KERNELRELEASE/build 135$M %exclude /lib/modules/$KERNELRELEASE/source 136 /boot/* 137 138 %files headers 139 %defattr (-, root, root) 140 /usr/include 141$S$M 142$S$M %files devel 143$S$M %defattr (-, root, root) 144$S$M /usr/src/kernels/$KERNELRELEASE 145$S$M /lib/modules/$KERNELRELEASE/build 146$S$M /lib/modules/$KERNELRELEASE/source 147EOF 148