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 sed -e "s/^HOSTCFLAGS.*=.*/& -fPIC/g" -i Makefile
147 cp -vf %{DIR_SOURCE}/%{DISTRO_SNAME}_logo.ppm \
148 drivers/video/logo/logo_linux_clut224.ppm
150 # Get rid of unwanted files resulting from patch fuzz.
151 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
153 # Remove unnecessary SCM files.
154 find . -name .gitignore -exec rm -f {} \; >/dev/null
156 # This prevents scripts/setlocalversion from mucking with our version numbers.
165 if [ "${flavour}" != "default" ]; then
169 scripts/configure --kernel-dir=%{DIR_APP} \
170 merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
173 # Generate configuration files for all kernels we are going to
175 for kernel in %{kernels}; do
176 configure_kernel ${kernel}
184 local localversion="%{localversion}"
185 local fullversion="%{fullver}"
186 if [ "${flavour}" != "default" ]; then
188 localversion="${localversion}.${flavour}"
189 fullversion="${fullversion}.${flavour}"
194 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
196 # Clean up the source tree.
199 # Install configuration file.
200 cp configs/config.${flavour} .config
203 make ARCH=%{kernel_arch} oldnoconfig >/dev/null
204 make ARCH=%{kernel_arch} CC="gcc -fno-PIE" %{kernel_target} modules %{PARALLELISMFLAGS}
206 # Install the results.
207 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/lib/modules/${fullversion}
208 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
209 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
210 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
212 # Create empty initramfs (20M).
213 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
216 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} mod-fw= \
217 KERNELRELEASE=${fullversion} modules_install
220 case "%{DISTRO_ARCH}" in
222 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} \
223 KERNELRELEASE=${fullversion} vdso_install
227 # Create an empty settings file for dracut
228 mkdir -pv %{BUILDROOT}/etc/ld.so.conf.d
229 echo "# Placeholder file, no vDSO hwcap entries used in this kernel." \
230 > %{BUILDROOT}/etc/ld.so.conf.d/kernel-${fullversion}.conf
232 # And now the scary looking part.
234 # Recreate source and build links.
235 rm -vf %{BUILDROOT}/lib/modules/${fullversion}/{build,source}
236 mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/build
237 ln -svf build %{BUILDROOT}/lib/modules/${fullversion}/source
239 # Create dirs for extra modules.
240 mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/extra
242 cp -v --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
243 %{BUILDROOT}/lib/modules/${fullversion}/build
244 cp -v Module.symvers System.map \
245 %{BUILDROOT}/lib/modules/${fullversion}/build
246 rm -vrf %{BUILDROOT}/lib/modules/${fullversion}/build/{Documentation,scripts,include}
248 cp -v .config %{BUILDROOT}/lib/modules/${fullversion}/build
249 cp -va scripts %{BUILDROOT}/lib/modules/${fullversion}/build
250 find %{BUILDROOT}/lib/modules/${fullversion}/build/scripts -name "*.o" \
253 cp -va --parents arch/%{kernel_arch}/include \
254 %{BUILDROOT}/lib/modules/${fullversion}/build
255 cp -va include %{BUILDROOT}/lib/modules/${fullversion}/build/include
257 # Make sure we can build external modules.
258 touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/Makefile \
259 %{BUILDROOT}/lib/modules/${fullversion}/build/include/linux/version.h
260 touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/.config \
261 %{BUILDROOT}/lib/modules/${fullversion}/build/autoconf.h
262 cp -v %{BUILDROOT}/lib/modules/${fullversion}/build/.config \
263 %{BUILDROOT}/lib/modules/${fullversion}/build/include/config/auto.conf
265 find %{BUILDROOT}/lib/modules/${fullversion} -name "*.ko" -type f | \
268 # Move all development files to /usr/src.
269 mkdir -pv %{BUILDROOT}/usr/src/kernels
270 mv -v %{BUILDROOT}/lib/modules/${fullversion}/build \
271 %{BUILDROOT}/usr/src/kernels/${fullversion}
272 ln -svf ../../../usr/src/kernels/${fullversion} \
273 %{BUILDROOT}/lib/modules/${fullversion}/build
275 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
278 for kernel in %{kernels}; do
279 build_kernel ${kernel}
284 if [ "%{build_cpupower}" = "1" ]; then
285 chmod +x tools/power/cpupower/utils/version-gen.sh
286 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
288 cd tools/power/cpupower/debug/i386
289 make %{PARALLELISMFLAGS} centrino-decode powernow-k8-decode
295 # When no kernels are configured, we create a default config
296 # which enables us to install at least the header files.
297 [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
299 # Install the header files
300 make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
301 mkdir -pv %{BUILDROOT}/usr/include
302 find dest/include \( -name .install -o -name ..install.cmd \) -delete
303 cp -rv dest/include/* %{BUILDROOT}/usr/include
305 # Glibc provides these headers
306 rm -rfv %{BUILDROOT}/usr/include/scsi \
307 %{BUILDROOT}/usr/include/asm*/atomic.h \
308 %{BUILDROOT}/usr/include/asm*/io.h \
309 %{BUILDROOT}/usr/include/asm*/irq.h
311 # Remove all firmware files which are distributed by linux-firmware
312 rm -rfv %{BUILDROOT}/lib/firmware
315 make -C tools/perf DESTDIR=%{BUILDROOT} \
316 HAVE_CPLUS_DEMANGLE=1 prefix=/usr perfexecdir=lib/perf-core \
320 if [ "%{build_cpupower}" = "1" ]; then
321 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
322 mandir=%{mandir} CPUFREQ_BENCH=false install
323 cd tools/power/cpupower/debug/i386
324 install -m 755 centrino-decode %{BUILDROOT}/usr/bin/centrino-decode
325 install -m 755 powernow-k8-decode %{BUILDROOT}/usr/bin/powernow-k8-decode
327 chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
335 kernel_release = %{fullver}
337 summary = The Linux kernel %{kernel_release}.
344 kernel=%{kernel_release}
354 /boot/System.map-%{kernel_release}
355 /boot/vmlinuz-%{kernel_release}
356 /boot/initramfs-%{kernel_release}.img
357 /etc/ld.so.conf.d/kernel-%{kernel_release}.conf
358 /lib/modules/%{kernel_release}
362 /sbin/new-kernel-pkg --package %{kernel_name} --mkinitrd --dracut --depmod --update %{kernel_release}
363 /sbin/new-kernel-pkg --package %{kernel_name} --rpmposttrans %{kernel_release}
375 /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
379 /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
383 /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{kernel_release}
388 kernel_release = %{fullver}
390 summary = Development files of kernel-%{kernel_release}.
394 Install this package in order to compile modules for
395 kernel release %{kernel_release}.
403 /lib/modules/%{kernel_release}/build
404 /lib/modules/%{kernel_release}/source
405 /usr/src/kernels/%{kernel_release}
409 if "%{build_kernel_default}" == "1"
414 kernel_release = %{fullver}
421 kernel_release = %{fullver}
425 if "%{build_kernel_legacy}" == "1"
426 package kernel-legacy
429 kernel_name = kernel-legacy
430 kernel_release = %{fullver}.legacy
433 package kernel-legacy-devel
436 kernel_name = kernel-legacy
437 kernel_release = %{fullver}.legacy
441 if "%{build_kernel_versatile}" == "1"
442 package kernel-versatile
445 kernel_name = kernel-versatile
446 kernel_release = %{fullver}.versatile
449 package kernel-versatile-devel
452 kernel_name = kernel-versatile
453 kernel_release = %{fullver}.versatile
457 if "%{build_kernel_kirkwood}" == "1"
458 package kernel-kirkwood
461 kernel_name = kernel-kirkwood
462 kernel_release = %{fullver}.kirkwood
465 package kernel-kirkwood-devel
468 kernel_name = kernel-kirkwood
469 kernel_release = %{fullver}.kirkwood
473 if "%{build_kernel_omap}" == "1"
477 kernel_name = kernel-omap
478 kernel_release = %{fullver}.omap
481 package kernel-omap-devel
484 kernel_name = kernel-omap
485 kernel_release = %{fullver}.omap
489 package kernel-headers
490 summary = Header files of the kernel release %{fullver}.
491 desciption = %{summary}
499 summary = Assortment of tools for the Linux kernel.
500 description = %{summary}