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 = Michael Tremer <michael.tremer@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/v3.x/
29 sources = %{thisapp}.tar.xz
32 # icecream cannot be used to compile the kernel.
33 # Because the PaX patch does use GCC plugins to harden the kernel which
34 # are not available on the remote compilers, we need to disable it here.
53 tools_cpupower_requires
59 # A list of kernels to build.
62 # Should we build cpupower?
65 kernel_target = bzImage
66 if "%{DISTRO_ARCH}" == "i686"
67 # Build a default and legacy kernel for the
69 build_kernel_default = 1
70 build_kernel_legacy = 1
73 kernel_image = arch/%{kernel_arch}/boot/bzImage
77 if "%{DISTRO_ARCH}" == "x86_64"
78 build_kernel_default = 1
81 kernel_image = arch/%{kernel_arch}/boot/bzImage
84 if "%{DISTRO_ARCH}" == "armv5tel"
85 # ERROR Currently all kernel images are disabled, because they
86 # won't build with the grsecurity patch.
88 # Build versatile kernel.
89 #build_kernel_versatile = 1
91 # Build a kernel for Marvell Kirkwood-based devices.
92 #build_kernel_kirkwood = 1
95 kernel_image = arch/%{kernel_arch}/boot/zImage
97 # ARM does not support cpupower.
101 if "%{DISTRO_ARCH}" == "armv7hl"
102 # Build a kernel for TI OMAP SoCs.
103 build_kernel_omap = 1
106 kernel_image = arch/%{kernel_arch}/boot/zImage
108 # ARM does not support cpupower.
112 # Build default kernel.
113 if "%{build_kernel_default}" == "1"
117 # Build legacy kernel.
118 if "%{build_kernel_legacy}" == "1"
122 # Build ARM versatile kernel.
123 if "%{build_kernel_versatile}" == "1"
127 # Build ARM kirkwood kernel.
128 if "%{build_kernel_kirkwood}" == "1"
132 # Build ARM omap kernel.
133 if "%{build_kernel_omap}" == "1"
137 # Add tools' build requirements if build is requested.
138 if "%{build_cpupower}" == "1"
139 requires += %{tools_cpupower_requires}
143 rm -f %{DIR_APP}/localversion-grsec
145 # Remove -Werror flag to fix ARMv5 build.
146 sed -e "s/-Werror//g" -i grsecurity/Makefile
148 # Disable the colorize plugin.
149 # It's generally very nice but it clutters our
151 sed -e "/^COLORIZE_PLUGIN_CFLAGS/d" \
154 sed -e "s/^HOSTCFLAGS.*=.*/& -fPIC/g" -i Makefile
156 cp -vf %{DIR_SOURCE}/%{DISTRO_SNAME}_logo.ppm \
157 drivers/video/logo/logo_linux_clut224.ppm
159 # Get rid of unwanted files resulting from patch fuzz.
160 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
162 # Remove unnecessary SCM files.
163 find . -name .gitignore -exec rm -f {} \; >/dev/null
165 # This prevents scripts/setlocalversion from mucking with our version numbers.
174 if [ "${flavour}" != "default" ]; then
178 scripts/configure --kernel-dir=%{DIR_APP} \
179 merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
182 # Generate configuration files for all kernels we are going to
184 for kernel in %{kernels}; do
185 configure_kernel ${kernel}
193 local localversion="%{localversion}"
194 local fullversion="%{fullver}"
195 if [ "${flavour}" != "default" ]; then
197 localversion="${localversion}.${flavour}"
198 fullversion="${fullversion}.${flavour}"
203 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
205 # Clean up the source tree.
208 # Install configuration file.
209 cp configs/config.${flavour} .config
212 make ARCH=%{kernel_arch} oldnoconfig >/dev/null
213 make ARCH=%{kernel_arch} CC="gcc -fno-PIE" %{kernel_target} modules %{PARALLELISMFLAGS}
215 # Install the results.
216 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/lib/modules/${fullversion}
217 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
218 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
219 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
221 # Create empty initramfs (20M).
222 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
225 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} mod-fw= \
226 KERNELRELEASE=${fullversion} modules_install
229 case "%{DISTRO_ARCH}" in
231 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} \
232 KERNELRELEASE=${fullversion} vdso_install
236 # Create an empty settings file for dracut
237 mkdir -pv %{BUILDROOT}/etc/ld.so.conf.d
238 echo "# Placeholder file, no vDSO hwcap entries used in this kernel." \
239 > %{BUILDROOT}/etc/ld.so.conf.d/kernel-${fullversion}.conf
241 # And now the scary looking part.
243 # Recreate source and build links.
244 rm -vf %{BUILDROOT}/lib/modules/${fullversion}/{build,source}
245 mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/build
246 ln -svf build %{BUILDROOT}/lib/modules/${fullversion}/source
248 # Create dirs for extra modules.
249 mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/extra
251 cp -v --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
252 %{BUILDROOT}/lib/modules/${fullversion}/build
253 cp -v Module.symvers System.map \
254 %{BUILDROOT}/lib/modules/${fullversion}/build
255 rm -vrf %{BUILDROOT}/lib/modules/${fullversion}/build/{Documentation,scripts,include}
257 cp -v .config %{BUILDROOT}/lib/modules/${fullversion}/build
258 cp -va scripts %{BUILDROOT}/lib/modules/${fullversion}/build
259 find %{BUILDROOT}/lib/modules/${fullversion}/build/scripts -name "*.o" \
262 cp -va --parents arch/%{kernel_arch}/include \
263 %{BUILDROOT}/lib/modules/${fullversion}/build
264 cp -va include %{BUILDROOT}/lib/modules/${fullversion}/build/include
266 # Make sure we can build external modules.
267 touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/Makefile \
268 %{BUILDROOT}/lib/modules/${fullversion}/build/include/linux/version.h
269 touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/.config \
270 %{BUILDROOT}/lib/modules/${fullversion}/build/autoconf.h
271 cp -v %{BUILDROOT}/lib/modules/${fullversion}/build/.config \
272 %{BUILDROOT}/lib/modules/${fullversion}/build/include/config/auto.conf
274 find %{BUILDROOT}/lib/modules/${fullversion} -name "*.ko" -type f | \
277 # Move all development files to /usr/src.
278 mkdir -pv %{BUILDROOT}/usr/src/kernels
279 mv -v %{BUILDROOT}/lib/modules/${fullversion}/build \
280 %{BUILDROOT}/usr/src/kernels/${fullversion}
281 ln -svf ../../../usr/src/kernels/${fullversion} \
282 %{BUILDROOT}/lib/modules/${fullversion}/build
284 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
287 for kernel in %{kernels}; do
288 build_kernel ${kernel}
293 if [ "%{build_cpupower}" = "1" ]; then
294 chmod +x tools/power/cpupower/utils/version-gen.sh
295 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
297 cd tools/power/cpupower/debug/i386
298 make %{PARALLELISMFLAGS} centrino-decode powernow-k8-decode
304 # When no kernels are configured, we create a default config
305 # which enables us to install at least the header files.
306 [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
308 # Install the header files
309 make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
310 mkdir -pv %{BUILDROOT}/usr/include
311 find dest/include \( -name .install -o -name ..install.cmd \) -delete
312 cp -rv dest/include/* %{BUILDROOT}/usr/include
314 # Glibc provides these headers
315 rm -rfv %{BUILDROOT}/usr/include/scsi \
316 %{BUILDROOT}/usr/include/asm*/atomic.h \
317 %{BUILDROOT}/usr/include/asm*/io.h \
318 %{BUILDROOT}/usr/include/asm*/irq.h
320 # Remove all firmware files which are distributed by linux-firmware
321 rm -rfv %{BUILDROOT}/lib/firmware
324 make -C tools/perf DESTDIR=%{BUILDROOT} \
325 HAVE_CPLUS_DEMANGLE=1 prefix=/usr perfexecdir=lib/perf-core \
329 if [ "%{build_cpupower}" = "1" ]; then
330 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
331 mandir=%{mandir} CPUFREQ_BENCH=false install
332 cd tools/power/cpupower/debug/i386
333 install -m 755 centrino-decode %{BUILDROOT}/usr/bin/centrino-decode
334 install -m 755 powernow-k8-decode %{BUILDROOT}/usr/bin/powernow-k8-decode
336 chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
344 kernel_release = %{fullver}
346 summary = The Linux kernel %{kernel_release}.
353 kernel=%{kernel_release}
363 /boot/System.map-%{kernel_release}
364 /boot/vmlinuz-%{kernel_release}
365 /boot/initramfs-%{kernel_release}.img
366 /etc/ld.so.conf.d/kernel-%{kernel_release}.conf
367 /lib/modules/%{kernel_release}
371 /sbin/new-kernel-pkg --package %{kernel_name} --mkinitrd --dracut --depmod --update %{kernel_release}
372 /sbin/new-kernel-pkg --package %{kernel_name} --rpmposttrans %{kernel_release}
384 /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
388 /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
392 /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{kernel_release}
397 kernel_release = %{fullver}
399 summary = Development files of kernel-%{kernel_release}.
403 Install this package in order to compile modules for
404 kernel release %{kernel_release}.
412 /lib/modules/%{kernel_release}/build
413 /lib/modules/%{kernel_release}/source
414 /usr/src/kernels/%{kernel_release}
418 if "%{build_kernel_default}" == "1"
423 kernel_release = %{fullver}
430 kernel_release = %{fullver}
434 if "%{build_kernel_legacy}" == "1"
435 package kernel-legacy
438 kernel_name = kernel-legacy
439 kernel_release = %{fullver}.legacy
442 package kernel-legacy-devel
445 kernel_name = kernel-legacy
446 kernel_release = %{fullver}.legacy
450 if "%{build_kernel_versatile}" == "1"
451 package kernel-versatile
454 kernel_name = kernel-versatile
455 kernel_release = %{fullver}.versatile
458 package kernel-versatile-devel
461 kernel_name = kernel-versatile
462 kernel_release = %{fullver}.versatile
466 if "%{build_kernel_kirkwood}" == "1"
467 package kernel-kirkwood
470 kernel_name = kernel-kirkwood
471 kernel_release = %{fullver}.kirkwood
474 package kernel-kirkwood-devel
477 kernel_name = kernel-kirkwood
478 kernel_release = %{fullver}.kirkwood
482 if "%{build_kernel_omap}" == "1"
486 kernel_name = kernel-omap
487 kernel_release = %{fullver}.omap
490 package kernel-omap-devel
493 kernel_name = kernel-omap
494 kernel_release = %{fullver}.omap
498 package kernel-headers
499 summary = Header files of the kernel release %{fullver}.
500 desciption = %{summary}
508 summary = Assortment of tools for the Linux kernel.
509 description = %{summary}