kbuild: rpm-pkg: use a dummy string for _arch when undefined
[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 # We can label the here-doc lines for conditional output to the spec file
31 #
32 # Labels:
33 #  $S: this line is enabled only when building source package
34 #  $M: this line is enabled only when CONFIG_MODULES is enabled
35 sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
36 %define ARCH ${ARCH}
37 %define KERNELRELEASE ${KERNELRELEASE}
38
39 # _arch is undefined if /usr/lib/rpm/platform/*/macros was not included.
40 %{!?_arch: %define _arch dummy}
41 %{!?make: %define make make}
42 %define makeflags %{?_smp_mflags} ARCH=%{ARCH}
43
44         Name: kernel
45         Summary: The Linux Kernel
46         Version: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g')
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      Source0: linux.tar.gz
53 $S      Source1: config
54 $S      Source2: diff.patch
55         Provides: kernel-%{KERNELRELEASE}
56 $S      BuildRequires: bc binutils bison dwarves
57 $S      BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
58 $S      BuildRequires: gcc make openssl openssl-devel perl python3 rsync
59
60         %define __spec_install_post /usr/lib/rpm/brp-compress || :
61         %define debug_package %{nil}
62
63         %description
64         The Linux Kernel, the operating system core itself
65
66         %package headers
67         Summary: Header files for the Linux kernel for use by glibc
68         Group: Development/System
69         Obsoletes: kernel-headers
70         Provides: kernel-headers = %{version}
71         %description headers
72         Kernel-headers includes the C header files that specify the interface
73         between the Linux kernel and userspace libraries and programs.  The
74         header files define structures and constants that are needed for
75         building most standard programs and are also needed for rebuilding the
76         glibc package.
77
78 $S$M    %package devel
79 $S$M    Summary: Development package for building kernel modules to match the %{version} kernel
80 $S$M    Group: System Environment/Kernel
81 $S$M    AutoReqProv: no
82 $S$M    %description -n kernel-devel
83 $S$M    This package provides kernel headers and makefiles sufficient to build modules
84 $S$M    against the %{version} kernel package.
85 $S$M
86 $S      %prep
87 $S      %setup -q -n linux
88 $S      cp %{SOURCE1} .config
89 $S      patch -p1 < %{SOURCE2}
90 $S
91 $S      %build
92 $S      %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release}
93 $S
94         %install
95         mkdir -p %{buildroot}/boot
96         %ifarch ia64
97         mkdir -p %{buildroot}/boot/efi
98         cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/efi/vmlinuz-%{KERNELRELEASE}
99         ln -s efi/vmlinuz-%{KERNELRELEASE} %{buildroot}/boot/
100         %else
101         cp \$(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEASE}
102         %endif
103 $M      %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install
104         %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
105         cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE}
106         cp .config %{buildroot}/boot/config-%{KERNELRELEASE}
107 $S$M    rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/build
108 $S$M    rm -f %{buildroot}/lib/modules/%{KERNELRELEASE}/source
109 $S$M    %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='\${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
110 $S$M    cd %{buildroot}/lib/modules/%{KERNELRELEASE}
111 $S$M    ln -sf /usr/src/kernels/%{KERNELRELEASE} build
112 $S$M    ln -sf /usr/src/kernels/%{KERNELRELEASE} source
113
114         %clean
115         rm -rf %{buildroot}
116
117         %post
118         if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KERNELRELEASE} -a -r /boot/System.map-%{KERNELRELEASE} ]; then
119         cp /boot/vmlinuz-%{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm
120         cp /boot/System.map-%{KERNELRELEASE} /boot/.System.map-%{KERNELRELEASE}-rpm
121         rm -f /boot/vmlinuz-%{KERNELRELEASE} /boot/System.map-%{KERNELRELEASE}
122         /sbin/installkernel %{KERNELRELEASE} /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
123         rm -f /boot/.vmlinuz-%{KERNELRELEASE}-rpm /boot/.System.map-%{KERNELRELEASE}-rpm
124         fi
125
126         %preun
127         if [ -x /sbin/new-kernel-pkg ]; then
128         new-kernel-pkg --remove %{KERNELRELEASE} --rminitrd --initrdfile=/boot/initramfs-%{KERNELRELEASE}.img
129         elif [ -x /usr/bin/kernel-install ]; then
130         kernel-install remove %{KERNELRELEASE}
131         fi
132
133         %postun
134         if [ -x /sbin/update-bootloader ]; then
135         /sbin/update-bootloader --remove %{KERNELRELEASE}
136         fi
137
138         %files
139         %defattr (-, root, root)
140 $M      /lib/modules/%{KERNELRELEASE}
141 $M      %exclude /lib/modules/%{KERNELRELEASE}/build
142 $M      %exclude /lib/modules/%{KERNELRELEASE}/source
143         /boot/*
144
145         %files headers
146         %defattr (-, root, root)
147         /usr/include
148 $S$M
149 $S$M    %files devel
150 $S$M    %defattr (-, root, root)
151 $S$M    /usr/src/kernels/%{KERNELRELEASE}
152 $S$M    /lib/modules/%{KERNELRELEASE}/build
153 $S$M    /lib/modules/%{KERNELRELEASE}/source
154 EOF