Merge tag '5.20-rc-smb3-client-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6
[linux-2.6-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.0.3.
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      Source: kernel-$__KERNELRELEASE.tar.gz
51         Provides: $PROVIDES
52         # $UTS_MACHINE as a fallback of _arch in case
53         # /usr/lib/rpm/platform/*/macros was not included.
54         %define _arch %{?_arch:$UTS_MACHINE}
55         %define __spec_install_post /usr/lib/rpm/brp-compress || :
56         %define debug_package %{nil}
57
58         %description
59         The Linux Kernel, the operating system core itself
60
61         %package headers
62         Summary: Header files for the Linux kernel for use by glibc
63         Group: Development/System
64         Obsoletes: kernel-headers
65         Provides: kernel-headers = %{version}
66         %description headers
67         Kernel-headers includes the C header files that specify the interface
68         between the Linux kernel and userspace libraries and programs.  The
69         header files define structures and constants that are needed for
70         building most standard programs and are also needed for rebuilding the
71         glibc package.
72
73 $S$M    %package devel
74 $S$M    Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
75 $S$M    Group: System Environment/Kernel
76 $S$M    AutoReqProv: no
77 $S$M    %description -n kernel-devel
78 $S$M    This package provides kernel headers and makefiles sufficient to build modules
79 $S$M    against the $__KERNELRELEASE kernel package.
80 $S$M
81 $S      %prep
82 $S      %setup -q
83 $S
84 $S      %build
85 $S      $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
86 $S
87         %install
88         mkdir -p %{buildroot}/boot
89         %ifarch ia64
90         mkdir -p %{buildroot}/boot/efi
91         cp \$($MAKE image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
92         ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
93         %else
94         cp \$($MAKE image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
95         %endif
96 $M      $MAKE %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} modules_install
97         $MAKE %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
98         cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
99         cp .config %{buildroot}/boot/config-$KERNELRELEASE
100         bzip2 -9 --keep vmlinux
101         mv vmlinux.bz2 %{buildroot}/boot/vmlinux-$KERNELRELEASE.bz2
102 $S$M    rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
103 $S$M    rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
104 $S$M    mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
105 $S$M    tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
106 $S$M    cd %{buildroot}/lib/modules/$KERNELRELEASE
107 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE build
108 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE source
109
110         %clean
111         rm -rf %{buildroot}
112
113         %post
114         if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
115         cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
116         cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
117         rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
118         /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
119         rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
120         fi
121
122         %preun
123         if [ -x /sbin/new-kernel-pkg ]; then
124         new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
125         elif [ -x /usr/bin/kernel-install ]; then
126         kernel-install remove $KERNELRELEASE
127         fi
128
129         %postun
130         if [ -x /sbin/update-bootloader ]; then
131         /sbin/update-bootloader --remove $KERNELRELEASE
132         fi
133
134         %files
135         %defattr (-, root, root)
136 $M      /lib/modules/$KERNELRELEASE
137 $M      %exclude /lib/modules/$KERNELRELEASE/build
138 $M      %exclude /lib/modules/$KERNELRELEASE/source
139         /boot/*
140
141         %files headers
142         %defattr (-, root, root)
143         /usr/include
144 $S$M
145 $S$M    %files devel
146 $S$M    %defattr (-, root, root)
147 $S$M    /usr/src/kernels/$KERNELRELEASE
148 $S$M    /lib/modules/$KERNELRELEASE/build
149 $S$M    /lib/modules/$KERNELRELEASE/source
150 EOF