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 1521b42eb4SMasahiro Yamada MAKE="$MAKE -f $srctree/Makefile" 161da177e4SLinus Torvaldselse 178c5d4b64SMasahiro Yamada S= 1881f59a26SMasahiro Yamada 1981f59a26SMasahiro Yamada mkdir -p rpmbuild/SOURCES 2081f59a26SMasahiro Yamada cp linux.tar.gz rpmbuild/SOURCES 2181f59a26SMasahiro Yamada cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config 22aa7d233fSMasahiro Yamada "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch 231da177e4SLinus Torvaldsfi 241da177e4SLinus Torvalds 2581f59a26SMasahiro Yamadaif grep -q CONFIG_MODULES=y include/config/auto.conf; then 260b7f12f5SMasahiro Yamada M= 270b7f12f5SMasahiro Yamadaelse 280b7f12f5SMasahiro Yamada M=DEL 290b7f12f5SMasahiro Yamadafi 300b7f12f5SMasahiro Yamada 315289c322SMasahiro Yamada__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") 32b7dca6ddSMasahiro YamadaEXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \ 335289c322SMasahiro Yamada--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ 34c93a0368SMasahiro Yamada--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s" 351da177e4SLinus Torvalds 368c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file 378c5d4b64SMasahiro Yamada# 388c5d4b64SMasahiro Yamada# Labels: 398c5d4b64SMasahiro Yamada# $S: this line is enabled only when building source package 400b7f12f5SMasahiro Yamada# $M: this line is enabled only when CONFIG_MODULES is enabled 418c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF 428c5d4b64SMasahiro Yamada Name: kernel 438c5d4b64SMasahiro Yamada Summary: The Linux Kernel 448c5d4b64SMasahiro Yamada Version: $__KERNELRELEASE 458c5d4b64SMasahiro Yamada Release: $(cat .version 2>/dev/null || echo 1) 468c5d4b64SMasahiro Yamada License: GPL 478c5d4b64SMasahiro Yamada Group: System Environment/Kernel 488c5d4b64SMasahiro Yamada Vendor: The Linux Community 4916a122c7SAlexander A. Klimov URL: https://www.kernel.org 506fc91752SMasahiro Yamada$S Source0: linux.tar.gz 5181f59a26SMasahiro Yamada$S Source1: config 5205e96e96SMasahiro Yamada$S Source2: diff.patch 53*c90b3bbfSMasahiro Yamada Provides: kernel-$KERNELRELEASE 5402a893bcSMasahiro Yamada$S BuildRequires: bc binutils bison dwarves 5502a893bcSMasahiro Yamada$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 568818039fSIvan Vecera$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync 578818039fSIvan Vecera 583089b2beSMasahiro Yamada # $UTS_MACHINE as a fallback of _arch in case 593089b2beSMasahiro Yamada # /usr/lib/rpm/platform/*/macros was not included. 603089b2beSMasahiro Yamada %define _arch %{?_arch:$UTS_MACHINE} 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 800b7f12f5SMasahiro Yamada$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE 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 850b7f12f5SMasahiro Yamada$S$M against the $__KERNELRELEASE kernel package. 860b7f12f5SMasahiro Yamada$S$M 878c5d4b64SMasahiro Yamada$S %prep 886fc91752SMasahiro Yamada$S %setup -q -n linux 8981f59a26SMasahiro Yamada$S cp %{SOURCE1} .config 9005e96e96SMasahiro Yamada$S patch -p1 < %{SOURCE2} 918c5d4b64SMasahiro Yamada$S 928c5d4b64SMasahiro Yamada$S %build 93f6e09b07SMasahiro Yamada$S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release} 948c5d4b64SMasahiro Yamada$S 958c5d4b64SMasahiro Yamada %install 96002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot 978c5d4b64SMasahiro Yamada %ifarch ia64 98002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot/efi 992e07005fSJanis Schoetterl-Glausch cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE 100002494d8SMasahiro Yamada ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ 1018c5d4b64SMasahiro Yamada %else 1022e07005fSJanis Schoetterl-Glausch cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE 1038c5d4b64SMasahiro Yamada %endif 1047adf14d8SMasahiro Yamada$M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install 1057adf14d8SMasahiro Yamada $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 106002494d8SMasahiro Yamada cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE 107002494d8SMasahiro Yamada cp .config %{buildroot}/boot/config-$KERNELRELEASE 108002494d8SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build 109002494d8SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source 110002494d8SMasahiro Yamada$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE 1118a6105c4SJason Gunthorpe$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE 112002494d8SMasahiro Yamada$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE 1130b7f12f5SMasahiro Yamada$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build 1140b7f12f5SMasahiro Yamada$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source 1158c5d4b64SMasahiro Yamada 1168c5d4b64SMasahiro Yamada %clean 117002494d8SMasahiro Yamada rm -rf %{buildroot} 1188c5d4b64SMasahiro Yamada 1198c5d4b64SMasahiro Yamada %post 1208c5d4b64SMasahiro Yamada if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then 1218c5d4b64SMasahiro Yamada cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm 1228c5d4b64SMasahiro Yamada cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm 1238c5d4b64SMasahiro Yamada rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE 1248c5d4b64SMasahiro Yamada /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 1258c5d4b64SMasahiro Yamada rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 1261da177e4SLinus Torvalds fi 1271da177e4SLinus Torvalds 1288c5d4b64SMasahiro Yamada %preun 1298c5d4b64SMasahiro Yamada if [ -x /sbin/new-kernel-pkg ]; then 1308c5d4b64SMasahiro Yamada new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img 131eea6f62bSJavier Martinez Canillas elif [ -x /usr/bin/kernel-install ]; then 132eea6f62bSJavier Martinez Canillas kernel-install remove $KERNELRELEASE 1331da177e4SLinus Torvalds fi 1341da177e4SLinus Torvalds 1358c5d4b64SMasahiro Yamada %postun 1368c5d4b64SMasahiro Yamada if [ -x /sbin/update-bootloader ]; then 1378c5d4b64SMasahiro Yamada /sbin/update-bootloader --remove $KERNELRELEASE 138b9a54424SJérôme Glisse fi 1392174d292SMike Marciniszyn 1408c5d4b64SMasahiro Yamada %files 1418c5d4b64SMasahiro Yamada %defattr (-, root, root) 1420b7f12f5SMasahiro Yamada$M /lib/modules/$KERNELRELEASE 1430b7f12f5SMasahiro Yamada$M %exclude /lib/modules/$KERNELRELEASE/build 1440b7f12f5SMasahiro Yamada$M %exclude /lib/modules/$KERNELRELEASE/source 1458c5d4b64SMasahiro Yamada /boot/* 1468c5d4b64SMasahiro Yamada 1478c5d4b64SMasahiro Yamada %files headers 1488c5d4b64SMasahiro Yamada %defattr (-, root, root) 1498c5d4b64SMasahiro Yamada /usr/include 1500b7f12f5SMasahiro Yamada$S$M 1510b7f12f5SMasahiro Yamada$S$M %files devel 1520b7f12f5SMasahiro Yamada$S$M %defattr (-, root, root) 1530b7f12f5SMasahiro Yamada$S$M /usr/src/kernels/$KERNELRELEASE 1540b7f12f5SMasahiro Yamada$S$M /lib/modules/$KERNELRELEASE/build 1550b7f12f5SMasahiro Yamada$S$M /lib/modules/$KERNELRELEASE/source 1568c5d4b64SMasahiro YamadaEOF 157