diff options
author | Markus Lehtonen <markus.lehtonen@linux.intel.com> | 2016-03-18 09:41:51 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-03-20 23:12:29 +0000 |
commit | 62ddde6ebeb4b5c540951112b65a6fd9f5f2e132 (patch) | |
tree | 85397a2125274c4d57c41450a53b64f6950ee95f /meta | |
parent | 1969332422d1086f5245a3b7de2c5d2b85de366e (diff) | |
download | poky-62ddde6ebeb4b5c540951112b65a6fd9f5f2e132.tar.gz |
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 <markus.lehtonen@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/externalsrc.bbclass | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass index 0ec338c660..d3cede2b68 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 | ||
106 | python externalsrc_configure_prefunc() { | 104 | python externalsrc_configure_prefunc() { |