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 -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE 92 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ 93 %else 94 cp \$($MAKE -s 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$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build 101$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source 102$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE 103$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE 104$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE 105$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build 106$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source 107 108 %clean 109 rm -rf %{buildroot} 110 111 %post 112 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then 113 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm 114 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm 115 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE 116 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 117 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 118 fi 119 120 %preun 121 if [ -x /sbin/new-kernel-pkg ]; then 122 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img 123 elif [ -x /usr/bin/kernel-install ]; then 124 kernel-install remove $KERNELRELEASE 125 fi 126 127 %postun 128 if [ -x /sbin/update-bootloader ]; then 129 /sbin/update-bootloader --remove $KERNELRELEASE 130 fi 131 132 %files 133 %defattr (-, root, root) 134$M /lib/modules/$KERNELRELEASE 135$M %exclude /lib/modules/$KERNELRELEASE/build 136$M %exclude /lib/modules/$KERNELRELEASE/source 137 /boot/* 138 139 %files headers 140 %defattr (-, root, root) 141 /usr/include 142$S$M 143$S$M %files devel 144$S$M %defattr (-, root, root) 145$S$M /usr/src/kernels/$KERNELRELEASE 146$S$M /lib/modules/$KERNELRELEASE/build 147$S$M /lib/modules/$KERNELRELEASE/source 148EOF 149