kbuild: rpm-pkg: do not hard-code $MAKE in spec file
[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 %{!?make: %define make make}
42
43         Name: kernel
44         Summary: The Linux Kernel
45         Version: $__KERNELRELEASE
46         Release: $(cat .version 2>/dev/null || echo 1)
47         License: GPL
48         Group: System Environment/Kernel
49         Vendor: The Linux Community
50         URL: https://www.kernel.org
51 $S      Source0: linux.tar.gz
52 $S      Source1: config
53 $S      Source2: diff.patch
54         Provides: kernel-$KERNELRELEASE
55 $S      BuildRequires: bc binutils bison dwarves
56 $S      BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
57 $S      BuildRequires: gcc make openssl openssl-devel perl python3 rsync
58
59         # $UTS_MACHINE as a fallback of _arch in case
60         # /usr/lib/rpm/platform/*/macros was not included.
61         %{!?_arch: %define _arch $UTS_MACHINE}
62         %define __spec_install_post /usr/lib/rpm/brp-compress || :
63         %define debug_package %{nil}
64
65         %description
66         The Linux Kernel, the operating system core itself
67
68         %package headers
69         Summary: Header files for the Linux kernel for use by glibc
70         Group: Development/System
71         Obsoletes: kernel-headers
72         Provides: kernel-headers = %{version}
73         %description headers
74         Kernel-headers includes the C header files that specify the interface
75         between the Linux kernel and userspace libraries and programs.  The
76         header files define structures and constants that are needed for
77         building most standard programs and are also needed for rebuilding the
78         glibc package.
79
80 $S$M    %package devel
81 $S$M    Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
82 $S$M    Group: System Environment/Kernel
83 $S$M    AutoReqProv: no
84 $S$M    %description -n kernel-devel
85 $S$M    This package provides kernel headers and makefiles sufficient to build modules
86 $S$M    against the $__KERNELRELEASE kernel package.
87 $S$M
88 $S      %prep
89 $S      %setup -q -n linux
90 $S      cp %{SOURCE1} .config
91 $S      patch -p1 < %{SOURCE2}
92 $S
93 $S      %build
94 $S      %{make} %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
95 $S
96         %install
97         mkdir -p %{buildroot}/boot
98         %ifarch ia64
99         mkdir -p %{buildroot}/boot/efi
100         cp \$(%{make} -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
101         ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
102         %else
103         cp \$(%{make} -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
104         %endif
105 $M      %{make} %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
106         %{make} %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
107         cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
108         cp .config %{buildroot}/boot/config-$KERNELRELEASE
109 $S$M    rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
110 $S$M    rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
111 $S$M    mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
112 $S$M    tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
113 $S$M    cd %{buildroot}/lib/modules/$KERNELRELEASE
114 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE build
115 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE source
116
117         %clean
118         rm -rf %{buildroot}
119
120         %post
121         if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
122         cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
123         cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
124         rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
125         /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
126         rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
127         fi
128
129         %preun
130         if [ -x /sbin/new-kernel-pkg ]; then
131         new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
132         elif [ -x /usr/bin/kernel-install ]; then
133         kernel-install remove $KERNELRELEASE
134         fi
135
136         %postun
137         if [ -x /sbin/update-bootloader ]; then
138         /sbin/update-bootloader --remove $KERNELRELEASE
139         fi
140
141         %files
142         %defattr (-, root, root)
143 $M      /lib/modules/$KERNELRELEASE
144 $M      %exclude /lib/modules/$KERNELRELEASE/build
145 $M      %exclude /lib/modules/$KERNELRELEASE/source
146         /boot/*
147
148         %files headers
149         %defattr (-, root, root)
150         /usr/include
151 $S$M
152 $S$M    %files devel
153 $S$M    %defattr (-, root, root)
154 $S$M    /usr/src/kernels/$KERNELRELEASE
155 $S$M    /lib/modules/$KERNELRELEASE/build
156 $S$M    /lib/modules/$KERNELRELEASE/source
157 EOF