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 15else 16 S= 17fi 18 19if grep -q CONFIG_MODULES=y .config; then 20 M= 21else 22 M=DEL 23fi 24 25if grep -q CONFIG_DRM=y .config; then 26 PROVIDES=kernel-drm 27fi 28 29PROVIDES="$PROVIDES kernel-$KERNELRELEASE" 30__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") 31EXCLUDES="$RCS_TAR_IGNORE --exclude=.tmp_versions --exclude=*vmlinux* \ 32--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ 33--exclude=.config.old --exclude=.missing-syscalls.d" 34 35# We can label the here-doc lines for conditional output to the spec file 36# 37# Labels: 38# $S: this line is enabled only when building source package 39# $M: this line is enabled only when CONFIG_MODULES is enabled 40sed -e '/^DEL/d' -e 's/^\t*//' <<EOF 41 Name: kernel 42 Summary: The Linux Kernel 43 Version: $__KERNELRELEASE 44 Release: $(cat .version 2>/dev/null || echo 1) 45 License: GPL 46 Group: System Environment/Kernel 47 Vendor: The Linux Community 48 URL: http://www.kernel.org 49$S Source: kernel-$__KERNELRELEASE.tar.gz 50 Provides: $PROVIDES 51 %define __spec_install_post /usr/lib/rpm/brp-compress || : 52 %define debug_package %{nil} 53 54 %description 55 The Linux Kernel, the operating system core itself 56 57 %package headers 58 Summary: Header files for the Linux kernel for use by glibc 59 Group: Development/System 60 Obsoletes: kernel-headers 61 Provides: kernel-headers = %{version} 62 %description headers 63 Kernel-headers includes the C header files that specify the interface 64 between the Linux kernel and userspace libraries and programs. The 65 header files define structures and constants that are needed for 66 building most standard programs and are also needed for rebuilding the 67 glibc package. 68 69$S$M %package devel 70$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel 71$S$M Group: System Environment/Kernel 72$S$M AutoReqProv: no 73$S$M %description -n kernel-devel 74$S$M This package provides kernel headers and makefiles sufficient to build modules 75$S$M against the $__KERNELRELEASE kernel package. 76$S$M 77$S %prep 78$S %setup -q 79$S 80$S %build 81$S make %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release} 82$S 83 %install 84 mkdir -p %{buildroot}/boot 85 %ifarch ia64 86 mkdir -p %{buildroot}/boot/efi 87 cp \$(make image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE 88 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ 89 %else 90 cp \$(make image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE 91 %endif 92$M make %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} KBUILD_SRC= modules_install 93 make %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr KBUILD_SRC= headers_install 94 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE 95 cp .config %{buildroot}/boot/config-$KERNELRELEASE 96 bzip2 -9 --keep vmlinux 97 mv vmlinux.bz2 %{buildroot}/boot/vmlinux-$KERNELRELEASE.bz2 98$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build 99$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source 100$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE 101$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE 102$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE 103$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build 104$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source 105 106 %clean 107 rm -rf %{buildroot} 108 109 %post 110 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then 111 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm 112 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm 113 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE 114 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 115 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 116 fi 117 118 %preun 119 if [ -x /sbin/new-kernel-pkg ]; then 120 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img 121 elif [ -x /usr/bin/kernel-install ]; then 122 kernel-install remove $KERNELRELEASE 123 fi 124 125 %postun 126 if [ -x /sbin/update-bootloader ]; then 127 /sbin/update-bootloader --remove $KERNELRELEASE 128 fi 129 130 %files 131 %defattr (-, root, root) 132$M /lib/modules/$KERNELRELEASE 133$M %exclude /lib/modules/$KERNELRELEASE/build 134$M %exclude /lib/modules/$KERNELRELEASE/source 135 /boot/* 136 137 %files headers 138 %defattr (-, root, root) 139 /usr/include 140$S$M 141$S$M %files devel 142$S$M %defattr (-, root, root) 143$S$M /usr/src/kernels/$KERNELRELEASE 144$S$M /lib/modules/$KERNELRELEASE/build 145$S$M /lib/modules/$KERNELRELEASE/source 146EOF 147