[OE-core] [PATCH 3/3] externalsrc: use shared CONFIGURESTAMPFILE if B=S
Markus Lehtonen
markus.lehtonen at linux.intel.com
Fri Jan 29 15:04:31 UTC 2016
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 <markus.lehtonen at linux.intel.com>
---
meta/classes/externalsrc.bbclass | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass
index f7ed66d..be0fe55 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() {
--
2.1.4
More information about the Openembedded-core
mailing list