1 # Ignore double dash in version for rpmbuild
2 %define _wrong_version_format_terminate_build 0
4 %define config_name tizen_bcm2711_defconfig
5 %define config_name_rt tizen_bcm2711_rt_defconfig
7 %define buildarch arm64
11 %define target_board rpi4
12 %define variant %{buildarch}-%{target_board}
14 Name: rpi4-linux-kernel
15 Summary: The Linux Kernel for Raspberry Pi4
19 ExclusiveArch: %{arm} aarch64
21 Vendor: The Linux Community
22 URL: https://www.kernel.org
23 Source0: linux-kernel-%{version}.tar.xz
24 BuildRoot: %{_tmppath}/%{name}-%{PACKAGE_VERSION}-root
26 %define fullVersion %{version}-%{variant}
29 BuildRequires: module-init-tools
32 BuildRequires: libopenssl1.1-devel
33 BuildRequires: libunwind-devel
34 BuildRequires: libdw-devel
35 BuildRequires: libelf-devel
36 BuildRequires: elfutils
37 BuildRequires: xz-devel
38 BuildRequires: binutils-devel
39 BuildRequires: python3
43 The Linux Kernel, the operating system core itself
46 %package -n %{variant}-linux-kernel
48 Summary: Tizen kernel for %{target_board}
50 Provides: %{variant}-kernel-uname-r = %{fullVersion}
51 Provides: linux-kernel = %{version}-%{release}
53 %description -n %{variant}-linux-kernel
54 This package contains the Linux kernel for Tizen (arch %{buildarch}, target board %{target_board})
56 %package -n %{variant}-rt-linux-kernel
58 Summary: Tizen kernel for %{target_board}
60 Provides: %{variant}-kernel-uname-r = %{fullVersion}-rt
61 Provides: linux-kernel = %{version}-%{release}-rt
63 %description -n %{variant}-rt-linux-kernel
64 This package contains the Linux kernel for Tizen (arch %{buildarch}, target board %{target_board})
68 %package -n %{variant}-linux-kernel-modules
69 Summary: Kernel modules for %{target_board}
71 Provides: %{variant}-kernel-modules = %{fullVersion}
72 Provides: %{variant}-kernel-modules-uname-r = %{fullVersion}
74 %description -n %{variant}-linux-kernel-modules
75 Kernel-modules includes the loadable kernel modules(.ko files) for %{target_board}
77 %package -n %{variant}-rt-linux-kernel-modules
78 Summary: Kernel modules for %{target_board}
80 Provides: %{variant}-kernel-modules = %{fullVersion}-rt
81 Provides: %{variant}-kernel-modules-uname-r = %{fullVersion}-rt
83 %description -n %{variant}-rt-linux-kernel-modules
84 Kernel-modules includes the loadable kernel modules(.ko files) for %{target_board}
85 with the PREEMPT_RT patch
89 %package -n %{variant}-linux-kernel-devel
91 Summary: Linux support kernel map and etc for other packages
93 Provides: %{variant}-kernel-devel = %{fullVersion}
94 Provides: %{variant}-kernel-devel-uname-r = %{fullVersion}
96 %description -n %{variant}-linux-kernel-devel
97 This package provides kernel map and etc information.
99 %package -n %{variant}-rt-linux-kernel-devel
101 Summary: Linux support kernel map and etc for other packages
103 Provides: %{variant}-kernel-devel = %{fullVersion}-rt
104 Provides: %{variant}-kernel-devel-uname-r = %{fullVersion}-rt
106 %description -n %{variant}-rt-linux-kernel-devel
107 This package provides kernel map and etc information.
110 %package -n %{variant}-linux-kernel-headers
112 Summary: Linux support headers for userspace development
114 Provides: kernel-headers-tizen-dev
116 %description -n %{variant}-linux-kernel-headers
117 This package provides userspaces headers from the Linux kernel. These
118 headers are used by the installed headers for GNU glibc and other system
121 %package -n linux-kernel-perf
122 Summary: The perf performance counter tool
124 Provides: perf = %{version}
126 %description -n linux-kernel-perf
127 This package provides the "perf" tool that can be used to monitor performance
128 counter events as well as various kernel internal events.
134 %{?asan:/usr/bin/gcc-unforce-options}
135 %{?ubsan:/usr/bin/gcc-unforce-options}
137 for target in %{variant} %{variant}-rt; do
138 echo "-${target}" > localversion-tizen
140 # extract uapi headers
141 make O=build/${target} headers_install %{?_smp_mflags}
146 make O=build/${target} %{config_name} %{?_smp_mflags}
149 WERROR=0 make O=build/${target} -s -C tools/lib/traceevent %{?_smp_mflags}
150 WERROR=0 make O=build/${target} -s -C tools/perf EXTRA_CFLAGS="-fPIE -rdynamic" %{?_smp_mflags}
153 cat _localversion-rt > localversion-rt
154 make O=build/${target} %{config_name_rt} %{?_smp_mflags}
158 # Build Image/Image.gz
159 make O=build/${target} %{?_smp_mflags}
162 make O=build/${target} dtbs %{?_smp_mflags}
165 make O=build/${target} modules %{?_smp_mflags}
169 QA_SKIP_BUILD_ROOT="DO_NOT_WANT"; export QA_SKIP_BUILD_ROOT
171 # Destination directories
172 mkdir -p %{buildroot}/boot
173 mkdir -p %{buildroot}/lib/modules
175 # Install boot binary files
177 install -m 644 rpi4/boot/config_64bit.txt %{buildroot}/boot/config.txt
179 install -m 644 rpi4/boot/config.txt %{buildroot}/boot/
181 install -m 644 rpi4/boot/LICENCE.broadcom %{buildroot}/boot/
182 install -m 644 rpi4/boot/start*.elf %{buildroot}/boot/
183 install -m 644 rpi4/boot/fixup*.dat %{buildroot}/boot/
187 install -m 644 build/%{variant}/arch/%{buildarch}/boot/dts/broadcom/bcm*.dtb %{buildroot}/boot/
189 install -m 644 build/%{variant}/arch/%{buildarch}/boot/dts/bcm*.dtb %{buildroot}/boot/
191 mkdir -p %{buildroot}/boot/overlays
192 install -m 644 build/%{variant}/arch/%{buildarch}/boot/dts/overlays/*.dtbo %{buildroot}/boot/overlays/
194 # Install kernel headers
195 make O=build/%{variant} headers_install %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr
197 for target in %{variant} %{variant}-rt; do
198 # Install kernel binary
202 install -m 644 build/${target}/arch/%{buildarch}/boot/Image %{buildroot}/boot/Image
204 install -m 644 build/${target}/arch/%{buildarch}/boot/zImage %{buildroot}/boot/zImage
208 WERROR=0 make O=build/${target} -s -C tools/perf EXTRA_CFLAGS="-fPIE -rdynamic" DESTDIR=%{buildroot}/usr install
209 rm -rf %{buildroot}/usr/etc
210 rm -rf %{buildroot}/usr/lib/debug
211 rm -rf %{buildroot}/usr/lib/perf
212 rm -rf %{buildroot}/usr/share
217 install -m 644 build/${target}/arch/%{buildarch}/boot/Image %{buildroot}/boot/Image_rt
219 install -m 644 build/${target}/arch/%{buildarch}/boot/zImage %{buildroot}/boot/zImage_rt
225 make O=build/${target} INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=%{buildroot} modules_install
227 # Copy files for devel package
228 mkdir -p %{buildroot}/boot/kernel/devel/kernel-devel-${target}
230 --include "/scripts/**.c" \
231 --exclude "/debug*.list" \
232 --exclude "/documentation.list" \
233 --exclude "/*.manifest" \
234 --exclude "/packaging/" \
235 --exclude "/.gbs.conf" \
236 --exclude "/.git**" \
237 --exclude ".gitignore" \
239 --exclude ".tmp_vmlinux*" \
240 --exclude ".*dtb*tmp" \
243 --exclude "vmlinux" \
246 --exclude "Image.gz" \
252 --exclude "/build/" \
253 ./ build/${target}/ %{buildroot}/boot/kernel/devel/kernel-devel-${target}
259 %post -n %{variant}-rt-linux-kernel
261 mv /boot/Image_rt /boot/Image
263 mv /boot/zImage_rt /boot/zImage
266 %preun -n %{variant}-rt-linux-kernel
268 mv /boot/Image /boot/Image_rt
270 mv /boot/zImage /boot/zImage_rt
273 %files -n %{variant}-linux-kernel-modules
275 /lib/modules/*%{variant}-v8/
277 /lib/modules/*%{variant}-v7l/
280 %files -n %{variant}-rt-linux-kernel-modules
282 /lib/modules/*%{variant}-rt-v8/
284 /lib/modules/*%{variant}-rt-v7l/
287 %files -n %{variant}-linux-kernel-devel
288 /boot/kernel/devel/*%{variant}/
290 %files -n %{variant}-rt-linux-kernel-devel
291 /boot/kernel/devel/*%{variant}-rt/
293 %files -n %{variant}-linux-kernel
301 /boot/overlays/*.dtbo
303 /boot/LICENCE.broadcom
307 %files -n %{variant}-rt-linux-kernel
315 /boot/overlays/*.dtbo
317 /boot/LICENCE.broadcom
321 %files -n %{variant}-linux-kernel-headers
324 %files -n linux-kernel-perf
328 /usr/lib/traceevent/*