diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-07-10 14:05:06 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-07-12 22:50:41 +0100 |
commit | 61fbff2cd43720037de0266b73d5460576ed07e8 (patch) | |
tree | 0e8dde7c4d9ec592f7c5f481c73cf2cf85525f5c /bitbake | |
parent | 625a6bf6e813c7b753a9379151c95a4bbc6865c3 (diff) | |
download | poky-61fbff2cd43720037de0266b73d5460576ed07e8.tar.gz |
bitbake: cooker/taskdata: Make NoProvider errors non-fatal to -e/-g options
If you have a situation where you are getting a "Nothing PROVIDES" error
(for example when something you request to build DEPENDS on something
that has been skipped or doesn't exist) it would be useful to be able to
use bitbake -g or bitbake -e to debug it, but currently both of those
are blocked by the error.
This patch adds an "allowincomplete" option to taskdata and uses this
for the -e/-g bitbake options. The NoProvider errors are still
printed and bitbake does return an error exist code but the environment
and task graph files are generated.
[YOCTO #7623]
(Bitbake rev: 2ca36a9f088438a8d1db44119c704f9480b04298)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/cooker.py | 8 | ||||
-rw-r--r-- | bitbake/lib/bb/taskdata.py | 8 |
2 files changed, 9 insertions, 7 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 58137f6d62..46e5560e83 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
@@ -581,7 +581,7 @@ class BBCooker: | |||
581 | if pkgs_to_build[0] in set(ignore.split()): | 581 | if pkgs_to_build[0] in set(ignore.split()): |
582 | bb.fatal("%s is in ASSUME_PROVIDED" % pkgs_to_build[0]) | 582 | bb.fatal("%s is in ASSUME_PROVIDED" % pkgs_to_build[0]) |
583 | 583 | ||
584 | taskdata, runlist, pkgs_to_build = self.buildTaskData(pkgs_to_build, None, self.configuration.abort) | 584 | taskdata, runlist, pkgs_to_build = self.buildTaskData(pkgs_to_build, None, self.configuration.abort, allowincomplete=True) |
585 | 585 | ||
586 | targetid = taskdata.getbuild_id(pkgs_to_build[0]) | 586 | targetid = taskdata.getbuild_id(pkgs_to_build[0]) |
587 | fnid = taskdata.build_targets[targetid][0] | 587 | fnid = taskdata.build_targets[targetid][0] |
@@ -614,7 +614,7 @@ class BBCooker: | |||
614 | logger.plain("\npython %s () {\n%s}\n", e, envdata.getVar(e, True)) | 614 | logger.plain("\npython %s () {\n%s}\n", e, envdata.getVar(e, True)) |
615 | 615 | ||
616 | 616 | ||
617 | def buildTaskData(self, pkgs_to_build, task, abort): | 617 | def buildTaskData(self, pkgs_to_build, task, abort, allowincomplete=False): |
618 | """ | 618 | """ |
619 | Prepare a runqueue and taskdata object for iteration over pkgs_to_build | 619 | Prepare a runqueue and taskdata object for iteration over pkgs_to_build |
620 | """ | 620 | """ |
@@ -629,7 +629,7 @@ class BBCooker: | |||
629 | localdata = data.createCopy(self.data) | 629 | localdata = data.createCopy(self.data) |
630 | bb.data.update_data(localdata) | 630 | bb.data.update_data(localdata) |
631 | bb.data.expandKeys(localdata) | 631 | bb.data.expandKeys(localdata) |
632 | taskdata = bb.taskdata.TaskData(abort, skiplist=self.skiplist) | 632 | taskdata = bb.taskdata.TaskData(abort, skiplist=self.skiplist, allowincomplete=allowincomplete) |
633 | 633 | ||
634 | current = 0 | 634 | current = 0 |
635 | runlist = [] | 635 | runlist = [] |
@@ -654,7 +654,7 @@ class BBCooker: | |||
654 | 654 | ||
655 | # We set abort to False here to prevent unbuildable targets raising | 655 | # We set abort to False here to prevent unbuildable targets raising |
656 | # an exception when we're just generating data | 656 | # an exception when we're just generating data |
657 | taskdata, runlist, pkgs_to_build = self.buildTaskData(pkgs_to_build, task, False) | 657 | taskdata, runlist, pkgs_to_build = self.buildTaskData(pkgs_to_build, task, False, allowincomplete=True) |
658 | 658 | ||
659 | return runlist, taskdata | 659 | return runlist, taskdata |
660 | 660 | ||
diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py index af72a1fb09..ca58e17922 100644 --- a/bitbake/lib/bb/taskdata.py +++ b/bitbake/lib/bb/taskdata.py | |||
@@ -41,7 +41,7 @@ class TaskData: | |||
41 | """ | 41 | """ |
42 | BitBake Task Data implementation | 42 | BitBake Task Data implementation |
43 | """ | 43 | """ |
44 | def __init__(self, abort = True, tryaltconfigs = False, skiplist = None): | 44 | def __init__(self, abort = True, tryaltconfigs = False, skiplist = None, allowincomplete = False): |
45 | self.build_names_index = [] | 45 | self.build_names_index = [] |
46 | self.run_names_index = [] | 46 | self.run_names_index = [] |
47 | self.fn_index = [] | 47 | self.fn_index = [] |
@@ -70,6 +70,7 @@ class TaskData: | |||
70 | 70 | ||
71 | self.abort = abort | 71 | self.abort = abort |
72 | self.tryaltconfigs = tryaltconfigs | 72 | self.tryaltconfigs = tryaltconfigs |
73 | self.allowincomplete = allowincomplete | ||
73 | 74 | ||
74 | self.skiplist = skiplist | 75 | self.skiplist = skiplist |
75 | 76 | ||
@@ -594,9 +595,10 @@ class TaskData: | |||
594 | added = added + 1 | 595 | added = added + 1 |
595 | except bb.providers.NoProvider: | 596 | except bb.providers.NoProvider: |
596 | targetid = self.getbuild_id(target) | 597 | targetid = self.getbuild_id(target) |
597 | if self.abort and targetid in self.external_targets: | 598 | if self.abort and targetid in self.external_targets and not self.allowincomplete: |
598 | raise | 599 | raise |
599 | self.remove_buildtarget(targetid) | 600 | if not self.allowincomplete: |
601 | self.remove_buildtarget(targetid) | ||
600 | for target in self.get_unresolved_run_targets(dataCache): | 602 | for target in self.get_unresolved_run_targets(dataCache): |
601 | try: | 603 | try: |
602 | self.add_rprovider(cfgData, dataCache, target) | 604 | self.add_rprovider(cfgData, dataCache, target) |