summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/taskdata.py
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2007-08-15 08:39:19 +0000
committerRichard Purdie <richard@openedhand.com>2007-08-15 08:39:19 +0000
commit75306742144eb1bd2d57c986d1f836a59a1f0e8b (patch)
treed1a15e84c1ae3c5c2dff906bbdba3d12bf5186e3 /bitbake/lib/bb/taskdata.py
parentd7892c265b0e820a28e62a4aa0819d90ea354a5b (diff)
downloadpoky-75306742144eb1bd2d57c986d1f836a59a1f0e8b.tar.gz
bitbake: Sync with upstream 1.8 branch
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@2497 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'bitbake/lib/bb/taskdata.py')
-rw-r--r--bitbake/lib/bb/taskdata.py46
1 files changed, 9 insertions, 37 deletions
diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py
index 632a842763..f448b5b666 100644
--- a/bitbake/lib/bb/taskdata.py
+++ b/bitbake/lib/bb/taskdata.py
@@ -23,7 +23,7 @@ Task data collection and handling
23# with this program; if not, write to the Free Software Foundation, Inc., 23# with this program; if not, write to the Free Software Foundation, Inc.,
24# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 24# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25 25
26from bb import data, fetch, event, mkdirhier, utils 26from bb import data, event, mkdirhier, utils
27import bb, os 27import bb, os
28 28
29class TaskData: 29class TaskData:
@@ -357,7 +357,7 @@ class TaskData:
357 357
358 all_p = dataCache.providers[item] 358 all_p = dataCache.providers[item]
359 359
360 eligible = bb.providers.filterProviders(all_p, item, cfgData, dataCache) 360 eligible, foundUnique = bb.providers.filterProviders(all_p, item, cfgData, dataCache)
361 361
362 for p in eligible: 362 for p in eligible:
363 fnid = self.getfn_id(p) 363 fnid = self.getfn_id(p)
@@ -369,22 +369,7 @@ class TaskData:
369 bb.event.fire(bb.event.NoProvider(item, cfgData)) 369 bb.event.fire(bb.event.NoProvider(item, cfgData))
370 raise bb.providers.NoProvider(item) 370 raise bb.providers.NoProvider(item)
371 371
372 prefervar = bb.data.getVar('PREFERRED_PROVIDER_%s' % item, cfgData, 1) 372 if len(eligible) > 1 and foundUnique == False:
373 if prefervar:
374 dataCache.preferred[item] = prefervar
375
376 discriminated = False
377 if item in dataCache.preferred:
378 for p in eligible:
379 pn = dataCache.pkg_fn[p]
380 if dataCache.preferred[item] == pn:
381 bb.msg.note(2, bb.msg.domain.Provider, "selecting %s to satisfy %s due to PREFERRED_PROVIDERS" % (pn, item))
382 eligible.remove(p)
383 eligible = [p] + eligible
384 discriminated = True
385 break
386
387 if len(eligible) > 1 and discriminated == False:
388 if item not in self.consider_msgs_cache: 373 if item not in self.consider_msgs_cache:
389 providers_list = [] 374 providers_list = []
390 for fn in eligible: 375 for fn in eligible:
@@ -424,7 +409,7 @@ class TaskData:
424 bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True)) 409 bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True))
425 raise bb.providers.NoRProvider(item) 410 raise bb.providers.NoRProvider(item)
426 411
427 eligible = bb.providers.filterProviders(all_p, item, cfgData, dataCache) 412 eligible, numberPreferred = bb.providers.filterProvidersRunTime(all_p, item, cfgData, dataCache)
428 413
429 for p in eligible: 414 for p in eligible:
430 fnid = self.getfn_id(p) 415 fnid = self.getfn_id(p)
@@ -436,21 +421,7 @@ class TaskData:
436 bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True)) 421 bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True))
437 raise bb.providers.NoRProvider(item) 422 raise bb.providers.NoRProvider(item)
438 423
439 # Should use dataCache.preferred here? 424 if len(eligible) > 1 and numberPreferred == 0:
440 preferred = []
441 for p in eligible:
442 pn = dataCache.pkg_fn[p]
443 provides = dataCache.pn_provides[pn]
444 for provide in provides:
445 prefervar = bb.data.getVar('PREFERRED_PROVIDER_%s' % provide, cfgData, 1)
446 if prefervar == pn:
447 bb.msg.note(2, bb.msg.domain.Provider, "selecting %s to satisfy runtime %s due to PREFERRED_PROVIDERS" % (pn, item))
448 eligible.remove(p)
449 eligible = [p] + eligible
450 preferred.append(p)
451 break
452
453 if len(eligible) > 1 and len(preferred) == 0:
454 if item not in self.consider_msgs_cache: 425 if item not in self.consider_msgs_cache:
455 providers_list = [] 426 providers_list = []
456 for fn in eligible: 427 for fn in eligible:
@@ -460,12 +431,12 @@ class TaskData:
460 bb.event.fire(bb.event.MultipleProviders(item,providers_list, cfgData, runtime=True)) 431 bb.event.fire(bb.event.MultipleProviders(item,providers_list, cfgData, runtime=True))
461 self.consider_msgs_cache.append(item) 432 self.consider_msgs_cache.append(item)
462 433
463 if len(preferred) > 1: 434 if numberPreferred > 1:
464 if item not in self.consider_msgs_cache: 435 if item not in self.consider_msgs_cache:
465 providers_list = [] 436 providers_list = []
466 for fn in preferred: 437 for fn in eligible:
467 providers_list.append(dataCache.pkg_fn[fn]) 438 providers_list.append(dataCache.pkg_fn[fn])
468 bb.msg.note(2, bb.msg.domain.Provider, "multiple preferred providers are available for runtime %s (%s);" % (item, ", ".join(providers_list))) 439 bb.msg.note(2, bb.msg.domain.Provider, "multiple providers are available for runtime %s (top %s entries preferred) (%s);" % (item, numberPreferred, ", ".join(providers_list)))
469 bb.msg.note(2, bb.msg.domain.Provider, "consider defining only one PREFERRED_PROVIDER entry to match runtime %s" % item) 440 bb.msg.note(2, bb.msg.domain.Provider, "consider defining only one PREFERRED_PROVIDER entry to match runtime %s" % item)
470 bb.event.fire(bb.event.MultipleProviders(item,providers_list, cfgData, runtime=True)) 441 bb.event.fire(bb.event.MultipleProviders(item,providers_list, cfgData, runtime=True))
471 self.consider_msgs_cache.append(item) 442 self.consider_msgs_cache.append(item)
@@ -538,6 +509,7 @@ class TaskData:
538 except bb.providers.NoProvider: 509 except bb.providers.NoProvider:
539 targetid = self.getbuild_id(target) 510 targetid = self.getbuild_id(target)
540 if self.abort and targetid in self.external_targets: 511 if self.abort and targetid in self.external_targets:
512 bb.msg.error(bb.msg.domain.Provider, "No providers of build target %s (for %s)" % (target, self.get_dependees_str(target)))
541 raise 513 raise
542 self.remove_buildtarget(targetid) 514 self.remove_buildtarget(targetid)
543 for target in self.get_unresolved_run_targets(dataCache): 515 for target in self.get_unresolved_run_targets(dataCache):