diff options
Diffstat (limited to 'bitbake/bin/bitbake')
-rwxr-xr-x | bitbake/bin/bitbake | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake index 63bd07fe34..457fbb7527 100755 --- a/bitbake/bin/bitbake +++ b/bitbake/bin/bitbake | |||
@@ -22,7 +22,7 @@ | |||
22 | # Place, Suite 330, Boston, MA 02111-1307 USA. | 22 | # Place, Suite 330, Boston, MA 02111-1307 USA. |
23 | 23 | ||
24 | import sys, os, getopt, glob, copy, os.path, re, time | 24 | import sys, os, getopt, glob, copy, os.path, re, time |
25 | sys.path.append(os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib')) | 25 | sys.path.insert(0,os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib')) |
26 | import bb | 26 | import bb |
27 | from bb import utils, data, parse, debug, event, fatal | 27 | from bb import utils, data, parse, debug, event, fatal |
28 | from sets import Set | 28 | from sets import Set |
@@ -31,7 +31,7 @@ import itertools, optparse | |||
31 | parsespin = itertools.cycle( r'|/-\\' ) | 31 | parsespin = itertools.cycle( r'|/-\\' ) |
32 | bbdebug = 0 | 32 | bbdebug = 0 |
33 | 33 | ||
34 | __version__ = "1.3.3" | 34 | __version__ = "1.3.3.2" |
35 | 35 | ||
36 | #============================================================================# | 36 | #============================================================================# |
37 | # BBParsingStatus | 37 | # BBParsingStatus |
@@ -80,7 +80,7 @@ class BBParsingStatus: | |||
80 | depends = (bb.data.getVar("DEPENDS", bb_data, True) or "").split() | 80 | depends = (bb.data.getVar("DEPENDS", bb_data, True) or "").split() |
81 | packages = (bb.data.getVar('PACKAGES', bb_data, True) or "").split() | 81 | packages = (bb.data.getVar('PACKAGES', bb_data, True) or "").split() |
82 | packages_dynamic = (bb.data.getVar('PACKAGES_DYNAMIC', bb_data, True) or "").split() | 82 | packages_dynamic = (bb.data.getVar('PACKAGES_DYNAMIC', bb_data, True) or "").split() |
83 | rprovides = Set((bb.data.getVar("RPROVIDES_%s" % pn, bb_data, 1) or "").split() + (bb.data.getVar("RPROVIDES", bb_data, 1) or "").split()) | 83 | rprovides = (bb.data.getVar("RPROVIDES", bb_data, 1) or "").split() |
84 | 84 | ||
85 | 85 | ||
86 | # build PackageName to FileName lookup table | 86 | # build PackageName to FileName lookup table |
@@ -110,11 +110,11 @@ class BBParsingStatus: | |||
110 | 110 | ||
111 | # Build reverse hash for PACKAGES, so runtime dependencies | 111 | # Build reverse hash for PACKAGES, so runtime dependencies |
112 | # can be be resolved (RDEPENDS, RRECOMMENDS etc.) | 112 | # can be be resolved (RDEPENDS, RRECOMMENDS etc.) |
113 | |||
114 | for package in packages: | 113 | for package in packages: |
115 | if not package in self.packages: | 114 | if not package in self.packages: |
116 | self.packages[package] = [] | 115 | self.packages[package] = [] |
117 | self.packages[package].append(file_name) | 116 | self.packages[package].append(file_name) |
117 | rprovides += (bb.data.getVar("RPROVIDES_%s" % package, bb_data, 1) or "").split() | ||
118 | 118 | ||
119 | for package in packages_dynamic: | 119 | for package in packages_dynamic: |
120 | if not package in self.packages_dynamic: | 120 | if not package in self.packages_dynamic: |
@@ -493,6 +493,7 @@ class BBCooker: | |||
493 | 493 | ||
494 | if not item in self.status.providers: | 494 | if not item in self.status.providers: |
495 | bb.error("Nothing provides dependency %s" % item) | 495 | bb.error("Nothing provides dependency %s" % item) |
496 | bb.event.fire(bb.event.NoProvider(item,self.configuration.data)) | ||
496 | return 0 | 497 | return 0 |
497 | 498 | ||
498 | all_p = self.status.providers[item] | 499 | all_p = self.status.providers[item] |
@@ -529,6 +530,7 @@ class BBCooker: | |||
529 | providers_list.append(self.status.pkg_fn[fn]) | 530 | providers_list.append(self.status.pkg_fn[fn]) |
530 | bb.note("multiple providers are available (%s);" % ", ".join(providers_list)) | 531 | bb.note("multiple providers are available (%s);" % ", ".join(providers_list)) |
531 | bb.note("consider defining PREFERRED_PROVIDER_%s" % item) | 532 | bb.note("consider defining PREFERRED_PROVIDER_%s" % item) |
533 | bb.event.fire(bb.event.MultipleProviders(item,providers_list,self.configuration.data)) | ||
532 | self.consider_msgs_cache.append(item) | 534 | self.consider_msgs_cache.append(item) |
533 | 535 | ||
534 | 536 | ||
@@ -539,6 +541,7 @@ class BBCooker: | |||
539 | return 1 | 541 | return 1 |
540 | 542 | ||
541 | bb.note("no buildable providers for %s" % item) | 543 | bb.note("no buildable providers for %s" % item) |
544 | bb.event.fire(bb.event.NoProvider(item,self.configuration.data)) | ||
542 | return 0 | 545 | return 0 |
543 | 546 | ||
544 | def buildRProvider( self, item , buildAllDeps ): | 547 | def buildRProvider( self, item , buildAllDeps ): |
@@ -558,6 +561,7 @@ class BBCooker: | |||
558 | 561 | ||
559 | if not all_p: | 562 | if not all_p: |
560 | bb.error("Nothing provides runtime dependency %s" % (item)) | 563 | bb.error("Nothing provides runtime dependency %s" % (item)) |
564 | bb.event.fire(bb.event.NoProvider(item,self.configuration.data,runtime=True)) | ||
561 | return False | 565 | return False |
562 | 566 | ||
563 | for p in all_p: | 567 | for p in all_p: |
@@ -592,6 +596,7 @@ class BBCooker: | |||
592 | providers_list.append(self.status.pkg_fn[fn]) | 596 | providers_list.append(self.status.pkg_fn[fn]) |
593 | bb.note("multiple providers are available (%s);" % ", ".join(providers_list)) | 597 | bb.note("multiple providers are available (%s);" % ", ".join(providers_list)) |
594 | bb.note("consider defining a PREFERRED_PROVIDER to match runtime %s" % item) | 598 | bb.note("consider defining a PREFERRED_PROVIDER to match runtime %s" % item) |
599 | bb.event.fire(bb.event.MultipleProviders(item,providers_list,self.configuration.data,runtime=True)) | ||
595 | self.consider_msgs_cache.append(item) | 600 | self.consider_msgs_cache.append(item) |
596 | 601 | ||
597 | if len(preferred) > 1: | 602 | if len(preferred) > 1: |
@@ -601,6 +606,7 @@ class BBCooker: | |||
601 | providers_list.append(self.status.pkg_fn[fn]) | 606 | providers_list.append(self.status.pkg_fn[fn]) |
602 | bb.note("multiple preferred providers are available (%s);" % ", ".join(providers_list)) | 607 | bb.note("multiple preferred providers are available (%s);" % ", ".join(providers_list)) |
603 | bb.note("consider defining only one PREFERRED_PROVIDER to match runtime %s" % item) | 608 | bb.note("consider defining only one PREFERRED_PROVIDER to match runtime %s" % item) |
609 | bb.event.fire(bb.event.MultipleProviders(item,providers_list,self.configuration.data,runtime=True)) | ||
604 | self.consider_msgs_cache.append(item) | 610 | self.consider_msgs_cache.append(item) |
605 | 611 | ||
606 | # run through the list until we find one that we can build | 612 | # run through the list until we find one that we can build |
@@ -610,6 +616,7 @@ class BBCooker: | |||
610 | return True | 616 | return True |
611 | 617 | ||
612 | bb.error("No buildable providers for runtime %s" % item) | 618 | bb.error("No buildable providers for runtime %s" % item) |
619 | bb.event.fire(bb.event.NoProvider(item,self.configuration.data)) | ||
613 | return False | 620 | return False |
614 | 621 | ||
615 | def getProvidersRun(self, rdepend): | 622 | def getProvidersRun(self, rdepend): |
@@ -666,7 +673,9 @@ class BBCooker: | |||
666 | 673 | ||
667 | bb.debug(2, "Additional runtime dependencies for %s are: %s" % (item, " ".join(rdepends))) | 674 | bb.debug(2, "Additional runtime dependencies for %s are: %s" % (item, " ".join(rdepends))) |
668 | 675 | ||
669 | for rdepend in rdepends: | 676 | for rdepend in rdepends: |
677 | if rdepend in self.status.ignored_dependencies: | ||
678 | continue | ||
670 | if not self.buildRProvider(rdepend, buildAllDeps): | 679 | if not self.buildRProvider(rdepend, buildAllDeps): |
671 | return False | 680 | return False |
672 | return True | 681 | return True |
@@ -880,6 +889,7 @@ class BBCooker: | |||
880 | 889 | ||
881 | bb.event.fire(bb.event.BuildStarted(buildname, pkgs_to_build, self.configuration.data)) | 890 | bb.event.fire(bb.event.BuildStarted(buildname, pkgs_to_build, self.configuration.data)) |
882 | 891 | ||
892 | failures = 0 | ||
883 | for k in pkgs_to_build: | 893 | for k in pkgs_to_build: |
884 | failed = False | 894 | failed = False |
885 | try: | 895 | try: |
@@ -891,10 +901,11 @@ class BBCooker: | |||
891 | failed = True | 901 | failed = True |
892 | 902 | ||
893 | if failed: | 903 | if failed: |
904 | failures += failures | ||
894 | if self.configuration.abort: | 905 | if self.configuration.abort: |
895 | sys.exit(1) | 906 | sys.exit(1) |
896 | 907 | ||
897 | bb.event.fire(bb.event.BuildCompleted(buildname, pkgs_to_build, self.configuration.data)) | 908 | bb.event.fire(bb.event.BuildCompleted(buildname, pkgs_to_build, self.configuration.data, failures)) |
898 | 909 | ||
899 | sys.exit( self.stats.show() ) | 910 | sys.exit( self.stats.show() ) |
900 | 911 | ||
@@ -1067,8 +1078,7 @@ class BBCooker: | |||
1067 | # main | 1078 | # main |
1068 | #============================================================================# | 1079 | #============================================================================# |
1069 | 1080 | ||
1070 | if __name__ == "__main__": | 1081 | def main(): |
1071 | |||
1072 | parser = optparse.OptionParser( version = "BitBake Build Tool Core version %s, %%prog version %s" % ( bb.__version__, __version__ ), | 1082 | parser = optparse.OptionParser( version = "BitBake Build Tool Core version %s, %%prog version %s" % ( bb.__version__, __version__ ), |
1073 | usage = """%prog [options] [package ...] | 1083 | usage = """%prog [options] [package ...] |
1074 | 1084 | ||
@@ -1120,3 +1130,8 @@ Default BBFILES are the .bb files in the current directory.""" ) | |||
1120 | 1130 | ||
1121 | cooker = BBCooker() | 1131 | cooker = BBCooker() |
1122 | cooker.cook( BBConfiguration( options ), args[1:] ) | 1132 | cooker.cook( BBConfiguration( options ), args[1:] ) |
1133 | |||
1134 | |||
1135 | |||
1136 | if __name__ == "__main__": | ||
1137 | main() | ||