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