GNU Linux-libre 4.19.211-gnu1
[releases.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 else
16         S=
17 fi
18
19 if grep -q CONFIG_MODULES=y .config; then
20         M=
21 else
22         M=DEL
23 fi
24
25 if grep -q CONFIG_DRM=y .config; then
26         PROVIDES=kernel-drm
27 fi
28
29 PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
30 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
31 EXCLUDES="$RCS_TAR_IGNORE --exclude=.tmp_versions --exclude=*vmlinux* \
32 --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
33 --exclude=.config.old --exclude=.missing-syscalls.d"
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         Name: kernel-libre
42         Summary: The GNU Linux-libre Kernel
43         Version: $__KERNELRELEASE
44         Release: $(cat .version 2>/dev/null || echo 1)
45         License: GPL
46         Group: System Environment/Kernel
47         Vendor: The GNU Linux-libre Community
48         URL: https://linux-libre.fsfla.org
49 $S      Source: kernel-$__KERNELRELEASE.tar.gz
50         Provides: $PROVIDES
51         %define __spec_install_post /usr/lib/rpm/brp-compress || :
52         %define debug_package %{nil}
53
54         %description
55         The GNU Linux-libre Kernel, the operating system core itself
56
57         %package headers
58         Summary: Header files for the GNU Linux-libre for use by glibc
59         Group: Development/System
60         Obsoletes: kernel-headers
61         Provides: kernel-headers = %{version}
62         Provides: kernel-libre-headers = %{version}
63         %description headers
64         Kernel-headers includes the C header files that specify the interface
65         between the GNU Linux-libre and userspace libraries and programs.  The
66         header files define structures and constants that are needed for
67         building most standard programs and are also needed for rebuilding the
68         glibc package.
69
70 $S$M    %package devel
71 $S$M    Summary: Development package for building kernel modules to match the $__KERNELRELEASE kernel
72 $S$M    Group: System Environment/Kernel
73 $S$M    AutoReqProv: no
74 $S$M    %description devel
75 $S$M    This package provides kernel headers and makefiles sufficient to build modules
76 $S$M    against the $__KERNELRELEASE kernel package.
77 $S$M
78 $S      %prep
79 $S      %setup -q
80 $S
81 $S      %build
82 $S      make %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
83 $S
84         %install
85         mkdir -p %{buildroot}/boot
86         %ifarch ia64
87         mkdir -p %{buildroot}/boot/efi
88         cp \$(make image_name) %{buildroot}/boot/efi/vmlinuz-$KERNELRELEASE
89         ln -s efi/vmlinuz-$KERNELRELEASE %{buildroot}/boot/
90         %else
91         cp \$(make image_name) %{buildroot}/boot/vmlinuz-$KERNELRELEASE
92         %endif
93 $M      make %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} KBUILD_SRC= modules_install
94         make %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr KBUILD_SRC= headers_install
95         cp System.map %{buildroot}/boot/System.map-$KERNELRELEASE
96         cp .config %{buildroot}/boot/config-$KERNELRELEASE
97         bzip2 -9 --keep vmlinux
98         mv vmlinux.bz2 %{buildroot}/boot/vmlinux-$KERNELRELEASE.bz2
99 $S$M    rm -f %{buildroot}/lib/modules/$KERNELRELEASE/build
100 $S$M    rm -f %{buildroot}/lib/modules/$KERNELRELEASE/source
101 $S$M    mkdir -p %{buildroot}/usr/src/kernels/$KERNELRELEASE
102 $S$M    tar cf - $EXCLUDES . | tar xf - -C %{buildroot}/usr/src/kernels/$KERNELRELEASE
103 $S$M    cd %{buildroot}/lib/modules/$KERNELRELEASE
104 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE build
105 $S$M    ln -sf /usr/src/kernels/$KERNELRELEASE source
106
107         %clean
108         rm -rf %{buildroot}
109
110         %post
111         if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then
112         cp /boot/vmlinuz-$KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm
113         cp /boot/System.map-$KERNELRELEASE /boot/.System.map-$KERNELRELEASE-rpm
114         rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE
115         /sbin/installkernel $KERNELRELEASE /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
116         rm -f /boot/.vmlinuz-$KERNELRELEASE-rpm /boot/.System.map-$KERNELRELEASE-rpm
117         fi
118
119         %preun
120         if [ -x /sbin/new-kernel-pkg ]; then
121         new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
122         elif [ -x /usr/bin/kernel-install ]; then
123         kernel-install remove $KERNELRELEASE
124         fi
125
126         %postun
127         if [ -x /sbin/update-bootloader ]; then
128         /sbin/update-bootloader --remove $KERNELRELEASE
129         fi
130
131         %files
132         %defattr (-, root, root)
133 $M      /lib/modules/$KERNELRELEASE
134 $M      %exclude /lib/modules/$KERNELRELEASE/build
135 $M      %exclude /lib/modules/$KERNELRELEASE/source
136         /boot/*
137
138         %files headers
139         %defattr (-, root, root)
140         /usr/include
141 $S$M
142 $S$M    %files devel
143 $S$M    %defattr (-, root, root)
144 $S$M    /usr/src/kernels/$KERNELRELEASE
145 $S$M    /lib/modules/$KERNELRELEASE/build
146 $S$M    /lib/modules/$KERNELRELEASE/source
147 EOF