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 $(dirname $0)/gen-diff-patch rpmbuild/SOURCES/diff.patch rpmbuild/SOURCES/untracked.patch 23 touch rpmbuild/SOURCES/diff.patch rpmbuild/SOURCES/untracked.patch 24fi 25 26if grep -q CONFIG_MODULES=y include/config/auto.conf; then 27 M= 28else 29 M=DEL 30fi 31 32if grep -q CONFIG_DRM=y include/config/auto.conf; then 33 PROVIDES=kernel-drm 34fi 35 36PROVIDES="$PROVIDES kernel-$KERNELRELEASE" 37__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") 38EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \ 39--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ 40--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s" 41 42# We can label the here-doc lines for conditional output to the spec file 43# 44# Labels: 45# $S: this line is enabled only when building source package 46# $M: this line is enabled only when CONFIG_MODULES is enabled 47sed -e '/^DEL/d' -e 's/^\t*//' <<EOF 48 Name: kernel 49 Summary: The Linux Kernel 50 Version: $__KERNELRELEASE 51 Release: $(cat .version 2>/dev/null || echo 1) 52 License: GPL 53 Group: System Environment/Kernel 54 Vendor: The Linux Community 55 URL: https://www.kernel.org 56$S Source0: linux.tar.gz 57$S Source1: config 58$S Source2: diff.patch 59$S Source3: untracked.patch 60 Provides: $PROVIDES 61$S BuildRequires: bc binutils bison dwarves 62$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 63$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync 64 65 # $UTS_MACHINE as a fallback of _arch in case 66 # /usr/lib/rpm/platform/*/macros was not included. 67 %define _arch %{?_arch:$UTS_MACHINE} 68 %define __spec_install_post /usr/lib/rpm/brp-compress || : 69 %define debug_package %{nil} 70 71 %description 72 The Linux Kernel, the operating system core itself 73 74 %package headers 75 Summary: Header files for the Linux kernel for use by glibc 76 Group: Development/System 77 Obsoletes: kernel-headers 78 Provides: kernel-headers = %{version} 79 %description headers 80 Kernel-headers includes the C header files that specify the interface 81 between the Linux kernel and userspace libraries and programs. The 82 header files define structures and constants that are needed for 83 building most standard programs and are also needed for rebuilding the 84 glibc package. 85 86$S$M %package devel 87$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel 88$S$M Group: System Environment/Kernel 89$S$M AutoReqProv: no 90$S$M %description -n kernel-devel 91$S$M This package provides kernel headers and makefiles sufficient to build modules 92$S$M against the $__KERNELRELEASE kernel package. 93$S$M 94$S %prep 95$S %setup -q -n linux 96$S cp %{SOURCE1} .config 97$S if [ -s %{SOURCE2} ]; then 98$S patch -p1 < %{SOURCE2} 99$S fi 100$S if [ -s %{SOURCE3} ]; then 101$S patch -p1 < %{SOURCE3} 102$S fi 103$S 104$S %build 105$S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release} 106$S 107 %install 108 mkdir -p %{buildroot}/boot 109 %ifarch ia64 110 mkdir -p %{buildroot}/boot/efi 111 cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE 112 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ 113 %else 114 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE 115 %endif 116$M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install 117 $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 118 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE 119 cp .config %{buildroot}/boot/config-$KERNELRELEASE 120$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build 121$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source 122$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE 123$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE 124$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE 125$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build 126$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source 127 128 %clean 129 rm -rf %{buildroot} 130 131 %post 132 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then 133 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm 134 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm 135 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE 136 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 137 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 138 fi 139 140 %preun 141 if [ -x /sbin/new-kernel-pkg ]; then 142 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img 143 elif [ -x /usr/bin/kernel-install ]; then 144 kernel-install remove $KERNELRELEASE 145 fi 146 147 %postun 148 if [ -x /sbin/update-bootloader ]; then 149 /sbin/update-bootloader --remove $KERNELRELEASE 150 fi 151 152 %files 153 %defattr (-, root, root) 154$M /lib/modules/$KERNELRELEASE 155$M %exclude /lib/modules/$KERNELRELEASE/build 156$M %exclude /lib/modules/$KERNELRELEASE/source 157 /boot/* 158 159 %files headers 160 %defattr (-, root, root) 161 /usr/include 162$S$M 163$S$M %files devel 164$S$M %defattr (-, root, root) 165$S$M /usr/src/kernels/$KERNELRELEASE 166$S$M /lib/modules/$KERNELRELEASE/build 167$S$M /lib/modules/$KERNELRELEASE/source 168EOF 169