blob: e05646dc24dcf633830ce6d8dd3da5f71a29731e [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#!/bin/sh
2#
Mike Marciniszyn2174d292013-07-08 13:14:06 -04003# Output a simple RPM spec file.
4# This version assumes a minimum of RPM 4.0.3.
Linus Torvalds1da177e2005-04-16 15:20:36 -07005#
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 Yamada5289c322017-09-30 10:10:05 +090013if [ "$1" = prebuilt ]; then
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090014 S=DEL
Linus Torvalds1da177e2005-04-16 15:20:36 -070015else
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090016 S=
Linus Torvalds1da177e2005-04-16 15:20:36 -070017fi
18
Masahiro Yamada0b7f12f2017-09-30 10:10:07 +090019if grep -q CONFIG_MODULES=y .config; then
20 M=
21else
22 M=DEL
23fi
24
Masahiro Yamada5289c322017-09-30 10:10:05 +090025if grep -q CONFIG_DRM=y .config; then
Linus Torvalds1da177e2005-04-16 15:20:36 -070026 PROVIDES=kernel-drm
27fi
28
29PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
Masahiro Yamada5289c322017-09-30 10:10:05 +090030__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
31EXCLUDES="$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 Torvalds1da177e2005-04-16 15:20:36 -070034
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090035# 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 Yamada0b7f12f2017-09-30 10:10:07 +090039# $M: this line is enabled only when CONFIG_MODULES is enabled
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090040sed -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 Torvalds1da177e2005-04-16 15:20:36 -070053
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090054 %description
55 The Linux Kernel, the operating system core itself
Linus Torvalds1da177e2005-04-16 15:20:36 -070056
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090057 %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 Yamada5289c322017-09-30 10:10:05 +090068
Masahiro Yamada0b7f12f2017-09-30 10:10:07 +090069$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 Yamada8c5d4b62017-09-30 10:10:06 +090077$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 Yamada002494d2017-09-30 10:10:08 +090084 mkdir -p %{buildroot}/boot
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090085 %ifarch ia64
Masahiro Yamada002494d2017-09-30 10:10:08 +090086 mkdir -p %{buildroot}/boot/efi
87 cp \$(make image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
88 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090089 %else
Masahiro Yamada002494d2017-09-30 10:10:08 +090090 cp \$(make image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090091 %endif
Masahiro Yamada002494d2017-09-30 10:10:08 +090092$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 Yamada8c5d4b62017-09-30 10:10:06 +090096 bzip2 -9 --keep vmlinux
Masahiro Yamada002494d2017-09-30 10:10:08 +090097 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 Gunthorpe8a6105c2018-03-23 11:59:36 -0600101$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
Masahiro Yamada002494d2017-09-30 10:10:08 +0900102$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
Masahiro Yamada0b7f12f2017-09-30 10:10:07 +0900103$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
104$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
Linus Torvalds1da177e2005-04-16 15:20:36 -0700105
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +0900106 %clean
Masahiro Yamada002494d2017-09-30 10:10:08 +0900107 rm -rf %{buildroot}
Josh Huntfc370ec2009-02-11 21:10:57 -0800108
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +0900109 %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 Marciniszyn2174d292013-07-08 13:14:06 -0400117
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +0900118 %preun
119 if [ -x /sbin/new-kernel-pkg ]; then
120 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
Javier Martinez Canillaseea6f622018-04-11 20:15:24 +0200121 elif [ -x /usr/bin/kernel-install ]; then
122 kernel-install remove $KERNELRELEASE
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +0900123 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 Yamada0b7f12f2017-09-30 10:10:07 +0900132$M /lib/modules/$KERNELRELEASE
133$M %exclude /lib/modules/$KERNELRELEASE/build
134$M %exclude /lib/modules/$KERNELRELEASE/source
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +0900135 /boot/*
136
137 %files headers
138 %defattr (-, root, root)
139 /usr/include
Masahiro Yamada0b7f12f2017-09-30 10:10:07 +0900140$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 Yamada8c5d4b62017-09-30 10:10:06 +0900146EOF