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