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