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 13*2a291fc3SMasahiro Yamadaif [ -z "$1" ]; then 1481f59a26SMasahiro Yamada mkdir -p rpmbuild/SOURCES 1581f59a26SMasahiro Yamada cp linux.tar.gz rpmbuild/SOURCES 1681f59a26SMasahiro Yamada cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config 17aa7d233fSMasahiro Yamada "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch 181da177e4SLinus Torvaldsfi 191da177e4SLinus Torvalds 2081f59a26SMasahiro Yamadaif grep -q CONFIG_MODULES=y include/config/auto.conf; then 21*2a291fc3SMasahiro Yamadaecho '%define with_devel %{?_without_devel: 0} %{?!_without_devel: 1}' 220b7f12f5SMasahiro Yamadaelse 23*2a291fc3SMasahiro Yamadaecho '%define with_devel 0' 240b7f12f5SMasahiro Yamadafi 250b7f12f5SMasahiro Yamada 26*2a291fc3SMasahiro Yamadacat<<-EOF 27a06d9ef8SMasahiro Yamada%define ARCH ${ARCH} 2893ed5605SMasahiro Yamada%define KERNELRELEASE ${KERNELRELEASE} 291789fc91SMasahiro Yamada%define pkg_release $("${srctree}/init/build-version") 30a06d9ef8SMasahiro Yamada 31d4f65127SMasahiro Yamada# _arch is undefined if /usr/lib/rpm/platform/*/macros was not included. 32d4f65127SMasahiro Yamada%{!?_arch: %define _arch dummy} 3319286825SMasahiro Yamada%{!?make: %define make make} 34a06d9ef8SMasahiro Yamada%define makeflags %{?_smp_mflags} ARCH=%{ARCH} 3519286825SMasahiro Yamada 368c5d4b64SMasahiro Yamada Name: kernel 378c5d4b64SMasahiro Yamada Summary: The Linux Kernel 38d5d2d4ccSMasahiro Yamada Version: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g') 391789fc91SMasahiro Yamada Release: %{pkg_release} 408c5d4b64SMasahiro Yamada License: GPL 418c5d4b64SMasahiro Yamada Group: System Environment/Kernel 428c5d4b64SMasahiro Yamada Vendor: The Linux Community 4316a122c7SAlexander A. Klimov URL: https://www.kernel.org 441789fc91SMasahiro Yamada Source0: linux.tar.gz 451789fc91SMasahiro Yamada Source1: config 461789fc91SMasahiro Yamada Source2: diff.patch 4793ed5605SMasahiro Yamada Provides: kernel-%{KERNELRELEASE} 481789fc91SMasahiro Yamada BuildRequires: bc binutils bison dwarves 491789fc91SMasahiro Yamada BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 501789fc91SMasahiro Yamada BuildRequires: gcc make openssl openssl-devel perl python3 rsync 518818039fSIvan Vecera 528c5d4b64SMasahiro Yamada %define __spec_install_post /usr/lib/rpm/brp-compress || : 538c5d4b64SMasahiro Yamada %define debug_package %{nil} 541da177e4SLinus Torvalds 558c5d4b64SMasahiro Yamada %description 568c5d4b64SMasahiro Yamada The Linux Kernel, the operating system core itself 578c5d4b64SMasahiro Yamada 588c5d4b64SMasahiro Yamada %package headers 598c5d4b64SMasahiro Yamada Summary: Header files for the Linux kernel for use by glibc 608c5d4b64SMasahiro Yamada Group: Development/System 618c5d4b64SMasahiro Yamada Obsoletes: kernel-headers 628c5d4b64SMasahiro Yamada Provides: kernel-headers = %{version} 638c5d4b64SMasahiro Yamada %description headers 648c5d4b64SMasahiro Yamada Kernel-headers includes the C header files that specify the interface 658c5d4b64SMasahiro Yamada between the Linux kernel and userspace libraries and programs. The 668c5d4b64SMasahiro Yamada header files define structures and constants that are needed for 678c5d4b64SMasahiro Yamada building most standard programs and are also needed for rebuilding the 688c5d4b64SMasahiro Yamada glibc package. 698c5d4b64SMasahiro Yamada 70*2a291fc3SMasahiro Yamada %if %{with_devel} 71*2a291fc3SMasahiro Yamada %package devel 72*2a291fc3SMasahiro Yamada Summary: Development package for building kernel modules to match the %{version} kernel 73*2a291fc3SMasahiro Yamada Group: System Environment/Kernel 74*2a291fc3SMasahiro Yamada AutoReqProv: no 75*2a291fc3SMasahiro Yamada %description -n kernel-devel 76*2a291fc3SMasahiro Yamada This package provides kernel headers and makefiles sufficient to build modules 77*2a291fc3SMasahiro Yamada against the %{version} kernel package. 78*2a291fc3SMasahiro Yamada %endif 79*2a291fc3SMasahiro Yamada 801789fc91SMasahiro Yamada %prep 811789fc91SMasahiro Yamada %setup -q -n linux 821789fc91SMasahiro Yamada cp %{SOURCE1} .config 831789fc91SMasahiro Yamada patch -p1 < %{SOURCE2} 841789fc91SMasahiro Yamada 851789fc91SMasahiro Yamada %build 861789fc91SMasahiro Yamada %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release} 871789fc91SMasahiro Yamada 888c5d4b64SMasahiro Yamada %install 89002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot 908c5d4b64SMasahiro Yamada %ifarch ia64 91002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot/efi 9293ed5605SMasahiro Yamada cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE} 9393ed5605SMasahiro Yamada ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/ 948c5d4b64SMasahiro Yamada %else 9593ed5605SMasahiro Yamada cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE} 968c5d4b64SMasahiro Yamada %endif 97b537925fSMasahiro Yamada %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install 98fe809b82SMasahiro Yamada %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 9993ed5605SMasahiro Yamada cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE} 10093ed5605SMasahiro Yamada cp .config %{buildroot}/boot/config-%{KERNELRELEASE} 101b537925fSMasahiro Yamada ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build 102b537925fSMasahiro Yamada ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/source 103*2a291fc3SMasahiro Yamada %if %{with_devel} 104*2a291fc3SMasahiro Yamada %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='\${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}' 105*2a291fc3SMasahiro Yamada %endif 1068c5d4b64SMasahiro Yamada 1078c5d4b64SMasahiro Yamada %clean 108002494d8SMasahiro Yamada rm -rf %{buildroot} 1098c5d4b64SMasahiro Yamada 1108c5d4b64SMasahiro Yamada %post 11193ed5605SMasahiro Yamada if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then 11293ed5605SMasahiro Yamada cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm 11393ed5605SMasahiro Yamada cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm 11493ed5605SMasahiro Yamada rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE} 11593ed5605SMasahiro Yamada /sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm 11693ed5605SMasahiro Yamada rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm 1171da177e4SLinus Torvalds fi 1181da177e4SLinus Torvalds 1198c5d4b64SMasahiro Yamada %preun 1208c5d4b64SMasahiro Yamada if [ -x /sbin/new-kernel-pkg ]; then 12193ed5605SMasahiro Yamada new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img 122eea6f62bSJavier Martinez Canillas elif [ -x /usr/bin/kernel-install ]; then 12393ed5605SMasahiro Yamada kernel-install remove %{KERNELRELEASE} 1241da177e4SLinus Torvalds fi 1251da177e4SLinus Torvalds 1268c5d4b64SMasahiro Yamada %postun 1278c5d4b64SMasahiro Yamada if [ -x /sbin/update-bootloader ]; then 12893ed5605SMasahiro Yamada /sbin/update-bootloader --remove %{KERNELRELEASE} 129b9a54424SJérôme Glisse fi 1302174d292SMike Marciniszyn 1318c5d4b64SMasahiro Yamada %files 1328c5d4b64SMasahiro Yamada %defattr (-, root, root) 133b537925fSMasahiro Yamada /lib/modules/%{KERNELRELEASE} 134b537925fSMasahiro Yamada %exclude /lib/modules/%{KERNELRELEASE}/build 135b537925fSMasahiro Yamada %exclude /lib/modules/%{KERNELRELEASE}/source 1368c5d4b64SMasahiro Yamada /boot/* 1378c5d4b64SMasahiro Yamada 1388c5d4b64SMasahiro Yamada %files headers 1398c5d4b64SMasahiro Yamada %defattr (-, root, root) 1408c5d4b64SMasahiro Yamada /usr/include 141*2a291fc3SMasahiro Yamada 142*2a291fc3SMasahiro Yamada %if %{with_devel} 143*2a291fc3SMasahiro Yamada %files devel 144*2a291fc3SMasahiro Yamada %defattr (-, root, root) 145*2a291fc3SMasahiro Yamada /usr/src/kernels/%{KERNELRELEASE} 146*2a291fc3SMasahiro Yamada /lib/modules/%{KERNELRELEASE}/build 147*2a291fc3SMasahiro Yamada /lib/modules/%{KERNELRELEASE}/source 148*2a291fc3SMasahiro Yamada %endif 1498c5d4b64SMasahiro YamadaEOF 150