From f44f12af346888bdeb3ae01a275cb5dd4396b505 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Fri, 29 Jan 2016 17:04:31 +0200 Subject: externalsrc: use shared CONFIGURESTAMPFILE if B=S External source tree is used as the builddir even for different architectures in case ${B}=${S}. This may cause problems if MACHINE is changed as do_configure is not being re-run (which would run make clean). This patches changes externalsrc to use a common (per-recipe) CONFIGURESTAMPFILE under 'work-shared' if ${B}=${S}. In addition, do_configure will depend on changes of this stamp file. As a result, do_configure is re-run and the build dir is cleaned correctly if a rebuild for different MACHINE is done. [YOCTO #8950] Signed-off-by: Markus Lehtonen Signed-off-by: Richard Purdie --- meta/classes/externalsrc.bbclass | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass index f7ed66d8c6..be0fe55d5f 100644 --- a/meta/classes/externalsrc.bbclass +++ b/meta/classes/externalsrc.bbclass @@ -85,6 +85,17 @@ python () { # Ensure compilation happens every time d.setVarFlag('do_compile', 'nostamp', '1') + + # If B=S the same builddir is used even for different architectures. + # Thus, use a shared CONFIGURESTAMPFILE so that change of do_configure + # task hash is correctly detected if e.g. MACHINE changes. In addition, + # do_configure needs to depend on the stamp file so that the task is + # re-run when the stamp was changed since the last run on this + # architecture. + if d.getVar('S', True) == d.getVar('B', True): + configstamp = '${TMPDIR}/work-shared/${PN}/${EXTENDPE}${PV}-${PR}/configure.sstate' + d.setVar('CONFIGURESTAMPFILE', configstamp) + d.setVarFlag('do_configure', 'file-checksums', configstamp + ':True') } python externalsrc_compile_prefunc() { -- cgit 1.2.3-korg