]> Git Repo - linux.git/blob - scripts/package/kernel.spec
Merge tag 'soc-drivers-6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux.git] / scripts / package / kernel.spec
1 # _arch is undefined if /usr/lib/rpm/platform/*/macros was not included.
2 %{!?_arch: %define _arch dummy}
3 %{!?make: %define make make}
4 %define makeflags %{?_smp_mflags} ARCH=%{ARCH}
5 %define __spec_install_post /usr/lib/rpm/brp-compress || :
6 %define debug_package %{nil}
7
8 Name: kernel
9 Summary: The Linux Kernel
10 Version: %(echo %{KERNELRELEASE} | sed -e 's/-/_/g')
11 Release: %{pkg_release}
12 License: GPL
13 Group: System Environment/Kernel
14 Vendor: The Linux Community
15 URL: https://www.kernel.org
16 Source0: linux.tar.gz
17 Source1: config
18 Source2: diff.patch
19 Provides: kernel-%{KERNELRELEASE}
20 BuildRequires: bc binutils bison dwarves
21 BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
22 BuildRequires: gcc make openssl openssl-devel perl python3 rsync
23
24 %description
25 The Linux Kernel, the operating system core itself
26
27 %package headers
28 Summary: Header files for the Linux kernel for use by glibc
29 Group: Development/System
30 Obsoletes: kernel-headers < %{version}
31 Provides: kernel-headers = %{version}
32 %description headers
33 Kernel-headers includes the C header files that specify the interface
34 between the Linux kernel and userspace libraries and programs.  The
35 header files define structures and constants that are needed for
36 building most standard programs and are also needed for rebuilding the
37 glibc package.
38
39 %if %{with_devel}
40 %package devel
41 Summary: Development package for building kernel modules to match the %{version} kernel
42 Group: System Environment/Kernel
43 AutoReqProv: no
44 %description -n kernel-devel
45 This package provides kernel headers and makefiles sufficient to build modules
46 against the %{version} kernel package.
47 %endif
48
49 %prep
50 %setup -q -n linux
51 cp %{SOURCE1} .config
52 patch -p1 < %{SOURCE2}
53
54 %build
55 %{make} %{makeflags} KERNELRELEASE=%{KERNELRELEASE} KBUILD_BUILD_VERSION=%{release}
56
57 %install
58 mkdir -p %{buildroot}/lib/modules/%{KERNELRELEASE}
59 cp $(%{make} %{makeflags} -s image_name) %{buildroot}/lib/modules/%{KERNELRELEASE}/vmlinuz
60 # DEPMOD=true makes depmod no-op. We do not package depmod-generated files.
61 %{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} DEPMOD=true modules_install
62 %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
63 cp System.map %{buildroot}/lib/modules/%{KERNELRELEASE}
64 cp .config %{buildroot}/lib/modules/%{KERNELRELEASE}/config
65 if %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='test -d ${srctree}/arch/${SRCARCH}/boot/dts' 2>/dev/null; then
66         %{make} %{makeflags} INSTALL_DTBS_PATH=%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb dtbs_install
67 fi
68 ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build
69 %if %{with_devel}
70 %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}'
71 %endif
72
73 {
74         echo "/lib/modules/%{KERNELRELEASE}"
75
76         for x in alias alias.bin builtin.alias.bin builtin.bin dep dep.bin \
77                                 devname softdep symbols symbols.bin weakdep; do
78                 echo "%ghost /lib/modules/%{KERNELRELEASE}/modules.${x}"
79         done
80
81         for x in System.map config vmlinuz; do
82                 echo "%ghost /boot/${x}-%{KERNELRELEASE}"
83         done
84
85         if [ -d "%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb" ];then
86                 find "%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb" -printf "%%%ghost /boot/dtb-%{KERNELRELEASE}/%%P\n"
87         fi
88
89         echo "%exclude /lib/modules/%{KERNELRELEASE}/build"
90 } > %{buildroot}/kernel.list
91
92 %clean
93 rm -rf %{buildroot}
94
95 %post
96 if [ -x /usr/bin/kernel-install ]; then
97         /usr/bin/kernel-install add %{KERNELRELEASE} /lib/modules/%{KERNELRELEASE}/vmlinuz
98 fi
99 for file in vmlinuz System.map config; do
100         if ! cmp --silent "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}"; then
101                 cp "/lib/modules/%{KERNELRELEASE}/${file}" "/boot/${file}-%{KERNELRELEASE}"
102         fi
103 done
104 if [ -d "/lib/modules/%{KERNELRELEASE}/dtb" ] && \
105    ! diff -rq "/lib/modules/%{KERNELRELEASE}/dtb" "/boot/dtb-%{KERNELRELEASE}" >/dev/null 2>&1; then
106         rm -rf "/boot/dtb-%{KERNELRELEASE}"
107         cp -r "/lib/modules/%{KERNELRELEASE}/dtb" "/boot/dtb-%{KERNELRELEASE}"
108 fi
109 if [ ! -e "/lib/modules/%{KERNELRELEASE}/modules.dep" ]; then
110         /usr/sbin/depmod %{KERNELRELEASE}
111 fi
112
113 %preun
114 if [ -x /usr/bin/kernel-install ]; then
115 kernel-install remove %{KERNELRELEASE}
116 fi
117
118 %files -f %{buildroot}/kernel.list
119 %defattr (-, root, root)
120 %exclude /kernel.list
121
122 %files headers
123 %defattr (-, root, root)
124 /usr/include
125
126 %if %{with_devel}
127 %files devel
128 %defattr (-, root, root)
129 /usr/src/kernels/%{KERNELRELEASE}
130 /lib/modules/%{KERNELRELEASE}/build
131 %endif
This page took 0.043198 seconds and 4 git commands to generate.