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