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
18 mkdir -p rpmbuild/SOURCES
19 cp linux.tar.gz rpmbuild/SOURCES
20 cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
21 "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch
24 if grep -q CONFIG_MODULES=y include/config/auto.conf; then
30 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
31 EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
32 --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
33 --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
35 # We can label the here-doc lines for conditional output to the spec file
38 # $S: this line is enabled only when building source package
39 # $M: this line is enabled only when CONFIG_MODULES is enabled
40 sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
41 %{!?make: %define make make}
44 Summary: The Linux Kernel
45 Version: $__KERNELRELEASE
46 Release: $(cat .version 2>/dev/null || echo 1)
48 Group: System Environment/Kernel
49 Vendor: The Linux Community
50 URL: https://www.kernel.org
51 $S Source0: linux.tar.gz
53 $S Source2: diff.patch
54 Provides: kernel-$KERNELRELEASE
55 $S BuildRequires: bc binutils bison dwarves
56 $S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
57 $S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
59 # $UTS_MACHINE as a fallback of _arch in case
60 # /usr/lib/rpm/platform/*/macros was not included.
61 %{!?_arch: %define _arch $UTS_MACHINE}
62 %define __spec_install_post /usr/lib/rpm/brp-compress || :
63 %define debug_package %{nil}
66 The Linux Kernel, the operating system core itself
69 Summary: Header files for the Linux kernel for use by glibc
70 Group: Development/System
71 Obsoletes: kernel-headers
72 Provides: kernel-headers = %{version}
74 Kernel-headers includes the C header files that specify the interface
75 between the Linux kernel and userspace libraries and programs. The
76 header files define structures and constants that are needed for
77 building most standard programs and are also needed for rebuilding the
81 $S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
82 $S$M Group: System Environment/Kernel
84 $S$M %description -n kernel-devel
85 $S$M This package provides kernel headers and makefiles sufficient to build modules
86 $S$M against the $__KERNELRELEASE kernel package.
90 $S cp %{SOURCE1} .config
91 $S patch -p1 < %{SOURCE2}
94 $S %{make} %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
97 mkdir -p %{buildroot}/boot
99 mkdir -p %{buildroot}/boot/efi
100 cp \$(%{make} -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
101 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
103 cp \$(%{make} -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
105 $M %{make} %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
106 %{make} %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
107 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
108 cp .config %{buildroot}/boot/config-$KERNELRELEASE
109 $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
110 $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
111 $S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
112 $S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
113 $S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
114 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
115 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
121 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
122 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
123 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
124 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
125 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
126 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
130 if [ -x /sbin/new-kernel-pkg ]; then
131 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
132 elif [ -x /usr/bin/kernel-install ]; then
133 kernel-install remove $KERNELRELEASE
137 if [ -x /sbin/update-bootloader ]; then
138 /sbin/update-bootloader --remove $KERNELRELEASE
142 %defattr (-, root, root)
143 $M /lib/modules/$KERNELRELEASE
144 $M %exclude /lib/modules/$KERNELRELEASE/build
145 $M %exclude /lib/modules/$KERNELRELEASE/source
149 %defattr (-, root, root)
153 $S$M %defattr (-, root, root)
154 $S$M /usr/src/kernels/$KERNELRELEASE
155 $S$M /lib/modules/$KERNELRELEASE/build
156 $S$M /lib/modules/$KERNELRELEASE/source