The code which removes providers which aren't buildable from the eligible list
in add_provider and add_rprovider modifies the list while iterating it,
resulting in skipping some entries.  So if the list contained two failed
providers in sequence, it left the second behind in the eligible list.

Fixed by replacing the block with a list comprehension that constructs a new
eligible list without the failed entries.

Signed-off-by: Chris Larson <[email protected]>
---
 lib/bb/taskdata.py |   12 ++----------
 1 files changed, 2 insertions(+), 10 deletions(-)

diff --git a/lib/bb/taskdata.py b/lib/bb/taskdata.py
index 64ab032..45f6902 100644
--- a/lib/bb/taskdata.py
+++ b/lib/bb/taskdata.py
@@ -374,11 +374,7 @@ class TaskData:
         all_p = dataCache.providers[item]
 
         eligible, foundUnique = bb.providers.filterProviders(all_p, item, 
cfgData, dataCache)
-
-        for p in eligible:
-            fnid = self.getfn_id(p)
-            if fnid in self.failed_fnids:
-                eligible.remove(p)
+        eligible = [p for p in eligible if not self.getfn_id(p) in 
self.failed_fnids]
 
         if not eligible:
             bb.msg.note(2, bb.msg.domain.Provider, "No buildable provider 
PROVIDES '%s' but '%s' DEPENDS on or otherwise requires it. Enable debugging 
and see earlier logs to find unbuildable providers." % (item, 
self.get_dependees_str(item)))
@@ -426,11 +422,7 @@ class TaskData:
             raise bb.providers.NoRProvider(item)
 
         eligible, numberPreferred = bb.providers.filterProvidersRunTime(all_p, 
item, cfgData, dataCache)
-
-        for p in eligible:
-            fnid = self.getfn_id(p)
-            if fnid in self.failed_fnids:
-                eligible.remove(p)
+        eligible = [p for p in eligible if not self.getfn_id(p) in 
self.failed_fnids]
 
         if not eligible:
             bb.msg.error(bb.msg.domain.Provider, "'%s' RDEPENDS/RRECOMMENDS or 
otherwise requires the runtime entity '%s' but it wasn't found in any PACKAGE 
or RPROVIDES variables of any buildable targets.\nEnable debugging and see 
earlier logs to find unbuildable targets." % (self.get_rdependees_str(item), 
item))
-- 
1.6.0

_______________________________________________
Bitbake-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bitbake-dev

Reply via email to