| #!/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 |