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 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 22fi 23 24if grep -q CONFIG_MODULES=y include/config/auto.conf; then 25 M= 26else 27 M=DEL 28fi 29 30if grep -q CONFIG_DRM=y include/config/auto.conf; then 31 PROVIDES=kernel-drm 32fi 33 34PROVIDES="$PROVIDES kernel-$KERNELRELEASE" 35__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") 36EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \ 37--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ 38--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s" 39 40# We can label the here-doc lines for conditional output to the spec file 41# 42# Labels: 43# $S: this line is enabled only when building source package 44# $M: this line is enabled only when CONFIG_MODULES is enabled 45sed -e '/^DEL/d' -e 's/^\t*//' <<EOF 46 Name: kernel 47 Summary: The Linux Kernel 48 Version: $__KERNELRELEASE 49 Release: $(cat .version 2>/dev/null || echo 1) 50 License: GPL 51 Group: System Environment/Kernel 52 Vendor: The Linux Community 53 URL: https://www.kernel.org 54$S Source0: linux.tar.gz 55$S Source1: config 56 Provides: $PROVIDES 57$S BuildRequires: bc binutils bison dwarves 58$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 59$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync 60 61 # $UTS_MACHINE as a fallback of _arch in case 62 # /usr/lib/rpm/platform/*/macros was not included. 63 %define _arch %{?_arch:$UTS_MACHINE} 64 %define __spec_install_post /usr/lib/rpm/brp-compress || : 65 %define debug_package %{nil} 66 67 %description 68 The Linux Kernel, the operating system core itself 69 70 %package headers 71 Summary: Header files for the Linux kernel for use by glibc 72 Group: Development/System 73 Obsoletes: kernel-headers 74 Provides: kernel-headers = %{version} 75 %description headers 76 Kernel-headers includes the C header files that specify the interface 77 between the Linux kernel and userspace libraries and programs. The 78 header files define structures and constants that are needed for 79 building most standard programs and are also needed for rebuilding the 80 glibc package. 81 82$S$M %package devel 83$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel 84$S$M Group: System Environment/Kernel 85$S$M AutoReqProv: no 86$S$M %description -n kernel-devel 87$S$M This package provides kernel headers and makefiles sufficient to build modules 88$S$M against the $__KERNELRELEASE kernel package. 89$S$M 90$S %prep 91$S %setup -q -n linux 92$S cp %{SOURCE1} .config 93$S 94$S %build 95$S $MAKE %{?_smp_mflags} 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 -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE 102 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ 103 %else 104 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE 105 %endif 106$M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install 107 $MAKE %{?_smp_mflags} 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