Merge tag 'kbuild-v6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy...
[linux-block.git] / scripts / package / mkspec
CommitLineData
1da177e4
LT
1#!/bin/sh
2#
2174d292 3# Output a simple RPM spec file.
169dd780 4# This version assumes a minimum of RPM 4.13
1da177e4
LT
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
5289c322 13if [ "$1" = prebuilt ]; then
8c5d4b64 14 S=DEL
21b42eb4 15 MAKE="$MAKE -f $srctree/Makefile"
1da177e4 16else
8c5d4b64 17 S=
81f59a26
MY
18
19 mkdir -p rpmbuild/SOURCES
20 cp linux.tar.gz rpmbuild/SOURCES
21 cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
aa7d233f 22 "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch
1da177e4
LT
23fi
24
81f59a26 25if grep -q CONFIG_MODULES=y include/config/auto.conf; then
0b7f12f5
MY
26 M=
27else
28 M=DEL
29fi
30
5289c322 31__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
b7dca6dd 32EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
5289c322 33--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
c93a0368 34--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
1da177e4 35
8c5d4b64
MY
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
0b7f12f5 40# $M: this line is enabled only when CONFIG_MODULES is enabled
8c5d4b64
MY
41sed -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
16a122c7 49 URL: https://www.kernel.org
6fc91752 50$S Source0: linux.tar.gz
81f59a26 51$S Source1: config
05e96e96 52$S Source2: diff.patch
c90b3bbf 53 Provides: kernel-$KERNELRELEASE
02a893bc
MY
54$S BuildRequires: bc binutils bison dwarves
55$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
8818039f
IV
56$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
57
3089b2be
MY
58 # $UTS_MACHINE as a fallback of _arch in case
59 # /usr/lib/rpm/platform/*/macros was not included.
60 %define _arch %{?_arch:$UTS_MACHINE}
8c5d4b64
MY
61 %define __spec_install_post /usr/lib/rpm/brp-compress || :
62 %define debug_package %{nil}
1da177e4 63
8c5d4b64
MY
64 %description
65 The Linux Kernel, the operating system core itself
1da177e4 66
8c5d4b64
MY
67 %package headers
68 Summary: Header files for the Linux kernel for use by glibc
69 Group: Development/System
70 Obsoletes: kernel-headers
71 Provides: kernel-headers = %{version}
72 %description headers
73 Kernel-headers includes the C header files that specify the interface
74 between the Linux kernel and userspace libraries and programs. The
75 header files define structures and constants that are needed for
76 building most standard programs and are also needed for rebuilding the
77 glibc package.
5289c322 78
0b7f12f5
MY
79$S$M %package devel
80$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
81$S$M Group: System Environment/Kernel
82$S$M AutoReqProv: no
83$S$M %description -n kernel-devel
84$S$M This package provides kernel headers and makefiles sufficient to build modules
85$S$M against the $__KERNELRELEASE kernel package.
86$S$M
8c5d4b64 87$S %prep
6fc91752 88$S %setup -q -n linux
81f59a26 89$S cp %{SOURCE1} .config
aa7d233f 90$S patch -p1 < %{SOURCE2}
8c5d4b64
MY
91$S
92$S %build
f6e09b07 93$S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
8c5d4b64
MY
94$S
95 %install
002494d8 96 mkdir -p %{buildroot}/boot
8c5d4b64 97 %ifarch ia64
002494d8 98 mkdir -p %{buildroot}/boot/efi
2e07005f 99 cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
002494d8 100 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
8c5d4b64 101 %else
2e07005f 102 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
8c5d4b64 103 %endif
7adf14d8
MY
104$M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
105 $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
002494d8
MY
106 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
107 cp .config %{buildroot}/boot/config-$KERNELRELEASE
002494d8
MY
108$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
109$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
110$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
8a6105c4 111$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
002494d8 112$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
0b7f12f5
MY
113$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
114$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
1da177e4 115
8c5d4b64 116 %clean
002494d8 117 rm -rf %{buildroot}
fc370ecf 118
8c5d4b64
MY
119 %post
120 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
121 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
122 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
123 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
124 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
125 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
126 fi
2174d292 127
8c5d4b64
MY
128 %preun
129 if [ -x /sbin/new-kernel-pkg ]; then
130 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
eea6f62b
JMC
131 elif [ -x /usr/bin/kernel-install ]; then
132 kernel-install remove $KERNELRELEASE
8c5d4b64
MY
133 fi
134
135 %postun
136 if [ -x /sbin/update-bootloader ]; then
137 /sbin/update-bootloader --remove $KERNELRELEASE
138 fi
139
140 %files
141 %defattr (-, root, root)
0b7f12f5
MY
142$M /lib/modules/$KERNELRELEASE
143$M %exclude /lib/modules/$KERNELRELEASE/build
144$M %exclude /lib/modules/$KERNELRELEASE/source
8c5d4b64
MY
145 /boot/*
146
147 %files headers
148 %defattr (-, root, root)
149 /usr/include
0b7f12f5
MY
150$S$M
151$S$M %files devel
152$S$M %defattr (-, root, root)
153$S$M /usr/src/kernels/$KERNELRELEASE
154$S$M /lib/modules/$KERNELRELEASE/build
155$S$M /lib/modules/$KERNELRELEASE/source
8c5d4b64 156EOF