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 308c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file 318c5d4b64SMasahiro Yamada# 328c5d4b64SMasahiro Yamada# Labels: 338c5d4b64SMasahiro Yamada# $S: this line is enabled only when building source package 340b7f12f5SMasahiro Yamada# $M: this line is enabled only when CONFIG_MODULES is enabled 358c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF 36a06d9ef8SMasahiro Yamada%define ARCH ${ARCH} 3793ed5605SMasahiro Yamada%define KERNELRELEASE ${KERNELRELEASE} 38*1789fc91SMasahiro Yamada%define pkg_release $("${srctree}/init/build-version") 39a06d9ef8SMasahiro Yamada 40d4f65127SMasahiro Yamada# _arch is undefined if /usr/lib/rpm/platform/*/macros was not included. 41d4f65127SMasahiro Yamada%{!?_arch: %define _arch dummy} 4219286825SMasahiro Yamada%{!?make: %define make make} 43a06d9ef8SMasahiro Yamada%define makeflags %{?_smp_mflags} ARCH=%{ARCH} 4419286825SMasahiro Yamada 458c5d4b64SMasahiro Yamada Name: kernel 468c5d4b64SMasahiro Yamada Summary: The Linux Kernel 47d5d2d4ccSMasahiro Yamada Version: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g') 48*1789fc91SMasahiro Yamada Release: %{pkg_release} 498c5d4b64SMasahiro Yamada License: GPL 508c5d4b64SMasahiro Yamada Group: System Environment/Kernel 518c5d4b64SMasahiro Yamada Vendor: The Linux Community 5216a122c7SAlexander A. Klimov URL: https://www.kernel.org 53*1789fc91SMasahiro Yamada Source0: linux.tar.gz 54*1789fc91SMasahiro Yamada Source1: config 55*1789fc91SMasahiro Yamada Source2: diff.patch 5693ed5605SMasahiro Yamada Provides: kernel-%{KERNELRELEASE} 57*1789fc91SMasahiro Yamada BuildRequires: bc binutils bison dwarves 58*1789fc91SMasahiro Yamada BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 59*1789fc91SMasahiro Yamada BuildRequires: gcc make openssl openssl-devel perl python3 rsync 608818039fSIvan Vecera 618c5d4b64SMasahiro Yamada %define __spec_install_post /usr/lib/rpm/brp-compress || : 628c5d4b64SMasahiro Yamada %define debug_package %{nil} 631da177e4SLinus Torvalds 648c5d4b64SMasahiro Yamada %description 658c5d4b64SMasahiro Yamada The Linux Kernel, the operating system core itself 668c5d4b64SMasahiro Yamada 678c5d4b64SMasahiro Yamada %package headers 688c5d4b64SMasahiro Yamada Summary: Header files for the Linux kernel for use by glibc 698c5d4b64SMasahiro Yamada Group: Development/System 708c5d4b64SMasahiro Yamada Obsoletes: kernel-headers 718c5d4b64SMasahiro Yamada Provides: kernel-headers = %{version} 728c5d4b64SMasahiro Yamada %description headers 738c5d4b64SMasahiro Yamada Kernel-headers includes the C header files that specify the interface 748c5d4b64SMasahiro Yamada between the Linux kernel and userspace libraries and programs. The 758c5d4b64SMasahiro Yamada header files define structures and constants that are needed for 768c5d4b64SMasahiro Yamada building most standard programs and are also needed for rebuilding the 778c5d4b64SMasahiro Yamada glibc package. 788c5d4b64SMasahiro Yamada 790b7f12f5SMasahiro Yamada$S$M %package devel 805d8e41b5SMasahiro Yamada$S$M Summary: Development package for building kernel modules to match the %{version} kernel 810b7f12f5SMasahiro Yamada$S$M Group: System Environment/Kernel 820b7f12f5SMasahiro Yamada$S$M AutoReqProv: no 830b7f12f5SMasahiro Yamada$S$M %description -n kernel-devel 840b7f12f5SMasahiro Yamada$S$M This package provides kernel headers and makefiles sufficient to build modules 855d8e41b5SMasahiro Yamada$S$M against the %{version} kernel package. 860b7f12f5SMasahiro Yamada$S$M 87*1789fc91SMasahiro Yamada %prep 88*1789fc91SMasahiro Yamada %setup -q -n linux 89*1789fc91SMasahiro Yamada cp %{SOURCE1} .config 90*1789fc91SMasahiro Yamada patch -p1 < %{SOURCE2} 91*1789fc91SMasahiro Yamada 92*1789fc91SMasahiro Yamada %build 93*1789fc91SMasahiro Yamada %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release} 94*1789fc91SMasahiro Yamada 958c5d4b64SMasahiro Yamada %install 96002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot 978c5d4b64SMasahiro Yamada %ifarch ia64 98002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot/efi 9993ed5605SMasahiro Yamada cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE} 10093ed5605SMasahiro Yamada ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/ 1018c5d4b64SMasahiro Yamada %else 10293ed5605SMasahiro Yamada cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE} 1038c5d4b64SMasahiro Yamada %endif 104fe809b82SMasahiro Yamada$M %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install 105fe809b82SMasahiro Yamada %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 10693ed5605SMasahiro Yamada cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE} 10793ed5605SMasahiro Yamada cp .config %{buildroot}/boot/config-%{KERNELRELEASE} 10893ed5605SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/build 10993ed5605SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/source 110fe66b5d2SMasahiro Yamada$S$M %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='\${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}' 11193ed5605SMasahiro Yamada$S$M cd %{buildroot}/lib/modules/%{KERNELRELEASE} 11293ed5605SMasahiro Yamada$S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} build 11393ed5605SMasahiro Yamada$S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} source 1148c5d4b64SMasahiro Yamada 1158c5d4b64SMasahiro Yamada %clean 116002494d8SMasahiro Yamada rm -rf %{buildroot} 1178c5d4b64SMasahiro Yamada 1188c5d4b64SMasahiro Yamada %post 11993ed5605SMasahiro Yamada if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then 12093ed5605SMasahiro Yamada cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm 12193ed5605SMasahiro Yamada cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm 12293ed5605SMasahiro Yamada rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE} 12393ed5605SMasahiro Yamada /sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm 12493ed5605SMasahiro Yamada rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm 1251da177e4SLinus Torvalds fi 1261da177e4SLinus Torvalds 1278c5d4b64SMasahiro Yamada %preun 1288c5d4b64SMasahiro Yamada if [ -x /sbin/new-kernel-pkg ]; then 12993ed5605SMasahiro Yamada new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img 130eea6f62bSJavier Martinez Canillas elif [ -x /usr/bin/kernel-install ]; then 13193ed5605SMasahiro Yamada kernel-install remove %{KERNELRELEASE} 1321da177e4SLinus Torvalds fi 1331da177e4SLinus Torvalds 1348c5d4b64SMasahiro Yamada %postun 1358c5d4b64SMasahiro Yamada if [ -x /sbin/update-bootloader ]; then 13693ed5605SMasahiro Yamada /sbin/update-bootloader --remove %{KERNELRELEASE} 137b9a54424SJérôme Glisse fi 1382174d292SMike Marciniszyn 1398c5d4b64SMasahiro Yamada %files 1408c5d4b64SMasahiro Yamada %defattr (-, root, root) 14193ed5605SMasahiro Yamada$M /lib/modules/%{KERNELRELEASE} 14293ed5605SMasahiro Yamada$M %exclude /lib/modules/%{KERNELRELEASE}/build 14393ed5605SMasahiro Yamada$M %exclude /lib/modules/%{KERNELRELEASE}/source 1448c5d4b64SMasahiro Yamada /boot/* 1458c5d4b64SMasahiro Yamada 1468c5d4b64SMasahiro Yamada %files headers 1478c5d4b64SMasahiro Yamada %defattr (-, root, root) 1488c5d4b64SMasahiro Yamada /usr/include 1490b7f12f5SMasahiro Yamada$S$M 1500b7f12f5SMasahiro Yamada$S$M %files devel 1510b7f12f5SMasahiro Yamada$S$M %defattr (-, root, root) 15293ed5605SMasahiro Yamada$S$M /usr/src/kernels/%{KERNELRELEASE} 15393ed5605SMasahiro Yamada$S$M /lib/modules/%{KERNELRELEASE}/build 15493ed5605SMasahiro Yamada$S$M /lib/modules/%{KERNELRELEASE}/source 1558c5d4b64SMasahiro YamadaEOF 156