11da177e4SLinus Torvalds#!/bin/sh 21da177e4SLinus Torvalds# 32174d292SMike Marciniszyn# Output a simple RPM spec file. 4169dd780SArend van Spriel# This version assumes a minimum of RPM 4.13 51da177e4SLinus Torvalds# 61da177e4SLinus Torvalds# The only gothic bit here is redefining install_post to avoid 71da177e4SLinus Torvalds# stripping the symbols from files in the kernel which we want 81da177e4SLinus Torvalds# 91da177e4SLinus Torvalds# Patched for non-x86 by Opencon (L) 2002 <[email protected]> 101da177e4SLinus Torvalds# 111da177e4SLinus Torvalds 121da177e4SLinus Torvalds# how we were called determines which rpms we build and how we build them 135289c322SMasahiro Yamadaif [ "$1" = prebuilt ]; then 148c5d4b64SMasahiro Yamada S=DEL 151da177e4SLinus Torvaldselse 168c5d4b64SMasahiro Yamada S= 1781f59a26SMasahiro Yamada 1881f59a26SMasahiro Yamada mkdir -p rpmbuild/SOURCES 1981f59a26SMasahiro Yamada cp linux.tar.gz rpmbuild/SOURCES 2081f59a26SMasahiro Yamada cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config 21aa7d233fSMasahiro Yamada "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch 221da177e4SLinus Torvaldsfi 231da177e4SLinus Torvalds 2481f59a26SMasahiro Yamadaif grep -q CONFIG_MODULES=y include/config/auto.conf; then 250b7f12f5SMasahiro Yamada M= 260b7f12f5SMasahiro Yamadaelse 270b7f12f5SMasahiro Yamada M=DEL 280b7f12f5SMasahiro Yamadafi 290b7f12f5SMasahiro Yamada 305289c322SMasahiro Yamada__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") 311da177e4SLinus Torvalds 328c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file 338c5d4b64SMasahiro Yamada# 348c5d4b64SMasahiro Yamada# Labels: 358c5d4b64SMasahiro Yamada# $S: this line is enabled only when building source package 360b7f12f5SMasahiro Yamada# $M: this line is enabled only when CONFIG_MODULES is enabled 378c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF 38a06d9ef8SMasahiro Yamada%define ARCH ${ARCH} 3993ed5605SMasahiro Yamada%define KERNELRELEASE ${KERNELRELEASE} 40a06d9ef8SMasahiro Yamada 4119286825SMasahiro Yamada%{!?make: %define make make} 42a06d9ef8SMasahiro Yamada%define makeflags %{?_smp_mflags} ARCH=%{ARCH} 4319286825SMasahiro Yamada 448c5d4b64SMasahiro Yamada Name: kernel 458c5d4b64SMasahiro Yamada Summary: The Linux Kernel 468c5d4b64SMasahiro Yamada Version: $__KERNELRELEASE 478c5d4b64SMasahiro Yamada Release: $(cat .version 2>/dev/null || echo 1) 488c5d4b64SMasahiro Yamada License: GPL 498c5d4b64SMasahiro Yamada Group: System Environment/Kernel 508c5d4b64SMasahiro Yamada Vendor: The Linux Community 5116a122c7SAlexander A. Klimov URL: https://www.kernel.org 526fc91752SMasahiro Yamada$S Source0: linux.tar.gz 5381f59a26SMasahiro Yamada$S Source1: config 5405e96e96SMasahiro Yamada$S Source2: diff.patch 5593ed5605SMasahiro Yamada Provides: kernel-%{KERNELRELEASE} 5602a893bcSMasahiro Yamada$S BuildRequires: bc binutils bison dwarves 5702a893bcSMasahiro Yamada$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 588818039fSIvan Vecera$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync 598818039fSIvan Vecera 603089b2beSMasahiro Yamada # $UTS_MACHINE as a fallback of _arch in case 613089b2beSMasahiro Yamada # /usr/lib/rpm/platform/*/macros was not included. 62233046a2SMasahiro Yamada %{!?_arch: %define _arch $UTS_MACHINE} 638c5d4b64SMasahiro Yamada %define __spec_install_post /usr/lib/rpm/brp-compress || : 648c5d4b64SMasahiro Yamada %define debug_package %{nil} 651da177e4SLinus Torvalds 668c5d4b64SMasahiro Yamada %description 678c5d4b64SMasahiro Yamada The Linux Kernel, the operating system core itself 688c5d4b64SMasahiro Yamada 698c5d4b64SMasahiro Yamada %package headers 708c5d4b64SMasahiro Yamada Summary: Header files for the Linux kernel for use by glibc 718c5d4b64SMasahiro Yamada Group: Development/System 728c5d4b64SMasahiro Yamada Obsoletes: kernel-headers 738c5d4b64SMasahiro Yamada Provides: kernel-headers = %{version} 748c5d4b64SMasahiro Yamada %description headers 758c5d4b64SMasahiro Yamada Kernel-headers includes the C header files that specify the interface 768c5d4b64SMasahiro Yamada between the Linux kernel and userspace libraries and programs. The 778c5d4b64SMasahiro Yamada header files define structures and constants that are needed for 788c5d4b64SMasahiro Yamada building most standard programs and are also needed for rebuilding the 798c5d4b64SMasahiro Yamada glibc package. 808c5d4b64SMasahiro Yamada 810b7f12f5SMasahiro Yamada$S$M %package devel 825d8e41b5SMasahiro Yamada$S$M Summary: Development package for building kernel modules to match the %{version} kernel 830b7f12f5SMasahiro Yamada$S$M Group: System Environment/Kernel 840b7f12f5SMasahiro Yamada$S$M AutoReqProv: no 850b7f12f5SMasahiro Yamada$S$M %description -n kernel-devel 860b7f12f5SMasahiro Yamada$S$M This package provides kernel headers and makefiles sufficient to build modules 875d8e41b5SMasahiro Yamada$S$M against the %{version} kernel package. 880b7f12f5SMasahiro Yamada$S$M 898c5d4b64SMasahiro Yamada$S %prep 906fc91752SMasahiro Yamada$S %setup -q -n linux 9181f59a26SMasahiro Yamada$S cp %{SOURCE1} .config 9205e96e96SMasahiro Yamada$S patch -p1 < %{SOURCE2} 938c5d4b64SMasahiro Yamada$S 948c5d4b64SMasahiro Yamada$S %build 9593ed5605SMasahiro Yamada$S %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release} 968c5d4b64SMasahiro Yamada$S 978c5d4b64SMasahiro Yamada %install 98002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot 998c5d4b64SMasahiro Yamada %ifarch ia64 100002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot/efi 10193ed5605SMasahiro Yamada cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE} 10293ed5605SMasahiro Yamada ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/ 1038c5d4b64SMasahiro Yamada %else 10493ed5605SMasahiro Yamada cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE} 1058c5d4b64SMasahiro Yamada %endif 106fe809b82SMasahiro Yamada$M %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install 107fe809b82SMasahiro Yamada %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 10893ed5605SMasahiro Yamada cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE} 10993ed5605SMasahiro Yamada cp .config %{buildroot}/boot/config-%{KERNELRELEASE} 11093ed5605SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/build 11193ed5605SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/source 112*fe66b5d2SMasahiro Yamada$S$M %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='\${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}' 11393ed5605SMasahiro Yamada$S$M cd %{buildroot}/lib/modules/%{KERNELRELEASE} 11493ed5605SMasahiro Yamada$S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} build 11593ed5605SMasahiro Yamada$S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} source 1168c5d4b64SMasahiro Yamada 1178c5d4b64SMasahiro Yamada %clean 118002494d8SMasahiro Yamada rm -rf %{buildroot} 1198c5d4b64SMasahiro Yamada 1208c5d4b64SMasahiro Yamada %post 12193ed5605SMasahiro Yamada if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then 12293ed5605SMasahiro Yamada cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm 12393ed5605SMasahiro Yamada cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm 12493ed5605SMasahiro Yamada rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE} 12593ed5605SMasahiro Yamada /sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm 12693ed5605SMasahiro Yamada rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm 1271da177e4SLinus Torvalds fi 1281da177e4SLinus Torvalds 1298c5d4b64SMasahiro Yamada %preun 1308c5d4b64SMasahiro Yamada if [ -x /sbin/new-kernel-pkg ]; then 13193ed5605SMasahiro Yamada new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img 132eea6f62bSJavier Martinez Canillas elif [ -x /usr/bin/kernel-install ]; then 13393ed5605SMasahiro Yamada kernel-install remove %{KERNELRELEASE} 1341da177e4SLinus Torvalds fi 1351da177e4SLinus Torvalds 1368c5d4b64SMasahiro Yamada %postun 1378c5d4b64SMasahiro Yamada if [ -x /sbin/update-bootloader ]; then 13893ed5605SMasahiro Yamada /sbin/update-bootloader --remove %{KERNELRELEASE} 139b9a54424SJérôme Glisse fi 1402174d292SMike Marciniszyn 1418c5d4b64SMasahiro Yamada %files 1428c5d4b64SMasahiro Yamada %defattr (-, root, root) 14393ed5605SMasahiro Yamada$M /lib/modules/%{KERNELRELEASE} 14493ed5605SMasahiro Yamada$M %exclude /lib/modules/%{KERNELRELEASE}/build 14593ed5605SMasahiro Yamada$M %exclude /lib/modules/%{KERNELRELEASE}/source 1468c5d4b64SMasahiro Yamada /boot/* 1478c5d4b64SMasahiro Yamada 1488c5d4b64SMasahiro Yamada %files headers 1498c5d4b64SMasahiro Yamada %defattr (-, root, root) 1508c5d4b64SMasahiro Yamada /usr/include 1510b7f12f5SMasahiro Yamada$S$M 1520b7f12f5SMasahiro Yamada$S$M %files devel 1530b7f12f5SMasahiro Yamada$S$M %defattr (-, root, root) 15493ed5605SMasahiro Yamada$S$M /usr/src/kernels/%{KERNELRELEASE} 15593ed5605SMasahiro Yamada$S$M /lib/modules/%{KERNELRELEASE}/build 15693ed5605SMasahiro Yamada$S$M /lib/modules/%{KERNELRELEASE}/source 1578c5d4b64SMasahiro YamadaEOF 158