]> code.ossystems Code Review - openembedded-core.git/commitdiff
sstate.bbclass: Ensure clean/setscene sstate functions run under appropriate locking
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 19 Jan 2011 11:48:55 +0000 (11:48 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 19 Jan 2011 11:48:55 +0000 (11:48 +0000)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/sstate.bbclass

index b6e6c92003eb454263bb21772559f3c77ad9b120..adadbcffc7f1222f8021babf5bb7d0940ddbaef9 100644 (file)
@@ -30,13 +30,16 @@ python () {
         scan_cmd = "grep -Irl ${STAGING_DIR} ${SSTATE_BUILDDIR}"
         bb.data.setVar('SSTATE_SCAN_CMD', scan_cmd, d)
 
+    namemap = []
     for task in (bb.data.getVar('SSTATETASKS', d, True) or "").split():
+        namemap.append(bb.data.getVarFlag(task, 'sstate-name', d))
         funcs = bb.data.getVarFlag(task, 'prefuncs', d) or ""
         funcs = "sstate_task_prefunc " + funcs
         bb.data.setVarFlag(task, 'prefuncs', funcs, d)
         funcs = bb.data.getVarFlag(task, 'postfuncs', d) or ""
         funcs = funcs + " sstate_task_postfunc"
         bb.data.setVarFlag(task, 'postfuncs', funcs, d)
+    d.setVar('SSTATETASKNAMES', " ".join(namemap))
 }
 
 def sstate_init(name, d):
@@ -261,7 +264,12 @@ python sstate_cleanall() {
 
     for manifest in (os.listdir(manifest_dir)):
         if fnmatch.fnmatch(manifest, manifest_pattern):
-             sstate_clean_manifest(manifest_dir + "/" + manifest, d)
+             name = manifest.replace(manifest_pattern[:-1], "")
+             namemap = d.getVar('SSTATETASKNAMES', True).split()
+             tasks = d.getVar('SSTATETASKS', True).split()
+             taskname = tasks[namemap.index(name)]
+             shared_state = sstate_state_fromvars(d, taskname[3:])
+             sstate_clean(shared_state, d)
 }
 
 def sstate_package(ss, d):