]> git.ipfire.org Git - people/arne_f/ipfire-3.x.git/blobdiff - kernel/kernel.nm
kernel: Update to 4.3.6
[people/arne_f/ipfire-3.x.git] / kernel / kernel.nm
index 293100981580d9a5f06f7d008a220546d3a60759..ed1f2d0c42e5872e9b3165667362e2514d27e2b4 100644 (file)
@@ -4,11 +4,11 @@
 ###############################################################################
 
 name       = kernel
-version    = 3.6.6
-release    = 2
+version    = 4.3.6
+release    = 1
 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
@@ -25,34 +25,36 @@ end
 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
-               binutils >= 2.23.51.0.3-3
+               audit-devel
+               bc
+               binutils >= 2.25
                binutils-devel
                bison
                elfutils-devel
                flex
+               gcc >= 4.9
                gcc-plugin-devel
                gettext
+               hostname
+               libunwind-devel
                ncurses-devel
                net-tools
                newt-devel
                pciutils-devel
                perl
                python-devel
+               openssl-devel
                slang-devel
                xmlto
+               xz
 
                /sbin/depmod
                %{kernel_logo}
@@ -69,45 +71,39 @@ build
        # Arguments that are passed to the kernel build command.
        kernel_build_flags =
 
+       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
-               kernel_image = arch/%{kernel_arch}/boot/bzImage
-
        end
 
        if "%{DISTRO_ARCH}" == "x86_64"
                build_kernel_default = 1
-
-               kernel_arch  = x86
-               kernel_image = arch/%{kernel_arch}/boot/bzImage
        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
 
-               # Build a kernel for Marvell Kirkwood-based devices.
-               build_kernel_kirkwood = 1
-
-               kernel_arch  = arm
-               kernel_image = arch/%{kernel_arch}/boot/zImage
-
-               # 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 TI OMAP SoCs.
-               build_kernel_omap = 1
+               # Build the default unified kernel.
+               build_kernel_default = 1
 
-               kernel_arch  = arm
-               kernel_image = arch/%{kernel_arch}/boot/zImage
+               kernel_target = zImage
+       end
+
+       # mkimage is a requirement to build uImage images.
+       if "%{kernel_target}" == "uImage"
+               requires += u-boot-tools
        end
 
        # Build default kernel.
@@ -120,22 +116,11 @@ build
                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 %{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.
@@ -175,6 +160,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
@@ -205,6 +194,21 @@ 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}
@@ -215,7 +219,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}/usr mod-fw= \
+                       make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
                                KERNELRELEASE=${fullversion} modules_install
 
                        # Install vdso.
@@ -265,7 +269,7 @@ build
                                %{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
@@ -274,6 +278,10 @@ 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 {} \;
                }
 
@@ -282,19 +290,43 @@ build
                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
@@ -318,9 +350,7 @@ build
                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} \
@@ -343,6 +373,24 @@ build
                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
 
@@ -369,6 +417,7 @@ 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
@@ -412,6 +461,10 @@ packages
                        kernel release %{kernel_release}.
                end
 
+               provides
+                       kernel-devel = %{thisver}
+               end
+
                filter_requires
                        perl>=[0-9]\:.*
                end
@@ -424,66 +477,67 @@ packages
        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}
 
-                       kernel_name = kernel
-                       kernel_release = %{fullver}
-               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
+                               kernel_name = kernel
+                               kernel_release = %{fullver}
+                       end
 
-               package kernel-kirkwood-devel
-                       template KERNELDEVEL
+                       package kernel-devel
+                               template KERNELDEVEL
 
-                       kernel_name = kernel-kirkwood
-                       kernel_release = %{fullver}.kirkwood
+                               kernel_name = kernel
+                               kernel_release = %{fullver}
+                       end
                end
        end
 
-       if "%{build_kernel_omap}" == "1"
-               package kernel-omap
+       if "%{build_kernel_legacy}" == "1"
+               package kernel-legacy
                        template KERNEL
 
-                       kernel_name = kernel-omap
-                       kernel_release = %{fullver}.omap
+                       kernel_name = kernel-legacy
+                       kernel_release = %{fullver}.legacy
                end
 
-               package kernel-omap-devel
+               package kernel-legacy-devel
                        template KERNELDEVEL
 
-                       kernel_name = kernel-omap
-                       kernel_release = %{fullver}.omap
+                       kernel_name = kernel-legacy
+                       kernel_release = %{fullver}.legacy
                end
        end