Merge tag 'input-for-v6.5-rc0' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor...
[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         MAKE="$MAKE -f $srctree/Makefile"
16 else
17         S=
18
19         mkdir -p rpmbuild/SOURCES
20         cp linux.tar.gz rpmbuild/SOURCES
21         cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
22         "${srctree}/scripts/package/gen-diff-patch" rpmbuild/SOURCES/diff.patch
23 fi
24
25 if grep -q CONFIG_MODULES=y include/config/auto.conf; then
26         M=
27 else
28         M=DEL
29 fi
30
31 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
32 EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
33 --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
34 --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
35
36 # We can label the here-doc lines for conditional output to the spec file
37 #
38 # Labels:
39 #  $S: this line is enabled only when building source package
40 #  $M: this line is enabled only when CONFIG_MODULES is enabled
41 sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
42         Name: kernel
43         Summary: The Linux Kernel
44         Version: $__KERNELRELEASE
45         Release: $(cat .version 2>/dev/null || echo 1)
46         License: GPL
47         Group: System Environment/Kernel
48         Vendor: The Linux Community
49         URL: https://www.kernel.org
50 $S      Source0: linux.tar.gz
51 $S      Source1: config
52 $S      Source2: diff.patch
53         Provides: kernel-$KERNELRELEASE
54 $S      BuildRequires: bc binutils bison dwarves
55 $S      BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
56 $S      BuildRequires: gcc make openssl openssl-devel perl python3 rsync
57
58         # $UTS_MACHINE as a fallback of _arch in case
59         # /usr/lib/rpm/platform/*/macros was not included.
60         %define _arch %{?_arch:$UTS_MACHINE}
61         %define __spec_install_post /usr/lib/rpm/brp-compress || :
62         %define debug_package %{nil}
63
64         %description
65         The Linux Kernel, the operating system core itself
66
67         %package headers
68         Summary: Header files for the Linux kernel for use by glibc
69         Group: Development/System
70         Obsoletes: kernel-headers
71         Provides: kernel-headers = %{version}
72         %description headers
73         Kernel-headers includes the C header files that specify the interface
74         between the Linux kernel and userspace libraries and programs.  The
75         header files define structures and constants that are needed for
76         building most standard programs and are also needed for rebuilding the
77         glibc package.
78
79 $S$M    %package devel
80 $S$M    Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
81 $S$M    Group: System Environment/Kernel
82 $S$M    AutoReqProv: no
83 $S$M    %description -n kernel-devel
84 $S$M    This package provides kernel headers and makefiles sufficient to build modules
85 $S$M    against the $__KERNELRELEASE kernel package.
86 $S$M
87 $S      %prep
88 $S      %setup -q -n linux
89 $S      cp %{SOURCE1} .config
90 $S      patch -p1 < %{SOURCE2}
91 $S
92 $S      %build
93 $S      $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
94 $S
95         %install
96         mkdir -p %{buildroot}/boot
97         %ifarch ia64
98         mkdir -p %{buildroot}/boot/efi
99         cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
100         ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
101         %else
102         cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
103         %endif
104 $M      $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
105         $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
106         cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
107         cp .config %{buildroot}/boot/config-$KERNELRELEASE
108 $S$M    rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
109 $S$M    rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
110 $S$M    mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
111 $S$M    tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
112 $S$M    cd %{buildroot}/lib/modules/$KERNELRELEASE
113 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE build
114 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE source
115
116         %clean
117         rm -rf %{buildroot}
118
119         %post
120         if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
121         cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
122         cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
123         rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
124         /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
125         rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
126         fi
127
128         %preun
129         if [ -x /sbin/new-kernel-pkg ]; then
130         new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
131         elif [ -x /usr/bin/kernel-install ]; then
132         kernel-install remove $KERNELRELEASE
133         fi
134
135         %postun
136         if [ -x /sbin/update-bootloader ]; then
137         /sbin/update-bootloader --remove $KERNELRELEASE
138         fi
139
140         %files
141         %defattr (-, root, root)
142 $M      /lib/modules/$KERNELRELEASE
143 $M      %exclude /lib/modules/$KERNELRELEASE/build
144 $M      %exclude /lib/modules/$KERNELRELEASE/source
145         /boot/*
146
147         %files headers
148         %defattr (-, root, root)
149         /usr/include
150 $S$M
151 $S$M    %files devel
152 $S$M    %defattr (-, root, root)
153 $S$M    /usr/src/kernels/$KERNELRELEASE
154 $S$M    /lib/modules/$KERNELRELEASE/build
155 $S$M    /lib/modules/$KERNELRELEASE/source
156 EOF