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
64 kernel_arch = %{DISTRO_PLATFORM}
65 kernel_target = bzImage
66 kernel_image = arch/%{kernel_arch}/boot/%{kernel_target}
68 if "%{DISTRO_ARCH}" == "aarch64"
70 kernel_target = Image.gz
74 # Disable the colorize plugin.
75 # It's generally very nice but it clutters our
77 sed -e "/^COLORIZE_PLUGIN_CFLAGS/d" \
80 sed -e "s/\$(HOST_LFS_CFLAGS)/& -fPIC/g" -i Makefile
82 cp -vf %{kernel_logo} \
83 drivers/video/logo/logo_linux_clut224.ppm
85 # Get rid of unwanted files resulting from patch fuzz.
86 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
88 # Remove unnecessary SCM files.
89 find . -name .gitignore -exec rm -f {} \; >/dev/null
91 # This prevents scripts/setlocalversion from mucking with our version numbers.
100 if [ "${flavour}" != "generic" ]; then
104 bash scripts/configure --kernel-dir=%{DIR_APP} \
105 merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
108 # Generate configuration files for all kernels we are going to
110 configure_kernel "generic"
117 local localversion="%{localversion}"
118 local fullversion="%{fullver}"
119 if [ "${flavour}" != "generic" ]; then
121 localversion="${localversion}.${flavour}"
122 fullversion="${fullversion}.${flavour}"
127 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
129 # Clean up the source tree.
132 # Install configuration file.
133 cp configs/config.${flavour} .config
137 make ARCH=%{kernel_arch} olddefconfig >/dev/null
138 make ARCH=%{kernel_arch} %{kernel_target} modules \
139 KERNELRELEASE=${fullversion} %{PARALLELISMFLAGS}
141 # Compile Flattened Device Tree database
142 case "${DISTRO_ARCH}" in
144 make ARCH=%{kernel_arch} dtbs
146 mkdir -pv %{BUILDROOT}/boot/dtb-${fullversion}
147 for file in arch/arm/boot/dts/*.dtb; do
148 [ -e "${file}" ] || continue
150 install -m 644 ${file} %{BUILDROOT}/boot/dtb-${fullversion} || exit 1
156 # Install the results.
157 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/usr/lib/modules/${fullversion}
158 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
159 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
160 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
162 # Create empty initramfs (20M).
163 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
166 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
167 KERNELRELEASE=${fullversion} modules_install
169 # And now the scary looking part.
171 # Recreate source and build links.
172 rm -f %{BUILDROOT}/usr/lib/modules/${fullversion}/{build,source}
173 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/build
174 ln -sf build %{BUILDROOT}/usr/lib/modules/${fullversion}/source
176 # Create dirs for extra modules.
177 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/extra
179 cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
180 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
181 cp Module.symvers System.map \
182 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
183 rm -rf %{BUILDROOT}/usr/lib/modules/${fullversion}/build/{Documentation,scripts,include}
185 cp .config %{BUILDROOT}/usr/lib/modules/${fullversion}/build
186 cp -a scripts %{BUILDROOT}/usr/lib/modules/${fullversion}/build
187 find %{BUILDROOT}/usr/lib/modules/${fullversion}/build/scripts -name "*.o" \
190 cp -a --parents arch/%{kernel_arch}/include \
191 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
192 cp -a include %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include
194 # Make sure we can build external modules.
195 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/Makefile \
196 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/linux/version.h
197 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
198 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/autoconf.h
199 cp %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
200 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf
202 find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \
203 xargs --no-run-if-empty chmod u+x
205 # Move all development files to /usr/src.
206 mkdir -p %{BUILDROOT}/usr/src/kernels
207 mv %{BUILDROOT}/usr/lib/modules/${fullversion}/build \
208 %{BUILDROOT}/usr/src/kernels/${fullversion}
209 ln -sf ../../../src/kernels/${fullversion} \
210 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
213 find %{BUILDROOT}/usr/src/kernels -name "modules.order" \
214 -exec chmod 644 {} \;
216 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
218 # remove device tree compiler because there are dead links
219 rm -rf %{BUILDROOT}/usr/src/kernels/*/scripts/dtc
223 build_kernel "generic"
226 chmod +x tools/power/cpupower/utils/version-gen.sh
227 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
229 pushd tools/thermal/tmon
235 # When no kernels are configured, we create a default config
236 # which enables us to install at least the header files.
237 [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
239 # Install the header files
240 make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
241 mkdir -pv %{BUILDROOT}/usr/include
242 find dest/include \( -name .install -o -name ..install.cmd \) -delete
243 cp -rv dest/include/* %{BUILDROOT}/usr/include
245 # Glibc provides these headers
246 rm -rfv %{BUILDROOT}/usr/include/scsi \
247 %{BUILDROOT}/usr/include/asm*/atomic.h \
248 %{BUILDROOT}/usr/include/asm*/io.h \
249 %{BUILDROOT}/usr/include/asm*/irq.h
251 # Remove all firmware files which are distributed by linux-firmware
252 rm -rfv %{BUILDROOT}/lib/firmware
256 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
257 mandir=%{mandir} CPUFREQ_BENCH=false install
259 chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
262 pushd tools/thermal/tmon
263 make INSTALL_ROOT=%{BUILDROOT} install
270 summary = Assortment of tools for the Linux kernel.
271 description = %{summary}
279 summary = The Linux kernel %{fullver}
297 /boot/System.map-%{fullver}
299 /boot/vmlinuz-%{fullver}
300 /boot/initramfs-%{fullver}.img
301 /usr/lib/modules/%{fullver}
305 kernel-updater install %{fullver}
317 kernel-updater uninstall %{fullver}
322 summary = Development files of kernel-%{fullver}
326 Install this package in order to compile modules for
327 kernel release %{fullver}.
331 kernel-devel = %{thisver}
339 /usr/lib/modules/%{fullver}/build
340 /usr/lib/modules/%{fullver}/source
341 /usr/src/kernels/%{fullver}
345 package kernel-headers
346 summary = Header files of the kernel release %{fullver}
347 desciption = %{summary}