Patchwork [bitbake-devel,1/1] bitbake: Abort build if runtime dependency conflict

login
register
mail settings
Submitter wenzong.fan@windriver.com
Date July 11, 2012, 3:28 a.m.
Message ID <05c49df922dac41a9d86377c1400ae2ef58fe4ae.1341977062.git.wenzong.fan@windriver.com>
Download mbox | patch
Permalink /patch/31735/
State New
Headers show

Comments

wenzong.fan@windriver.com - July 11, 2012, 3:28 a.m.
From: Wenzong Fan <wenzong.fan@windriver.com>

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>
---
 bitbake/lib/bb/providers.py |    2 ++
 bitbake/lib/bb/taskdata.py  |    3 ++-
 2 files changed, 4 insertions(+), 1 deletions(-)
Richard Purdie - July 11, 2012, 10:44 a.m.
On Wed, 2012-07-11 at 11:28 +0800, wenzong.fan@windriver.com wrote:
> From: Wenzong Fan <wenzong.fan@windriver.com>
> 
> 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>
> ---
>  bitbake/lib/bb/providers.py |    2 ++
>  bitbake/lib/bb/taskdata.py  |    3 ++-
>  2 files changed, 4 insertions(+), 1 deletions(-)

Merged to master, thanks.

Richard

Patch

diff --git a/bitbake/lib/bb/providers.py b/bitbake/lib/bb/providers.py
index bd729df..24cb217 100644
--- a/bitbake/lib/bb/providers.py
+++ b/bitbake/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/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py
index 55cdde5..aed3a16 100644
--- a/bitbake/lib/bb/taskdata.py
+++ b/bitbake/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: