###############################################################################
name = kernel
-version = 3.8.6
+version = 4.12.4
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
asciidoc
audit-devel
- binutils >= 2.23.51.0.3-3
+ bc
+ binutils >= 2.25
binutils-devel
bison
elfutils-devel
flex
+ gcc >= 4.9
gcc-plugin-devel
gettext
+ hostname
libunwind-devel
ncurses-devel
net-tools
pciutils-devel
perl
python-devel
+ openssl-devel
slang-devel
xmlto
+ xz
/sbin/depmod
%{kernel_logo}
end
- # i686 needs librmi for cpupower.
- if "%{DISTRO_ARCH}" == "i686"
- requires += liblrmi-devel
- end
-
# A list of kernels to build.
kernels =
- # Arguments that are passed to the kernel build command.
- kernel_build_flags =
+ # Arguments that are passed to the kernel build command
+ # Clearning any host CFLAGS or LDFLAGS for kernel build
+ kernel_build_flags = CFLAGS= LDFLAGS=
+ kernel_arch = %{DISTRO_PLATFORM}
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
- end
-
if "%{DISTRO_ARCH}" == "x86_64"
build_kernel_default = 1
-
- 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
-
- kernel_arch = arm
- kernel_target = zImage
+ if "%{DISTRO_ARCH}" == "aarch64"
+ build_kernel_default = 1
- # http://lists.infradead.org/pipermail/linux-arm-kernel/2012-March/091404.html
- kernel_build_flags = KALLSYMS_EXTRA_PASS=1
+ kernel_arch = arm64
+ kernel_target = Image.gz
end
if "%{DISTRO_ARCH}" == "armv7hl"
- # Build a kernel for Samsung's Exynos SoCs.
- build_kernel_exynos = 1
-
- # Build a kernel for TI OMAP SoCs.
- build_kernel_omap = 1
+ # Build the default unified kernel.
+ build_kernel_default = 1
- kernel_arch = arm
- kernel_target = uImage
+ kernel_target = zImage
end
# mkimage is a requirement to build uImage images.
kernels += default
end
- # Build exynos kernel.
- if "%{build_kernel_exynos}" == "1"
- kernels += exynos
- end
-
- # Build legacy kernel.
- if "%{build_kernel_legacy}" == "1"
- kernels += legacy
- end
-
- # Build ARM kirkwood kernel.
- if "%{build_kernel_kirkwood}" == "1"
- kernels += kirkwood
- end
-
- # Build ARM omap kernel.
- if "%{build_kernel_omap}" == "1"
- kernels += omap
- end
+ perf_make = make %{PARALLELISMFLAGS} -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
-
# Disable the colorize plugin.
# It's generally very nice but it clutters our
# logfiles.
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
+ aarch64|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}
make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
KERNELRELEASE=${fullversion} modules_install
- # Install vdso.
- case "%{DISTRO_ARCH}" in
- i686)
- make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} \
- KERNELRELEASE=${fullversion} vdso_install
- ;;
- esac
-
# Create an empty settings file for dracut
mkdir -p %{BUILDROOT}/etc/ld.so.conf.d
echo "# Placeholder file, no vDSO hwcap entries used in this kernel." \
%{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
-exec chmod 644 {} \;
find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
+
+ # remove device tree compiler because there are dead links
+ rm -rf %{BUILDROOT}/usr/src/kernels/*/scripts/dtc
}
for kernel in %{kernels}; do
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}
- popd
- elif [ "%{DISTRO_ARCH}" = "i686" ]; then
- pushd tools/power/cpupower/debug/i386
- make %{MAKETUNING}
- 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} \
mandir=%{mandir} CPUFREQ_BENCH=false install
- if [ "%{DISTRO_ARCH}" = "x86_64" ]; then
- pushd tools/power/cpupower/debug/x86_64
- install -m 755 centrino-decode \
- %{BUILDROOT}/usr/bin/centrino-decode
- install -m 755 powernow-k8-decode \
- %{BUILDROOT}/usr/bin/powernow-k8-decode
- popd
- elif [ "%{DISTRO_ARCH}" = "i686" ]; then
- pushd tools/power/cpupower/debug/i386
- install -m 755 centrino-decode \
- %{BUILDROOT}/usr/bin/centrino-decode
- install -m 755 powernow-k8-decode \
- %{BUILDROOT}/usr/bin/powernow-k8-decode
- popd
- fi
-
chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
+
+ # 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
-
- kernel_name = kernel
- kernel_release = %{fullver}
- end
-
- package kernel-devel
- template KERNELDEVEL
-
- kernel_name = kernel
- kernel_release = %{fullver}
- end
- end
+ if "%{DISTRO_ARCH}" == "armv7hl"
+ package kernel
+ template KERNEL
- if "%{build_kernel_exynos}" == "1"
- package kernel-exynos
- template KERNEL
+ kernel_name = kernel
+ kernel_release = %{fullver}
- kernel_name = kernel-exynos
- kernel_release = %{fullver}.exynos
- end
-
- package kernel-exynos-devel
- template KERNELDEVEL
+ # Replace the Exynos kernel.
+ obsoletes += kernel-exynos < %{kernel_release}
+ conflicts += kernel-exynos < %{kernel_release}
- kernel_name = kernel-exynos
- kernel_release = %{fullver}.exynos
- end
- end
+ # Replace the OMAP kernel.
+ obsoletes += kernel-omap < %{kernel_release}
+ conflicts += kernel-omap < %{kernel_release}
+ end
- if "%{build_kernel_legacy}" == "1"
- package kernel-legacy
- template KERNEL
+ package kernel-devel
+ template KERNELDEVEL
- kernel_name = kernel-legacy
- kernel_release = %{fullver}.legacy
- end
+ kernel_name = kernel
+ kernel_release = %{fullver}
- package kernel-legacy-devel
- template KERNELDEVEL
+ # Replace the Exynos kernel.
+ obsoletes += kernel-exynos-devel < %{kernel_release}
+ conflicts += kernel-exynos-devel < %{kernel_release}
- kernel_name = kernel-legacy
- kernel_release = %{fullver}.legacy
- end
- end
+ # Replace the OMAP kernel.
+ obsoletes += kernel-omap-devel < %{kernel_release}
+ conflicts += kernel-omap-devel < %{kernel_release}
+ end
- if "%{build_kernel_kirkwood}" == "1"
- package kernel-kirkwood
- template KERNEL
+ else
+ package kernel
+ 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
- template KERNEL
-
- kernel_name = kernel-omap
- kernel_release = %{fullver}.omap
- end
+ kernel_name = kernel
+ kernel_release = %{fullver}
+ end
- package kernel-omap-devel
- template KERNELDEVEL
+ package kernel-devel
+ template KERNELDEVEL
- kernel_name = kernel-omap
- kernel_release = %{fullver}.omap
+ kernel_name = kernel
+ kernel_release = %{fullver}
+ end
end
end