summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/bitbake2
-rw-r--r--lib/bb/runqueue.py4
-rw-r--r--lib/bb/shell.py2
-rw-r--r--lib/bb/taskdata.py51
4 files changed, 28 insertions, 31 deletions
diff --git a/bin/bitbake b/bin/bitbake
index 04f100990..0982d86bb 100755
--- a/bin/bitbake
+++ b/bin/bitbake
@@ -617,7 +617,7 @@ class BBCooker:
bb.event.fire(bb.event.BuildStarted(buildname, pkgs_to_build, self.configuration.event_data))
- taskdata = bb.taskdata.TaskData()
+ taskdata = bb.taskdata.TaskData(self.configuration.abort)
runlist = []
try:
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index f51ee2a07..b733f2e1e 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -278,9 +278,7 @@ class RunQueue:
self.execute_runqueue_internal(cooker, cfgData, dataCache, taskData)
return failures
except bb.runqueue.TaskFailure, (fnid, taskData.fn_index[fnid], taskname):
- if cooker.configuration.abort:
- raise
- if cooker.configuration.abort:
+ if taskData.abort:
raise
taskData.fail_fnid(fnid)
self.reset_runqueue()
diff --git a/lib/bb/shell.py b/lib/bb/shell.py
index 192ed022f..760c371d9 100644
--- a/lib/bb/shell.py
+++ b/lib/bb/shell.py
@@ -155,7 +155,7 @@ class BitBakeShellCommands:
cooker.build_cache = []
cooker.build_cache_fail = []
- td = taskdata.TaskData()
+ td = taskdata.TaskData(cooker.configuration.abort)
try:
tasks = []
diff --git a/lib/bb/taskdata.py b/lib/bb/taskdata.py
index 44b0caef7..bda9f3fd8 100644
--- a/lib/bb/taskdata.py
+++ b/lib/bb/taskdata.py
@@ -26,7 +26,7 @@ class TaskData:
"""
BitBake Task Data implementation
"""
- def __init__(self):
+ def __init__(self, abort = True):
self.build_names_index = []
self.run_names_index = []
self.fn_index = []
@@ -51,6 +51,7 @@ class TaskData:
self.failed_rdeps = []
self.failed_fnids = []
+ self.abort = abort
def matches_in_list(self, data, substring):
"""
@@ -318,7 +319,19 @@ class TaskData:
dependees.append(self.fn_index[fnid])
return dependees
- def add_provider(self, cfgData, dataCache, item, external = True):
+ def add_provider(self, cfgData, dataCache, item):
+ try:
+ self.add_provider_internal(cfgData, dataCache, item)
+ except bb.providers.NoProvider:
+ if self.abort:
+ bb.msg.error(bb.msg.domain.Provider, "No providers of build target %s (for %s)" % (item, self.get_dependees_str(item)))
+ raise
+ targetid = self.getbuild_id(item)
+ self.remove_buildtarget(targetid)
+
+ self.mark_external_target(item)
+
+ def add_provider_internal(self, cfgData, dataCache, item):
"""
Add the providers of item to the task data
Mark entries were specifically added externally as against dependencies
@@ -326,19 +339,15 @@ class TaskData:
"""
if item in dataCache.ignored_dependencies:
- return True
+ return
if not item in dataCache.providers:
- msg = "No providers of build target %s (for %s)" % (item, self.get_dependees_str(item))
- if external:
- bb.msg.error(bb.msg.domain.Provider, msg)
- else:
- bb.msg.debug(1, bb.msg.domain.Provider, msg)
+ bb.msg.debug(1, bb.msg.domain.Provider, "No providers of build target %s (for %s)" % (item, self.get_dependees_str(item)))
bb.event.fire(bb.event.NoProvider(item, cfgData))
raise bb.providers.NoProvider(item)
if self.have_build_target(item):
- return True
+ return
all_p = dataCache.providers[item]
@@ -350,11 +359,7 @@ class TaskData:
eligible.remove(p)
if not eligible:
- msg = "No providers of build target %s after filtering (for %s)" % (item, self.get_dependees_str(item))
- if external:
- bb.msg.error(bb.msg.domain.Provider, msg)
- else:
- bb.msg.debug(1, bb.msg.domain.Provider, msg)
+ bb.msg.debug(1, bb.msg.domain.Provider, "No providers of build target %s after filtering (for %s)" % (item, self.get_dependees_str(item)))
bb.event.fire(bb.event.NoProvider(item, cfgData))
raise bb.providers.NoProvider(item)
@@ -393,11 +398,6 @@ class TaskData:
#item = dataCache.pkg_fn[fn]
- if external:
- self.mark_external_target(item)
-
- return True
-
def add_rprovider(self, cfgData, dataCache, item):
"""
Add the runtime providers of item to the task data
@@ -405,10 +405,10 @@ class TaskData:
"""
if item in dataCache.ignored_dependencies:
- return True
+ return
if self.have_runtime_target(item):
- return True
+ return
all_p = bb.providers.getRuntimeProviders(dataCache, item)
@@ -471,8 +471,6 @@ class TaskData:
self.add_tasks(fn, dataCache)
self.add_runtime_target(fn, item)
- return True
-
def fail_fnid(self, fnid):
"""
Mark a file as failed (unbuildable)
@@ -503,6 +501,8 @@ class TaskData:
dependees = self.get_dependees(targetid)
for fnid in dependees:
self.fail_fnid(fnid)
+ if self.abort and targetid in self.external_targets:
+ raise bb.providers.NoProvider
def remove_runtarget(self, targetid):
"""
@@ -524,12 +524,11 @@ class TaskData:
added = 0
for target in self.get_unresolved_build_targets(dataCache):
try:
- self.add_provider(cfgData, dataCache, target, False)
+ self.add_provider_internal(cfgData, dataCache, target)
added = added + 1
except bb.providers.NoProvider:
targetid = self.getbuild_id(target)
- if targetid in self.external_targets:
- # FIXME - should look at configuration.abort here and only raise if set
+ if self.abort and targetid in self.external_targets:
raise
self.remove_buildtarget(targetid)
for target in self.get_unresolved_run_targets(dataCache):