kbuild: rpm-pkg: remove unneeded '-f $srctree/Makefile' 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         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: https://www.kernel.org
49 $S      Source0: linux.tar.gz
50 $S      Source1: config
51 $S      Source2: diff.patch
52         Provides: kernel-$KERNELRELEASE
53 $S      BuildRequires: bc binutils bison dwarves
54 $S      BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
55 $S      BuildRequires: gcc make openssl openssl-devel perl python3 rsync
56
57         # $UTS_MACHINE as a fallback of _arch in case
58         # /usr/lib/rpm/platform/*/macros was not included.
59         %{!?_arch: %define _arch $UTS_MACHINE}
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 $__KERNELRELEASE 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 $__KERNELRELEASE 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 %{?_smp_mflags} 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 -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
99         ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
100         %else
101         cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
102         %endif
103 $M      $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
104         $MAKE %{?_smp_mflags} 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    mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
110 $S$M    tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
111 $S$M    cd %{buildroot}/lib/modules/$KERNELRELEASE
112 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE build
113 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE source
114
115         %clean
116         rm -rf %{buildroot}
117
118         %post
119         if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
120         cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
121         cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
122         rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
123         /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
124         rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
125         fi
126
127         %preun
128         if [ -x /sbin/new-kernel-pkg ]; then
129         new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
130         elif [ -x /usr/bin/kernel-install ]; then
131         kernel-install remove $KERNELRELEASE
132         fi
133
134         %postun
135         if [ -x /sbin/update-bootloader ]; then
136         /sbin/update-bootloader --remove $KERNELRELEASE
137         fi
138
139         %files
140         %defattr (-, root, root)
141 $M      /lib/modules/$KERNELRELEASE
142 $M      %exclude /lib/modules/$KERNELRELEASE/build
143 $M      %exclude /lib/modules/$KERNELRELEASE/source
144         /boot/*
145
146         %files headers
147         %defattr (-, root, root)
148         /usr/include
149 $S$M
150 $S$M    %files devel
151 $S$M    %defattr (-, root, root)
152 $S$M    /usr/src/kernels/$KERNELRELEASE
153 $S$M    /lib/modules/$KERNELRELEASE/build
154 $S$M    /lib/modules/$KERNELRELEASE/source
155 EOF