Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | # |
Mike Marciniszyn | 2174d29 | 2013-07-08 13:14:06 -0400 | [diff] [blame] | 3 | # Output a simple RPM spec file. |
| 4 | # This version assumes a minimum of RPM 4.0.3. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 5 | # |
| 6 | # The only gothic bit here is redefining install_post to avoid |
| 7 | # stripping the symbols from files in the kernel which we want |
| 8 | # |
| 9 | # Patched for non-x86 by Opencon (L) 2002 <opencon@rio.skydome.net> |
| 10 | # |
| 11 | |
| 12 | # how we were called determines which rpms we build and how we build them |
Masahiro Yamada | 5289c32 | 2017-09-30 10:10:05 +0900 | [diff] [blame] | 13 | if [ "$1" = prebuilt ]; then |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 14 | S=DEL |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 15 | else |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 16 | S= |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 17 | fi |
| 18 | |
Masahiro Yamada | 0b7f12f | 2017-09-30 10:10:07 +0900 | [diff] [blame] | 19 | if grep -q CONFIG_MODULES=y .config; then |
| 20 | M= |
| 21 | else |
| 22 | M=DEL |
| 23 | fi |
| 24 | |
Masahiro Yamada | 5289c32 | 2017-09-30 10:10:05 +0900 | [diff] [blame] | 25 | if grep -q CONFIG_DRM=y .config; then |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 26 | PROVIDES=kernel-drm |
| 27 | fi |
| 28 | |
| 29 | PROVIDES="$PROVIDES kernel-$KERNELRELEASE" |
Masahiro Yamada | 5289c32 | 2017-09-30 10:10:05 +0900 | [diff] [blame] | 30 | __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") |
| 31 | EXCLUDES="$RCS_TAR_IGNORE --exclude=.tmp_versions --exclude=*vmlinux* \ |
| 32 | --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ |
| 33 | --exclude=.config.old --exclude=.missing-syscalls.d" |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 34 | |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 35 | # We can label the here-doc lines for conditional output to the spec file |
| 36 | # |
| 37 | # Labels: |
| 38 | # $S: this line is enabled only when building source package |
Masahiro Yamada | 0b7f12f | 2017-09-30 10:10:07 +0900 | [diff] [blame] | 39 | # $M: this line is enabled only when CONFIG_MODULES is enabled |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 40 | sed -e '/^DEL/d' -e 's/^\t*//' <<EOF |
| 41 | Name: kernel |
| 42 | Summary: The Linux Kernel |
| 43 | Version: $__KERNELRELEASE |
| 44 | Release: $(cat .version 2>/dev/null || echo 1) |
| 45 | License: GPL |
| 46 | Group: System Environment/Kernel |
| 47 | Vendor: The Linux Community |
| 48 | URL: http://www.kernel.org |
| 49 | $S Source: kernel-$__KERNELRELEASE.tar.gz |
| 50 | Provides: $PROVIDES |
| 51 | %define __spec_install_post /usr/lib/rpm/brp-compress || : |
| 52 | %define debug_package %{nil} |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 53 | |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 54 | %description |
| 55 | The Linux Kernel, the operating system core itself |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 56 | |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 57 | %package headers |
| 58 | Summary: Header files for the Linux kernel for use by glibc |
| 59 | Group: Development/System |
| 60 | Obsoletes: kernel-headers |
| 61 | Provides: kernel-headers = %{version} |
| 62 | %description headers |
| 63 | Kernel-headers includes the C header files that specify the interface |
| 64 | between the Linux kernel and userspace libraries and programs. The |
| 65 | header files define structures and constants that are needed for |
| 66 | building most standard programs and are also needed for rebuilding the |
| 67 | glibc package. |
Masahiro Yamada | 5289c32 | 2017-09-30 10:10:05 +0900 | [diff] [blame] | 68 | |
Masahiro Yamada | 0b7f12f | 2017-09-30 10:10:07 +0900 | [diff] [blame] | 69 | $S$M %package devel |
| 70 | $S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel |
| 71 | $S$M Group: System Environment/Kernel |
| 72 | $S$M AutoReqProv: no |
| 73 | $S$M %description -n kernel-devel |
| 74 | $S$M This package provides kernel headers and makefiles sufficient to build modules |
| 75 | $S$M against the $__KERNELRELEASE kernel package. |
| 76 | $S$M |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 77 | $S %prep |
| 78 | $S %setup -q |
| 79 | $S |
| 80 | $S %build |
| 81 | $S make %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release} |
| 82 | $S |
| 83 | %install |
Masahiro Yamada | 002494d | 2017-09-30 10:10:08 +0900 | [diff] [blame] | 84 | mkdir -p %{buildroot}/boot |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 85 | %ifarch ia64 |
Masahiro Yamada | 002494d | 2017-09-30 10:10:08 +0900 | [diff] [blame] | 86 | mkdir -p %{buildroot}/boot/efi |
| 87 | cp \$(make image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE |
| 88 | ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 89 | %else |
Masahiro Yamada | 002494d | 2017-09-30 10:10:08 +0900 | [diff] [blame] | 90 | cp \$(make image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 91 | %endif |
Masahiro Yamada | 002494d | 2017-09-30 10:10:08 +0900 | [diff] [blame] | 92 | $M make %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} KBUILD_SRC= modules_install |
| 93 | make %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr KBUILD_SRC= headers_install |
| 94 | cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE |
| 95 | cp .config %{buildroot}/boot/config-$KERNELRELEASE |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 96 | bzip2 -9 --keep vmlinux |
Masahiro Yamada | 002494d | 2017-09-30 10:10:08 +0900 | [diff] [blame] | 97 | mv vmlinux.bz2 %{buildroot}/boot/vmlinux-$KERNELRELEASE.bz2 |
| 98 | $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build |
| 99 | $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source |
| 100 | $S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE |
Jason Gunthorpe | 8a6105c | 2018-03-23 11:59:36 -0600 | [diff] [blame] | 101 | $S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE |
Masahiro Yamada | 002494d | 2017-09-30 10:10:08 +0900 | [diff] [blame] | 102 | $S$M cd %{buildroot}/lib/modules/$KERNELRELEASE |
Masahiro Yamada | 0b7f12f | 2017-09-30 10:10:07 +0900 | [diff] [blame] | 103 | $S$M ln -sf /usr/src/kernels/$KERNELRELEASE build |
| 104 | $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 105 | |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 106 | %clean |
Masahiro Yamada | 002494d | 2017-09-30 10:10:08 +0900 | [diff] [blame] | 107 | rm -rf %{buildroot} |
Josh Hunt | fc370ec | 2009-02-11 21:10:57 -0800 | [diff] [blame] | 108 | |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 109 | %post |
| 110 | if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then |
| 111 | cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm |
| 112 | cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm |
| 113 | rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE |
| 114 | /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm |
| 115 | rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm |
| 116 | fi |
Mike Marciniszyn | 2174d29 | 2013-07-08 13:14:06 -0400 | [diff] [blame] | 117 | |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 118 | %preun |
| 119 | if [ -x /sbin/new-kernel-pkg ]; then |
| 120 | new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img |
Javier Martinez Canillas | eea6f62 | 2018-04-11 20:15:24 +0200 | [diff] [blame] | 121 | elif [ -x /usr/bin/kernel-install ]; then |
| 122 | kernel-install remove $KERNELRELEASE |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 123 | fi |
| 124 | |
| 125 | %postun |
| 126 | if [ -x /sbin/update-bootloader ]; then |
| 127 | /sbin/update-bootloader --remove $KERNELRELEASE |
| 128 | fi |
| 129 | |
| 130 | %files |
| 131 | %defattr (-, root, root) |
Masahiro Yamada | 0b7f12f | 2017-09-30 10:10:07 +0900 | [diff] [blame] | 132 | $M /lib/modules/$KERNELRELEASE |
| 133 | $M %exclude /lib/modules/$KERNELRELEASE/build |
| 134 | $M %exclude /lib/modules/$KERNELRELEASE/source |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 135 | /boot/* |
| 136 | |
| 137 | %files headers |
| 138 | %defattr (-, root, root) |
| 139 | /usr/include |
Masahiro Yamada | 0b7f12f | 2017-09-30 10:10:07 +0900 | [diff] [blame] | 140 | $S$M |
| 141 | $S$M %files devel |
| 142 | $S$M %defattr (-, root, root) |
| 143 | $S$M /usr/src/kernels/$KERNELRELEASE |
| 144 | $S$M /lib/modules/$KERNELRELEASE/build |
| 145 | $S$M /lib/modules/$KERNELRELEASE/source |
Masahiro Yamada | 8c5d4b6 | 2017-09-30 10:10:06 +0900 | [diff] [blame] | 146 | EOF |