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 if grep -q CONFIG_DRM=y include/config/auto.conf; then
35 PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
36 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
37 EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
38 --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
39 --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
41 # We can label the here-doc lines for conditional output to the spec file
44 # $S: this line is enabled only when building source package
45 # $M: this line is enabled only when CONFIG_MODULES is enabled
46 sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
48 Summary: The Linux Kernel
49 Version: $__KERNELRELEASE
50 Release: $(cat .version 2>/dev/null || echo 1)
52 Group: System Environment/Kernel
53 Vendor: The Linux Community
54 URL: https://www.kernel.org
55 $S Source0: linux.tar.gz
57 $S Source2: diff.patch
59 $S BuildRequires: bc binutils bison dwarves
60 $S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
61 $S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
63 # $UTS_MACHINE as a fallback of _arch in case
64 # /usr/lib/rpm/platform/*/macros was not included.
65 %define _arch %{?_arch:$UTS_MACHINE}
66 %define __spec_install_post /usr/lib/rpm/brp-compress || :
67 %define debug_package %{nil}
70 The Linux Kernel, the operating system core itself
73 Summary: Header files for the Linux kernel for use by glibc
74 Group: Development/System
75 Obsoletes: kernel-headers
76 Provides: kernel-headers = %{version}
78 Kernel-headers includes the C header files that specify the interface
79 between the Linux kernel and userspace libraries and programs. The
80 header files define structures and constants that are needed for
81 building most standard programs and are also needed for rebuilding the
85 $S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
86 $S$M Group: System Environment/Kernel
88 $S$M %description -n kernel-devel
89 $S$M This package provides kernel headers and makefiles sufficient to build modules
90 $S$M against the $__KERNELRELEASE kernel package.
94 $S cp %{SOURCE1} .config
95 $S patch -p1 < %{SOURCE2}
98 $S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
101 mkdir -p %{buildroot}/boot
103 mkdir -p %{buildroot}/boot/efi
104 cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
105 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
107 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
109 $M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
110 $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
111 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
112 cp .config %{buildroot}/boot/config-$KERNELRELEASE
113 $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
114 $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
115 $S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
116 $S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
117 $S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
118 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
119 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
125 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
126 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
127 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
128 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
129 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
130 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
134 if [ -x /sbin/new-kernel-pkg ]; then
135 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
136 elif [ -x /usr/bin/kernel-install ]; then
137 kernel-install remove $KERNELRELEASE
141 if [ -x /sbin/update-bootloader ]; then
142 /sbin/update-bootloader --remove $KERNELRELEASE
146 %defattr (-, root, root)
147 $M /lib/modules/$KERNELRELEASE
148 $M %exclude /lib/modules/$KERNELRELEASE/build
149 $M %exclude /lib/modules/$KERNELRELEASE/source
153 %defattr (-, root, root)
157 $S$M %defattr (-, root, root)
158 $S$M /usr/src/kernels/$KERNELRELEASE
159 $S$M /lib/modules/$KERNELRELEASE/build
160 $S$M /lib/modules/$KERNELRELEASE/source