diff options
| -rw-r--r-- | bitbake/lib/bb/runqueue.py | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index e09e8c8080..c45287d035 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
| @@ -409,7 +409,7 @@ class RunQueueData: | |||
| 409 | for taskname in tasknames: | 409 | for taskname in tasknames: |
| 410 | taskid = taskData.gettask_id_fromfnid(depdata, taskname) | 410 | taskid = taskData.gettask_id_fromfnid(depdata, taskname) |
| 411 | if taskid is not None: | 411 | if taskid is not None: |
| 412 | depends.append(taskid) | 412 | depends.add(taskid) |
| 413 | 413 | ||
| 414 | def add_runtime_dependencies(depids, tasknames, depends): | 414 | def add_runtime_dependencies(depids, tasknames, depends): |
| 415 | for depid in depids: | 415 | for depid in depids: |
| @@ -421,10 +421,10 @@ class RunQueueData: | |||
| 421 | for taskname in tasknames: | 421 | for taskname in tasknames: |
| 422 | taskid = taskData.gettask_id_fromfnid(depdata, taskname) | 422 | taskid = taskData.gettask_id_fromfnid(depdata, taskname) |
| 423 | if taskid is not None: | 423 | if taskid is not None: |
| 424 | depends.append(taskid) | 424 | depends.add(taskid) |
| 425 | 425 | ||
| 426 | for task in xrange(len(taskData.tasks_name)): | 426 | for task in xrange(len(taskData.tasks_name)): |
| 427 | depends = [] | 427 | depends = set() |
| 428 | recrdepends = [] | 428 | recrdepends = [] |
| 429 | fnid = taskData.tasks_fnid[task] | 429 | fnid = taskData.tasks_fnid[task] |
| 430 | fn = taskData.fn_index[fnid] | 430 | fn = taskData.fn_index[fnid] |
| @@ -437,7 +437,7 @@ class RunQueueData: | |||
| 437 | # Resolve task internal dependencies | 437 | # Resolve task internal dependencies |
| 438 | # | 438 | # |
| 439 | # e.g. addtask before X after Y | 439 | # e.g. addtask before X after Y |
| 440 | depends = taskData.tasks_tdepends[task] | 440 | depends = set(taskData.tasks_tdepends[task]) |
| 441 | 441 | ||
| 442 | # Resolve 'deptask' dependencies | 442 | # Resolve 'deptask' dependencies |
| 443 | # | 443 | # |
| @@ -470,7 +470,7 @@ class RunQueueData: | |||
| 470 | taskid = taskData.gettask_id_fromfnid(depdata, idependtask) | 470 | taskid = taskData.gettask_id_fromfnid(depdata, idependtask) |
| 471 | if taskid is None: | 471 | if taskid is None: |
| 472 | bb.msg.fatal("RunQueue", "Task %s in %s depends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, dep)) | 472 | bb.msg.fatal("RunQueue", "Task %s in %s depends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, dep)) |
| 473 | depends.append(taskid) | 473 | depends.add(taskid) |
| 474 | if depdata != fnid: | 474 | if depdata != fnid: |
| 475 | tdepends_fnid[fnid].add(taskid) | 475 | tdepends_fnid[fnid].add(taskid) |
| 476 | irdepends = taskData.tasks_irdepends[task] | 476 | irdepends = taskData.tasks_irdepends[task] |
| @@ -482,7 +482,7 @@ class RunQueueData: | |||
| 482 | taskid = taskData.gettask_id_fromfnid(depdata, idependtask) | 482 | taskid = taskData.gettask_id_fromfnid(depdata, idependtask) |
| 483 | if taskid is None: | 483 | if taskid is None: |
| 484 | bb.msg.fatal("RunQueue", "Task %s in %s rdepends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, dep)) | 484 | bb.msg.fatal("RunQueue", "Task %s in %s rdepends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, dep)) |
| 485 | depends.append(taskid) | 485 | depends.add(taskid) |
| 486 | if depdata != fnid: | 486 | if depdata != fnid: |
| 487 | tdepends_fnid[fnid].add(taskid) | 487 | tdepends_fnid[fnid].add(taskid) |
| 488 | 488 | ||
| @@ -499,16 +499,12 @@ class RunQueueData: | |||
| 499 | 499 | ||
| 500 | # Rmove all self references | 500 | # Rmove all self references |
| 501 | if task in depends: | 501 | if task in depends: |
| 502 | newdep = [] | ||
| 503 | logger.debug(2, "Task %s (%s %s) contains self reference! %s", task, taskData.fn_index[taskData.tasks_fnid[task]], taskData.tasks_name[task], depends) | 502 | logger.debug(2, "Task %s (%s %s) contains self reference! %s", task, taskData.fn_index[taskData.tasks_fnid[task]], taskData.tasks_name[task], depends) |
| 504 | for dep in depends: | 503 | depends.remove(task) |
| 505 | if task != dep: | ||
| 506 | newdep.append(dep) | ||
| 507 | depends = newdep | ||
| 508 | 504 | ||
| 509 | self.runq_fnid.append(taskData.tasks_fnid[task]) | 505 | self.runq_fnid.append(taskData.tasks_fnid[task]) |
| 510 | self.runq_task.append(taskData.tasks_name[task]) | 506 | self.runq_task.append(taskData.tasks_name[task]) |
| 511 | self.runq_depends.append(set(depends)) | 507 | self.runq_depends.append(depends) |
| 512 | self.runq_revdeps.append(set()) | 508 | self.runq_revdeps.append(set()) |
| 513 | self.runq_hash.append("") | 509 | self.runq_hash.append("") |
| 514 | 510 | ||
