#!/bin/sh # # Output a simple RPM spec file. # This version assumes a minimum of RPM 4.0.3. # # The only gothic bit here is redefining install_post to avoid # stripping the symbols from files in the kernel which we want # # Patched for non-x86 by Opencon (L) 2002 # # how we were called determines which rpms we build and how we build them if [ "$1" = prebuilt ]; then S=DEL MAKE="$MAKE -f $srctree/Makefile" else S= fi if grep -q CONFIG_MODULES=y .config; then M= else M=DEL fi if grep -q CONFIG_DRM=y .config; then PROVIDES=kernel-drm fi PROVIDES="$PROVIDES kernel-$KERNELRELEASE" __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \ --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s" # We can label the here-doc lines for conditional output to the spec file # # Labels: # $S: this line is enabled only when building source package # $M: this line is enabled only when CONFIG_MODULES is enabled sed -e '/^DEL/d' -e 's/^\t*//' </dev/null || echo 1) License: GPL Group: System Environment/Kernel Vendor: The GNU Linux-libre Community URL: https://linux-libre.fsfla.org $S Source: kernel-$__KERNELRELEASE.tar.gz Provides: $PROVIDES %define __spec_install_post /usr/lib/rpm/brp-compress || : %define debug_package %{nil} %description The GNU Linux-libre Kernel, the operating system core itself %package headers Summary: Header files for the GNU Linux-libre for use by glibc Group: Development/System Obsoletes: kernel-headers Provides: kernel-headers = %{version} %description headers Kernel-headers includes the C header files that specify the interface between the GNU Linux-libre and userspace libraries and programs. The header files define structures and constants that are needed for building most standard programs and are also needed for rebuilding the glibc package. $S$M %package devel $S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel $S$M Group: System Environment/Kernel $S$M AutoReqProv: no $S$M %description -n kernel-devel $S$M This package provides kernel headers and makefiles sufficient to build modules $S$M against the $__KERNELRELEASE kernel package. $S$M $S %prep $S %setup -q $S $S %build $S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release} $S %install mkdir -p %{buildroot}/boot %ifarch ia64 mkdir -p %{buildroot}/boot/efi cp \$($MAKE image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ %else cp \$($MAKE image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE %endif $M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE cp .config %{buildroot}/boot/config-$KERNELRELEASE bzip2 -9 --keep vmlinux mv vmlinux.bz2 %{buildroot}/boot/vmlinux-$KERNELRELEASE.bz2 $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source $S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE $S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE $S$M cd %{buildroot}/lib/modules/$KERNELRELEASE $S$M ln -sf /usr/src/kernels/$KERNELRELEASE build $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source %clean rm -rf %{buildroot} %post if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm fi %preun if [ -x /sbin/new-kernel-pkg ]; then new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img elif [ -x /usr/bin/kernel-install ]; then kernel-install remove $KERNELRELEASE fi %postun if [ -x /sbin/update-bootloader ]; then /sbin/update-bootloader --remove $KERNELRELEASE fi %files %defattr (-, root, root) $M /lib/modules/$KERNELRELEASE $M %exclude /lib/modules/$KERNELRELEASE/build $M %exclude /lib/modules/$KERNELRELEASE/source /boot/* %files headers %defattr (-, root, root) /usr/include $S$M $S$M %files devel $S$M %defattr (-, root, root) $S$M /usr/src/kernels/$KERNELRELEASE $S$M /lib/modules/$KERNELRELEASE/build $S$M /lib/modules/$KERNELRELEASE/source EOF