]> git.ipfire.org Git - people/ms/ipfire-3.x.git/blobdiff - kernel/kernel.nm
kernel: Make configuration management more slink and usable.
[people/ms/ipfire-3.x.git] / kernel / kernel.nm
index 525e32b7488d8998c5b54ddf1e05c6adbd75ad91..72cb8545c28797d2ee1e60dbc3bc590dcf1400fe 100644 (file)
@@ -4,20 +4,20 @@
 ###############################################################################
 
 name       = kernel
-version    = 3.0.4
-release    = 5
+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
 summary    = The Linux kernel.
 
 description
-       The kernel package contains the Linux kernel (vmlinuz), the core of any \
-       Linux operating system. The kernel handles the basic functions \
-       of the operating system: memory allocation, process allocation, device \
+       The kernel package contains the Linux kernel (vmlinuz), the core of any
+       Linux operating system. The kernel handles the basic functions
+       of the operating system: memory allocation, process allocation, device
        input and output, etc.
 end
 
@@ -25,39 +25,130 @@ end
 localversion = %{release}.%{DISTRO_DISTTAG}.%{DISTRO_ARCH}
 fullver      = %{version}-%{localversion}
 
-sources      = %{thisapp}.tar.gz
+source_dl    = http://www.kernel.org/pub/linux/kernel/v3.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
+               bc
+               binutils >= 2.23.51.0.3-3
                binutils-devel
+               bison
                elfutils-devel
-               module-init-tools
+               flex
+               gcc-plugin-devel
+               gettext
+               libunwind-devel
                ncurses-devel
+               net-tools
                newt-devel
-               iputils
+               pciutils-devel
                perl
                python-devel
-               xz-lzma-compat
+               slang-devel
+               xmlto
+
+               /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 = default
+       kernels =
+
+       # 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 PAE-enabled kernel for the i686 architecture.
-               kernels += PAE
+               # 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"
+               # Build a kernel for Marvell Kirkwood-based devices.
+               build_kernel_default = 1
+
+               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 the default unified kernel.
+               build_kernel_default = 1
+               build_kernel_lpae = 1
+
+               kernel_arch = arm
+               kernel_target = zImage
+       end
+
+       # mkimage is a requirement to build uImage images.
+       if "%{kernel_target}" == "uImage"
+               requires += u-boot-tools
+       end
+
+       # Build default kernel.
+       if "%{build_kernel_default}" == "1"
+               kernels += default
+       end
+
+       # Build legacy kernel.
+       if "%{build_kernel_legacy}" == "1"
+               kernels += legacy
+       end
 
-               kernel_arch  = x86
-               kernel_image = arch/%{kernel_arch}/boot/bzImage
-               kernel_target = bzImage
+       # 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
 
+               # 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.
@@ -66,7 +157,12 @@ build
                # Remove unnecessary SCM files.
                find . -name .gitignore -exec rm -f {} \; >/dev/null
 
+               # This prevents scripts/setlocalversion from mucking with our version numbers.
+               touch .scmversion
+
                mkdir -pv configs
+
+               cd %{DIR_SOURCE}
                configure_kernel() {
                        local flavour=${1}
                        local suffix
@@ -74,13 +170,8 @@ build
                                suffix="-${flavour}"
                        fi
 
-                       # This is the place, where the configuration files
-                       # should be dynamically generated.
-                       # For now, we just copy pregenerated ones.
-                       cp %{DIR_SOURCE}/config.%{arch}${suffix} .config
-
-                       make ARCH=%{kernel_arch} oldnoconfig
-                       mv .config configs/config.${flavour}
+                       scripts/configure --kernel-dir=%{DIR_APP} \
+                               merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
                }
 
                # Generate configuration files for all kernels we are going to
@@ -88,6 +179,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
@@ -102,21 +197,39 @@ build
                                fullversion="${fullversion}.${flavour}"
                        fi
 
+                       # Label the build.
+                       sed -i Makefile \
+                               -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
+
                        # Clean up the source tree.
                        make mrproper
 
                        # Install configuration file.
                        cp configs/config.${flavour} .config
-
-                       # Label the build.
-                       sed -i Makefile \
-                               -e "s/^EXTRAVERSION = .*/EXTRAVERSION = -${localversion}/g"
+                       cat .config
 
                        # Run the build.
-                       make ARCH=%{kernel_arch} CC="gcc -fno-PIE" %{kernel_target} modules %{PARALLELISMFLAGS}
+                       make ARCH=%{kernel_arch} oldnoconfig >/dev/null
+                       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}
@@ -125,62 +238,68 @@ 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
-                       #make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} \
-                       #       KERNELRELEASE=${fullversion} vdso_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 -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
 
