summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/waf.bbclass26
1 files changed, 26 insertions, 0 deletions
diff --git a/meta/classes/waf.bbclass b/meta/classes/waf.bbclass
index 8e6d754c29..900244004e 100644
--- a/meta/classes/waf.bbclass
+++ b/meta/classes/waf.bbclass
@@ -5,6 +5,32 @@ B = "${WORKDIR}/build"
5 5
6EXTRA_OECONF_append = " ${PACKAGECONFIG_CONFARGS}" 6EXTRA_OECONF_append = " ${PACKAGECONFIG_CONFARGS}"
7 7
8def waflock_hash(d):
9 # Calculates the hash used for the waf lock file. This should include
10 # all of the user controllable inputs passed to waf configure. Note
11 # that the full paths for ${B} and ${S} are used; this is OK and desired
12 # because a change to either of these should create a unique lock file
13 # to prevent collisions.
14 import hashlib
15 h = hashlib.sha512()
16 def update(name):
17 val = d.getVar(name)
18 if val is not None:
19 h.update(val.encode('utf-8'))
20 update('S')
21 update('B')
22 update('prefix')
23 update('EXTRA_OECONF')
24 return h.hexdigest()
25
26# Use WAFLOCK to specify a separate lock file. The build is already
27# sufficiently isolated by setting the output directory, this ensures that
28# bitbake won't step on toes of any other configured context in the source
29# directory (e.g. if the source is coming from externalsrc and was previously
30# configured elsewhere).
31export WAFLOCK = ".lock-waf_oe_${@waflock_hash(d)}_build"
32BB_HASHBASE_WHITELIST += "WAFLOCK"
33
8python waf_preconfigure() { 34python waf_preconfigure() {
9 import subprocess 35 import subprocess
10 from distutils.version import StrictVersion 36 from distutils.version import StrictVersion