123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- #!/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 <opencon@rio.skydome.net>
- #
- # how we were called determines which rpms we build and how we build them
- if [ "$1" = prebuilt ]; then
- S=DEL
- 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=.tmp_versions --exclude=*vmlinux* \
- --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
- --exclude=.config.old --exclude=.missing-syscalls.d"
- # 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*//' <<EOF
- Name: kernel
- Summary: The Linux Kernel
- Version: $__KERNELRELEASE
- Release: $(cat .version 2>/dev/null || echo 1)
- License: GPL
- Group: System Environment/Kernel
- Vendor: The Linux Community
- URL: http://www.kernel.org
- $S Source: kernel-$__KERNELRELEASE.tar.gz
- Provides: $PROVIDES
- %define __spec_install_post /usr/lib/rpm/brp-compress || :
- %define debug_package %{nil}
- %description
- The Linux Kernel, the operating system core itself
- %package headers
- Summary: Header files for the Linux kernel 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 Linux kernel 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} KBUILD_SRC= modules_install
- make %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr KBUILD_SRC= 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
|