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