summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/kernel-module-split.bbclass2
-rw-r--r--meta/classes/kernel.bbclass30
-rw-r--r--meta/classes/module-base.bbclass12
-rw-r--r--meta/classes/module.bbclass2
-rw-r--r--meta/conf/bitbake.conf3
-rw-r--r--meta/recipes-kernel/linux/kernel-devsrc.bb14
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules_2.5.2.bb2
-rw-r--r--meta/recipes-kernel/perf/perf.bb2
8 files changed, 46 insertions, 21 deletions
diff --git a/meta/classes/kernel-module-split.bbclass b/meta/classes/kernel-module-split.bbclass
index 9a95b72744..2d43b512df 100644
--- a/meta/classes/kernel-module-split.bbclass
+++ b/meta/classes/kernel-module-split.bbclass
@@ -70,7 +70,7 @@ python split_kernel_module_packages () {
70 m = kerverrexp.match(kernelver) 70 m = kerverrexp.match(kernelver)
71 if m: 71 if m:
72 kernelver_stripped = m.group(1) 72 kernelver_stripped = m.group(1)
73 staging_kernel_dir = d.getVar("STAGING_KERNEL_DIR", True) 73 staging_kernel_dir = d.getVar("STAGING_KERNEL_BUILDDIR", True)
74 system_map_file = "%s/boot/System.map-%s" % (dvar, kernelver) 74 system_map_file = "%s/boot/System.map-%s" % (dvar, kernelver)
75 if not os.path.exists(system_map_file): 75 if not os.path.exists(system_map_file):
76 system_map_file = "%s/System.map-%s" % (staging_kernel_dir, kernelver) 76 system_map_file = "%s/System.map-%s" % (staging_kernel_dir, kernelver)
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 78c8c7cf00..a60de8cc9e 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -230,28 +230,33 @@ kernel_do_install() {
230 [ -e Module.symvers ] && install -m 0644 Module.symvers ${D}/boot/Module.symvers-${KERNEL_VERSION} 230 [ -e Module.symvers ] && install -m 0644 Module.symvers ${D}/boot/Module.symvers-${KERNEL_VERSION}
231 install -d ${D}${sysconfdir}/modules-load.d 231 install -d ${D}${sysconfdir}/modules-load.d
232 install -d ${D}${sysconfdir}/modprobe.d 232 install -d ${D}${sysconfdir}/modprobe.d
233}
234do_install[prefuncs] += "package_get_auto_pr"
233 235
234 # 236addtask shared_workdir after do_compile before do_install
235 # Support for external module building - create a minimal copy of the 237
236 # kernel source tree. 238do_shared_workdir () {
237 # 239 cd ${B}
238 kerneldir=${D}${KERNEL_SRC_PATH} 240
241 kerneldir=${STAGING_KERNEL_BUILDDIR}
239 install -d $kerneldir 242 install -d $kerneldir
240 mkdir -p ${D}/lib/modules/${KERNEL_VERSION}
241 ln -sf ${KERNEL_SRC_PATH} "${D}/lib/modules/${KERNEL_VERSION}/build"
242 243
243 # 244 #
244 # Store the kernel version in sysroots for module-base.bbclass 245 # Store the kernel version in sysroots for module-base.bbclass
245 # 246 #
246 247
247 echo "${KERNEL_VERSION}" > $kerneldir/kernel-abiversion 248 echo "${KERNEL_VERSION}" > $kerneldir/kernel-abiversion
248 249
249 # Copy files required for module builds 250 # Copy files required for module builds
250 cp System.map $kerneldir/System.map-${KERNEL_VERSION} 251 cp System.map $kerneldir/System.map-${KERNEL_VERSION}
251 cp Module.symvers $kerneldir/ 252 cp Module.symvers $kerneldir/
252 cp .config $kerneldir/ 253 cp .config $kerneldir/
253 mkdir -p $kerneldir/include/config 254 mkdir -p $kerneldir/include/config
254 cp include/config/kernel.release $kerneldir/include/config/kernel.release 255 cp include/config/kernel.release $kerneldir/include/config/kernel.release
256
257 # We can also copy over all the generated files and avoid special cases
258 # like version.h, but we've opted to keep this small until file creep starts
259 # to happen
255 if [ -e include/linux/version.h ]; then 260 if [ -e include/linux/version.h ]; then
256 mkdir -p $kerneldir/include/linux 261 mkdir -p $kerneldir/include/linux
257 cp include/linux/version.h $kerneldir/include/linux/version.h 262 cp include/linux/version.h $kerneldir/include/linux/version.h
@@ -273,10 +278,11 @@ kernel_do_install() {
273 cp -fR arch/${ARCH}/include/generated/* $kerneldir/arch/${ARCH}/include/generated/ 278 cp -fR arch/${ARCH}/include/generated/* $kerneldir/arch/${ARCH}/include/generated/
274 fi 279 fi
275} 280}
276do_install[prefuncs] += "package_get_auto_pr"
277 281
278python sysroot_stage_all () { 282# We have an empty sysroot_stage_all to keep the default routine from
279 oe.path.copyhardlinktree(d.expand("${D}${KERNEL_SRC_PATH}"), d.expand("${SYSROOT_DESTDIR}${KERNEL_SRC_PATH}")) 283# package.bbclass from expanding the kernel source into the sysroot and
284# colliding with linux-firmware files
285sysroot_stage_all () {
280} 286}
281 287
282KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} O=${B} oldnoconfig || yes '' | oe_runmake -C ${S} O=${B} oldconfig" 288KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} O=${B} oldnoconfig || yes '' | oe_runmake -C ${S} O=${B} oldconfig"
@@ -467,7 +473,7 @@ kernel_do_deploy() {
467do_deploy[dirs] = "${DEPLOYDIR} ${B}" 473do_deploy[dirs] = "${DEPLOYDIR} ${B}"
468do_deploy[prefuncs] += "package_get_auto_pr" 474do_deploy[prefuncs] += "package_get_auto_pr"
469 475
470addtask deploy before do_build after do_install 476addtask deploy after do_populate_sysroot
471 477
472EXPORT_FUNCTIONS do_deploy 478EXPORT_FUNCTIONS do_deploy
473 479
diff --git a/meta/classes/module-base.bbclass b/meta/classes/module-base.bbclass
index 9537ba9f43..3eb2e9226e 100644
--- a/meta/classes/module-base.bbclass
+++ b/meta/classes/module-base.bbclass
@@ -3,16 +3,24 @@ inherit kernel-arch
3export OS = "${TARGET_OS}" 3export OS = "${TARGET_OS}"
4export CROSS_COMPILE = "${TARGET_PREFIX}" 4export CROSS_COMPILE = "${TARGET_PREFIX}"
5 5
6export KERNEL_VERSION = "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-abiversion')}" 6# This points to the build artefacts from the main kernel build
7# such as .config and System.map
8# Confusingly it is not the module build output (which is ${B}) but
9# we didn't pick the name.
10export KBUILD_OUTPUT = "${STAGING_KERNEL_BUILDDIR}"
11
12export KERNEL_VERSION = "${@base_read_file('${STAGING_KERNEL_BUILDDIR}/kernel-abiversion')}"
7KERNEL_OBJECT_SUFFIX = ".ko" 13KERNEL_OBJECT_SUFFIX = ".ko"
8 14
9# kernel modules are generally machine specific 15# kernel modules are generally machine specific
10PACKAGE_ARCH = "${MACHINE_ARCH}" 16PACKAGE_ARCH = "${MACHINE_ARCH}"
11 17
18do_configure[depends] += "virtual/kernel:do_shared_workdir"
19
12# Function to ensure the kernel scripts are created. Expected to 20# Function to ensure the kernel scripts are created. Expected to
13# be called before do_compile. See module.bbclass for an exmaple. 21# be called before do_compile. See module.bbclass for an exmaple.
14do_make_scripts() { 22do_make_scripts() {
15 unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS 23 unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
16 make CC="${KERNEL_CC}" LD="${KERNEL_LD}" AR="${KERNEL_AR}" \ 24 make CC="${KERNEL_CC}" LD="${KERNEL_LD}" AR="${KERNEL_AR}" \
17 -C ${STAGING_KERNEL_DIR} scripts 25 -C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} scripts
18} 26}
diff --git a/meta/classes/module.bbclass b/meta/classes/module.bbclass
index 5cb8623a66..a03cc74de4 100644
--- a/meta/classes/module.bbclass
+++ b/meta/classes/module.bbclass
@@ -14,6 +14,7 @@ module_do_compile() {
14 KERNEL_VERSION=${KERNEL_VERSION} \ 14 KERNEL_VERSION=${KERNEL_VERSION} \
15 CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ 15 CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
16 AR="${KERNEL_AR}" \ 16 AR="${KERNEL_AR}" \
17 O=${STAGING_KERNEL_BUILDDIR} \
17 ${MAKE_TARGETS} 18 ${MAKE_TARGETS}
18} 19}
19 20
@@ -21,6 +22,7 @@ module_do_install() {
21 unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS 22 unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
22 oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" \ 23 oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" \
23 CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ 24 CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
25 O=${STAGING_KERNEL_BUILDDIR} \
24 modules_install 26 modules_install
25} 27}
26 28
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 7902bd7d01..d22e9e8efe 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -395,7 +395,8 @@ SDKPATHNATIVE = "${SDKPATH}/sysroots/${SDK_SYS}"
395################################################################## 395##################################################################
396 396
397OLDEST_KERNEL = "2.6.32" 397OLDEST_KERNEL = "2.6.32"
398STAGING_KERNEL_DIR = "${STAGING_DIR_HOST}/usr/src/kernel" 398STAGING_KERNEL_DIR = "${TMPDIR}/work-shared/${MACHINE}/kernel-source"
399STAGING_KERNEL_BUILDDIR = "${TMPDIR}/work-shared/${MACHINE}/kernel-build-artifacts"
399 400
400################################################################## 401##################################################################
401# Specific image creation and rootfs population info. 402# Specific image creation and rootfs population info.
diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb b/meta/recipes-kernel/linux/kernel-devsrc.bb
index dbb3a5c581..a7395c46b9 100644
--- a/meta/recipes-kernel/linux/kernel-devsrc.bb
+++ b/meta/recipes-kernel/linux/kernel-devsrc.bb
@@ -15,7 +15,7 @@ inherit module-base
15 15
16# We need the kernel to be staged (unpacked, patched and configured) before 16# We need the kernel to be staged (unpacked, patched and configured) before
17# we can grab the source and make the kernel-devsrc package 17# we can grab the source and make the kernel-devsrc package
18do_install[depends] += "virtual/kernel:do_populate_sysroot" 18do_install[depends] += "virtual/kernel:do_shared_workdir"
19# Need the source, not just the output of populate_sysroot 19# Need the source, not just the output of populate_sysroot
20do_install[depends] += "virtual/kernel:do_configure" 20do_install[depends] += "virtual/kernel:do_configure"
21 21
@@ -30,7 +30,8 @@ do_populate_sysroot[noexec] = "1"
30# Define where the kernel headers are installed on the target as well as where 30# Define where the kernel headers are installed on the target as well as where
31# they are staged. 31# they are staged.
32KERNEL_SRC_PATH = "/usr/src/kernel" 32KERNEL_SRC_PATH = "/usr/src/kernel"
33S = "${STAGING_DIR_TARGET}/${KERNEL_SRC_PATH}" 33S = "${STAGING_KERNEL_DIR}"
34B = "${STAGING_KERNEL_BUILDDIR}"
34 35
35KERNEL_VERSION = "${@get_kernelversion_headers('${S}')}" 36KERNEL_VERSION = "${@get_kernelversion_headers('${S}')}"
36 37
@@ -45,8 +46,15 @@ do_install() {
45 # We can keep this copy simple and take everything, since a we'll clean up any build 46 # We can keep this copy simple and take everything, since a we'll clean up any build
46 # artifacts afterwards, and the extra i/o is not significant 47 # artifacts afterwards, and the extra i/o is not significant
47 # 48 #
49 cd ${B}
50 find . -type d -name '.git*' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir
48 cd ${S} 51 cd ${S}
49 find . -type d -name '.git*' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir 52 find . -type d -name '.git*' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir
53
54 # Explicitly set KBUILD_OUTPUT to ensure that the image directory is cleaned and not
55 # The main build artifacts. We clean the directory to avoid QA errors on mismatched
56 # architecture (since scripts and helpers are native format).
57 KBUILD_OUTPUT="$kerneldir"
50 oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean _mrproper_scripts 58 oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean _mrproper_scripts
51 59
52 # As of Linux kernel version 3.0.1, the clean target removes 60 # As of Linux kernel version 3.0.1, the clean target removes
@@ -54,7 +62,7 @@ do_install() {
54 # KBUILD_LDFLAGS_MODULE, making it required to build external modules. 62 # KBUILD_LDFLAGS_MODULE, making it required to build external modules.
55 if [ ${ARCH} = "powerpc" ]; then 63 if [ ${ARCH} = "powerpc" ]; then
56 mkdir -p $kerneldir/arch/powerpc/lib/ 64 mkdir -p $kerneldir/arch/powerpc/lib/
57 cp ${S}/arch/powerpc/lib/crtsavres.o $kerneldir/arch/powerpc/lib/crtsavres.o 65 cp ${B}/arch/powerpc/lib/crtsavres.o $kerneldir/arch/powerpc/lib/crtsavres.o
58 fi 66 fi
59} 67}
60# Ensure we don't race against "make scripts" during cpio 68# Ensure we don't race against "make scripts" during cpio
diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.5.2.bb b/meta/recipes-kernel/lttng/lttng-modules_2.5.2.bb
index 55df07f632..6ec83d090a 100644
--- a/meta/recipes-kernel/lttng/lttng-modules_2.5.2.bb
+++ b/meta/recipes-kernel/lttng/lttng-modules_2.5.2.bb
@@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=1412caf5a1aa90d6a48588a4794c0eac \
7 file://lgpl-2.1.txt;md5=243b725d71bb5df4a1e5920b344b86ad" 7 file://lgpl-2.1.txt;md5=243b725d71bb5df4a1e5920b344b86ad"
8 8
9DEPENDS = "virtual/kernel" 9DEPENDS = "virtual/kernel"
10do_configure[depends] += "virtual/kernel:do_install" 10do_configure[depends] += "virtual/kernel:do_shared_workdir"
11 11
12inherit module 12inherit module
13 13
diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
index a42aa73c53..d2c9805412 100644
--- a/meta/recipes-kernel/perf/perf.bb
+++ b/meta/recipes-kernel/perf/perf.bb
@@ -32,7 +32,7 @@ DEPENDS = " \
32 bison flex \ 32 bison flex \
33" 33"
34 34
35do_configure[depends] += "virtual/kernel:do_install" 35do_configure[depends] += "virtual/kernel:do_shared_workdir"
36 36
37PROVIDES = "virtual/perf" 37PROVIDES = "virtual/perf"
38 38