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= 18*81f59a26SMasahiro Yamada 19*81f59a26SMasahiro Yamada mkdir -p rpmbuild/SOURCES 20*81f59a26SMasahiro Yamada cp linux.tar.gz rpmbuild/SOURCES 21*81f59a26SMasahiro Yamada cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config 221da177e4SLinus Torvaldsfi 231da177e4SLinus Torvalds 24*81f59a26SMasahiro Yamadaif grep -q CONFIG_MODULES=y include/config/auto.conf; then 250b7f12f5SMasahiro Yamada M= 260b7f12f5SMasahiro Yamadaelse 270b7f12f5SMasahiro Yamada M=DEL 280b7f12f5SMasahiro Yamadafi 290b7f12f5SMasahiro Yamada 30*81f59a26SMasahiro Yamadaif grep -q CONFIG_DRM=y include/config/auto.conf; then 311da177e4SLinus Torvalds PROVIDES=kernel-drm 321da177e4SLinus Torvaldsfi 331da177e4SLinus Torvalds 341da177e4SLinus TorvaldsPROVIDES="$PROVIDES kernel-$KERNELRELEASE" 355289c322SMasahiro Yamada__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") 36b7dca6ddSMasahiro YamadaEXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \ 375289c322SMasahiro Yamada--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ 38c93a0368SMasahiro Yamada--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s" 391da177e4SLinus Torvalds 408c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file 418c5d4b64SMasahiro Yamada# 428c5d4b64SMasahiro Yamada# Labels: 438c5d4b64SMasahiro Yamada# $S: this line is enabled only when building source package 440b7f12f5SMasahiro Yamada# $M: this line is enabled only when CONFIG_MODULES is enabled 458c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF 468c5d4b64SMasahiro Yamada Name: kernel 478c5d4b64SMasahiro Yamada Summary: The Linux Kernel 488c5d4b64SMasahiro Yamada Version: $__KERNELRELEASE 498c5d4b64SMasahiro Yamada Release: $(cat .version 2>/dev/null || echo 1) 508c5d4b64SMasahiro Yamada License: GPL 518c5d4b64SMasahiro Yamada Group: System Environment/Kernel 528c5d4b64SMasahiro Yamada Vendor: The Linux Community 5316a122c7SAlexander A. Klimov URL: https://www.kernel.org 546fc91752SMasahiro Yamada$S Source0: linux.tar.gz 55*81f59a26SMasahiro Yamada$S Source1: config 568c5d4b64SMasahiro Yamada Provides: $PROVIDES 5702a893bcSMasahiro Yamada$S BuildRequires: bc binutils bison dwarves 5802a893bcSMasahiro Yamada$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 598818039fSIvan Vecera$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync 608818039fSIvan Vecera 613089b2beSMasahiro Yamada # $UTS_MACHINE as a fallback of _arch in case 623089b2beSMasahiro Yamada # /usr/lib/rpm/platform/*/macros was not included. 633089b2beSMasahiro Yamada %define _arch %{?_arch:$UTS_MACHINE} 648c5d4b64SMasahiro Yamada %define __spec_install_post /usr/lib/rpm/brp-compress || : 658c5d4b64SMasahiro Yamada %define debug_package %{nil} 661da177e4SLinus Torvalds 678c5d4b64SMasahiro Yamada %description 688c5d4b64SMasahiro Yamada The Linux Kernel, the operating system core itself 698c5d4b64SMasahiro Yamada 708c5d4b64SMasahiro Yamada %package headers 718c5d4b64SMasahiro Yamada Summary: Header files for the Linux kernel for use by glibc 728c5d4b64SMasahiro Yamada Group: Development/System 738c5d4b64SMasahiro Yamada Obsoletes: kernel-headers 748c5d4b64SMasahiro Yamada Provides: kernel-headers = %{version} 758c5d4b64SMasahiro Yamada %description headers 768c5d4b64SMasahiro Yamada Kernel-headers includes the C header files that specify the interface 778c5d4b64SMasahiro Yamada between the Linux kernel and userspace libraries and programs. The 788c5d4b64SMasahiro Yamada header files define structures and constants that are needed for 798c5d4b64SMasahiro Yamada building most standard programs and are also needed for rebuilding the 808c5d4b64SMasahiro Yamada glibc package. 818c5d4b64SMasahiro Yamada 820b7f12f5SMasahiro Yamada$S$M %package devel 830b7f12f5SMasahiro Yamada$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel 840b7f12f5SMasahiro Yamada$S$M Group: System Environment/Kernel 850b7f12f5SMasahiro Yamada$S$M AutoReqProv: no 860b7f12f5SMasahiro Yamada$S$M %description -n kernel-devel 870b7f12f5SMasahiro Yamada$S$M This package provides kernel headers and makefiles sufficient to build modules 880b7f12f5SMasahiro Yamada$S$M against the $__KERNELRELEASE kernel package. 890b7f12f5SMasahiro Yamada$S$M 908c5d4b64SMasahiro Yamada$S %prep 916fc91752SMasahiro Yamada$S %setup -q -n linux 92*81f59a26SMasahiro Yamada$S cp %{SOURCE1} .config 938c5d4b64SMasahiro Yamada$S 948c5d4b64SMasahiro Yamada$S %build 95f6e09b07SMasahiro Yamada$S $MAKE %{?_smp_mflags} 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 1012e07005fSJanis Schoetterl-Glausch cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE 102002494d8SMasahiro Yamada ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ 1038c5d4b64SMasahiro Yamada %else 1042e07005fSJanis Schoetterl-Glausch cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE 1058c5d4b64SMasahiro Yamada %endif 1067adf14d8SMasahiro Yamada$M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install 1077adf14d8SMasahiro Yamada $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 108002494d8SMasahiro Yamada cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE 109002494d8SMasahiro Yamada cp .config %{buildroot}/boot/config-$KERNELRELEASE 110002494d8SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build 111002494d8SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source 112002494d8SMasahiro Yamada$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE 1138a6105c4SJason Gunthorpe$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE 114002494d8SMasahiro Yamada$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE 1150b7f12f5SMasahiro Yamada$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build 1160b7f12f5SMasahiro Yamada$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source 1178c5d4b64SMasahiro Yamada 1188c5d4b64SMasahiro Yamada %clean 119002494d8SMasahiro Yamada rm -rf %{buildroot} 1208c5d4b64SMasahiro Yamada 1218c5d4b64SMasahiro Yamada %post 1228c5d4b64SMasahiro Yamada if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then 1238c5d4b64SMasahiro Yamada cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm 1248c5d4b64SMasahiro Yamada cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm 1258c5d4b64SMasahiro Yamada rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE 1268c5d4b64SMasahiro Yamada /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 1278c5d4b64SMasahiro Yamada rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 1281da177e4SLinus Torvalds fi 1291da177e4SLinus Torvalds 1308c5d4b64SMasahiro Yamada %preun 1318c5d4b64SMasahiro Yamada if [ -x /sbin/new-kernel-pkg ]; then 1328c5d4b64SMasahiro Yamada new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img 133eea6f62bSJavier Martinez Canillas elif [ -x /usr/bin/kernel-install ]; then 134eea6f62bSJavier Martinez Canillas kernel-install remove $KERNELRELEASE 1351da177e4SLinus Torvalds fi 1361da177e4SLinus Torvalds 1378c5d4b64SMasahiro Yamada %postun 1388c5d4b64SMasahiro Yamada if [ -x /sbin/update-bootloader ]; then 1398c5d4b64SMasahiro Yamada /sbin/update-bootloader --remove $KERNELRELEASE 140b9a54424SJérôme Glisse fi 1412174d292SMike Marciniszyn 1428c5d4b64SMasahiro Yamada %files 1438c5d4b64SMasahiro Yamada %defattr (-, root, root) 1440b7f12f5SMasahiro Yamada$M /lib/modules/$KERNELRELEASE 1450b7f12f5SMasahiro Yamada$M %exclude /lib/modules/$KERNELRELEASE/build 1460b7f12f5SMasahiro Yamada$M %exclude /lib/modules/$KERNELRELEASE/source 1478c5d4b64SMasahiro Yamada /boot/* 1488c5d4b64SMasahiro Yamada 1498c5d4b64SMasahiro Yamada %files headers 1508c5d4b64SMasahiro Yamada %defattr (-, root, root) 1518c5d4b64SMasahiro Yamada /usr/include 1520b7f12f5SMasahiro Yamada$S$M 1530b7f12f5SMasahiro Yamada$S$M %files devel 1540b7f12f5SMasahiro Yamada$S$M %defattr (-, root, root) 1550b7f12f5SMasahiro Yamada$S$M /usr/src/kernels/$KERNELRELEASE 1560b7f12f5SMasahiro Yamada$S$M /lib/modules/$KERNELRELEASE/build 1570b7f12f5SMasahiro Yamada$S$M /lib/modules/$KERNELRELEASE/source 1588c5d4b64SMasahiro YamadaEOF 159