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