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