kbuild: rpm-pkg: replace $KERNELRELEASE in spec file with %{KERNELRELEASE}
[platform/kernel/linux-starfive.git] / scripts / package / mkspec
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
13 if [ "$1" = prebuilt ]; then
14         S=DEL
15 else
16         S=
17
18         mkdir -p rpmbuild/SOURCES
19         cp linux.tar.gz rpmbuild/SOURCES
20         cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
21         "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch
22 fi
23
24 if grep -q CONFIG_MODULES=y include/config/auto.conf; then
25         M=
26 else
27         M=DEL
28 fi
29
30 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
31 EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
32 --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
33 --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
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
40 sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
41 %define ARCH ${ARCH}
42 %define KERNELRELEASE ${KERNELRELEASE}
43
44 %{!?make: %define make make}
45 %define makeflags %{?_smp_mflags} ARCH=%{ARCH}
46
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: kernel-%{KERNELRELEASE}
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         %{!?_arch: %define _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 %{version} 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 %{version} 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} %{makeflags} 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} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE}
105         ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/
106         %else
107         cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE}
108         %endif
109 $M      %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
110         %{make} %{makeflags} 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
161 EOF