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 $(dirname $0)/gen-diff-patch rpmbuild/SOURCES/diff.patch rpmbuild/SOURCES/untracked.patch
23 touch rpmbuild/SOURCES/diff.patch rpmbuild/SOURCES/untracked.patch
26 if grep -q CONFIG_MODULES=y include/config/auto.conf; then
32 if grep -q CONFIG_DRM=y include/config/auto.conf; then
36 PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
37 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
38 EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
39 --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
40 --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
42 # We can label the here-doc lines for conditional output to the spec file
45 # $S: this line is enabled only when building source package
46 # $M: this line is enabled only when CONFIG_MODULES is enabled
47 sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
49 Summary: The Linux Kernel
50 Version: $__KERNELRELEASE
51 Release: $(cat .version 2>/dev/null || echo 1)
53 Group: System Environment/Kernel
54 Vendor: The Linux Community
55 URL: https://www.kernel.org
56 $S Source0: linux.tar.gz
58 $S Source2: diff.patch
59 $S Source3: untracked.patch
61 $S BuildRequires: bc binutils bison dwarves
62 $S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
63 $S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
65 # $UTS_MACHINE as a fallback of _arch in case
66 # /usr/lib/rpm/platform/*/macros was not included.
67 %define _arch %{?_arch:$UTS_MACHINE}
68 %define __spec_install_post /usr/lib/rpm/brp-compress || :
69 %define debug_package %{nil}
72 The Linux Kernel, the operating system core itself
75 Summary: Header files for the Linux kernel for use by glibc
76 Group: Development/System
77 Obsoletes: kernel-headers
78 Provides: kernel-headers = %{version}
80 Kernel-headers includes the C header files that specify the interface
81 between the Linux kernel and userspace libraries and programs. The
82 header files define structures and constants that are needed for
83 building most standard programs and are also needed for rebuilding the
87 $S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
88 $S$M Group: System Environment/Kernel
90 $S$M %description -n kernel-devel
91 $S$M This package provides kernel headers and makefiles sufficient to build modules
92 $S$M against the $__KERNELRELEASE kernel package.
96 $S cp %{SOURCE1} .config
97 $S if [ -s %{SOURCE2} ]; then
98 $S patch -p1 < %{SOURCE2}
100 $S if [ -s %{SOURCE3} ]; then
101 $S patch -p1 < %{SOURCE3}
105 $S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
108 mkdir -p %{buildroot}/boot
110 mkdir -p %{buildroot}/boot/efi
111 cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
112 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
114 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
116 $M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
117 $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
118 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
119 cp .config %{buildroot}/boot/config-$KERNELRELEASE
120 $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
121 $S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
122 $S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
123 $S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
124 $S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
125 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
126 $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
132 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
133 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
134 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
135 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
136 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
137 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
141 if [ -x /sbin/new-kernel-pkg ]; then
142 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
143 elif [ -x /usr/bin/kernel-install ]; then
144 kernel-install remove $KERNELRELEASE
148 if [ -x /sbin/update-bootloader ]; then
149 /sbin/update-bootloader --remove $KERNELRELEASE
153 %defattr (-, root, root)
154 $M /lib/modules/$KERNELRELEASE
155 $M %exclude /lib/modules/$KERNELRELEASE/build
156 $M %exclude /lib/modules/$KERNELRELEASE/source
160 %defattr (-, root, root)
164 $S$M %defattr (-, root, root)
165 $S$M /usr/src/kernels/$KERNELRELEASE
166 $S$M /lib/modules/$KERNELRELEASE/build
167 $S$M /lib/modules/$KERNELRELEASE/source