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 <opencon@rio.skydome.net> 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") 31b7dca6ddSMasahiro YamadaEXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \ 325289c322SMasahiro Yamada--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ 33c93a0368SMasahiro Yamada--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s" 341da177e4SLinus Torvalds 358c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file 368c5d4b64SMasahiro Yamada# 378c5d4b64SMasahiro Yamada# Labels: 388c5d4b64SMasahiro Yamada# $S: this line is enabled only when building source package 390b7f12f5SMasahiro Yamada# $M: this line is enabled only when CONFIG_MODULES is enabled 408c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF 41a06d9ef8SMasahiro Yamada%define ARCH ${ARCH} 42*93ed5605SMasahiro Yamada%define KERNELRELEASE ${KERNELRELEASE} 43a06d9ef8SMasahiro Yamada 4419286825SMasahiro Yamada%{!?make: %define make make} 45a06d9ef8SMasahiro Yamada%define makeflags %{?_smp_mflags} ARCH=%{ARCH} 4619286825SMasahiro Yamada 478c5d4b64SMasahiro Yamada Name: kernel 488c5d4b64SMasahiro Yamada Summary: The Linux Kernel 498c5d4b64SMasahiro Yamada Version: $__KERNELRELEASE 508c5d4b64SMasahiro Yamada Release: $(cat .version 2>/dev/null || echo 1) 518c5d4b64SMasahiro Yamada License: GPL 528c5d4b64SMasahiro Yamada Group: System Environment/Kernel 538c5d4b64SMasahiro Yamada Vendor: The Linux Community 5416a122c7SAlexander A. Klimov URL: https://www.kernel.org 556fc91752SMasahiro Yamada$S Source0: linux.tar.gz 5681f59a26SMasahiro Yamada$S Source1: config 5705e96e96SMasahiro Yamada$S Source2: diff.patch 58*93ed5605SMasahiro Yamada Provides: kernel-%{KERNELRELEASE} 5902a893bcSMasahiro Yamada$S BuildRequires: bc binutils bison dwarves 6002a893bcSMasahiro Yamada$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 618818039fSIvan Vecera$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync 628818039fSIvan Vecera 633089b2beSMasahiro Yamada # $UTS_MACHINE as a fallback of _arch in case 643089b2beSMasahiro Yamada # /usr/lib/rpm/platform/*/macros was not included. 65233046a2SMasahiro Yamada %{!?_arch: %define _arch $UTS_MACHINE} 668c5d4b64SMasahiro Yamada %define __spec_install_post /usr/lib/rpm/brp-compress || : 678c5d4b64SMasahiro Yamada %define debug_package %{nil} 681da177e4SLinus Torvalds 698c5d4b64SMasahiro Yamada %description 708c5d4b64SMasahiro Yamada The Linux Kernel, the operating system core itself 718c5d4b64SMasahiro Yamada 728c5d4b64SMasahiro Yamada %package headers 738c5d4b64SMasahiro Yamada Summary: Header files for the Linux kernel for use by glibc 748c5d4b64SMasahiro Yamada Group: Development/System 758c5d4b64SMasahiro Yamada Obsoletes: kernel-headers 768c5d4b64SMasahiro Yamada Provides: kernel-headers = %{version} 778c5d4b64SMasahiro Yamada %description headers 788c5d4b64SMasahiro Yamada Kernel-headers includes the C header files that specify the interface 798c5d4b64SMasahiro Yamada between the Linux kernel and userspace libraries and programs. The 808c5d4b64SMasahiro Yamada header files define structures and constants that are needed for 818c5d4b64SMasahiro Yamada building most standard programs and are also needed for rebuilding the 828c5d4b64SMasahiro Yamada glibc package. 838c5d4b64SMasahiro Yamada 840b7f12f5SMasahiro Yamada$S$M %package devel 855d8e41b5SMasahiro Yamada$S$M Summary: Development package for building kernel modules to match the %{version} kernel 860b7f12f5SMasahiro Yamada$S$M Group: System Environment/Kernel 870b7f12f5SMasahiro Yamada$S$M AutoReqProv: no 880b7f12f5SMasahiro Yamada$S$M %description -n kernel-devel 890b7f12f5SMasahiro Yamada$S$M This package provides kernel headers and makefiles sufficient to build modules 905d8e41b5SMasahiro Yamada$S$M against the %{version} kernel package. 910b7f12f5SMasahiro Yamada$S$M 928c5d4b64SMasahiro Yamada$S %prep 936fc91752SMasahiro Yamada$S %setup -q -n linux 9481f59a26SMasahiro Yamada$S cp %{SOURCE1} .config 9505e96e96SMasahiro Yamada$S patch -p1 < %{SOURCE2} 968c5d4b64SMasahiro Yamada$S 978c5d4b64SMasahiro Yamada$S %build 98*93ed5605SMasahiro Yamada$S %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release} 998c5d4b64SMasahiro Yamada$S 1008c5d4b64SMasahiro Yamada %install 101002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot 1028c5d4b64SMasahiro Yamada %ifarch ia64 103002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot/efi 104*93ed5605SMasahiro Yamada cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE} 105*93ed5605SMasahiro Yamada ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/ 1068c5d4b64SMasahiro Yamada %else 107*93ed5605SMasahiro Yamada cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE} 1088c5d4b64SMasahiro Yamada %endif 109fe809b82SMasahiro Yamada$M %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install 110fe809b82SMasahiro Yamada %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 111*93ed5605SMasahiro Yamada cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE} 112*93ed5605SMasahiro Yamada cp .config %{buildroot}/boot/config-%{KERNELRELEASE} 113*93ed5605SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/build 114*93ed5605SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/source 115*93ed5605SMasahiro Yamada$S$M mkdir -p %{buildroot}/usr/src/kernels/%{KERNELRELEASE} 116*93ed5605SMasahiro Yamada$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/%{KERNELRELEASE} 117*93ed5605SMasahiro Yamada$S$M cd %{buildroot}/lib/modules/%{KERNELRELEASE} 118*93ed5605SMasahiro Yamada$S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} build 119*93ed5605SMasahiro Yamada$S$M ln -sf /usr/src/kernels/%{KERNELRELEASE} source 1208c5d4b64SMasahiro Yamada 1218c5d4b64SMasahiro Yamada %clean 122002494d8SMasahiro Yamada rm -rf %{buildroot} 1238c5d4b64SMasahiro Yamada 1248c5d4b64SMasahiro Yamada %post 125*93ed5605SMasahiro Yamada if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then 126*93ed5605SMasahiro Yamada cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm 127*93ed5605SMasahiro Yamada cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm 128*93ed5605SMasahiro Yamada rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE} 129*93ed5605SMasahiro Yamada /sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm 130*93ed5605SMasahiro Yamada rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm 1311da177e4SLinus Torvalds fi 1321da177e4SLinus Torvalds 1338c5d4b64SMasahiro Yamada %preun 1348c5d4b64SMasahiro Yamada if [ -x /sbin/new-kernel-pkg ]; then 135*93ed5605SMasahiro Yamada new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img 136eea6f62bSJavier Martinez Canillas elif [ -x /usr/bin/kernel-install ]; then 137*93ed5605SMasahiro Yamada kernel-install remove %{KERNELRELEASE} 1381da177e4SLinus Torvalds fi 1391da177e4SLinus Torvalds 1408c5d4b64SMasahiro Yamada %postun 1418c5d4b64SMasahiro Yamada if [ -x /sbin/update-bootloader ]; then 142*93ed5605SMasahiro Yamada /sbin/update-bootloader --remove %{KERNELRELEASE} 143b9a54424SJérôme Glisse fi 1442174d292SMike Marciniszyn 1458c5d4b64SMasahiro Yamada %files 1468c5d4b64SMasahiro Yamada %defattr (-, root, root) 147*93ed5605SMasahiro Yamada$M /lib/modules/%{KERNELRELEASE} 148*93ed5605SMasahiro Yamada$M %exclude /lib/modules/%{KERNELRELEASE}/build 149*93ed5605SMasahiro Yamada$M %exclude /lib/modules/%{KERNELRELEASE}/source 1508c5d4b64SMasahiro Yamada /boot/* 1518c5d4b64SMasahiro Yamada 1528c5d4b64SMasahiro Yamada %files headers 1538c5d4b64SMasahiro Yamada %defattr (-, root, root) 1548c5d4b64SMasahiro Yamada /usr/include 1550b7f12f5SMasahiro Yamada$S$M 1560b7f12f5SMasahiro Yamada$S$M %files devel 1570b7f12f5SMasahiro Yamada$S$M %defattr (-, root, root) 158*93ed5605SMasahiro Yamada$S$M /usr/src/kernels/%{KERNELRELEASE} 159*93ed5605SMasahiro Yamada$S$M /lib/modules/%{KERNELRELEASE}/build 160*93ed5605SMasahiro Yamada$S$M /lib/modules/%{KERNELRELEASE}/source 1618c5d4b64SMasahiro YamadaEOF 162