aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWenzong Fan <wenzong.fan@windriver.com>2012-07-11 11:28:11 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-07-11 11:42:34 +0100
commit5f81a714f4fca785780bef555b419f0250e5ec1c (patch)
tree9378c681835b4116a4809e45c67bf1219c237b78
parentbf0e5dddf0f63cdb0648fb6d872af5ceef6fbfb0 (diff)
downloadbitbake-5f81a714f4fca785780bef555b419f0250e5ec1c.tar.gz
bitbake-5f81a714f4fca785780bef555b419f0250e5ec1c.tar.bz2
bitbake-5f81a714f4fca785780bef555b419f0250e5ec1c.zip
bitbake: Abort build if runtime dependency conflict
Currently if there are multiple preferred providers available for a runtime dependency, bitbake will print an Error message and let the build go on. Anyways the build should abort while any Errors occured. [YOCTO #2734] Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/providers.py2
-rw-r--r--lib/bb/taskdata.py3
2 files changed, 4 insertions, 1 deletions
diff --git a/lib/bb/providers.py b/lib/bb/providers.py
index bd729df9..24cb217e 100644
--- a/lib/bb/providers.py
+++ b/lib/bb/providers.py
@@ -35,6 +35,8 @@ class NoProvider(bb.BBHandledException):
class NoRProvider(bb.BBHandledException):
"""Exception raised when no provider of a runtime dependency can be found"""
+class MultipleRProvider(bb.BBHandledException):
+ """Exception raised when multiple providers of a runtime dependency can be found"""
def findProviders(cfgData, dataCache, pkg_pn = None):
"""
diff --git a/lib/bb/taskdata.py b/lib/bb/taskdata.py
index 55cdde55..aed3a163 100644
--- a/lib/bb/taskdata.py
+++ b/lib/bb/taskdata.py
@@ -482,6 +482,7 @@ class TaskData:
providers_list.append(dataCache.pkg_fn[fn])
bb.event.fire(bb.event.MultipleProviders(item, providers_list, runtime=True), cfgData)
self.consider_msgs_cache.append(item)
+ raise bb.providers.MultipleRProvider(item)
# run through the list until we find one that we can build
for fn in eligible:
@@ -580,7 +581,7 @@ class TaskData:
try:
self.add_rprovider(cfgData, dataCache, target)
added = added + 1
- except bb.providers.NoRProvider:
+ except (bb.providers.NoRProvider, bb.providers.MultipleRProvider):
self.remove_runtarget(self.getrun_id(target))
logger.debug(1, "Resolved " + str(added) + " extra dependencies")
if added == 0: