Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#!/bin/sh
2#
3# Output a simple RPM spec file.
4# This version assumes a minimum of RPM 4.13
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
13if [ "$1" = prebuilt ]; then
14 S=DEL
15 MAKE="$MAKE -f $srctree/Makefile"
16else
17 S=
18
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
23fi
24
25if grep -q CONFIG_MODULES=y include/config/auto.conf; then
26 M=
27else
28 M=DEL
29fi
30
31if grep -q CONFIG_DRM=y include/config/auto.conf; then
32 PROVIDES=kernel-drm
33fi
34
35PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
36__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
37EXCLUDES="$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"
40
41# We can label the here-doc lines for conditional output to the spec file
42#
43# Labels:
44# $S: this line is enabled only when building source package
45# $M: this line is enabled only when CONFIG_MODULES is enabled
46sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
47 Name: kernel
48 Summary: The Linux Kernel
49 Version: $__KERNELRELEASE
50 Release: $(cat .version 2>/dev/null || echo 1)
51 License: GPL
52 Group: System Environment/Kernel
53 Vendor: The Linux Community
54 URL: https://www.kernel.org
55$S Source0: linux.tar.gz
56$S Source1: config
57$S Source2: diff.patch
58 Provides: $PROVIDES
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
62
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}
68
69 %description
70 The Linux Kernel, the operating system core itself
71
72 %package headers
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}
77 %description headers
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
82 glibc package.
83
84$S$M %package devel
85$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
86$S$M Group: System Environment/Kernel
87$S$M AutoReqProv: no
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.
91$S$M
92$S %prep
93$S %setup -q -n linux
94$S cp %{SOURCE1} .config
95$S patch -p1 < %{SOURCE2}
96$S
97$S %build
98$S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
99$S
100 %install
101 mkdir -p %{buildroot}/boot
102 %ifarch ia64
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/
106 %else
107 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
108 %endif
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
120
121 %clean
122 rm -rf %{buildroot}
123
124 %post
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
131 fi
132
133 %preun
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
138 fi
139
140 %postun
141 if [ -x /sbin/update-bootloader ]; then
142 /sbin/update-bootloader --remove $KERNELRELEASE
143 fi
144
145 %files
146 %defattr (-, root, root)
147$M /lib/modules/$KERNELRELEASE
148$M %exclude /lib/modules/$KERNELRELEASE/build
149$M %exclude /lib/modules/$KERNELRELEASE/source
150 /boot/*
151
152 %files headers
153 %defattr (-, root, root)
154 /usr/include
155$S$M
156$S$M %files devel
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
161EOF