diff options
Diffstat (limited to 'meta/classes/kernel.bbclass')
-rw-r--r-- | meta/classes/kernel.bbclass | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass index c9e1c363e8..5cabc2ce1c 100644 --- a/meta/classes/kernel.bbclass +++ b/meta/classes/kernel.bbclass | |||
@@ -3,9 +3,10 @@ inherit linux-kernel-base kernel-module-split | |||
3 | PROVIDES += "virtual/kernel" | 3 | PROVIDES += "virtual/kernel" |
4 | DEPENDS += "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc kmod-native depmodwrapper-cross bc-native" | 4 | DEPENDS += "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc kmod-native depmodwrapper-cross bc-native" |
5 | 5 | ||
6 | S = "${STAGING_DIR_TARGET}/${KERNEL_SRC_PATH}" | 6 | S = "${STAGING_KERNEL_DIR}" |
7 | 7 | B = "${WORKDIR}/build" | |
8 | do_unpack[cleandirs] = "${S}" | 8 | KBUILD_OUTPUT = "${B}" |
9 | OE_TERMINAL_EXPORTS += "KBUILD_OUTPUT" | ||
9 | 10 | ||
10 | # we include gcc above, we dont need virtual/libc | 11 | # we include gcc above, we dont need virtual/libc |
11 | INHIBIT_DEFAULT_DEPS = "1" | 12 | INHIBIT_DEFAULT_DEPS = "1" |
@@ -35,6 +36,22 @@ python __anonymous () { | |||
35 | d.appendVarFlag('do_configure', 'depends', ' ${INITRAMFS_TASK}') | 36 | d.appendVarFlag('do_configure', 'depends', ' ${INITRAMFS_TASK}') |
36 | } | 37 | } |
37 | 38 | ||
39 | # Old style kernels may set ${S} = ${WORKDIR}/git for example | ||
40 | # We need to move these over to STAGING_KERNEL_DIR. We can't just | ||
41 | # create the symlink in advance as the git fetcher can't cope with | ||
42 | # the symlink. | ||
43 | do_unpack[cleandirs] += " ${S} ${STAGING_KERNEL_DIR} ${B}" | ||
44 | base_do_unpack_append () { | ||
45 | s = d.getVar("S", True) | ||
46 | kernsrc = d.getVar("STAGING_KERNEL_DIR", True) | ||
47 | if s != kernsrc: | ||
48 | bb.utils.mkdirhier(kernsrc) | ||
49 | bb.utils.remove(kernsrc, recurse=True) | ||
50 | import subprocess | ||
51 | subprocess.call(d.expand("mv ${S} ${STAGING_KERNEL_DIR}"), shell=True) | ||
52 | os.symlink(kernsrc, s) | ||
53 | } | ||
54 | |||
38 | inherit kernel-arch deploy | 55 | inherit kernel-arch deploy |
39 | 56 | ||
40 | PACKAGES_DYNAMIC += "^kernel-module-.*" | 57 | PACKAGES_DYNAMIC += "^kernel-module-.*" |
@@ -255,7 +272,7 @@ python sysroot_stage_all () { | |||
255 | oe.path.copyhardlinktree(d.expand("${D}${KERNEL_SRC_PATH}"), d.expand("${SYSROOT_DESTDIR}${KERNEL_SRC_PATH}")) | 272 | oe.path.copyhardlinktree(d.expand("${D}${KERNEL_SRC_PATH}"), d.expand("${SYSROOT_DESTDIR}${KERNEL_SRC_PATH}")) |
256 | } | 273 | } |
257 | 274 | ||
258 | KERNEL_CONFIG_COMMAND ?= "oe_runmake_call oldnoconfig || yes '' | oe_runmake oldconfig" | 275 | KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} O=${B} oldnoconfig || yes '' | oe_runmake -C ${S} O=${B} oldconfig" |
259 | 276 | ||
260 | kernel_do_configure() { | 277 | kernel_do_configure() { |
261 | # fixes extra + in /lib/modules/2.6.37+ | 278 | # fixes extra + in /lib/modules/2.6.37+ |
@@ -264,6 +281,10 @@ kernel_do_configure() { | |||
264 | # $ make kernelrelease => 2.6.37+ | 281 | # $ make kernelrelease => 2.6.37+ |
265 | touch ${B}/.scmversion ${S}/.scmversion | 282 | touch ${B}/.scmversion ${S}/.scmversion |
266 | 283 | ||
284 | if [ "${S}" != "${B}" ] && [ -f "${S}/.config" ] && [ ! -f "${B}/.config" ]; then | ||
285 | mv "${S}/.config" "${B}/.config" | ||
286 | fi | ||
287 | |||
267 | # Copy defconfig to .config if .config does not exist. This allows | 288 | # Copy defconfig to .config if .config does not exist. This allows |
268 | # recipes to manage the .config themselves in do_configure_prepend(). | 289 | # recipes to manage the .config themselves in do_configure_prepend(). |
269 | if [ -f "${WORKDIR}/defconfig" ] && [ ! -f "${B}/.config" ]; then | 290 | if [ -f "${WORKDIR}/defconfig" ] && [ ! -f "${B}/.config" ]; then |