1 ###############################################################################
2 # IPFire.org - An Open Source Firewall Solution #
3 # Copyright (C) - IPFire Development Team <info@ipfire.org> #
4 ###############################################################################
9 thisapp = linux-%{version}
11 maintainer = Arne Fitzenreiter <arne.fitzenreiter@ipfire.org>
12 groups = System/Kernels
13 url = http://www.kernel.org/
15 summary = The Linux kernel.
18 The kernel package contains the Linux kernel (vmlinuz), the core of any
19 Linux operating system. The kernel handles the basic functions
20 of the operating system: memory allocation, process allocation, device
21 input and output, etc.
24 # Version helper variables.
25 localversion = %{release}.%{DISTRO_DISTTAG}.%{DISTRO_ARCH}
26 fullver = %{version}-%{localversion}
28 source_dl = http://www.kernel.org/pub/linux/kernel/v5.x/
29 sources = %{thisapp}.tar.xz
32 kernel_logo = /usr/share/pixmaps/kernel-logo.ppm
63 # A list of kernels to build.
66 kernel_arch = %{DISTRO_PLATFORM}
67 kernel_target = bzImage
68 kernel_image = arch/%{kernel_arch}/boot/%{kernel_target}
70 if "%{DISTRO_ARCH}" == "x86_64"
71 build_kernel_default = 1
74 if "%{DISTRO_ARCH}" == "aarch64"
75 build_kernel_default = 1
78 kernel_target = Image.gz
81 if "%{DISTRO_ARCH}" == "armv7hl"
82 # Build the default unified kernel.
83 build_kernel_default = 1
85 kernel_target = zImage
88 # mkimage is a requirement to build uImage images.
89 if "%{kernel_target}" == "uImage"
90 requires += u-boot-tools
93 # Build default kernel.
94 if "%{build_kernel_default}" == "1"
99 # Disable the colorize plugin.
100 # It's generally very nice but it clutters our
102 sed -e "/^COLORIZE_PLUGIN_CFLAGS/d" \
105 sed -e "s/\$(HOST_LFS_CFLAGS)/& -fPIC/g" -i Makefile
107 cp -vf %{kernel_logo} \
108 drivers/video/logo/logo_linux_clut224.ppm
110 # Get rid of unwanted files resulting from patch fuzz.
111 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
113 # Remove unnecessary SCM files.
114 find . -name .gitignore -exec rm -f {} \; >/dev/null
116 # This prevents scripts/setlocalversion from mucking with our version numbers.
125 if [ "${flavour}" != "default" ]; then
129 scripts/configure --kernel-dir=%{DIR_APP} \
130 merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
133 # Generate configuration files for all kernels we are going to
135 for kernel in %{kernels}; do
136 configure_kernel ${kernel}
144 local localversion="%{localversion}"
145 local fullversion="%{fullver}"
146 if [ "${flavour}" != "default" ]; then
148 localversion="${localversion}.${flavour}"
149 fullversion="${fullversion}.${flavour}"
154 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
156 # Clean up the source tree.
159 # Install configuration file.
160 cp configs/config.${flavour} .config
164 make ARCH=%{kernel_arch} olddefconfig >/dev/null
165 make ARCH=%{kernel_arch} %{kernel_target} modules \
166 KERNELRELEASE=${fullversion} %{PARALLELISMFLAGS}
168 # Compile Flattened Device Tree database
169 case "${DISTRO_ARCH}" in
171 make ARCH=%{kernel_arch} dtbs
173 mkdir -pv %{BUILDROOT}/boot/dtb-${fullversion}
174 for file in arch/arm/boot/dts/*.dtb; do
175 [ -e "${file}" ] || continue
177 install -m 644 ${file} %{BUILDROOT}/boot/dtb-${fullversion} || exit 1
183 # Install the results.
184 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/usr/lib/modules/${fullversion}
185 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
186 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
187 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
189 # Create empty initramfs (20M).
190 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
193 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
194 KERNELRELEASE=${fullversion} modules_install
196 # And now the scary looking part.
198 # Recreate source and build links.
199 rm -f %{BUILDROOT}/usr/lib/modules/${fullversion}/{build,source}
200 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/build
201 ln -sf build %{BUILDROOT}/usr/lib/modules/${fullversion}/source
203 # Create dirs for extra modules.
204 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/extra
206 cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
207 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
208 cp Module.symvers System.map \
209 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
210 rm -rf %{BUILDROOT}/usr/lib/modules/${fullversion}/build/{Documentation,scripts,include}
212 cp .config %{BUILDROOT}/usr/lib/modules/${fullversion}/build
213 cp -a scripts %{BUILDROOT}/usr/lib/modules/${fullversion}/build
214 find %{BUILDROOT}/usr/lib/modules/${fullversion}/build/scripts -name "*.o" \
217 cp -a --parents arch/%{kernel_arch}/include \
218 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
219 cp -a include %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include
221 # Make sure we can build external modules.
222 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/Makefile \
223 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/linux/version.h
224 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
225 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/autoconf.h
226 cp %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
227 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf
229 find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \
230 xargs --no-run-if-empty chmod u+x
232 # Move all development files to /usr/src.
233 mkdir -p %{BUILDROOT}/usr/src/kernels
234 mv %{BUILDROOT}/usr/lib/modules/${fullversion}/build \
235 %{BUILDROOT}/usr/src/kernels/${fullversion}
236 ln -sf ../../../src/kernels/${fullversion} \
237 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
240 find %{BUILDROOT}/usr/src/kernels -name "modules.order" \
241 -exec chmod 644 {} \;
243 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
245 # remove device tree compiler because there are dead links
246 rm -rf %{BUILDROOT}/usr/src/kernels/*/scripts/dtc
249 for kernel in %{kernels}; do
250 build_kernel ${kernel}
254 chmod +x tools/power/cpupower/utils/version-gen.sh
255 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
257 pushd tools/thermal/tmon
263 # When no kernels are configured, we create a default config
264 # which enables us to install at least the header files.
265 [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
267 # Install the header files
268 make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
269 mkdir -pv %{BUILDROOT}/usr/include
270 find dest/include \( -name .install -o -name ..install.cmd \) -delete
271 cp -rv dest/include/* %{BUILDROOT}/usr/include
273 # Glibc provides these headers
274 rm -rfv %{BUILDROOT}/usr/include/scsi \
275 %{BUILDROOT}/usr/include/asm*/atomic.h \
276 %{BUILDROOT}/usr/include/asm*/io.h \
277 %{BUILDROOT}/usr/include/asm*/irq.h
279 # Remove all firmware files which are distributed by linux-firmware
280 rm -rfv %{BUILDROOT}/lib/firmware
284 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
285 mandir=%{mandir} CPUFREQ_BENCH=false install
287 chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
290 pushd tools/thermal/tmon
291 make INSTALL_ROOT=%{BUILDROOT} install
299 kernel_release = %{fullver}
301 summary = The Linux kernel %{kernel_release}.
308 kernel=%{kernel_release}
319 /boot/System.map-%{kernel_release}
320 /boot/dtb-%{kernel_release}
321 /boot/vmlinuz-%{kernel_release}
322 /boot/initramfs-%{kernel_release}.img
323 /usr/lib/modules/%{kernel_release}
327 kernel-updater install %{kernel_release}
339 kernel-updater uninstall %{kernel_release}
344 kernel_release = %{fullver}
346 summary = Development files of kernel-%{kernel_release}.
350 Install this package in order to compile modules for
351 kernel release %{kernel_release}.
355 kernel-devel = %{thisver}
363 /usr/lib/modules/%{kernel_release}/build
364 /usr/lib/modules/%{kernel_release}/source
365 /usr/src/kernels/%{kernel_release}
369 if "%{build_kernel_default}" == "1"
370 if "%{DISTRO_ARCH}" == "armv7hl"
375 kernel_release = %{fullver}
377 # Replace the Exynos kernel.
378 obsoletes += kernel-exynos < %{kernel_release}
379 conflicts += kernel-exynos < %{kernel_release}
381 # Replace the OMAP kernel.
382 obsoletes += kernel-omap < %{kernel_release}
383 conflicts += kernel-omap < %{kernel_release}
390 kernel_release = %{fullver}
392 # Replace the Exynos kernel.
393 obsoletes += kernel-exynos-devel < %{kernel_release}
394 conflicts += kernel-exynos-devel < %{kernel_release}
396 # Replace the OMAP kernel.
397 obsoletes += kernel-omap-devel < %{kernel_release}
398 conflicts += kernel-omap-devel < %{kernel_release}
406 kernel_release = %{fullver}
413 kernel_release = %{fullver}
418 package kernel-headers
419 summary = Header files of the kernel release %{fullver}.
420 desciption = %{summary}
428 summary = Assortment of tools for the Linux kernel.
429 description = %{summary}