Loading...
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=
18fi
19
20if grep -q CONFIG_MODULES=y .config; then
21 M=
22else
23 M=DEL
24fi
25
26if grep -q CONFIG_DRM=y .config; then
27 PROVIDES=kernel-drm
28fi
29
30PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
31__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
32EXCLUDES="$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"
35
36test -n "$LOCALVERSION" && MAKE="$MAKE LOCALVERSION=$LOCALVERSION"
37
38# We can label the here-doc lines for conditional output to the spec file
39#
40# Labels:
41# $S: this line is enabled only when building source package
42# $M: this line is enabled only when CONFIG_MODULES is enabled
43sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
44 Name: kernel
45 Summary: The Linux Kernel
46 Version: $__KERNELRELEASE
47 Release: $(cat .version 2>/dev/null || echo 1)
48 License: GPL
49 Group: System Environment/Kernel
50 Vendor: The Linux Community
51 URL: https://www.kernel.org
52$S Source: kernel-$__KERNELRELEASE.tar.gz
53 Provides: $PROVIDES
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
57
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}
63
64 %description
65 The Linux Kernel, the operating system core itself
66
67 %package headers
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}
72 %description headers
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
77 glibc package.
78
79$S$M %package devel
80$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
81$S$M Group: System Environment/Kernel
82$S$M AutoReqProv: no
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.
86$S$M
87$S %prep
88$S %setup -q
89$S rm -f scripts/basic/fixdep scripts/kconfig/conf
90$S rm -f tools/objtool/{fixdep,objtool}
91$S
92$S %build
93$S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
94$S
95 %install
96 mkdir -p %{buildroot}/boot
97 %ifarch ia64
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/
101 %else
102 cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
103 %endif
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
115
116 %clean
117 rm -rf %{buildroot}
118
119 %post
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
126 fi
127
128 %preun
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
133 fi
134
135 %postun
136 if [ -x /sbin/update-bootloader ]; then
137 /sbin/update-bootloader --remove $KERNELRELEASE
138 fi
139
140 %files
141 %defattr (-, root, root)
142$M /lib/modules/$KERNELRELEASE
143$M %exclude /lib/modules/$KERNELRELEASE/build
144$M %exclude /lib/modules/$KERNELRELEASE/source
145 /boot/*
146
147 %files headers
148 %defattr (-, root, root)
149 /usr/include
150$S$M
151$S$M %files devel
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
156EOF
1#!/bin/sh
2#
3# Output a simple RPM spec file.
4# This version assumes a minimum of RPM 4.0.3.
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
15else
16 S=
17fi
18
19if grep -q CONFIG_MODULES=y .config; then
20 M=
21else
22 M=DEL
23fi
24
25if grep -q CONFIG_DRM=y .config; then
26 PROVIDES=kernel-drm
27fi
28
29PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
30__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
31EXCLUDES="$RCS_TAR_IGNORE --exclude=.tmp_versions --exclude=*vmlinux* \
32--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
33--exclude=.config.old --exclude=.missing-syscalls.d"
34
35# We can label the here-doc lines for conditional output to the spec file
36#
37# Labels:
38# $S: this line is enabled only when building source package
39# $M: this line is enabled only when CONFIG_MODULES is enabled
40sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
41 Name: kernel
42 Summary: The Linux Kernel
43 Version: $__KERNELRELEASE
44 Release: $(cat .version 2>/dev/null || echo 1)
45 License: GPL
46 Group: System Environment/Kernel
47 Vendor: The Linux Community
48 URL: http://www.kernel.org
49$S Source: kernel-$__KERNELRELEASE.tar.gz
50 Provides: $PROVIDES
51 %define __spec_install_post /usr/lib/rpm/brp-compress || :
52 %define debug_package %{nil}
53
54 %description
55 The Linux Kernel, the operating system core itself
56
57 %package headers
58 Summary: Header files for the Linux kernel for use by glibc
59 Group: Development/System
60 Obsoletes: kernel-headers
61 Provides: kernel-headers = %{version}
62 %description headers
63 Kernel-headers includes the C header files that specify the interface
64 between the Linux kernel and userspace libraries and programs. The
65 header files define structures and constants that are needed for
66 building most standard programs and are also needed for rebuilding the
67 glibc package.
68
69$S$M %package devel
70$S$M Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
71$S$M Group: System Environment/Kernel
72$S$M AutoReqProv: no
73$S$M %description -n kernel-devel
74$S$M This package provides kernel headers and makefiles sufficient to build modules
75$S$M against the $__KERNELRELEASE kernel package.
76$S$M
77$S %prep
78$S %setup -q
79$S
80$S %build
81$S make %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
82$S
83 %install
84 mkdir -p %{buildroot}/boot
85 %ifarch ia64
86 mkdir -p %{buildroot}/boot/efi
87 cp \$(make image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
88 ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
89 %else
90 cp \$(make image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
91 %endif
92$M make %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} KBUILD_SRC= modules_install
93 make %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr KBUILD_SRC= headers_install
94 cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
95 cp .config %{buildroot}/boot/config-$KERNELRELEASE
96 bzip2 -9 --keep vmlinux
97 mv vmlinux.bz2 %{buildroot}/boot/vmlinux-$KERNELRELEASE.bz2
98$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
99$S$M rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
100$S$M mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
101$S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
102$S$M cd %{buildroot}/lib/modules/$KERNELRELEASE
103$S$M ln -sf /usr/src/kernels/$KERNELRELEASE build
104$S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
105
106 %clean
107 rm -rf %{buildroot}
108
109 %post
110 if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
111 cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
112 cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
113 rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
114 /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
115 rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
116 fi
117
118 %preun
119 if [ -x /sbin/new-kernel-pkg ]; then
120 new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
121 elif [ -x /usr/bin/kernel-install ]; then
122 kernel-install remove $KERNELRELEASE
123 fi
124
125 %postun
126 if [ -x /sbin/update-bootloader ]; then
127 /sbin/update-bootloader --remove $KERNELRELEASE
128 fi
129
130 %files
131 %defattr (-, root, root)
132$M /lib/modules/$KERNELRELEASE
133$M %exclude /lib/modules/$KERNELRELEASE/build
134$M %exclude /lib/modules/$KERNELRELEASE/source
135 /boot/*
136
137 %files headers
138 %defattr (-, root, root)
139 /usr/include
140$S$M
141$S$M %files devel
142$S$M %defattr (-, root, root)
143$S$M /usr/src/kernels/$KERNELRELEASE
144$S$M /lib/modules/$KERNELRELEASE/build
145$S$M /lib/modules/$KERNELRELEASE/source
146EOF