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
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 # Get rid of unwanted files resulting from patch fuzz.
83 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
85 # Remove unnecessary SCM files.
86 find . -name .gitignore -exec rm -f {} \; >/dev/null
88 # This prevents scripts/setlocalversion from mucking with our version numbers.
97 if [ "${flavour}" != "generic" ]; then
101 bash scripts/configure --kernel-dir=%{DIR_APP} \
102 merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
105 # Generate configuration files for all kernels we are going to
107 configure_kernel "generic"
114 local localversion="%{localversion}"
115 local fullversion="%{fullver}"
116 if [ "${flavour}" != "generic" ]; then
118 localversion="${localversion}.${flavour}"
119 fullversion="${fullversion}.${flavour}"
124 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
126 # Clean up the source tree.
129 # Install configuration file.
130 cp configs/config.${flavour} .config
134 make ARCH=%{kernel_arch} olddefconfig >/dev/null
135 make ARCH=%{kernel_arch} %{kernel_target} modules \
136 KERNELRELEASE=${fullversion} %{PARALLELISMFLAGS}
138 # Compile Flattened Device Tree database
139 case "${DISTRO_ARCH}" in
141 make ARCH=%{kernel_arch} dtbs
143 mkdir -pv %{BUILDROOT}/boot/dtb-${fullversion}
144 for file in arch/arm/boot/dts/*.dtb; do
145 [ -e "${file}" ] || continue
147 install -m 644 ${file} %{BUILDROOT}/boot/dtb-${fullversion} || exit 1
153 # Install the results.
154 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/usr/lib/modules/${fullversion}
155 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
156 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
157 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
159 # Create empty initramfs (20M).
160 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
163 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
164 KERNELRELEASE=${fullversion} modules_install
166 # And now the scary looking part.
168 # Recreate source and build links.
169 rm -f %{BUILDROOT}/usr/lib/modules/${fullversion}/{build,source}
170 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/build
171 ln -sf build %{BUILDROOT}/usr/lib/modules/${fullversion}/source
173 # Create dirs for extra modules.
174 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/extra
176 cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
177 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
178 cp Module.symvers System.map \
179 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
180 rm -rf %{BUILDROOT}/usr/lib/modules/${fullversion}/build/{Documentation,scripts,include}
182 cp .config %{BUILDROOT}/usr/lib/modules/${fullversion}/build
183 cp -a scripts %{BUILDROOT}/usr/lib/modules/${fullversion}/build
184 find %{BUILDROOT}/usr/lib/modules/${fullversion}/build/scripts -name "*.o" \
187 cp -a --parents arch/%{kernel_arch}/include \
188 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
189 cp -a include %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include
191 # Make sure we can build external modules.
192 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/Makefile \
193 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/linux/version.h
194 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
195 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/autoconf.h
196 cp %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
197 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf
199 find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \
200 xargs --no-run-if-empty chmod u+x
202 # Move all development files to /usr/src.
203 mkdir -p %{BUILDROOT}/usr/src/kernels
204 mv %{BUILDROOT}/usr/lib/modules/${fullversion}/build \
205 %{BUILDROOT}/usr/src/kernels/${fullversion}
206 ln -sf ../../../src/kernels/${fullversion} \
207 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
210 find %{BUILDROOT}/usr/src/kernels -name "modules.order" \
211 -exec chmod 644 {} \;
213 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
215 # remove device tree compiler because there are dead links
216 rm -rf %{BUILDROOT}/usr/src/kernels/*/scripts/dtc
220 build_kernel "generic"
223 chmod +x tools/power/cpupower/utils/version-gen.sh
224 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
226 pushd tools/thermal/tmon
232 # When no kernels are configured, we create a default config
233 # which enables us to install at least the header files.
234 [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
236 # Install the header files
237 make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
238 mkdir -pv %{BUILDROOT}/usr/include
239 find dest/include \( -name .install -o -name ..install.cmd \) -delete
240 cp -rv dest/include/* %{BUILDROOT}/usr/include
242 # Glibc provides these headers
243 rm -rfv %{BUILDROOT}/usr/include/scsi \
244 %{BUILDROOT}/usr/include/asm*/atomic.h \
245 %{BUILDROOT}/usr/include/asm*/io.h \
246 %{BUILDROOT}/usr/include/asm*/irq.h
248 # Remove all firmware files which are distributed by linux-firmware
249 rm -rfv %{BUILDROOT}/lib/firmware
253 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
254 mandir=%{mandir} CPUFREQ_BENCH=false install
256 chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
259 pushd tools/thermal/tmon
260 make INSTALL_ROOT=%{BUILDROOT} install
267 summary = Assortment of tools for the Linux kernel.
268 description = %{summary}
275 package kernel-tools-debuginfo
280 summary = The Linux kernel %{fullver}
298 /boot/System.map-%{fullver}
300 /boot/vmlinuz-%{fullver}
301 /boot/initramfs-%{fullver}.img
302 /usr/lib/modules/%{fullver}
306 kernel-updater install %{fullver}
318 kernel-updater uninstall %{fullver}
323 summary = Development files of kernel-%{fullver}
327 Install this package in order to compile modules for
328 kernel release %{fullver}.
332 kernel-devel = %{thisver}
340 /usr/lib/modules/%{fullver}/build
341 /usr/lib/modules/%{fullver}/source
342 /usr/src/kernels/%{fullver}
346 package kernel-headers
347 summary = Header files of the kernel release %{fullver}
348 desciption = %{summary}