blob: 7c477ca7dc9826a0d4bd63e332b4d5959894836a [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
Masahiro Yamada21b42eb2018-11-05 16:51:49 +090015 MAKE="$MAKE -f $srctree/Makefile"
Linus Torvalds1da177e2005-04-16 15:20:36 -070016else
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090017 S=
Linus Torvalds1da177e2005-04-16 15:20:36 -070018fi
19
Masahiro Yamada0b7f12f2017-09-30 10:10:07 +090020if grep -q CONFIG_MODULES=y .config; then
21 M=
22else
23 M=DEL
24fi
25
Masahiro Yamada5289c322017-09-30 10:10:05 +090026if grep -q CONFIG_DRM=y .config; then
Linus Torvalds1da177e2005-04-16 15:20:36 -070027 PROVIDES=kernel-drm
28fi
29
30PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
Masahiro Yamada5289c322017-09-30 10:10:05 +090031__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
Masahiro Yamadab7dca6d2019-07-17 15:17:57 +090032EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
Masahiro Yamada5289c322017-09-30 10:10:05 +090033--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
Masahiro Yamadac93a0362019-07-01 09:58:41 +090034--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
Linus Torvalds1da177e2005-04-16 15:20:36 -070035
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090036# 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 Yamada0b7f12f2017-09-30 10:10:07 +090040# $M: this line is enabled only when CONFIG_MODULES is enabled
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090041sed -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. Klimov16a122c2020-07-19 21:46:02 +020049 URL: https://www.kernel.org
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090050$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 Torvalds1da177e2005-04-16 15:20:36 -070054
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090055 %description
56 The Linux Kernel, the operating system core itself
Linus Torvalds1da177e2005-04-16 15:20:36 -070057
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090058 %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 Yamada5289c322017-09-30 10:10:05 +090069
Masahiro Yamada0b7f12f2017-09-30 10:10:07 +090070$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 Yamada8c5d4b62017-09-30 10:10:06 +090078$S %prep
79$S %setup -q
80$S
81$S %build
Masahiro Yamada21b42eb2018-11-05 16:51:49 +090082$S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090083$S
84 %install
Masahiro Yamada002494d2017-09-30 10:10:08 +090085 mkdir -p %{buildroot}/boot
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090086 %ifarch ia64
Masahiro Yamada002494d2017-09-30 10:10:08 +090087 mkdir -p %{buildroot}/boot/efi
Masahiro Yamada21b42eb2018-11-05 16:51:49 +090088 cp \$($MAKE image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
Masahiro Yamada002494d2017-09-30 10:10:08 +090089 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090090 %else
Masahiro Yamada21b42eb2018-11-05 16:51:49 +090091 cp \$($MAKE image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090092 %endif
Masahiro Yamada21b42eb2018-11-05 16:51:49 +090093$M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
94 $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
Masahiro Yamada002494d2017-09-30 10:10:08 +090095 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
96 cp .config %{buildroot}/boot/config-$KERNELRELEASE
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +090097 bzip2 -9 --keep vmlinux
Masahiro Yamada002494d2017-09-30 10:10:08 +090098 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 Gunthorpe8a6105c2018-03-23 11:59:36 -0600102$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
Masahiro Yamada002494d2017-09-30 10:10:08 +0900103$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
Masahiro Yamada0b7f12f2017-09-30 10:10:07 +0900104$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
105$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
Linus Torvalds1da177e2005-04-16 15:20:36 -0700106
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +0900107 %clean
Masahiro Yamada002494d2017-09-30 10:10:08 +0900108 rm -rf %{buildroot}
Josh Huntfc370ec2009-02-11 21:10:57 -0800109
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +0900110 %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 Marciniszyn2174d292013-07-08 13:14:06 -0400118
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +0900119 %preun
120 if [ -x /sbin/new-kernel-pkg ]; then
121 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
Javier Martinez Canillaseea6f622018-04-11 20:15:24 +0200122 elif [ -x /usr/bin/kernel-install ]; then
123 kernel-install remove $KERNELRELEASE
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +0900124 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 Yamada0b7f12f2017-09-30 10:10:07 +0900133$M /lib/modules/$KERNELRELEASE
134$M %exclude /lib/modules/$KERNELRELEASE/build
135$M %exclude /lib/modules/$KERNELRELEASE/source
Masahiro Yamada8c5d4b62017-09-30 10:10:06 +0900136 /boot/*
137
138 %files headers
139 %defattr (-, root, root)
140 /usr/include
Masahiro Yamada0b7f12f2017-09-30 10:10:07 +0900141$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 Yamada8c5d4b62017-09-30 10:10:06 +0900147EOF