###############################################################################
name = kernel
-version = 3.0.4
-release = 9
+version = 3.5.1
+release = 0.2
thisapp = linux-%{version}
maintainer = Michael Tremer <michael.tremer@ipfire.org>
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
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.
export ICECC=no
requires
+ asciidoc
+ binutils >= 2.22.52.0.3-2
binutils-devel
+ bison
elfutils-devel
- module-init-tools
+ flex
+ gcc-plugin-devel
+ gettext
ncurses-devel
net-tools
- newt-devel
perl
python-devel
+ xmlto
+
+ /sbin/depmod
+ end
+
+ tools_cpupower_requires
+ newt-devel
+ pciutils-devel
slang-devel
- xz-lzma-compat
end
# A list of kernels to build.
- kernels = default
+ kernels =
+ # Should we build cpupower?
+ build_cpupower = 1
+
+ # Arguments that are passed to the kernel build command.
+ kernel_build_flags =
+
+ kernel_target = bzImage
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
kernel_image = arch/%{kernel_arch}/boot/bzImage
- kernel_target = 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.
+
+ # Build versatile kernel.
+ build_kernel_versatile = 1
+
+ # Build a kernel for Marvell Kirkwood-based devices.
+ build_kernel_kirkwood = 1
+
+ kernel_arch = arm
+ kernel_image = arch/%{kernel_arch}/boot/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
+
+ kernel_arch = arm
+ kernel_image = arch/%{kernel_arch}/boot/zImage
+
+ # ARM does not support cpupower.
+ build_cpupower = 0
+ end
+
+ # Build default kernel.
+ if "%{build_kernel_default}" == "1"
+ kernels += default
+ end
+
+ # Build legacy kernel.
+ if "%{build_kernel_legacy}" == "1"
+ kernels += legacy
+ end
+
+ # Build ARM versatile kernel.
+ if "%{build_kernel_versatile}" == "1"
+ kernels += versatile
+ 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
+
+ # Add tools' build requirements if build is requested.
+ if "%{build_cpupower}" == "1"
+ requires += %{tools_cpupower_requires}
end
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 \
touch .scmversion
mkdir -pv configs
+
+ cd %{DIR_SOURCE}
configure_kernel() {
local flavour=${1}
local suffix
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
# 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}
# Install the results.
mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/lib/modules/${fullversion}
# Install modules.
make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} mod-fw= \
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
for kernel in %{kernels}; do
build_kernel ${kernel}
done
+
+ # Build tools.
+ # cpupower
+ if [ "%{build_cpupower}" = "1" ]; then
+ chmod +x tools/power/cpupower/utils/version-gen.sh
+ make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
+
+ cd tools/power/cpupower/debug/i386
+ make %{PARALLELISMFLAGS} centrino-decode powernow-k8-decode
+ cd -
+ fi
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
rm -rfv %{BUILDROOT}/lib/firmware
# Install tools.
- # XXX Man pages cannot be created because they need asciidoc.
- make -C tools/perf DESTDIR=%{BUILDROOT} \
+ make -C tools/perf DESTDIR=%{BUILDROOT} WERROR=0 \
HAVE_CPLUS_DEMANGLE=1 prefix=/usr perfexecdir=lib/perf-core \
- install #install-man
+ install install-man
+
+ # 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*
+ fi
end
end
summary = The Linux kernel %{kernel_release}.
- prerequires = dracut grubby module-init-tools
- provides = kernel
+ prerequires
+ /sbin/depmod
+ end
+
+ provides
+ kernel=%{kernel_release}
+ end
+
requires
+ dracut
+ grubby
linux-firmware
end
end
_posttrans
- /sbin/new-kernel-pkg --package %{kernel_name} --mkinitrd --dracut --depmod --update %{kernel_release} || exit $?
- /sbin/new-kernel-pkg --package %{kernel_name} --rpmposttrans %{kernel_release} || exit $?
+ /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
end
script postin
- /sbin/new-kernel-pkg --package kernel%{?-v:-%{-v*}} --install %{KVERREL}%{?-v:.%{-v*}}
+ /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
end
script postup
end
end
- package kernel
- template KERNEL
+ if "%{build_kernel_default}" == "1"
+ package kernel
+ template KERNEL
- kernel_name = kernel
- kernel_release = %{fullver}
+ kernel_name = kernel
+ kernel_release = %{fullver}
+ end
+
+ package kernel-devel
+ template KERNELDEVEL
+
+ kernel_name = kernel
+ kernel_release = %{fullver}
+ end
end
- package kernel-devel
- template KERNELDEVEL
+ if "%{build_kernel_legacy}" == "1"
+ package kernel-legacy
+ template KERNEL
- kernel_name = kernel
- kernel_release = %{fullver}
+ 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
- template KERNEL
+ if "%{build_kernel_versatile}" == "1"
+ package kernel-versatile
+ template KERNEL
+
+ kernel_name = kernel-versatile
+ kernel_release = %{fullver}.versatile
+ end
+
+ package kernel-versatile-devel
+ template KERNELDEVEL
- kernel_name = kernel-PAE
- kernel_release = %{fullver}.PAE
+ kernel_name = kernel-versatile
+ kernel_release = %{fullver}.versatile
+ end
end
- package kernel-PAE-devel
- template KERNELDEVEL
+ if "%{build_kernel_kirkwood}" == "1"
+ package kernel-kirkwood
+ template KERNEL
+
+ kernel_name = kernel-kirkwood
+ kernel_release = %{fullver}.kirkwood
+ end
- kernel_name = kernel-PAE
- kernel_release = %{fullver}.PAE
+ 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
+
+ package kernel-omap-devel
+ template KERNELDEVEL
+
+ kernel_name = kernel-omap
+ kernel_release = %{fullver}.omap
+ end
end
package kernel-headers
!/lib/modules
!/usr/include
!/usr/src
+ !/usr/src/debug
+ !/usr/lib/debug
end
end
end