1 # Ignore double dash in version for rpmbuild
2 %define _wrong_version_format_terminate_build 0
4 %define tizen_kernel_config_dir %{_datadir}/tizen-kernel-configs
5 %define config_name starfive_visionfive2_defconfig
6 %define buildarch riscv
7 %define target_board visionfive2
8 %define variant %{buildarch}-%{target_board}
10 # 0 until linux-rt available for 6.1
13 Name: visionfive-linux-kernel
14 Summary: The Linux Kernel for VisionFive2
18 ExclusiveArch: riscv64
20 Vendor: The Linux Community
21 URL: https://www.kernel.org
22 Source0: linux-kernel-%{version}.tar.xz
23 BuildRoot: %{_tmppath}/%{name}-%{PACKAGE_VERSION}-root
25 %define fullVersion %{version}-%{variant}
28 BuildRequires: module-init-tools
31 BuildRequires: libopenssl1.1-devel
32 BuildRequires: libunwind-devel
33 BuildRequires: libdw-devel
34 BuildRequires: libelf-devel
35 BuildRequires: elfutils
36 BuildRequires: xz-devel
37 BuildRequires: binutils-devel
38 BuildRequires: python3
40 BuildRequires: tizen-kernel-configs
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})
57 %package -n %{variant}-rt-linux-kernel
59 Summary: Tizen kernel for %{target_board}
61 Provides: %{variant}-kernel-uname-r = %{fullVersion}-rt
62 Provides: linux-kernel = %{version}-%{release}-rt
64 %description -n %{variant}-rt-linux-kernel
65 This package contains the Linux kernel for Tizen (arch %{buildarch}, target board %{target_board})
70 %package -n %{variant}-linux-kernel-modules
71 Summary: Kernel modules for %{target_board}
73 Provides: %{variant}-kernel-modules = %{fullVersion}
74 Provides: %{variant}-kernel-modules-uname-r = %{fullVersion}
76 %description -n %{variant}-linux-kernel-modules
77 Kernel-modules includes the loadable kernel modules(.ko files) for %{target_board}
80 %package -n %{variant}-rt-linux-kernel-modules
81 Summary: Kernel modules for %{target_board}
83 Provides: %{variant}-kernel-modules = %{fullVersion}-rt
84 Provides: %{variant}-kernel-modules-uname-r = %{fullVersion}-rt
86 %description -n %{variant}-rt-linux-kernel-modules
87 Kernel-modules includes the loadable kernel modules(.ko files) for %{target_board}
88 with the PREEMPT_RT patch
93 %package -n %{variant}-linux-kernel-devel
95 Summary: Linux support kernel map and etc for other packages
97 Provides: %{variant}-kernel-devel = %{fullVersion}
98 Provides: %{variant}-kernel-devel-uname-r = %{fullVersion}
100 %description -n %{variant}-linux-kernel-devel
101 This package provides kernel map and etc information.
104 %package -n %{variant}-rt-linux-kernel-devel
106 Summary: Linux support kernel map and etc for other packages
108 Provides: %{variant}-kernel-devel = %{fullVersion}-rt
109 Provides: %{variant}-kernel-devel-uname-r = %{fullVersion}-rt
111 %description -n %{variant}-rt-linux-kernel-devel
112 This package provides kernel map and etc information.
116 %package -n %{variant}-linux-kernel-headers
118 Summary: Linux support headers for userspace development
120 Provides: kernel-headers-tizen-dev
122 %description -n %{variant}-linux-kernel-headers
123 This package provides userspaces headers from the Linux kernel. These
124 headers are used by the installed headers for GNU glibc and other system
127 %package -n linux-kernel-perf
128 Summary: The perf performance counter tool
130 Provides: perf = %{version}
132 %description -n linux-kernel-perf
133 This package provides the "perf" tool that can be used to monitor performance
134 counter events as well as various kernel internal events.
140 %{?asan:/usr/bin/gcc-unforce-options}
141 %{?ubsan:/usr/bin/gcc-unforce-options}
143 # Here be %{variant} %{variant}-rt
144 for target in %{variant}; do
145 echo "-${target}" > localversion-tizen
147 # extract uapi headers
148 make O=build/${target} headers_install %{?_smp_mflags}
153 ./scripts/kconfig/merge_config.sh -O build/${target} \
154 %{tizen_kernel_config_dir}/references/%{buildarch}/%{config_name} \
155 %{tizen_kernel_config_dir}/tizen/tizen_defconfig
158 make O=build/${target} -s -C tools/lib/traceevent %{?_smp_mflags}
159 make O=build/${target} -s -C tools/perf EXTRA_CFLAGS="-fPIE -rdynamic" %{?_smp_mflags}
162 cat _localversion-rt > localversion-rt
163 ./scripts/kconfig/merge_config.sh -O build/${target} \
164 %{tizen_kernel_config_dir}/references/%{buildarch}/%{config_name} \
165 %{tizen_kernel_config_dir}/tizen/tizen_defconfig \
166 %{tizen_kernel_config_dir}/tizen/tizen_rt.config
170 # Build Image/Image.gz
171 make O=build/${target} %{?_smp_mflags}
174 make O=build/${target} dtbs %{?_smp_mflags}
177 make O=build/${target} modules %{?_smp_mflags}
181 QA_SKIP_BUILD_ROOT="DO_NOT_WANT"; export QA_SKIP_BUILD_ROOT
183 # Destination directories
184 mkdir -p %{buildroot}/boot
185 mkdir -p %{buildroot}/lib/modules
187 # Install boot binary files
188 # Here be SPL & OpenSBI
191 install -m 644 build/%{variant}/arch/%{buildarch}/boot/dts/starfive/jh71*.dtb %{buildroot}/boot/
192 mkdir -p %{buildroot}/boot/overlays
194 # Install kernel headers
195 make O=build/%{variant} headers_install %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr
197 # Here be %{variant} %{variant}-rt
198 for target in %{variant}; do
199 # Install kernel binary
202 install -m 644 build/${target}/arch/%{buildarch}/boot/Image %{buildroot}/boot/Image
205 make O=build/${target} -s -C tools/perf EXTRA_CFLAGS="-fPIE -rdynamic" DESTDIR=%{buildroot}/usr install
206 rm -rf %{buildroot}/usr/etc
207 rm -rf %{buildroot}/usr/lib/debug
208 rm -rf %{buildroot}/usr/lib/perf
209 rm -rf %{buildroot}/usr/share
213 install -m 644 build/${target}/arch/%{buildarch}/boot/Image %{buildroot}/boot/Image_rt
218 make O=build/${target} INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=%{buildroot} modules_install
220 # Copy files for devel package
221 mkdir -p %{buildroot}/boot/kernel/devel/kernel-devel-${target}
223 --include "/scripts/**.c" \
224 --exclude "/debug*.list" \
225 --exclude "/documentation.list" \
226 --exclude "/*.manifest" \
227 --exclude "/packaging/" \
228 --exclude "/.gbs.conf" \
229 --exclude "/.git**" \
230 --exclude ".gitignore" \
232 --exclude ".tmp_vmlinux*" \
233 --exclude ".*dtb*tmp" \
236 --exclude "vmlinux" \
239 --exclude "Image.gz" \
245 --exclude "/build/" \
246 ./ build/${target}/ %{buildroot}/boot/kernel/devel/kernel-devel-${target}
253 %post -n %{variant}-rt-linux-kernel
254 mv /boot/Image_rt /boot/Image
256 %preun -n %{variant}-rt-linux-kernel
257 mv /boot/Image /boot/Image_rt
260 %files -n %{variant}-linux-kernel-modules
261 /lib/modules/*%{variant}/
264 %files -n %{variant}-rt-linux-kernel-modules
265 /lib/modules/*%{variant}-rt/
268 %files -n %{variant}-linux-kernel-devel
269 /boot/kernel/devel/*%{variant}/
272 %files -n %{variant}-rt-linux-kernel-devel
273 /boot/kernel/devel/*%{variant}-rt/
276 %files -n %{variant}-linux-kernel
282 %files -n %{variant}-rt-linux-kernel
288 %files -n %{variant}-linux-kernel-headers
291 %files -n linux-kernel-perf
295 /usr/lib/traceevent/*