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 = https://www.kernel.org/pub/linux/kernel/v6.x/
29 sources = %{thisapp}.tar.xz
32 kernel_logo = /usr/share/pixmaps/kernel-logo.ppm
66 kernel_arch = %{DISTRO_PLATFORM}
67 kernel_target = bzImage
68 kernel_image = arch/%{kernel_arch}/boot/%{kernel_target}
70 if "%{DISTRO_ARCH}" == "aarch64"
72 kernel_target = Image.gz
76 # Disable the colorize plugin.
77 # It's generally very nice but it clutters our
79 sed -e "/^COLORIZE_PLUGIN_CFLAGS/d" \
82 sed -e "s/\$(HOST_LFS_CFLAGS)/& -fPIC/g" -i Makefile
84 cp -vf %{kernel_logo} \
85 drivers/video/logo/logo_linux_clut224.ppm
87 # Get rid of unwanted files resulting from patch fuzz.
88 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
90 # Remove unnecessary SCM files.
91 find . -name .gitignore -exec rm -f {} \; >/dev/null
93 # This prevents scripts/setlocalversion from mucking with our version numbers.
102 if [ "${flavour}" != "generic" ]; then
106 bash scripts/configure --kernel-dir=%{DIR_APP} \
107 merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
110 # Generate configuration files for all kernels we are going to
112 configure_kernel "generic"
119 local localversion="%{localversion}"
120 local fullversion="%{fullver}"
121 if [ "${flavour}" != "generic" ]; then
123 localversion="${localversion}.${flavour}"
124 fullversion="${fullversion}.${flavour}"
129 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
131 # Clean up the source tree.
134 # Install configuration file.
135 cp configs/config.${flavour} .config
139 make ARCH=%{kernel_arch} olddefconfig >/dev/null
140 make ARCH=%{kernel_arch} %{kernel_target} modules \
141 KERNELRELEASE=${fullversion} %{PARALLELISMFLAGS}
143 # Compile Flattened Device Tree database
144 case "${DISTRO_ARCH}" in
146 make ARCH=%{kernel_arch} dtbs
148 mkdir -pv %{BUILDROOT}/boot/dtb-${fullversion}
149 for file in arch/arm/boot/dts/*.dtb; do
150 [ -e "${file}" ] || continue
152 install -m 644 ${file} %{BUILDROOT}/boot/dtb-${fullversion} || exit 1
158 # Install the results.
159 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/usr/lib/modules/${fullversion}
160 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
161 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
162 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
164 # Create empty initramfs (20M).
165 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
168 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
169 KERNELRELEASE=${fullversion} modules_install
171 # And now the scary looking part.
173 # Recreate source and build links.
174 rm -f %{BUILDROOT}/usr/lib/modules/${fullversion}/{build,source}
175 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/build
176 ln -sf build %{BUILDROOT}/usr/lib/modules/${fullversion}/source
178 # Create dirs for extra modules.
179 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/extra
181 cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
182 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
183 cp Module.symvers System.map \
184 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
185 rm -rf %{BUILDROOT}/usr/lib/modules/${fullversion}/build/{Documentation,scripts,include}
187 cp .config %{BUILDROOT}/usr/lib/modules/${fullversion}/build
188 cp -a scripts %{BUILDROOT}/usr/lib/modules/${fullversion}/build
189 find %{BUILDROOT}/usr/lib/modules/${fullversion}/build/scripts -name "*.o" \
192 cp -a --parents arch/%{kernel_arch}/include \
193 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
194 cp -a include %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include
196 # Make sure we can build external modules.
197 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/Makefile \
198 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/linux/version.h
199 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
200 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/autoconf.h
201 cp %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
202 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf
204 find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \
205 xargs --no-run-if-empty chmod u+x
207 # Move all development files to /usr/src.
208 mkdir -p %{BUILDROOT}/usr/src/kernels
209 mv %{BUILDROOT}/usr/lib/modules/${fullversion}/build \
210 %{BUILDROOT}/usr/src/kernels/${fullversion}
211 ln -sf ../../../src/kernels/${fullversion} \
212 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
215 find %{BUILDROOT}/usr/src/kernels -name "modules.order" \
216 -exec chmod 644 {} \;
218 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
220 # remove device tree compiler because there are dead links
221 rm -rf %{BUILDROOT}/usr/src/kernels/*/scripts/dtc
225 build_kernel "generic"
228 chmod +x tools/power/cpupower/utils/version-gen.sh
229 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
231 pushd tools/thermal/tmon
237 # When no kernels are configured, we create a default config
238 # which enables us to install at least the header files.
239 [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
241 # Install the header files
242 make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
243 mkdir -pv %{BUILDROOT}/usr/include
244 find dest/include \( -name .install -o -name ..install.cmd \) -delete
245 cp -rv dest/include/* %{BUILDROOT}/usr/include
247 # Glibc provides these headers
248 rm -rfv %{BUILDROOT}/usr/include/scsi \
249 %{BUILDROOT}/usr/include/asm*/atomic.h \
250 %{BUILDROOT}/usr/include/asm*/io.h \
251 %{BUILDROOT}/usr/include/asm*/irq.h
253 # Remove all firmware files which are distributed by linux-firmware
254 rm -rfv %{BUILDROOT}/lib/firmware
258 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
259 mandir=%{mandir} CPUFREQ_BENCH=false install
261 chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
264 pushd tools/thermal/tmon
265 make INSTALL_ROOT=%{BUILDROOT} install
272 summary = Assortment of tools for the Linux kernel.
273 description = %{summary}
281 summary = The Linux kernel %{fullver}
299 /boot/System.map-%{fullver}
301 /boot/vmlinuz-%{fullver}
302 /boot/initramfs-%{fullver}.img
303 /usr/lib/modules/%{fullver}
307 kernel-updater install %{fullver}
319 kernel-updater uninstall %{fullver}
324 summary = Development files of kernel-%{fullver}
328 Install this package in order to compile modules for
329 kernel release %{fullver}.
333 kernel-devel = %{thisver}
341 /usr/lib/modules/%{fullver}/build
342 /usr/lib/modules/%{fullver}/source
343 /usr/src/kernels/%{fullver}
347 package kernel-headers
348 summary = Header files of the kernel release %{fullver}
349 desciption = %{summary}