###############################################################################
name = kernel
-version = 3.6.6
+version = 3.13.2
release = 2
thisapp = linux-%{version}
-maintainer = Michael Tremer <michael.tremer@ipfire.org>
+maintainer = Arne Fitzenreiter <arne.fitzenreiter@ipfire.org>
groups = System/Kernels
url = http://www.kernel.org/
license = GPLv2
requires
asciidoc
+ audit-devel
+ bc
binutils >= 2.23.51.0.3-3
binutils-devel
bison
flex
gcc-plugin-devel
gettext
+ libunwind-devel
ncurses-devel
net-tools
newt-devel
kernel_build_flags =
kernel_target = bzImage
+ kernel_image = arch/%{kernel_arch}/boot/%{kernel_target}
+
if "%{DISTRO_ARCH}" == "i686"
# Build a default and legacy kernel for the
# i686 architecture.
build_kernel_default = 1
build_kernel_legacy = 1
- kernel_arch = x86
- kernel_image = arch/%{kernel_arch}/boot/bzImage
-
+ kernel_arch = x86
end
if "%{DISTRO_ARCH}" == "x86_64"
build_kernel_default = 1
- kernel_arch = x86
- kernel_image = arch/%{kernel_arch}/boot/bzImage
+ kernel_arch = x86
end
if "%{DISTRO_ARCH}" == "armv5tel"
- # ERROR Currently all kernel images are disabled, because they
- # won't build with the grsecurity patch.
-
# Build a kernel for Marvell Kirkwood-based devices.
- build_kernel_kirkwood = 1
+ build_kernel_default = 1
- kernel_arch = arm
- kernel_image = arch/%{kernel_arch}/boot/zImage
+ kernel_arch = arm
+ kernel_target = zImage
# http://lists.infradead.org/pipermail/linux-arm-kernel/2012-March/091404.html
kernel_build_flags = KALLSYMS_EXTRA_PASS=1
end
if "%{DISTRO_ARCH}" == "armv7hl"
- # Build a kernel for TI OMAP SoCs.
- build_kernel_omap = 1
+ # Build the default unified kernel.
+ build_kernel_default = 1
+ build_kernel_lpae = 1
+
+ kernel_arch = arm
+ kernel_target = zImage
+ end
- kernel_arch = arm
- kernel_image = arch/%{kernel_arch}/boot/zImage
+ # mkimage is a requirement to build uImage images.
+ if "%{kernel_target}" == "uImage"
+ requires += u-boot-tools
end
# Build default kernel.
kernels += legacy
end
- # Build ARM kirkwood kernel.
- if "%{build_kernel_kirkwood}" == "1"
- kernels += kirkwood
+ # Build lpae kernel
+ if "%{build_kernel_lpae}" == "1"
+ kernels += lpae
end
- # Build ARM omap kernel.
- if "%{build_kernel_omap}" == "1"
- kernels += omap
- end
+ perf_make = make %{MAKETUNING} -C tools/perf V=1 WERROR=0 \
+ NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_LIBNUMA=1 \
+ NO_STRLCPY=1 NO_BIONIC=1 prefix=%{prefix} perfexecdir=lib/perf-core
prepare_cmds
rm -f %{DIR_APP}/localversion-grsec
# Remove -Werror flag to fix ARMv5 build.
- sed -e "s/-Werror//g" -i grsecurity/Makefile
+ sed -e "s/-Werror//g" -i grsecurity/Makefile || :
# Disable the colorize plugin.
# It's generally very nice but it clutters our
for kernel in %{kernels}; do
configure_kernel ${kernel}
done
+
+ # Tools
+ # Prevent perf from installing any files in /usr/libexec
+ sed -i %{DIR_APP}/tools/perf/config/Makefile -e "s/libexec/lib/g"
end
build
make ARCH=%{kernel_arch} CC="gcc -fno-PIE" %{kernel_target} modules \
%{kernel_build_flags} %{PARALLELISMFLAGS}
+ # Compile Flattened Device Tree database
+ case "${DISTRO_ARCH}" in
+ arm*)
+ make ARCH=%{kernel_arch} dtbs
+
+ mkdir -pv %{BUILDROOT}/boot/dtb-${fullversion}
+ for file in arch/arm/boot/dts/*.dtb; do
+ [ -e "${file}" ] || continue
+
+ install -m 644 ${file} %{BUILDROOT}/boot/dtb-${fullversion} || exit 1
+ rm -f ${file}
+ done
+ ;;
+ esac
+
# Install the results.
mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/usr/lib/modules/${fullversion}
install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
# Install modules.
- make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= \
+ make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
KERNELRELEASE=${fullversion} modules_install
# Install vdso.
ln -sf ../../../src/kernels/${fullversion} \
%{BUILDROOT}/usr/lib/modules/${fullversion}/build
+ # Fix permissions.
+ find %{BUILDROOT}/usr/src/kernels -name "modules.order" \
+ -exec chmod 644 {} \;
+
find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
}
done
# Build tools.
+ # perf
+ %{perf_make} DESTDIR=%{BUILDROOT} all
+
# cpupower
chmod +x tools/power/cpupower/utils/version-gen.sh
make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
if [ "%{DISTRO_ARCH}" = "x86_64" ]; then
pushd tools/power/cpupower/debug/x86_64
- make %{MAKETUNING}
+ make %{MAKETUNING} centrino-decode powernow-k8-decode
popd
elif [ "%{DISTRO_ARCH}" = "i686" ]; then
pushd tools/power/cpupower/debug/i386
- make %{MAKETUNING}
+ make %{MAKETUNING} centrino-decode powernow-k8-decode
popd
fi
+
+ # Should be built for all x86 architectures
+ if [ "%{DISTRO_ARCH}" = "x86_64" ]; then
+ # Won't compile on i686
+ # x86_energy_perf_policy.c: In function ‘validate_cpuid’:
+ # x86_energy_perf_policy.c:154:2: error: PIC register clobbered by ‘ebx’ in ‘asm’
+ # asm("cpuid" : "=a" (fms), "=c" (ecx), "=d" (edx) : "a" (1) : "ebx");
+ # ^
+ pushd tools/power/x86/x86_energy_perf_policy
+ make
+ popd
+
+ # Same as above
+ pushd tools/power/x86/turbostat
+ make
+ popd
+ fi
+
+ pushd tools/thermal/tmon
+ make
+ popd
end
install
rm -rfv %{BUILDROOT}/lib/firmware
# Install tools.
- make -C tools/perf DESTDIR=%{BUILDROOT} WERROR=0 \
- HAVE_CPLUS_DEMANGLE=1 prefix=/usr perfexecdir=lib/perf-core \
- install install-man install-python_ext
+ %{perf_make} DESTDIR=%{BUILDROOT} install-bin install-python_ext
# cpupower
make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
fi
chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
+
+ # This should be built for all x86 architectures
+ if [ "%{DISTRO_ARCH}" = "x86_64" ]; then
+ mkdir -pv %{BUILDROOT}%{mandir}/man8
+
+ pushd tools/power/x86/x86_energy_perf_policy
+ make DESTDIR=%{BUILDROOT} install
+ popd
+
+ pushd tools/power/x86/turbostat
+ make DESTDIR=%{BUILDROOT} install
+ popd
+ fi
+
+ # tmon
+ pushd tools/thermal/tmon
+ make INSTALL_ROOT=%{BUILDROOT} install
+ popd
end
end
files
/boot/System.map-%{kernel_release}
+ /boot/dtb-%{kernel_release}
/boot/vmlinuz-%{kernel_release}
/boot/initramfs-%{kernel_release}.img
/etc/ld.so.conf.d/kernel-%{kernel_release}.conf
kernel release %{kernel_release}.
end
+ provides
+ kernel-devel = %{thisver}
+ end
+
filter_requires
perl>=[0-9]\:.*
end
end
if "%{build_kernel_default}" == "1"
- package kernel
- template KERNEL
+ if "%{DISTRO_ARCH}" == "armv7hl"
+ package kernel
+ template KERNEL
- kernel_name = kernel
- kernel_release = %{fullver}
- end
+ kernel_name = kernel
+ kernel_release = %{fullver}
- package kernel-devel
- template KERNELDEVEL
+ # Replace the Exynos kernel.
+ obsoletes += kernel-exynos < %{kernel_release}
+ conflicts += kernel-exynos < %{kernel_release}
+
+ # Replace the OMAP kernel.
+ obsoletes += kernel-omap < %{kernel_release}
+ conflicts += kernel-omap < %{kernel_release}
+ end
+
+ package kernel-devel
+ template KERNELDEVEL
+
+ kernel_name = kernel
+ kernel_release = %{fullver}
+
+ # Replace the Exynos kernel.
+ obsoletes += kernel-exynos-devel < %{kernel_release}
+ conflicts += kernel-exynos-devel < %{kernel_release}
- kernel_name = kernel
- kernel_release = %{fullver}
+ # Replace the OMAP kernel.
+ obsoletes += kernel-omap-devel < %{kernel_release}
+ conflicts += kernel-omap-devel < %{kernel_release}
+ end
+
+ else
+ package kernel
+ template KERNEL
+
+ kernel_name = kernel
+ kernel_release = %{fullver}
+ end
+
+ package kernel-devel
+ template KERNELDEVEL
+
+ kernel_name = kernel
+ kernel_release = %{fullver}
+ end
end
end
end
end
- if "%{build_kernel_kirkwood}" == "1"
- package kernel-kirkwood
- template KERNEL
-
- kernel_name = kernel-kirkwood
- kernel_release = %{fullver}.kirkwood
- end
-
- package kernel-kirkwood-devel
- template KERNELDEVEL
-
- kernel_name = kernel-kirkwood
- kernel_release = %{fullver}.kirkwood
- end
- end
-
- if "%{build_kernel_omap}" == "1"
- package kernel-omap
+ if "%{build_kernel_lpae}" == "1"
+ package kernel-lpae
template KERNEL
- kernel_name = kernel-omap
- kernel_release = %{fullver}.omap
+ kernel_name = kernel-lpae
+ kernel_release = %{fullver}.lpae
end
- package kernel-omap-devel
+ package kernel-lpae-devel
template KERNELDEVEL
- kernel_name = kernel-omap
- kernel_release = %{fullver}.omap
+ kernel_name = kernel-lpae
+ kernel_release = %{fullver}.lpae
end
end