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