2014-12-05 19:48:11 +00:00
|
|
|
SUMMARY = "Linux kernel Development Source"
|
|
|
|
DESCRIPTION = "Development source linux kernel. When built, this recipe packages the \
|
|
|
|
source of the preferred virtual/kernel provider and makes it available for full kernel \
|
|
|
|
development or external module builds"
|
|
|
|
|
|
|
|
SECTION = "kernel"
|
|
|
|
|
|
|
|
LICENSE = "GPLv2"
|
|
|
|
|
|
|
|
inherit linux-kernel-base
|
|
|
|
|
2014-12-19 14:12:43 +00:00
|
|
|
# Whilst not a module, this ensures we don't get multilib extended (which would make no sense)
|
|
|
|
inherit module-base
|
|
|
|
|
2014-12-05 19:48:11 +00:00
|
|
|
# We need the kernel to be staged (unpacked, patched and configured) before
|
2015-01-15 11:54:18 +00:00
|
|
|
# we can grab the source and make the source package. We also need the bits from
|
|
|
|
# ${B} not to change while we install, so virtual/kernel must finish do_compile.
|
kernel: move source and build output to work-shared
commit 3b3f7e785e279 [kernel: Rearrange for 1.8] began the process of
moving the kernel source and build artefacts out of sstate control and
into a shared location.
This changed triggered some workflow issues, as well as bugs related
to the kernel source containing build output, and hence being dirty and
breaking kernel rebuilds.
To solve these issues, and to make it clear that the kernel is not under
sstate control, we move the source and build outputs to:
work-shared/MACHINE/kernel-source
work-shared/MACHINE/kernel-build-artifacts
Where kernel-build-artifacts is the kernel build output and
kernel-source is kept "pristine". The build-artifacts contain everything
that is required to build external modules against the kernel source,
and includes the defconfig, the kernel-abiversion, System.map files and
output from "make scripts".
External module builds should either pass O= on the command line, or
set KBUILD_OUTPUT to point to the build-artifacts. module-base.bbclass
takes care of setting KBUILD_OUTPUT, so most existing external module
recipes are transparently adapted to the new source/build layout.
recipes that depend on the kernel source must have a depedency on the
do_shared_workdir task:
do_configure[depends] += "virtual/kernel:do_shared_workdir"
With this dependency added, the STAGING_KERNEL_DIR will be populated and
available to the rest of the build.
(From OE-Core rev: 6a1ff0e7eacef595738f2fed086986fd622ec32a)
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-01-15 11:54:15 +00:00
|
|
|
do_install[depends] += "virtual/kernel:do_shared_workdir"
|
2014-12-21 13:50:35 +00:00
|
|
|
# Need the source, not just the output of populate_sysroot
|
2015-04-23 09:15:20 +00:00
|
|
|
do_install[depends] += "virtual/kernel:do_install"
|
2014-12-05 19:48:11 +00:00
|
|
|
|
|
|
|
# There's nothing to do here, except install the source where we can package it
|
|
|
|
do_fetch[noexec] = "1"
|
|
|
|
do_unpack[noexec] = "1"
|
|
|
|
do_patch[noexec] = "1"
|
|
|
|
do_configure[noexec] = "1"
|
|
|
|
do_compile[noexec] = "1"
|
|
|
|
do_populate_sysroot[noexec] = "1"
|
|
|
|
|
kernel: move source and build output to work-shared
commit 3b3f7e785e279 [kernel: Rearrange for 1.8] began the process of
moving the kernel source and build artefacts out of sstate control and
into a shared location.
This changed triggered some workflow issues, as well as bugs related
to the kernel source containing build output, and hence being dirty and
breaking kernel rebuilds.
To solve these issues, and to make it clear that the kernel is not under
sstate control, we move the source and build outputs to:
work-shared/MACHINE/kernel-source
work-shared/MACHINE/kernel-build-artifacts
Where kernel-build-artifacts is the kernel build output and
kernel-source is kept "pristine". The build-artifacts contain everything
that is required to build external modules against the kernel source,
and includes the defconfig, the kernel-abiversion, System.map files and
output from "make scripts".
External module builds should either pass O= on the command line, or
set KBUILD_OUTPUT to point to the build-artifacts. module-base.bbclass
takes care of setting KBUILD_OUTPUT, so most existing external module
recipes are transparently adapted to the new source/build layout.
recipes that depend on the kernel source must have a depedency on the
do_shared_workdir task:
do_configure[depends] += "virtual/kernel:do_shared_workdir"
With this dependency added, the STAGING_KERNEL_DIR will be populated and
available to the rest of the build.
(From OE-Core rev: 6a1ff0e7eacef595738f2fed086986fd622ec32a)
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-01-15 11:54:15 +00:00
|
|
|
S = "${STAGING_KERNEL_DIR}"
|
|
|
|
B = "${STAGING_KERNEL_BUILDDIR}"
|
2014-12-05 19:48:11 +00:00
|
|
|
|
|
|
|
KERNEL_VERSION = "${@get_kernelversion_headers('${S}')}"
|
|
|
|
|
|
|
|
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
|
|
|
|
|
|
|
do_install() {
|
|
|
|
kerneldir=${D}${KERNEL_SRC_PATH}
|
|
|
|
install -d $kerneldir
|
|
|
|
|
|
|
|
#
|
|
|
|
# Copy the staging dir source (and module build support) into the devsrc structure.
|
|
|
|
# We can keep this copy simple and take everything, since a we'll clean up any build
|
|
|
|
# artifacts afterwards, and the extra i/o is not significant
|
|
|
|
#
|
kernel: move source and build output to work-shared
commit 3b3f7e785e279 [kernel: Rearrange for 1.8] began the process of
moving the kernel source and build artefacts out of sstate control and
into a shared location.
This changed triggered some workflow issues, as well as bugs related
to the kernel source containing build output, and hence being dirty and
breaking kernel rebuilds.
To solve these issues, and to make it clear that the kernel is not under
sstate control, we move the source and build outputs to:
work-shared/MACHINE/kernel-source
work-shared/MACHINE/kernel-build-artifacts
Where kernel-build-artifacts is the kernel build output and
kernel-source is kept "pristine". The build-artifacts contain everything
that is required to build external modules against the kernel source,
and includes the defconfig, the kernel-abiversion, System.map files and
output from "make scripts".
External module builds should either pass O= on the command line, or
set KBUILD_OUTPUT to point to the build-artifacts. module-base.bbclass
takes care of setting KBUILD_OUTPUT, so most existing external module
recipes are transparently adapted to the new source/build layout.
recipes that depend on the kernel source must have a depedency on the
do_shared_workdir task:
do_configure[depends] += "virtual/kernel:do_shared_workdir"
With this dependency added, the STAGING_KERNEL_DIR will be populated and
available to the rest of the build.
(From OE-Core rev: 6a1ff0e7eacef595738f2fed086986fd622ec32a)
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-01-15 11:54:15 +00:00
|
|
|
cd ${B}
|
2015-01-15 11:54:18 +00:00
|
|
|
find . -type d -name '.git*' -prune -o -path '.debug' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir
|
2014-12-05 19:48:11 +00:00
|
|
|
cd ${S}
|
|
|
|
find . -type d -name '.git*' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir
|
kernel: move source and build output to work-shared
commit 3b3f7e785e279 [kernel: Rearrange for 1.8] began the process of
moving the kernel source and build artefacts out of sstate control and
into a shared location.
This changed triggered some workflow issues, as well as bugs related
to the kernel source containing build output, and hence being dirty and
breaking kernel rebuilds.
To solve these issues, and to make it clear that the kernel is not under
sstate control, we move the source and build outputs to:
work-shared/MACHINE/kernel-source
work-shared/MACHINE/kernel-build-artifacts
Where kernel-build-artifacts is the kernel build output and
kernel-source is kept "pristine". The build-artifacts contain everything
that is required to build external modules against the kernel source,
and includes the defconfig, the kernel-abiversion, System.map files and
output from "make scripts".
External module builds should either pass O= on the command line, or
set KBUILD_OUTPUT to point to the build-artifacts. module-base.bbclass
takes care of setting KBUILD_OUTPUT, so most existing external module
recipes are transparently adapted to the new source/build layout.
recipes that depend on the kernel source must have a depedency on the
do_shared_workdir task:
do_configure[depends] += "virtual/kernel:do_shared_workdir"
With this dependency added, the STAGING_KERNEL_DIR will be populated and
available to the rest of the build.
(From OE-Core rev: 6a1ff0e7eacef595738f2fed086986fd622ec32a)
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-01-15 11:54:15 +00:00
|
|
|
|
|
|
|
# Explicitly set KBUILD_OUTPUT to ensure that the image directory is cleaned and not
|
|
|
|
# The main build artifacts. We clean the directory to avoid QA errors on mismatched
|
|
|
|
# architecture (since scripts and helpers are native format).
|
|
|
|
KBUILD_OUTPUT="$kerneldir"
|
2014-12-05 19:48:11 +00:00
|
|
|
oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean _mrproper_scripts
|
2016-11-29 08:54:26 +00:00
|
|
|
# make clean generates an absolute path symlink called "source"
|
|
|
|
# in $kerneldir points to $kerneldir, which doesn't make any
|
|
|
|
# sense, so remove it.
|
|
|
|
if [ -L $kerneldir/source ]; then
|
|
|
|
bbnote "Removing $kerneldir/source symlink"
|
|
|
|
rm -f $kerneldir/source
|
|
|
|
fi
|
2014-12-21 12:29:03 +00:00
|
|
|
|
|
|
|
# As of Linux kernel version 3.0.1, the clean target removes
|
|
|
|
# arch/powerpc/lib/crtsavres.o which is present in
|
|
|
|
# KBUILD_LDFLAGS_MODULE, making it required to build external modules.
|
|
|
|
if [ ${ARCH} = "powerpc" ]; then
|
|
|
|
mkdir -p $kerneldir/arch/powerpc/lib/
|
kernel: move source and build output to work-shared
commit 3b3f7e785e279 [kernel: Rearrange for 1.8] began the process of
moving the kernel source and build artefacts out of sstate control and
into a shared location.
This changed triggered some workflow issues, as well as bugs related
to the kernel source containing build output, and hence being dirty and
breaking kernel rebuilds.
To solve these issues, and to make it clear that the kernel is not under
sstate control, we move the source and build outputs to:
work-shared/MACHINE/kernel-source
work-shared/MACHINE/kernel-build-artifacts
Where kernel-build-artifacts is the kernel build output and
kernel-source is kept "pristine". The build-artifacts contain everything
that is required to build external modules against the kernel source,
and includes the defconfig, the kernel-abiversion, System.map files and
output from "make scripts".
External module builds should either pass O= on the command line, or
set KBUILD_OUTPUT to point to the build-artifacts. module-base.bbclass
takes care of setting KBUILD_OUTPUT, so most existing external module
recipes are transparently adapted to the new source/build layout.
recipes that depend on the kernel source must have a depedency on the
do_shared_workdir task:
do_configure[depends] += "virtual/kernel:do_shared_workdir"
With this dependency added, the STAGING_KERNEL_DIR will be populated and
available to the rest of the build.
(From OE-Core rev: 6a1ff0e7eacef595738f2fed086986fd622ec32a)
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-01-15 11:54:15 +00:00
|
|
|
cp ${B}/arch/powerpc/lib/crtsavres.o $kerneldir/arch/powerpc/lib/crtsavres.o
|
2014-12-21 12:29:03 +00:00
|
|
|
fi
|
2015-03-10 00:45:26 +00:00
|
|
|
|
|
|
|
chown -R root:root ${D}
|
2014-12-05 19:48:11 +00:00
|
|
|
}
|
2014-12-21 12:30:53 +00:00
|
|
|
# Ensure we don't race against "make scripts" during cpio
|
|
|
|
do_install[lockfiles] = "${TMPDIR}/kernel-scripts.lock"
|
2014-12-05 19:48:11 +00:00
|
|
|
|
|
|
|
PACKAGES = "kernel-devsrc"
|
|
|
|
FILES_${PN} = "${KERNEL_SRC_PATH}"
|
|
|
|
RDEPENDS_${PN} = "bc"
|