locking/atomic: Correct (cmp)xchg() instrumentation
[linux-block.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 fi
19
20 if grep -q CONFIG_MODULES=y .config; then
21         M=
22 else
23         M=DEL
24 fi
25
26 if grep -q CONFIG_DRM=y .config; then
27         PROVIDES=kernel-drm
28 fi
29
30 PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
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         Provides: $PROVIDES
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         %define _arch %{?_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} .
89 $S
90 $S      %build
91 $S      $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
92 $S
93         %install
94         mkdir -p %{buildroot}/boot
95         %ifarch ia64
96         mkdir -p %{buildroot}/boot/efi
97         cp \$($MAKE -s image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
98         ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
99         %else
100         cp \$($MAKE -s image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
101         %endif
102 $M      $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
103         $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
104         cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
105         cp .config %{buildroot}/boot/config-$KERNELRELEASE
106 $S$M    rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
107 $S$M    rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
108 $S$M    mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
109 $S$M    tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
110 $S$M    cd %{buildroot}/lib/modules/$KERNELRELEASE
111 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE build
112 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE source
113
114         %clean
115         rm -rf %{buildroot}
116
117         %post
118         if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
119         cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
120         cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
121         rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
122         /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
123         rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
124         fi
125
126         %preun
127         if [ -x /sbin/new-kernel-pkg ]; then
128         new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
129         elif [ -x /usr/bin/kernel-install ]; then
130         kernel-install remove $KERNELRELEASE
131         fi
132
133         %postun
134         if [ -x /sbin/update-bootloader ]; then
135         /sbin/update-bootloader --remove $KERNELRELEASE
136         fi
137
138         %files
139         %defattr (-, root, root)
140 $M      /lib/modules/$KERNELRELEASE
141 $M      %exclude /lib/modules/$KERNELRELEASE/build
142 $M      %exclude /lib/modules/$KERNELRELEASE/source
143         /boot/*
144
145         %files headers
146         %defattr (-, root, root)
147         /usr/include
148 $S$M
149 $S$M    %files devel
150 $S$M    %defattr (-, root, root)
151 $S$M    /usr/src/kernels/$KERNELRELEASE
152 $S$M    /lib/modules/$KERNELRELEASE/build
153 $S$M    /lib/modules/$KERNELRELEASE/source
154 EOF