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