X-Git-Url: http://git.ipfire.org/?p=people%2Fms%2Fipfire-3.x.git;a=blobdiff_plain;f=kernel%2Fkernel.nm;h=1650e89107a0902dc94fea83aca4240b09f20608;hp=ec46938c2d52832f82c7c3d74a5ba510bbd45064;hb=302e8df8ef41cb06c3d9f4b4f785797434f4a1de;hpb=43c6c1f9e2127642da787133f4ad189b27286d17 diff --git a/kernel/kernel.nm b/kernel/kernel.nm index ec46938c2..1650e8910 100644 --- a/kernel/kernel.nm +++ b/kernel/kernel.nm @@ -4,11 +4,11 @@ ############################################################################### name = kernel -version = 3.2.12 -release = 2 +version = 3.13.2 +release = 1 thisapp = linux-%{version} -maintainer = Michael Tremer +maintainer = Arne Fitzenreiter groups = System/Kernels url = http://www.kernel.org/ license = GPLv2 @@ -34,79 +34,88 @@ build # 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 + bc + binutils >= 2.23.51.0.3-3 binutils-devel + bison elfutils-devel + flex gcc-plugin-devel gettext + libunwind-devel ncurses-devel net-tools + newt-devel + pciutils-devel perl python-devel + slang-devel xmlto - xz-lzma-compat /sbin/depmod + %{kernel_logo} end - tools_cpupower_requires - newt-devel - pciutils-devel - slang-devel + # i686 needs librmi for cpupower. + if "%{DISTRO_ARCH}" == "i686" + requires += liblrmi-devel end # A list of kernels to build. kernels = - # Should we build cpupower? - build_cpupower = 1 + # Arguments that are passed to the kernel build command. + 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 versatile kernel. - #build_kernel_versatile = 1 - # Build a kernel for Marvell Kirkwood-based devices. - #build_kernel_kirkwood = 1 + build_kernel_kirkwood = 1 - kernel_arch = arm - kernel_image = arch/%{kernel_arch}/boot/zImage + kernel_arch = arm + kernel_target = zImage - # ARM does not support cpupower. - build_cpupower = 0 + # 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_image = arch/%{kernel_arch}/boot/zImage + kernel_arch = arm + kernel_target = zImage + end - # ARM does not support cpupower. - build_cpupower = 0 + # mkimage is a requirement to build uImage images. + if "%{kernel_target}" == "uImage" + requires += u-boot-tools end # Build default kernel. @@ -119,9 +128,9 @@ build kernels += legacy end - # Build ARM versatile kernel. - if "%{build_kernel_versatile}" == "1" - kernels += versatile + # Build lpae kernel + if "%{build_kernel_lpae}" == "1" + kernels += lpae end # Build ARM kirkwood kernel. @@ -129,22 +138,25 @@ build kernels += kirkwood end - # Build ARM omap kernel. - if "%{build_kernel_omap}" == "1" - kernels += omap - end - - # Add tools' build requirements if build is requested. - if "%{build_cpupower}" == "1" - requires += %{tools_cpupower_requires} - 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 || : + + # Disable the colorize plugin. + # It's generally very nice but it clutters our + # logfiles. + sed -e "/^COLORIZE_PLUGIN_CFLAGS/d" \ + -i Makefile + sed -e "s/^HOSTCFLAGS.*=.*/& -fPIC/g" -i Makefile - cp -vf %{DIR_SOURCE}/%{DISTRO_SNAME}_logo.ppm \ + cp -vf %{kernel_logo} \ drivers/video/logo/logo_linux_clut224.ppm # Get rid of unwanted files resulting from patch fuzz. @@ -175,6 +187,10 @@ build 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 @@ -198,13 +214,30 @@ build # Install configuration file. cp configs/config.${flavour} .config + cat .config # Run the build. make ARCH=%{kernel_arch} oldnoconfig >/dev/null - make ARCH=%{kernel_arch} CC="gcc -fno-PIE" %{kernel_target} modules %{PARALLELISMFLAGS} + 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}/lib/modules/${fullversion} + mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/usr/lib/modules/${fullversion} install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion} install -m 644 .config %{BUILDROOT}/boot/config-${fullversion} install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion} @@ -213,7 +246,7 @@ build dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20 # Install modules. - make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} mod-fw= \ + make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \ KERNELRELEASE=${fullversion} modules_install # Install vdso. @@ -225,52 +258,56 @@ build esac # Create an empty settings file for dracut - mkdir -pv %{BUILDROOT}/etc/ld.so.conf.d + mkdir -p %{BUILDROOT}/etc/ld.so.conf.d echo "# Placeholder file, no vDSO hwcap entries used in this kernel." \ > %{BUILDROOT}/etc/ld.so.conf.d/kernel-${fullversion}.conf # And now the scary looking part. # # Recreate source and build links. - rm -vf %{BUILDROOT}/lib/modules/${fullversion}/{build,source} - mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/build - ln -svf build %{BUILDROOT}/lib/modules/${fullversion}/source + rm -f %{BUILDROOT}/usr/lib/modules/${fullversion}/{build,source} + mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/build + ln -sf build %{BUILDROOT}/usr/lib/modules/${fullversion}/source # Create dirs for extra modules. - mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/extra + mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/extra - cp -v --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \ - %{BUILDROOT}/lib/modules/${fullversion}/build - cp -v Module.symvers System.map \ - %{BUILDROOT}/lib/modules/${fullversion}/build - rm -vrf %{BUILDROOT}/lib/modules/${fullversion}/build/{Documentation,scripts,include} + cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \ + %{BUILDROOT}/usr/lib/modules/${fullversion}/build + cp Module.symvers System.map \ + %{BUILDROOT}/usr/lib/modules/${fullversion}/build + rm -rf %{BUILDROOT}/usr/lib/modules/${fullversion}/build/{Documentation,scripts,include} - cp -v .config %{BUILDROOT}/lib/modules/${fullversion}/build - cp -va scripts %{BUILDROOT}/lib/modules/${fullversion}/build - find %{BUILDROOT}/lib/modules/${fullversion}/build/scripts -name "*.o" \ + cp .config %{BUILDROOT}/usr/lib/modules/${fullversion}/build + cp -a scripts %{BUILDROOT}/usr/lib/modules/${fullversion}/build + find %{BUILDROOT}/usr/lib/modules/${fullversion}/build/scripts -name "*.o" \ -exec rm -vf {} \; - cp -va --parents arch/%{kernel_arch}/include \ - %{BUILDROOT}/lib/modules/${fullversion}/build - cp -va include %{BUILDROOT}/lib/modules/${fullversion}/build/include + cp -a --parents arch/%{kernel_arch}/include \ + %{BUILDROOT}/usr/lib/modules/${fullversion}/build + cp -a include %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include # Make sure we can build external modules. - touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/Makefile \ - %{BUILDROOT}/lib/modules/${fullversion}/build/include/linux/version.h - touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/.config \ - %{BUILDROOT}/lib/modules/${fullversion}/build/autoconf.h - cp -v %{BUILDROOT}/lib/modules/${fullversion}/build/.config \ - %{BUILDROOT}/lib/modules/${fullversion}/build/include/config/auto.conf - - find %{BUILDROOT}/lib/modules/${fullversion} -name "*.ko" -type f | \ + touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/Makefile \ + %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/linux/version.h + touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \ + %{BUILDROOT}/usr/lib/modules/${fullversion}/build/autoconf.h + cp %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \ + %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf + + find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \ xargs chmod u+x # Move all development files to /usr/src. - mkdir -pv %{BUILDROOT}/usr/src/kernels - mv -v %{BUILDROOT}/lib/modules/${fullversion}/build \ + mkdir -p %{BUILDROOT}/usr/src/kernels + mv %{BUILDROOT}/usr/lib/modules/${fullversion}/build \ %{BUILDROOT}/usr/src/kernels/${fullversion} - ln -svf ../../../usr/src/kernels/${fullversion} \ - %{BUILDROOT}/lib/modules/${fullversion}/build + 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 {} \; } @@ -280,15 +317,43 @@ build done # Build tools. + # perf + %{perf_make} DESTDIR=%{BUILDROOT} all + # cpupower - if [ "%{build_cpupower}" = "1" ]; then - chmod +x tools/power/cpupower/utils/version-gen.sh - make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS} + 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} centrino-decode powernow-k8-decode + popd + elif [ "%{DISTRO_ARCH}" = "i686" ]; then + pushd tools/power/cpupower/debug/i386 + make %{MAKETUNING} centrino-decode powernow-k8-decode + popd + fi - cd tools/power/cpupower/debug/i386 - make %{PARALLELISMFLAGS} centrino-decode powernow-k8-decode - cd - + # 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 @@ -312,20 +377,47 @@ build rm -rfv %{BUILDROOT}/lib/firmware # Install tools. - make -C tools/perf DESTDIR=%{BUILDROOT} \ - HAVE_CPLUS_DEMANGLE=1 prefix=/usr perfexecdir=lib/perf-core \ - install install-man + %{perf_make} DESTDIR=%{BUILDROOT} install-bin install-python_ext # cpupower - if [ "%{build_cpupower}" = "1" ]; then - make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \ - mandir=%{mandir} CPUFREQ_BENCH=false install - cd 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 - cd - - chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so* + 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* + + # 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 @@ -352,10 +444,11 @@ packages 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 - /lib/modules/%{kernel_release} + /usr/lib/modules/%{kernel_release} end _posttrans @@ -395,30 +488,67 @@ packages kernel release %{kernel_release}. end + provides + kernel-devel = %{thisver} + end + filter_requires perl>=[0-9]\:.* end files - /lib/modules/%{kernel_release}/build - /lib/modules/%{kernel_release}/source + /usr/lib/modules/%{kernel_release}/build + /usr/lib/modules/%{kernel_release}/source /usr/src/kernels/%{kernel_release} 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} - kernel_name = kernel - kernel_release = %{fullver} + # Replace the Exynos kernel. + obsoletes += kernel-exynos-devel < %{kernel_release} + conflicts += kernel-exynos-devel < %{kernel_release} + + # 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 @@ -438,19 +568,19 @@ packages end end - if "%{build_kernel_versatile}" == "1" - package kernel-versatile + if "%{build_kernel_lpae}" == "1" + package kernel-lpae template KERNEL - kernel_name = kernel-versatile - kernel_release = %{fullver}.versatile + kernel_name = kernel-lpae + kernel_release = %{fullver}.lpae end - package kernel-versatile-devel + package kernel-lpae-devel template KERNELDEVEL - kernel_name = kernel-versatile - kernel_release = %{fullver}.versatile + kernel_name = kernel-lpae + kernel_release = %{fullver}.lpae end end @@ -470,22 +600,6 @@ packages end end - if "%{build_kernel_omap}" == "1" - package kernel-omap - template KERNEL - - kernel_name = kernel-omap - kernel_release = %{fullver}.omap - end - - package kernel-omap-devel - template KERNELDEVEL - - kernel_name = kernel-omap - kernel_release = %{fullver}.omap - end - end - package kernel-headers summary = Header files of the kernel release %{fullver}. desciption = %{summary} @@ -506,8 +620,8 @@ packages files / !/boot - !/lib/modules !/usr/include + !/usr/lib/modules !/usr/src !/usr/src/debug !/usr/lib/debug