diff options
Diffstat (limited to 'bitbake/lib/bb/taskdata.py')
-rw-r--r-- | bitbake/lib/bb/taskdata.py | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py index 74a8b84bd5..3dac6c26af 100644 --- a/bitbake/lib/bb/taskdata.py +++ b/bitbake/lib/bb/taskdata.py | |||
@@ -330,7 +330,7 @@ class TaskData: | |||
330 | self.add_provider_internal(cfgData, dataCache, item) | 330 | self.add_provider_internal(cfgData, dataCache, item) |
331 | except bb.providers.NoProvider: | 331 | except bb.providers.NoProvider: |
332 | if self.abort: | 332 | if self.abort: |
333 | bb.msg.error(bb.msg.domain.Provider, "No providers of build target %s (for %s)" % (item, self.get_dependees_str(item))) | 333 | bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item))) |
334 | raise | 334 | raise |
335 | targetid = self.getbuild_id(item) | 335 | targetid = self.getbuild_id(item) |
336 | self.remove_buildtarget(targetid) | 336 | self.remove_buildtarget(targetid) |
@@ -348,7 +348,7 @@ class TaskData: | |||
348 | return | 348 | return |
349 | 349 | ||
350 | if not item in dataCache.providers: | 350 | if not item in dataCache.providers: |
351 | bb.msg.note(2, bb.msg.domain.Provider, "No providers of build target %s (for %s)" % (item, self.get_dependees_str(item))) | 351 | bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item))) |
352 | bb.event.fire(bb.event.NoProvider(item, cfgData)) | 352 | bb.event.fire(bb.event.NoProvider(item, cfgData)) |
353 | raise bb.providers.NoProvider(item) | 353 | raise bb.providers.NoProvider(item) |
354 | 354 | ||
@@ -365,7 +365,7 @@ class TaskData: | |||
365 | eligible.remove(p) | 365 | eligible.remove(p) |
366 | 366 | ||
367 | if not eligible: | 367 | if not eligible: |
368 | bb.msg.note(2, bb.msg.domain.Provider, "No providers of build target %s after filtering (for %s)" % (item, self.get_dependees_str(item))) | 368 | 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))) |
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 | ||
@@ -376,7 +376,7 @@ class TaskData: | |||
376 | providers_list.append(dataCache.pkg_fn[fn]) | 376 | providers_list.append(dataCache.pkg_fn[fn]) |
377 | bb.msg.note(1, bb.msg.domain.Provider, "multiple providers are available for %s (%s);" % (item, ", ".join(providers_list))) | 377 | bb.msg.note(1, bb.msg.domain.Provider, "multiple providers are available for %s (%s);" % (item, ", ".join(providers_list))) |
378 | bb.msg.note(1, bb.msg.domain.Provider, "consider defining PREFERRED_PROVIDER_%s" % item) | 378 | bb.msg.note(1, bb.msg.domain.Provider, "consider defining PREFERRED_PROVIDER_%s" % item) |
379 | bb.event.fire(bb.event.MultipleProviders(item,providers_list,cfgData)) | 379 | bb.event.fire(bb.event.MultipleProviders(item, providers_list, cfgData)) |
380 | self.consider_msgs_cache.append(item) | 380 | self.consider_msgs_cache.append(item) |
381 | 381 | ||
382 | for fn in eligible: | 382 | for fn in eligible: |
@@ -405,7 +405,7 @@ class TaskData: | |||
405 | all_p = bb.providers.getRuntimeProviders(dataCache, item) | 405 | all_p = bb.providers.getRuntimeProviders(dataCache, item) |
406 | 406 | ||
407 | if not all_p: | 407 | if not all_p: |
408 | bb.msg.error(bb.msg.domain.Provider, "No providers of runtime build target %s (for %s)" % (item, self.get_rdependees_str(item))) | 408 | 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" % (self.get_rdependees_str(item), item)) |
409 | bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True)) | 409 | bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True)) |
410 | raise bb.providers.NoRProvider(item) | 410 | raise bb.providers.NoRProvider(item) |
411 | 411 | ||
@@ -417,7 +417,7 @@ class TaskData: | |||
417 | eligible.remove(p) | 417 | eligible.remove(p) |
418 | 418 | ||
419 | if not eligible: | 419 | if not eligible: |
420 | bb.msg.error(bb.msg.domain.Provider, "No providers of runtime build target %s after filtering (for %s)" % (item, self.get_rdependees_str(item))) | 420 | 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)) |
421 | bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True)) | 421 | bb.event.fire(bb.event.NoProvider(item, cfgData, runtime=True)) |
422 | raise bb.providers.NoRProvider(item) | 422 | raise bb.providers.NoRProvider(item) |
423 | 423 | ||
@@ -446,7 +446,7 @@ class TaskData: | |||
446 | fnid = self.getfn_id(fn) | 446 | fnid = self.getfn_id(fn) |
447 | if fnid in self.failed_fnids: | 447 | if fnid in self.failed_fnids: |
448 | continue | 448 | continue |
449 | bb.msg.debug(2, bb.msg.domain.Provider, "adding %s to satisfy runtime %s" % (fn, item)) | 449 | bb.msg.debug(2, bb.msg.domain.Provider, "adding '%s' to satisfy runtime '%s'" % (fn, item)) |
450 | self.add_runtime_target(fn, item) | 450 | self.add_runtime_target(fn, item) |
451 | self.add_tasks(fn, dataCache) | 451 | self.add_tasks(fn, dataCache) |
452 | 452 | ||
@@ -459,7 +459,9 @@ class TaskData: | |||
459 | """ | 459 | """ |
460 | if fnid in self.failed_fnids: | 460 | if fnid in self.failed_fnids: |
461 | return | 461 | return |
462 | bb.msg.debug(1, bb.msg.domain.Provider, "Removing failed file %s" % self.fn_index[fnid]) | 462 | if not missing_list: |
463 | missing_list = [fnid] | ||
464 | bb.msg.debug(1, bb.msg.domain.Provider, "File '%s' is unbuildable, removing..." % self.fn_index[fnid]) | ||
463 | self.failed_fnids.append(fnid) | 465 | self.failed_fnids.append(fnid) |
464 | for target in self.build_targets: | 466 | for target in self.build_targets: |
465 | if fnid in self.build_targets[target]: | 467 | if fnid in self.build_targets[target]: |
@@ -477,13 +479,17 @@ class TaskData: | |||
477 | Mark a build target as failed (unbuildable) | 479 | Mark a build target as failed (unbuildable) |
478 | Trigger removal of any files that have this as a dependency | 480 | Trigger removal of any files that have this as a dependency |
479 | """ | 481 | """ |
480 | bb.msg.note(2, bb.msg.domain.Provider, "Removing failed build target %s" % self.build_names_index[targetid]) | 482 | if not missing_list: |
483 | missing_list = [self.build_names_index[targetid]] | ||
484 | else: | ||
485 | missing_list = [self.build_names_index[targetid]] + missing_list | ||
486 | bb.msg.note(2, bb.msg.domain.Provider, "Target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s" % (self.build_names_index[targetid], missing_list)) | ||
481 | self.failed_deps.append(targetid) | 487 | self.failed_deps.append(targetid) |
482 | dependees = self.get_dependees(targetid) | 488 | dependees = self.get_dependees(targetid) |
483 | for fnid in dependees: | 489 | for fnid in dependees: |
484 | self.fail_fnid(fnid, [self.build_names_index[targetid]]+missing_list) | 490 | self.fail_fnid(fnid, missing_list) |
485 | if self.abort and targetid in self.external_targets: | 491 | if self.abort and targetid in self.external_targets: |
486 | bb.msg.error(bb.msg.domain.Provider, "No buildable providers available for required build target %s ('%s')" % (self.build_names_index[targetid], missing_list)) | 492 | bb.msg.error(bb.msg.domain.Provider, "Required build target '%s' has no buildable providers.\nMissing or unbuildable dependency chain was: %s" % (self.build_names_index[targetid], missing_list)) |
487 | raise bb.providers.NoProvider | 493 | raise bb.providers.NoProvider |
488 | 494 | ||
489 | def remove_runtarget(self, targetid, missing_list = []): | 495 | def remove_runtarget(self, targetid, missing_list = []): |
@@ -491,17 +497,22 @@ class TaskData: | |||
491 | Mark a run target as failed (unbuildable) | 497 | Mark a run target as failed (unbuildable) |
492 | Trigger removal of any files that have this as a dependency | 498 | Trigger removal of any files that have this as a dependency |
493 | """ | 499 | """ |
494 | bb.msg.note(1, bb.msg.domain.Provider, "Removing failed runtime build target %s ('%s')" % (self.run_names_index[targetid], missing_list)) | 500 | if not missing_list: |
501 | missing_list = [self.run_names_index[targetid]] | ||
502 | else: | ||
503 | missing_list = [self.run_names_index[targetid]] + missing_list | ||
504 | |||
505 | bb.msg.note(1, bb.msg.domain.Provider, "Runtime target '%s' is unbuildable, removing...\nMissing or unbuildable dependency chain was: %s" % (self.run_names_index[targetid], missing_list)) | ||
495 | self.failed_rdeps.append(targetid) | 506 | self.failed_rdeps.append(targetid) |
496 | dependees = self.get_rdependees(targetid) | 507 | dependees = self.get_rdependees(targetid) |
497 | for fnid in dependees: | 508 | for fnid in dependees: |
498 | self.fail_fnid(fnid, [self.run_names_index[targetid]]+missing_list) | 509 | self.fail_fnid(fnid, missing_list) |
499 | 510 | ||
500 | def add_unresolved(self, cfgData, dataCache): | 511 | def add_unresolved(self, cfgData, dataCache): |
501 | """ | 512 | """ |
502 | Resolve all unresolved build and runtime targets | 513 | Resolve all unresolved build and runtime targets |
503 | """ | 514 | """ |
504 | bb.msg.note(1, bb.msg.domain.TaskData, "Resolving missing task queue dependencies") | 515 | bb.msg.note(1, bb.msg.domain.TaskData, "Resolving any missing task queue dependencies") |
505 | while 1: | 516 | while 1: |
506 | added = 0 | 517 | added = 0 |
507 | for target in self.get_unresolved_build_targets(dataCache): | 518 | for target in self.get_unresolved_build_targets(dataCache): |
@@ -511,7 +522,7 @@ class TaskData: | |||
511 | except bb.providers.NoProvider: | 522 | except bb.providers.NoProvider: |
512 | targetid = self.getbuild_id(target) | 523 | targetid = self.getbuild_id(target) |
513 | if self.abort and targetid in self.external_targets: | 524 | if self.abort and targetid in self.external_targets: |
514 | bb.msg.error(bb.msg.domain.Provider, "No providers of build target %s (for %s)" % (target, self.get_dependees_str(target))) | 525 | bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target))) |
515 | raise | 526 | raise |
516 | self.remove_buildtarget(targetid) | 527 | self.remove_buildtarget(targetid) |
517 | for target in self.get_unresolved_run_targets(dataCache): | 528 | for target in self.get_unresolved_run_targets(dataCache): |