-                       for i in alias alias.bin builtin.bin ccwmap dep dep.bin ieee1394map inputmap isapnpmap ofmap pcimap seriomap symbols symbols.bin usbmap; do
-                               rm -vf %{BUILDROOT}/lib/modules/${fullversion}/modules.${i}
-                       done
-
                        # 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 {} \;
                }
@@ -188,11 +307,54 @@ build
                for kernel in %{kernels}; do
                        build_kernel ${kernel}
                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} 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
+
+               # 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
+               # When no kernels are configured, we create a default config
+               # which enables us to install at least the header files.
+               [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
+
                # Install the header files
-               make ARCH=x86 INSTALL_HDR_PATH=dest headers_install
+               make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
                mkdir -pv %{BUILDROOT}/usr/include
                find dest/include \( -name .install -o -name ..install.cmd \) -delete
                cp -rv dest/include/* %{BUILDROOT}/usr/include
@@ -207,39 +369,103 @@ build
                rm -rfv %{BUILDROOT}/lib/firmware
 
                # Install tools.
-               # XXX cannot install this because of #263.
-               #make -C tools/perf DESTDIR=%{BUILDROOT} \
-               #       HAVE_CPLUS_DEMANGLE=1 prefix=/usr install install-man
+               %{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*
+
+               # 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
 
 packages
        template KERNEL
+               kernel_name = kernel
                kernel_release = %{fullver}
 
                summary = The Linux kernel %{kernel_release}.
 
-               prerequires = module-init-tools
-               provides = kernel
+               prerequires
+                       /sbin/depmod
+               end
+
+               provides
+                       kernel=%{kernel_release}
+               end
+
                requires
                        dracut
+                       grubby
                        linux-firmware
                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
-                       /lib/modules/%{kernel_release}
+                       /usr/lib/modules/%{kernel_release}
                end
 
-               script postin
-                       depmod -a %{kernel_release} || :
+               _posttrans
+                       /sbin/new-kernel-pkg --package %{kernel_name} --mkinitrd --dracut --depmod --update %{kernel_release}
+                       /sbin/new-kernel-pkg --package %{kernel_name} --rpmposttrans %{kernel_release}
                end
 
                script posttransin
-                       dracut --force /boot/initramfs-%{kernel_release}.img %{kernel_release}
+                       %{_posttrans}
+               end
+
+               script posttransup
+                       %{_posttrans}
+               end
+
+               script postin
+                       /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
+               end
+
+               script postup
+                       /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
+               end
+
+               script preun
+                       /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{kernel_release}
                end
        end
 
@@ -254,37 +480,102 @@ 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
 
-       package kernel
-               template KERNEL
-       end
+       if "%{build_kernel_default}" == "1"
+               if "%{DISTRO_ARCH}" == "armv7hl"
+                       package kernel
+                               template KERNEL
+
+                               kernel_name = kernel
+                               kernel_release = %{fullver}
+
+                               # 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}
 
-       package kernel-devel
-               template KERNELDEVEL
+                               # 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
 
-       package kernel-PAE
-               template KERNEL
+       if "%{build_kernel_legacy}" == "1"
+               package kernel-legacy
+                       template KERNEL
 
-               kernel_release = %{fullver}.PAE
+                       kernel_name = kernel-legacy
+                       kernel_release = %{fullver}.legacy
+               end
+
+               package kernel-legacy-devel
+                       template KERNELDEVEL
+
+                       kernel_name = kernel-legacy
+                       kernel_release = %{fullver}.legacy
+               end
        end
 
-       package kernel-PAE-devel
-               template KERNELDEVEL
+       if "%{build_kernel_lpae}" == "1"
+               package kernel-lpae
+                       template KERNEL
+
+                       kernel_name = kernel-lpae
+                       kernel_release = %{fullver}.lpae
+               end
 
-               kernel_release = %{fullver}.PAE
+               package kernel-lpae-devel
+                       template KERNELDEVEL
+
+                       kernel_name = kernel-lpae
+                       kernel_release = %{fullver}.lpae
+               end
        end
-       
+
        package kernel-headers
                summary = Header files of the kernel release %{fullver}.
                desciption = %{summary}
@@ -294,13 +585,22 @@ packages
                end
        end
 
-       #package kernel-tools
-       #       summary = Assortment of tools for the Linux kernel.
-       #       description = %{summary}
-       #
-       #       files
-       #               /usr/bin
-       #               /usr/lib
-       #       end
-       #end
+       package kernel-tools
+               summary = Assortment of tools for the Linux kernel.
+               description = %{summary}
+
+               filter_requires
+                       perl>=[0-9]\:.*
+               end
+
+               files
+                       /
+                       !/boot
+                       !/usr/include
+                       !/usr/lib/modules
+                       !/usr/src
+                       !/usr/src/debug
+                       !/usr/lib/debug
+               end
+       end
 end