###############################################################################
name = kernel
-version = 3.12.4
+version = 4.1.3
release = 1
thisapp = linux-%{version}
localversion = %{release}.%{DISTRO_DISTTAG}.%{DISTRO_ARCH}
fullver = %{version}-%{localversion}
-source_dl = http://www.kernel.org/pub/linux/kernel/v3.x/
+source_dl = http://www.kernel.org/pub/linux/kernel/v4.x/
sources = %{thisapp}.tar.xz
build
- # icecream cannot be used to compile the kernel.
- # Because the PaX patch does use GCC plugins to harden the kernel which
- # are not available on the remote compilers, we need to disable it here.
- export ICECC=no
-
kernel_logo = /usr/share/pixmaps/kernel-logo.ppm
requires
bison
elfutils-devel
flex
+ gcc >= 4.9
gcc-plugin-devel
gettext
libunwind-devel
python-devel
slang-devel
xmlto
+ xz
/sbin/depmod
%{kernel_logo}
kernel_arch = x86
end
- if "%{DISTRO_ARCH}" == "armv5tel"
- # ERROR Currently all kernel images are disabled, because they
- # won't build with the grsecurity patch.
+ if "%{DISTRO_ARCH}" == "aarch64"
+ # Disable for now because it won't compile
+ build_kernel_default = 0
+
+ kernel_arch = arm64
+ kernel_target = Image.gz
+ end
+ if "%{DISTRO_ARCH}" == "armv5tel"
# Build a kernel for Marvell Kirkwood-based devices.
- build_kernel_kirkwood = 1
+ build_kernel_default = 1
kernel_arch = arm
kernel_target = zImage
if "%{DISTRO_ARCH}" == "armv7hl"
# Build the default unified kernel.
build_kernel_default = 1
+ build_kernel_lpae = 1
kernel_arch = arm
kernel_target = zImage
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
+ 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
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
# Compile Flattened Device Tree database
case "${DISTRO_ARCH}" in
- arm*)
+ aarch64|arm*)
make ARCH=%{kernel_arch} dtbs
mkdir -pv %{BUILDROOT}/boot/dtb-${fullversion}
%{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf
find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \
- xargs chmod u+x
+ xargs --no-run-if-empty chmod u+x
# Move all development files to /usr/src.
mkdir -p %{BUILDROOT}/usr/src/kernels
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
end
end
- if "%{build_kernel_kirkwood}" == "1"
- package kernel-kirkwood
+ if "%{build_kernel_lpae}" == "1"
+ package kernel-lpae
template KERNEL
- kernel_name = kernel-kirkwood
- kernel_release = %{fullver}.kirkwood
+ kernel_name = kernel-lpae
+ kernel_release = %{fullver}.lpae
end
- package kernel-kirkwood-devel
+ package kernel-lpae-devel
template KERNELDEVEL
- kernel_name = kernel-kirkwood
- kernel_release = %{fullver}.kirkwood
+ kernel_name = kernel-lpae
+ kernel_release = %{fullver}.lpae
end
end