summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/ui/crumbs/builder.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/builder.py')
-rwxr-xr-xbitbake/lib/bb/ui/crumbs/builder.py52
1 files changed, 42 insertions, 10 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/builder.py b/bitbake/lib/bb/ui/crumbs/builder.py
index c2e7068428..cb2338e777 100755
--- a/bitbake/lib/bb/ui/crumbs/builder.py
+++ b/bitbake/lib/bb/ui/crumbs/builder.py
@@ -27,6 +27,7 @@ import os
27import subprocess 27import subprocess
28import shlex 28import shlex
29import re 29import re
30import logging
30from bb.ui.crumbs.template import TemplateMgr 31from bb.ui.crumbs.template import TemplateMgr
31from bb.ui.crumbs.imageconfigurationpage import ImageConfigurationPage 32from bb.ui.crumbs.imageconfigurationpage import ImageConfigurationPage
32from bb.ui.crumbs.recipeselectionpage import RecipeSelectionPage 33from bb.ui.crumbs.recipeselectionpage import RecipeSelectionPage
@@ -395,6 +396,11 @@ class Builder(gtk.Window):
395 396
396 self.template = None 397 self.template = None
397 398
399 # logger
400 self.logger = logging.getLogger("BitBake")
401 self.consolelog = None
402 self.current_logfile = None
403
398 # configuration and parameters 404 # configuration and parameters
399 self.configuration = Configuration() 405 self.configuration = Configuration()
400 self.parameters = Parameters() 406 self.parameters = Parameters()
@@ -433,6 +439,7 @@ class Builder(gtk.Window):
433 self.handler.build.connect("build-aborted", self.handler_build_aborted_cb) 439 self.handler.build.connect("build-aborted", self.handler_build_aborted_cb)
434 self.handler.build.connect("task-started", self.handler_task_started_cb) 440 self.handler.build.connect("task-started", self.handler_task_started_cb)
435 self.handler.build.connect("log-error", self.handler_build_failure_cb) 441 self.handler.build.connect("log-error", self.handler_build_failure_cb)
442 self.handler.build.connect("log", self.handler_build_log_cb)
436 self.handler.build.connect("no-provider", self.handler_no_provider_cb) 443 self.handler.build.connect("no-provider", self.handler_no_provider_cb)
437 self.handler.connect("generating-data", self.handler_generating_data_cb) 444 self.handler.connect("generating-data", self.handler_generating_data_cb)
438 self.handler.connect("data-generated", self.handler_data_generated_cb) 445 self.handler.connect("data-generated", self.handler_data_generated_cb)
@@ -501,25 +508,34 @@ class Builder(gtk.Window):
501 self.set_user_config() 508 self.set_user_config()
502 self.handler.generate_recipes() 509 self.handler.generate_recipes()
503 510
504 def generate_packages_async(self): 511 def generate_packages_async(self, log = False):
505 self.switch_page(self.PACKAGE_GENERATING) 512 self.switch_page(self.PACKAGE_GENERATING)
513 if log:
514 self.current_logfile = self.handler.get_logfile()
515 self.do_log(self.current_logfile)
506 # Build packages 516 # Build packages
507 _, all_recipes = self.recipe_model.get_selected_recipes() 517 _, all_recipes = self.recipe_model.get_selected_recipes()
508 self.set_user_config() 518 self.set_user_config()
509 self.handler.reset_build() 519 self.handler.reset_build()
510 self.handler.generate_packages(all_recipes, self.configuration.default_task) 520 self.handler.generate_packages(all_recipes, self.configuration.default_task)
511 521
512 def fast_generate_image_async(self): 522 def fast_generate_image_async(self, log = False):
513 self.switch_page(self.FAST_IMAGE_GENERATING) 523 self.switch_page(self.FAST_IMAGE_GENERATING)
524 if log:
525 self.current_logfile = self.handler.get_logfile()
526 self.do_log(self.current_logfile)
514 # Build packages 527 # Build packages
515 _, all_recipes = self.recipe_model.get_selected_recipes() 528 _, all_recipes = self.recipe_model.get_selected_recipes()
516 self.set_user_config() 529 self.set_user_config()
517 self.handler.reset_build() 530 self.handler.reset_build()
518 self.handler.generate_packages(all_recipes, self.configuration.default_task) 531 self.handler.generate_packages(all_recipes, self.configuration.default_task)
519 532
520 def generate_image_async(self): 533 def generate_image_async(self, cont = False):
521 self.switch_page(self.IMAGE_GENERATING) 534 self.switch_page(self.IMAGE_GENERATING)
522 self.handler.reset_build() 535 self.handler.reset_build()
536 if not cont:
537 self.current_logfile = self.handler.get_logfile()
538 self.do_log(self.current_logfile)
523 # Build image 539 # Build image
524 self.set_user_config() 540 self.set_user_config()
525 toolchain_packages = [] 541 toolchain_packages = []
@@ -627,14 +643,14 @@ class Builder(gtk.Window):
627 pass 643 pass
628 644
629 elif next_step == self.PACKAGE_SELECTION: 645 elif next_step == self.PACKAGE_SELECTION:
630 pass 646 self.package_details_page.show_page(self.current_logfile)
631 647
632 elif next_step == self.PACKAGE_GENERATING or next_step == self.FAST_IMAGE_GENERATING: 648 elif next_step == self.PACKAGE_GENERATING or next_step == self.FAST_IMAGE_GENERATING:
633 # both PACKAGE_GENEATING and FAST_IMAGE_GENERATING share the same page 649 # both PACKAGE_GENEATING and FAST_IMAGE_GENERATING share the same page
634 self.build_details_page.show_page(next_step) 650 self.build_details_page.show_page(next_step)
635 651
636 elif next_step == self.PACKAGE_GENERATED: 652 elif next_step == self.PACKAGE_GENERATED:
637 pass 653 self.package_details_page.show_page(self.current_logfile)
638 654
639 elif next_step == self.IMAGE_GENERATING: 655 elif next_step == self.IMAGE_GENERATING:
640 # after packages are generated, selected_packages need to 656 # after packages are generated, selected_packages need to
@@ -736,7 +752,7 @@ class Builder(gtk.Window):
736 752
737 self.rcppkglist_populated() 753 self.rcppkglist_populated()
738 if self.current_step == self.FAST_IMAGE_GENERATING: 754 if self.current_step == self.FAST_IMAGE_GENERATING:
739 self.generate_image_async() 755 self.generate_image_async(True)
740 756
741 def show_error_dialog(self, msg): 757 def show_error_dialog(self, msg):
742 lbl = "<b>Error</b>\n" 758 lbl = "<b>Error</b>\n"
@@ -963,6 +979,10 @@ class Builder(gtk.Window):
963 def handler_build_failure_cb(self, running_build): 979 def handler_build_failure_cb(self, running_build):
964 self.build_details_page.show_issues() 980 self.build_details_page.show_issues()
965 981
982 def handler_build_log_cb(self, running_build, func, obj):
983 if hasattr(self.logger, func):
984 getattr(self.logger, func)(obj)
985
966 def destroy_window_cb(self, widget, event): 986 def destroy_window_cb(self, widget, event):
967 if not self.sensitive: 987 if not self.sensitive:
968 return True 988 return True
@@ -992,7 +1012,7 @@ class Builder(gtk.Window):
992 dialog.run() 1012 dialog.run()
993 dialog.destroy() 1013 dialog.destroy()
994 return 1014 return
995 self.generate_packages_async() 1015 self.generate_packages_async(True)
996 1016
997 def build_image(self): 1017 def build_image(self):
998 selected_packages = self.package_model.get_selected_packages() 1018 selected_packages = self.package_model.get_selected_packages()
@@ -1005,7 +1025,7 @@ class Builder(gtk.Window):
1005 dialog.run() 1025 dialog.run()
1006 dialog.destroy() 1026 dialog.destroy()
1007 return 1027 return
1008 self.generate_image_async() 1028 self.generate_image_async(True)
1009 1029
1010 def just_bake(self): 1030 def just_bake(self):
1011 selected_image = self.recipe_model.get_selected_image() 1031 selected_image = self.recipe_model.get_selected_image()
@@ -1022,7 +1042,7 @@ class Builder(gtk.Window):
1022 dialog.destroy() 1042 dialog.destroy()
1023 return 1043 return
1024 1044
1025 self.fast_generate_image_async() 1045 self.fast_generate_image_async(True)
1026 1046
1027 def show_binb_dialog(self, binb): 1047 def show_binb_dialog(self, binb):
1028 markup = "<b>Brought in by:</b>\n%s" % binb 1048 markup = "<b>Brought in by:</b>\n%s" % binb
@@ -1241,7 +1261,7 @@ class Builder(gtk.Window):
1241 response = dialog.run() 1261 response = dialog.run()
1242 dialog.destroy() 1262 dialog.destroy()
1243 if response == gtk.RESPONSE_YES: 1263 if response == gtk.RESPONSE_YES:
1244 self.generate_packages_async() 1264 self.generate_packages_async(True)
1245 else: 1265 else:
1246 self.switch_page(self.PACKAGE_SELECTION) 1266 self.switch_page(self.PACKAGE_SELECTION)
1247 else: 1267 else:
@@ -1289,3 +1309,15 @@ class Builder(gtk.Window):
1289 self.cancel_build_sync() 1309 self.cancel_build_sync()
1290 elif response == gtk.RESPONSE_YES: 1310 elif response == gtk.RESPONSE_YES:
1291 self.cancel_build_sync(True) 1311 self.cancel_build_sync(True)
1312
1313 def do_log(self, consolelogfile = None):
1314 if consolelogfile:
1315 if self.consolelog:
1316 self.logger.removeHandler(self.consolelog)
1317 self.consolelog = None
1318 self.consolelog = logging.FileHandler(consolelogfile)
1319 bb.msg.addDefaultlogFilter(self.consolelog)
1320 format = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
1321 self.consolelog.setFormatter(format)
1322
1323 self.logger.addHandler(self.consolelog) \ No newline at end of file