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
62 # A list of kernels to build.
65 kernel_arch = %{DISTRO_PLATFORM}
66 kernel_target = bzImage
67 kernel_image = arch/%{kernel_arch}/boot/%{kernel_target}
69 if "%{DISTRO_ARCH}" == "x86_64"
70 build_kernel_default = 1
73 if "%{DISTRO_ARCH}" == "aarch64"
74 build_kernel_default = 1
77 kernel_target = Image.gz
80 if "%{DISTRO_ARCH}" == "armv7hl"
81 # Build the default unified kernel.
82 build_kernel_default = 1
84 kernel_target = zImage
87 # mkimage is a requirement to build uImage images.
88 if "%{kernel_target}" == "uImage"
89 requires += u-boot-tools
92 # Build default kernel.
93 if "%{build_kernel_default}" == "1"
98 # Disable the colorize plugin.
99 # It's generally very nice but it clutters our
101 sed -e "/^COLORIZE_PLUGIN_CFLAGS/d" \
104 sed -e "s/\$(HOST_LFS_CFLAGS)/& -fPIC/g" -i Makefile
106 cp -vf %{kernel_logo} \
107 drivers/video/logo/logo_linux_clut224.ppm
109 # Get rid of unwanted files resulting from patch fuzz.
110 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
112 # Remove unnecessary SCM files.
113 find . -name .gitignore -exec rm -f {} \; >/dev/null
115 # This prevents scripts/setlocalversion from mucking with our version numbers.
124 if [ "${flavour}" != "default" ]; then
128 scripts/configure --kernel-dir=%{DIR_APP} \
129 merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
132 # Generate configuration files for all kernels we are going to
134 for kernel in %{kernels}; do
135 configure_kernel ${kernel}
143 local localversion="%{localversion}"
144 local fullversion="%{fullver}"
145 if [ "${flavour}" != "default" ]; then
147 localversion="${localversion}.${flavour}"
148 fullversion="${fullversion}.${flavour}"
153 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
155 # Clean up the source tree.
158 # Install configuration file.
159 cp configs/config.${flavour} .config
163 make ARCH=%{kernel_arch} olddefconfig >/dev/null
164 make ARCH=%{kernel_arch} %{kernel_target} modules \
165 KERNELRELEASE=${fullversion} %{PARALLELISMFLAGS}
167 # Compile Flattened Device Tree database
168 case "${DISTRO_ARCH}" in
170 make ARCH=%{kernel_arch} dtbs
172 mkdir -pv %{BUILDROOT}/boot/dtb-${fullversion}
173 for file in arch/arm/boot/dts/*.dtb; do
174 [ -e "${file}" ] || continue
176 install -m 644 ${file} %{BUILDROOT}/boot/dtb-${fullversion} || exit 1
182 # Install the results.
183 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/usr/lib/modules/${fullversion}
184 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
185 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
186 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
188 # Create empty initramfs (20M).
189 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
192 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
193 KERNELRELEASE=${fullversion} modules_install
195 # And now the scary looking part.
197 # Recreate source and build links.
198 rm -f %{BUILDROOT}/usr/lib/modules/${fullversion}/{build,source}
199 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/build
200 ln -sf build %{BUILDROOT}/usr/lib/modules/${fullversion}/source
202 # Create dirs for extra modules.
203 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/extra
205 cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
206 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
207 cp Module.symvers System.map \
208 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
209 rm -rf %{BUILDROOT}/usr/lib/modules/${fullversion}/build/{Documentation,scripts,include}
211 cp .config %{BUILDROOT}/usr/lib/modules/${fullversion}/build
212 cp -a scripts %{BUILDROOT}/usr/lib/modules/${fullversion}/build
213 find %{BUILDROOT}/usr/lib/modules/${fullversion}/build/scripts -name "*.o" \
216 cp -a --parents arch/%{kernel_arch}/include \
217 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
218 cp -a include %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include
220 # Make sure we can build external modules.
221 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/Makefile \
222 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/linux/version.h
223 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
224 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/autoconf.h
225 cp %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
226 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf
228 find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \
229 xargs --no-run-if-empty chmod u+x
231 # Move all development files to /usr/src.
232 mkdir -p %{BUILDROOT}/usr/src/kernels
233 mv %{BUILDROOT}/usr/lib/modules/${fullversion}/build \
234 %{BUILDROOT}/usr/src/kernels/${fullversion}
235 ln -sf ../../../src/kernels/${fullversion} \
236 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
239 find %{BUILDROOT}/usr/src/kernels -name "modules.order" \
240 -exec chmod 644 {} \;
242 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
244 # remove device tree compiler because there are dead links
245 rm -rf %{BUILDROOT}/usr/src/kernels/*/scripts/dtc
248 for kernel in %{kernels}; do
249 build_kernel ${kernel}
253 chmod +x tools/power/cpupower/utils/version-gen.sh
254 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
256 pushd tools/thermal/tmon
262 # When no kernels are configured, we create a default config
263 # which enables us to install at least the header files.
264 [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
266 # Install the header files
267 make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
268 mkdir -pv %{BUILDROOT}/usr/include
269 find dest/include \( -name .install -o -name ..install.cmd \) -delete
270 cp -rv dest/include/* %{BUILDROOT}/usr/include
272 # Glibc provides these headers
273 rm -rfv %{BUILDROOT}/usr/include/scsi \
274 %{BUILDROOT}/usr/include/asm*/atomic.h \
275 %{BUILDROOT}/usr/include/asm*/io.h \
276 %{BUILDROOT}/usr/include/asm*/irq.h
278 # Remove all firmware files which are distributed by linux-firmware
279 rm -rfv %{BUILDROOT}/lib/firmware
283 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
284 mandir=%{mandir} CPUFREQ_BENCH=false install
286 chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
289 pushd tools/thermal/tmon
290 make INSTALL_ROOT=%{BUILDROOT} install
298 kernel_release = %{fullver}
300 summary = The Linux kernel %{kernel_release}.
307 kernel=%{kernel_release}
318 /boot/System.map-%{kernel_release}
319 /boot/dtb-%{kernel_release}
320 /boot/vmlinuz-%{kernel_release}
321 /boot/initramfs-%{kernel_release}.img
322 /usr/lib/modules/%{kernel_release}
326 kernel-updater install %{kernel_release}
338 kernel-updater uninstall %{kernel_release}
343 kernel_release = %{fullver}
345 summary = Development files of kernel-%{kernel_release}.
349 Install this package in order to compile modules for
350 kernel release %{kernel_release}.
354 kernel-devel = %{thisver}
362 /usr/lib/modules/%{kernel_release}/build
363 /usr/lib/modules/%{kernel_release}/source
364 /usr/src/kernels/%{kernel_release}
368 if "%{build_kernel_default}" == "1"
369 if "%{DISTRO_ARCH}" == "armv7hl"
374 kernel_release = %{fullver}
376 # Replace the Exynos kernel.
377 obsoletes += kernel-exynos < %{kernel_release}
378 conflicts += kernel-exynos < %{kernel_release}
380 # Replace the OMAP kernel.
381 obsoletes += kernel-omap < %{kernel_release}
382 conflicts += kernel-omap < %{kernel_release}
389 kernel_release = %{fullver}
391 # Replace the Exynos kernel.
392 obsoletes += kernel-exynos-devel < %{kernel_release}
393 conflicts += kernel-exynos-devel < %{kernel_release}
395 # Replace the OMAP kernel.
396 obsoletes += kernel-omap-devel < %{kernel_release}
397 conflicts += kernel-omap-devel < %{kernel_release}
405 kernel_release = %{fullver}
412 kernel_release = %{fullver}
417 package kernel-headers
418 summary = Header files of the kernel release %{fullver}.
419 desciption = %{summary}
427 summary = Assortment of tools for the Linux kernel.
428 description = %{summary}