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 <opencon@rio.skydome.net> 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 22 "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch 23fi 24 25if grep -q CONFIG_MODULES=y include/config/auto.conf; then 26 M= 27else 28 M=DEL 29fi 30 31if grep -q CONFIG_DRM=y include/config/auto.conf; then 32 PROVIDES=kernel-drm 33fi 34 35PROVIDES="$PROVIDES kernel-$KERNELRELEASE" 36__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") 37EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \ 38--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ 39--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s" 40 41# We can label the here-doc lines for conditional output to the spec file 42# 43# Labels: 44# $S: this line is enabled only when building source package 45# $M: this line is enabled only when CONFIG_MODULES is enabled 46sed -e '/^DEL/d' -e 's/^\t*//' <<EOF 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: $PROVIDES 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 %define _arch %{?_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 $__KERNELRELEASE 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 $__KERNELRELEASE 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 %{?_smp_mflags} 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 -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE 105 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ 106 %else 107 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE 108 %endif 109$M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install 110 $MAKE %{?_smp_mflags} 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