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 22*05e96e96SMasahiro Yamada $(dirname $0)/gen-diff-patch rpmbuild/SOURCES/diff.patch rpmbuild/SOURCES/untracked.patch 23*05e96e96SMasahiro Yamada touch rpmbuild/SOURCES/diff.patch rpmbuild/SOURCES/untracked.patch 241da177e4SLinus Torvaldsfi 251da177e4SLinus Torvalds 2681f59a26SMasahiro Yamadaif grep -q CONFIG_MODULES=y include/config/auto.conf; then 270b7f12f5SMasahiro Yamada M= 280b7f12f5SMasahiro Yamadaelse 290b7f12f5SMasahiro Yamada M=DEL 300b7f12f5SMasahiro Yamadafi 310b7f12f5SMasahiro Yamada 3281f59a26SMasahiro Yamadaif grep -q CONFIG_DRM=y include/config/auto.conf; then 331da177e4SLinus Torvalds PROVIDES=kernel-drm 341da177e4SLinus Torvaldsfi 351da177e4SLinus Torvalds 361da177e4SLinus TorvaldsPROVIDES="$PROVIDES kernel-$KERNELRELEASE" 375289c322SMasahiro Yamada__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") 38b7dca6ddSMasahiro YamadaEXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \ 395289c322SMasahiro Yamada--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ 40c93a0368SMasahiro Yamada--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s" 411da177e4SLinus Torvalds 428c5d4b64SMasahiro Yamada# We can label the here-doc lines for conditional output to the spec file 438c5d4b64SMasahiro Yamada# 448c5d4b64SMasahiro Yamada# Labels: 458c5d4b64SMasahiro Yamada# $S: this line is enabled only when building source package 460b7f12f5SMasahiro Yamada# $M: this line is enabled only when CONFIG_MODULES is enabled 478c5d4b64SMasahiro Yamadased -e '/^DEL/d' -e 's/^\t*//' <<EOF 488c5d4b64SMasahiro Yamada Name: kernel 498c5d4b64SMasahiro Yamada Summary: The Linux Kernel 508c5d4b64SMasahiro Yamada Version: $__KERNELRELEASE 518c5d4b64SMasahiro Yamada Release: $(cat .version 2>/dev/null || echo 1) 528c5d4b64SMasahiro Yamada License: GPL 538c5d4b64SMasahiro Yamada Group: System Environment/Kernel 548c5d4b64SMasahiro Yamada Vendor: The Linux Community 5516a122c7SAlexander A. Klimov URL: https://www.kernel.org 566fc91752SMasahiro Yamada$S Source0: linux.tar.gz 5781f59a26SMasahiro Yamada$S Source1: config 58*05e96e96SMasahiro Yamada$S Source2: diff.patch 59*05e96e96SMasahiro Yamada$S Source3: untracked.patch 608c5d4b64SMasahiro Yamada Provides: $PROVIDES 6102a893bcSMasahiro Yamada$S BuildRequires: bc binutils bison dwarves 6202a893bcSMasahiro Yamada$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex 638818039fSIvan Vecera$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync 648818039fSIvan Vecera 653089b2beSMasahiro Yamada # $UTS_MACHINE as a fallback of _arch in case 663089b2beSMasahiro Yamada # /usr/lib/rpm/platform/*/macros was not included. 673089b2beSMasahiro Yamada %define _arch %{?_arch:$UTS_MACHINE} 688c5d4b64SMasahiro Yamada %define __spec_install_post /usr/lib/rpm/brp-compress || : 698c5d4b64SMasahiro Yamada %define debug_package %{nil} 701da177e4SLinus Torvalds 718c5d4b64SMasahiro Yamada %description 728c5d4b64SMasahiro Yamada The Linux Kernel, the operating system core itself 738c5d4b64SMasahiro Yamada 748c5d4b64SMasahiro Yamada %package headers 758c5d4b64SMasahiro Yamada Summary: Header files for the Linux kernel for use by glibc 768c5d4b64SMasahiro Yamada Group: Development/System 778c5d4b64SMasahiro Yamada Obsoletes: kernel-headers 788c5d4b64SMasahiro Yamada Provides: kernel-headers = %{version} 798c5d4b64SMasahiro Yamada %description headers 808c5d4b64SMasahiro Yamada Kernel-headers includes the C header files that specify the interface 818c5d4b64SMasahiro Yamada between the Linux kernel and userspace libraries and programs. The 828c5d4b64SMasahiro Yamada header files define structures and constants that are needed for 838c5d4b64SMasahiro Yamada building most standard programs and are also needed for rebuilding the 848c5d4b64SMasahiro Yamada glibc package. 858c5d4b64SMasahiro Yamada 860b7f12f5SMasahiro Yamada$S$M %package devel 870b7f12f5SMasahiro Yamada$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel 880b7f12f5SMasahiro Yamada$S$M Group: System Environment/Kernel 890b7f12f5SMasahiro Yamada$S$M AutoReqProv: no 900b7f12f5SMasahiro Yamada$S$M %description -n kernel-devel 910b7f12f5SMasahiro Yamada$S$M This package provides kernel headers and makefiles sufficient to build modules 920b7f12f5SMasahiro Yamada$S$M against the $__KERNELRELEASE kernel package. 930b7f12f5SMasahiro Yamada$S$M 948c5d4b64SMasahiro Yamada$S %prep 956fc91752SMasahiro Yamada$S %setup -q -n linux 9681f59a26SMasahiro Yamada$S cp %{SOURCE1} .config 97*05e96e96SMasahiro Yamada$S if [ -s %{SOURCE2} ]; then 98*05e96e96SMasahiro Yamada$S patch -p1 < %{SOURCE2} 99*05e96e96SMasahiro Yamada$S fi 100*05e96e96SMasahiro Yamada$S if [ -s %{SOURCE3} ]; then 101*05e96e96SMasahiro Yamada$S patch -p1 < %{SOURCE3} 102*05e96e96SMasahiro Yamada$S fi 1038c5d4b64SMasahiro Yamada$S 1048c5d4b64SMasahiro Yamada$S %build 105f6e09b07SMasahiro Yamada$S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release} 1068c5d4b64SMasahiro Yamada$S 1078c5d4b64SMasahiro Yamada %install 108002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot 1098c5d4b64SMasahiro Yamada %ifarch ia64 110002494d8SMasahiro Yamada mkdir -p %{buildroot}/boot/efi 1112e07005fSJanis Schoetterl-Glausch cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE 112002494d8SMasahiro Yamada ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ 1138c5d4b64SMasahiro Yamada %else 1142e07005fSJanis Schoetterl-Glausch cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE 1158c5d4b64SMasahiro Yamada %endif 1167adf14d8SMasahiro Yamada$M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install 1177adf14d8SMasahiro Yamada $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install 118002494d8SMasahiro Yamada cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE 119002494d8SMasahiro Yamada cp .config %{buildroot}/boot/config-$KERNELRELEASE 120002494d8SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build 121002494d8SMasahiro Yamada$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source 122002494d8SMasahiro Yamada$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE 1238a6105c4SJason Gunthorpe$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE 124002494d8SMasahiro Yamada$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE 1250b7f12f5SMasahiro Yamada$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build 1260b7f12f5SMasahiro Yamada$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source 1278c5d4b64SMasahiro Yamada 1288c5d4b64SMasahiro Yamada %clean 129002494d8SMasahiro Yamada rm -rf %{buildroot} 1308c5d4b64SMasahiro Yamada 1318c5d4b64SMasahiro Yamada %post 1328c5d4b64SMasahiro Yamada if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then 1338c5d4b64SMasahiro Yamada cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm 1348c5d4b64SMasahiro Yamada cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm 1358c5d4b64SMasahiro Yamada rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE 1368c5d4b64SMasahiro Yamada /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 1378c5d4b64SMasahiro Yamada rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm 1381da177e4SLinus Torvalds fi 1391da177e4SLinus Torvalds 1408c5d4b64SMasahiro Yamada %preun 1418c5d4b64SMasahiro Yamada if [ -x /sbin/new-kernel-pkg ]; then 1428c5d4b64SMasahiro Yamada new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img 143eea6f62bSJavier Martinez Canillas elif [ -x /usr/bin/kernel-install ]; then 144eea6f62bSJavier Martinez Canillas kernel-install remove $KERNELRELEASE 1451da177e4SLinus Torvalds fi 1461da177e4SLinus Torvalds 1478c5d4b64SMasahiro Yamada %postun 1488c5d4b64SMasahiro Yamada if [ -x /sbin/update-bootloader ]; then 1498c5d4b64SMasahiro Yamada /sbin/update-bootloader --remove $KERNELRELEASE 150b9a54424SJérôme Glisse fi 1512174d292SMike Marciniszyn 1528c5d4b64SMasahiro Yamada %files 1538c5d4b64SMasahiro Yamada %defattr (-, root, root) 1540b7f12f5SMasahiro Yamada$M /lib/modules/$KERNELRELEASE 1550b7f12f5SMasahiro Yamada$M %exclude /lib/modules/$KERNELRELEASE/build 1560b7f12f5SMasahiro Yamada$M %exclude /lib/modules/$KERNELRELEASE/source 1578c5d4b64SMasahiro Yamada /boot/* 1588c5d4b64SMasahiro Yamada 1598c5d4b64SMasahiro Yamada %files headers 1608c5d4b64SMasahiro Yamada %defattr (-, root, root) 1618c5d4b64SMasahiro Yamada /usr/include 1620b7f12f5SMasahiro Yamada$S$M 1630b7f12f5SMasahiro Yamada$S$M %files devel 1640b7f12f5SMasahiro Yamada$S$M %defattr (-, root, root) 1650b7f12f5SMasahiro Yamada$S$M /usr/src/kernels/$KERNELRELEASE 1660b7f12f5SMasahiro Yamada$S$M /lib/modules/$KERNELRELEASE/build 1670b7f12f5SMasahiro Yamada$S$M /lib/modules/$KERNELRELEASE/source 1688c5d4b64SMasahiro YamadaEOF 169