diff options
author | Mike Crowe <mac@mcrowe.com> | 2013-11-22 14:23:02 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-11-24 12:25:35 +0000 |
commit | 6e8a4eff5f7525182bcb05f845dce14a4c88f71b (patch) | |
tree | 9a8c5b83516817d836fdfaef484a4681f82ba84f | |
parent | 33db10a1724bdc8cfe41723491025089a3cd67d2 (diff) | |
download | poky-6e8a4eff5f7525182bcb05f845dce14a4c88f71b.tar.gz |
kernel.bbclass: Stop bundle_initramfs thwarting sstate cache and fix race
The new do_bundle_initramfs task introduced in
609d5a9ab9e58bb1c2bcc2145399fbc8b701b85a defeats using the sstate
cache. The kernel is resurrected from the sstate cache but ends up being
built again since do_bundle_initramfs depends on do_compile.
The task is no longer nostamp to avoid causing unnecessary rebuilds. The
sstate checksum stamps should know when to rebuild.
The task now runs before do_deploy and part of the work has been moved to
do_deploy where it now writes to ${DEPLOYDIR} rather than
${DEPLOY_DIR_IMAGE} so that the files end up in sstate.
The task can also race against do_install since both call into the kernel
build system. This is fixed by making do_bundle_initramfs run after
do_install (which therefore also fixes the problem that
3baa63b4d588c3262254528b406ede265dd117bf was addressing.)
(From OE-Core rev: 55989cb509340bd265d0ce0d8bfe849681be4616)
Signed-off-by: Mike Crowe <mac@mcrowe.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/classes/kernel.bbclass | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass index ba13e6784d..4974507a94 100644 --- a/meta/classes/kernel.bbclass +++ b/meta/classes/kernel.bbclass | |||
@@ -134,25 +134,14 @@ do_bundle_initramfs () { | |||
134 | echo "There is kernel image bundled with initramfs: ${B}/${KERNEL_OUTPUT}.initramfs" | 134 | echo "There is kernel image bundled with initramfs: ${B}/${KERNEL_OUTPUT}.initramfs" |
135 | install -m 0644 ${B}/${KERNEL_OUTPUT}.initramfs ${D}/boot/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin | 135 | install -m 0644 ${B}/${KERNEL_OUTPUT}.initramfs ${D}/boot/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin |
136 | echo "${B}/${KERNEL_OUTPUT}.initramfs" | 136 | echo "${B}/${KERNEL_OUTPUT}.initramfs" |
137 | cd ${B} | ||
138 | # Update deploy directory | ||
139 | if [ -e "${KERNEL_OUTPUT}.initramfs" ]; then | ||
140 | echo "Copying deploy kernel-initramfs image and setting up links..." | ||
141 | initramfs_base_name=${INITRAMFS_BASE_NAME} | ||
142 | initramfs_symlink_name=${KERNEL_IMAGETYPE}-initramfs-${MACHINE} | ||
143 | install -m 0644 ${KERNEL_OUTPUT}.initramfs ${DEPLOY_DIR_IMAGE}/${initramfs_base_name}.bin | ||
144 | cd ${DEPLOY_DIR_IMAGE} | ||
145 | ln -sf ${initramfs_base_name}.bin ${initramfs_symlink_name}.bin | ||
146 | fi | ||
147 | fi | 137 | fi |
148 | } | 138 | } |
149 | do_bundle_initramfs[nostamp] = "1" | ||
150 | 139 | ||
151 | python do_devshell_prepend () { | 140 | python do_devshell_prepend () { |
152 | os.environ["LDFLAGS"] = '' | 141 | os.environ["LDFLAGS"] = '' |
153 | } | 142 | } |
154 | 143 | ||
155 | addtask bundle_initramfs after do_compile before do_build | 144 | addtask bundle_initramfs after do_install before do_deploy |
156 | 145 | ||
157 | kernel_do_compile() { | 146 | kernel_do_compile() { |
158 | unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE | 147 | unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE |
@@ -479,6 +468,17 @@ kernel_do_deploy() { | |||
479 | ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${DEPLOYDIR}/${KERNEL_IMAGETYPE} | 468 | ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${DEPLOYDIR}/${KERNEL_IMAGETYPE} |
480 | 469 | ||
481 | cp ${COREBASE}/meta/files/deploydir_readme.txt ${DEPLOYDIR}/README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt | 470 | cp ${COREBASE}/meta/files/deploydir_readme.txt ${DEPLOYDIR}/README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt |
471 | |||
472 | cd ${B} | ||
473 | # Update deploy directory | ||
474 | if [ -e "${KERNEL_OUTPUT}.initramfs" ]; then | ||
475 | echo "Copying deploy kernel-initramfs image and setting up links..." | ||
476 | initramfs_base_name=${INITRAMFS_BASE_NAME} | ||
477 | initramfs_symlink_name=${KERNEL_IMAGETYPE}-initramfs-${MACHINE} | ||
478 | install -m 0644 ${KERNEL_OUTPUT}.initramfs ${DEPLOYDIR}/${initramfs_base_name}.bin | ||
479 | cd ${DEPLOYDIR} | ||
480 | ln -sf ${initramfs_base_name}.bin ${initramfs_symlink_name}.bin | ||
481 | fi | ||
482 | } | 482 | } |
483 | do_deploy[dirs] = "${DEPLOYDIR} ${B}" | 483 | do_deploy[dirs] = "${DEPLOYDIR} ${B}" |
484 | do_deploy[prefuncs] += "package_get_auto_pr" | 484 | do_deploy[prefuncs] += "package_get_auto_pr" |