Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #!/bin/sh |
2 | # | |
2174d292 | 3 | # Output a simple RPM spec file. |
169dd780 | 4 | # This version assumes a minimum of RPM 4.13 |
1da177e4 LT |
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 | |
5289c322 | 13 | if [ "$1" = prebuilt ]; then |
8c5d4b64 | 14 | S=DEL |
21b42eb4 | 15 | MAKE="$MAKE -f $srctree/Makefile" |
1da177e4 | 16 | else |
8c5d4b64 | 17 | S= |
81f59a26 MY |
18 | |
19 | mkdir -p rpmbuild/SOURCES | |
20 | cp linux.tar.gz rpmbuild/SOURCES | |
21 | cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config | |
aa7d233f | 22 | "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch |
1da177e4 LT |
23 | fi |
24 | ||
81f59a26 | 25 | if grep -q CONFIG_MODULES=y include/config/auto.conf; then |
0b7f12f5 MY |
26 | M= |
27 | else | |
28 | M=DEL | |
29 | fi | |
30 | ||
5289c322 | 31 | __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") |
b7dca6dd | 32 | EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \ |
5289c322 | 33 | --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ |
c93a0368 | 34 | --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s" |
1da177e4 | 35 | |
8c5d4b64 MY |
36 | # We can label the here-doc lines for conditional output to the spec file |
37 | # | |
38 | # Labels: | |
39 | # $S: this line is enabled only when building source package | |
0b7f12f5 | 40 | # $M: this line is enabled only when CONFIG_MODULES is enabled |
8c5d4b64 MY |
41 | sed -e '/^DEL/d' -e 's/^\t*//' <<EOF |
42 | Name: kernel | |
43 | Summary: The Linux Kernel | |
44 | Version: $__KERNELRELEASE | |
45 | Release: $(cat .version 2>/dev/null || echo 1) | |
46 | License: GPL | |
47 | Group: System Environment/Kernel | |
48 | Vendor: The Linux Community | |
16a122c7 | 49 | URL: https://www.kernel.org |
6fc91752 | 50 | $S Source0: linux.tar.gz |
81f59a26 | 51 | $S Source1: config |
05e96e96 | 52 | $S Source2: diff.patch |
c90b3bbf | 53 | Provides: kernel-$KERNELRELEASE |
02a893bc MY |
54 | $S BuildRequires: bc binutils bison dwarves |
55 | $S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex | |
8818039f IV |
56 | $S BuildRequires: gcc make openssl openssl-devel perl python3 rsync |
57 | ||
3089b2be MY |
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} | |
8c5d4b64 MY |
61 | %define __spec_install_post /usr/lib/rpm/brp-compress || : |
62 | %define debug_package %{nil} | |
1da177e4 | 63 | |
8c5d4b64 MY |
64 | %description |
65 | The Linux Kernel, the operating system core itself | |
1da177e4 | 66 | |
8c5d4b64 MY |
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. | |
5289c322 | 78 | |
0b7f12f5 MY |
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 | |
8c5d4b64 | 87 | $S %prep |
6fc91752 | 88 | $S %setup -q -n linux |
81f59a26 | 89 | $S cp %{SOURCE1} .config |
aa7d233f | 90 | $S patch -p1 < %{SOURCE2} |
8c5d4b64 MY |
91 | $S |
92 | $S %build | |
f6e09b07 | 93 | $S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release} |
8c5d4b64 MY |
94 | $S |
95 | %install | |
002494d8 | 96 | mkdir -p %{buildroot}/boot |
8c5d4b64 | 97 | %ifarch ia64 |
002494d8 | 98 | mkdir -p %{buildroot}/boot/efi |
2e07005f | 99 | cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE |
002494d8 | 100 | ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/ |
8c5d4b64 | 101 | %else |
2e07005f | 102 | cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE |
8c5d4b64 | 103 | %endif |
7adf14d8 MY |
104 | $M $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install |
105 | $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install | |
002494d8 MY |
106 | cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE |
107 | cp .config %{buildroot}/boot/config-$KERNELRELEASE | |
002494d8 MY |
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 | |
8a6105c4 | 111 | $S$M tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE |
002494d8 | 112 | $S$M cd %{buildroot}/lib/modules/$KERNELRELEASE |
0b7f12f5 MY |
113 | $S$M ln -sf /usr/src/kernels/$KERNELRELEASE build |
114 | $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source | |
1da177e4 | 115 | |
8c5d4b64 | 116 | %clean |
002494d8 | 117 | rm -rf %{buildroot} |
fc370ecf | 118 | |
8c5d4b64 MY |
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 | |
2174d292 | 127 | |
8c5d4b64 MY |
128 | %preun |
129 | if [ -x /sbin/new-kernel-pkg ]; then | |
130 | new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img | |
eea6f62b JMC |
131 | elif [ -x /usr/bin/kernel-install ]; then |
132 | kernel-install remove $KERNELRELEASE | |
8c5d4b64 MY |
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) | |
0b7f12f5 MY |
142 | $M /lib/modules/$KERNELRELEASE |
143 | $M %exclude /lib/modules/$KERNELRELEASE/build | |
144 | $M %exclude /lib/modules/$KERNELRELEASE/source | |
8c5d4b64 MY |
145 | /boot/* |
146 | ||
147 | %files headers | |
148 | %defattr (-, root, root) | |
149 | /usr/include | |
0b7f12f5 MY |
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 | |
8c5d4b64 | 156 | EOF |