summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/runqueue.py
diff options
context:
space:
mode:
authorKevin Tian <kevin.tian@intel.com>2010-12-14 19:21:24 +0800
committerRichard Purdie <rpurdie@linux.intel.com>2010-12-14 22:40:16 +0000
commitbb783afd4daa3f57fb26e2bb86f5bc9cbeb11df0 (patch)
treecb3dd729acf0c7eb8ee37b2d7c8cda6403b92ca9 /bitbake/lib/bb/runqueue.py
parent5fadc9b8be944ab7a61ef5eb33f92f69237d2d93 (diff)
downloadpoky-bb783afd4daa3f57fb26e2bb86f5bc9cbeb11df0.tar.gz
runqueue.py: use correct task ID when checking validity of setscene tasks
sstate hash validation is done at initialization of RunQueueExecuteScenequeue. However the index of 'valid' list returned from the validation doesn't correspond to setscene task ID. It's just an intermediate namespace between runqueue and sstate hash func. Use it as setscene task ID fully mess the flow. Previously this doesn't cause trouble because all setscene tasks are passed. Commit 58396a5d24c62710fd0a9f3780d84ac8a95d8e7c add 'noexec' concept to setscene tasks which grabs some tasks out of the list and thus trigger this problem Without this fix there're ~50 recipes (gzip-native, glib, ...) rebuilt weirdly with a minimal build, even though existing sstate packages could accelerate them. there's another typo using wrong task ID in a debug message which further hide this issue Signed-off-by: Kevin Tian <kevin.tian@intel.com>
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r--bitbake/lib/bb/runqueue.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index e26aa4e075..d605b310ff 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1358,6 +1358,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
1358 sq_hash = [] 1358 sq_hash = []
1359 sq_hashfn = [] 1359 sq_hashfn = []
1360 sq_fn = [] 1360 sq_fn = []
1361 sq_taskname = []
1361 sq_task = [] 1362 sq_task = []
1362 noexec = [] 1363 noexec = []
1363 for task in range(len(self.sq_revdeps)): 1364 for task in range(len(self.sq_revdeps)):
@@ -1372,14 +1373,19 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
1372 sq_fn.append(fn) 1373 sq_fn.append(fn)
1373 sq_hashfn.append(self.rqdata.dataCache.hashfn[fn]) 1374 sq_hashfn.append(self.rqdata.dataCache.hashfn[fn])
1374 sq_hash.append(self.rqdata.runq_hash[realtask]) 1375 sq_hash.append(self.rqdata.runq_hash[realtask])
1375 sq_task.append(taskname) 1376 sq_taskname.append(taskname)
1376 1377 sq_task.append(task)
1377 call = self.rq.hashvalidate + "(sq_fn, sq_task, sq_hash, sq_hashfn, d)" 1378 call = self.rq.hashvalidate + "(sq_fn, sq_task, sq_hash, sq_hashfn, d)"
1378 locs = { "sq_fn" : sq_fn, "sq_task" : sq_task, "sq_hash" : sq_hash, "sq_hashfn" : sq_hashfn, "d" : self.cooker.configuration.data } 1379 locs = { "sq_fn" : sq_fn, "sq_task" : sq_taskname, "sq_hash" : sq_hash, "sq_hashfn" : sq_hashfn, "d" : self.cooker.configuration.data }
1379 valid = bb.utils.better_eval(call, locs) 1380 valid = bb.utils.better_eval(call, locs)
1381
1382 valid_new = []
1383 for v in valid:
1384 valid_new.append(sq_task[v])
1385
1380 for task in range(len(self.sq_revdeps)): 1386 for task in range(len(self.sq_revdeps)):
1381 if task not in valid and task not in noexec: 1387 if task not in valid_new and task not in noexec:
1382 bb.msg.debug(2, bb.msg.domain.RunQueue, "No package found so skipping setscene task %s" % (self.rqdata.get_user_idstring(task))) 1388 bb.msg.debug(2, bb.msg.domain.RunQueue, "No package found so skipping setscene task %s" % (self.rqdata.get_user_idstring(self.rqdata.runq_setscene[task])))
1383 self.task_failoutright(task) 1389 self.task_failoutright(task)
1384 1390
1385 #print(str(valid)) 1391 #print(str(valid))