path: root/meta/classes/externalsrc.bbclass
diff options
authorMarkus Lehtonen <>2016-03-18 07:41:51 (GMT)
committerRichard Purdie <>2016-03-20 23:12:29 (GMT)
commit62ddde6ebeb4b5c540951112b65a6fd9f5f2e132 (patch)
tree85397a2125274c4d57c41450a53b64f6950ee95f /meta/classes/externalsrc.bbclass
parent1969332422d1086f5245a3b7de2c5d2b85de366e (diff)
externalsrc: use shared stamp directory if B=S
We have a common build directory for all target architectures if externalsrc is used and ${B}=${S}. In this case we also need to have a common stamp directory. The reason is that e.g. changing MACHINE will basically "invalidate" the artefacts in ${B} (wrt. to the new MACHINE) but old stamp files with matching hashes from an earlier build might be available in the machine-specific stamps directory and tasks would not be correctly re-run. Previous attempt in f44f12af346888bdeb3ae01a275cb5dd4396b505 to handle this correctly was faulty as it threw some spurious warnings and caused do_configure to be re-run in every build if that would not be necessary. [YOCTO #8950] [YOCTO #9237] (From OE-Core rev: f5031fb37ceef83c85f0dfec773da75c05b2a631) Signed-off-by: Markus Lehtonen <> Signed-off-by: Ross Burton <> Signed-off-by: Richard Purdie <>
Diffstat (limited to 'meta/classes/externalsrc.bbclass')
1 files changed, 4 insertions, 6 deletions
diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass
index 0ec338c..d3cede2 100644
--- a/meta/classes/externalsrc.bbclass
+++ b/meta/classes/externalsrc.bbclass
@@ -92,15 +92,13 @@ python () {
92 d.appendVar('RM_WORK_EXCLUDE', ' ' + d.getVar('PN', True)) 92 d.appendVar('RM_WORK_EXCLUDE', ' ' + d.getVar('PN', True))
93 93
94 # If B=S the same builddir is used even for different architectures. 94 # If B=S the same builddir is used even for different architectures.
95 # Thus, use a shared CONFIGURESTAMPFILE so that change of do_configure 95 # Thus, use a shared CONFIGURESTAMPFILE and STAMP directory so that
96 # task hash is correctly detected if e.g. MACHINE changes. In addition, 96 # change of do_configure task hash is correctly detected and stamps are
97 # do_configure needs to depend on the stamp file so that the task is 97 # invalidated if e.g. MACHINE changes.
98 # re-run when the stamp was changed since the last run on this
99 # architecture.
100 if d.getVar('S', True) == d.getVar('B', True): 98 if d.getVar('S', True) == d.getVar('B', True):
101 configstamp = '${TMPDIR}/work-shared/${PN}/${EXTENDPE}${PV}-${PR}/configure.sstate' 99 configstamp = '${TMPDIR}/work-shared/${PN}/${EXTENDPE}${PV}-${PR}/configure.sstate'
102 d.setVar('CONFIGURESTAMPFILE', configstamp) 100 d.setVar('CONFIGURESTAMPFILE', configstamp)
103 d.setVarFlag('do_configure', 'file-checksums', configstamp + ':True') 101 d.setVar('STAMP', '${STAMPS_DIR}/work-shared/${PN}/${EXTENDPE}${PV}-${PR}')
104} 102}
105 103
106python externalsrc_configure_prefunc() { 104python externalsrc_configure_prefunc() {