3 # Output a simple RPM spec file.
4 # This version assumes a minimum of RPM 4.13
6 # The only gothic bit here is redefining install_post to avoid
7 # stripping the symbols from files in the kernel which we want
9 # Patched for non-x86 by Opencon (L) 2002 <opencon@rio.skydome.net>
12 # how we were called determines which rpms we build and how we build them
13 if [ "$1" = prebuilt ]; then
15 MAKE="$MAKE -f $srctree/Makefile"
19 mkdir -p rpmbuild/SOURCES
20 cp linux.tar.gz rpmbuild/SOURCES
21 cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
22 "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch
25 if grep -q CONFIG_MODULES=y include/config/auto.conf; then
31 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
32 EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
33 --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
34 --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
36 # We can label the here-doc lines for conditional output to the spec file
39 # $S: this line is enabled only when building source package
40 # $M: this line is enabled only when CONFIG_MODULES is enabled
41 sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
43 Summary: The Linux Kernel
44 Version: $__KERNELRELEASE
45 Release: $(cat .version 2>/dev/null || echo 1)
47 Group: System Environment/Kernel
48 Vendor: The Linux Community
49 URL: https://www.kernel.org
50 $S Source0: linux.tar.gz
52 $S Source2: diff.patch
53 Provides: kernel-$KERNELRELEASE
54 $S BuildRequires: bc binutils bison dwarves
55 $S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
56 $S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
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}
61 %define __spec_install_post /usr/lib/rpm/brp-compress || :
62 %define debug_package %{nil}
65 The Linux Kernel, the operating system core itself
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}
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
80 $S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
81 $S$M Group: System Environment/Kernel
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.
89 $S cp %{SOURCE1} .config
90 $S patch -p1 < %{SOURCE2}
93 $S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
96 mkdir -p %{buildroot}/boot
98 mkdir -p %{buildroot}/boot/efi
99 cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
100 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
102 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
104 $M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
105 $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
106 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
107 cp .config %{buildroot}/boot/config-$KERNELRELEASE
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
111 $S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
112 $S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
113 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
114 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
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
129 if [ -x /sbin/new-kernel-pkg ]; then
130 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
131 elif [ -x /usr/bin/kernel-install ]; then
132 kernel-install remove $KERNELRELEASE
136 if [ -x /sbin/update-bootloader ]; then
137 /sbin/update-bootloader --remove $KERNELRELEASE
141 %defattr (-, root, root)
142 $M /lib/modules/$KERNELRELEASE
143 $M %exclude /lib/modules/$KERNELRELEASE/build
144 $M %exclude /lib/modules/$KERNELRELEASE/source
148 %defattr (-, root, root)
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