diff options
author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2014-11-26 17:09:16 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-11-28 14:03:00 +0000 |
commit | af51fb06740768a85f4840ff2f93ef0c73f46877 (patch) | |
tree | da089effb729bec6d5817047b35ff77e44aacb24 | |
parent | dc1be9c4380bb7ee3b4422ee0d34bfcee8082762 (diff) | |
download | poky-af51fb06740768a85f4840ff2f93ef0c73f46877.tar.gz |
bitbake: toasterui: Compatibility patch for daisy and dizzy
This patch brings in changes that allow a toasterUI coming in
from 'master' branch to record data from a 'daisy' or 'dizzy'
bitbake server.
This is needed to allow Toaster to record builds running
on older branch releases.
(Bitbake rev: 8d75e28e0688a6520311afce36543175f36910b3)
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/bb/ui/buildinfohelper.py | 43 | ||||
-rw-r--r-- | bitbake/lib/bb/ui/toasterui.py | 3 |
2 files changed, 27 insertions, 19 deletions
diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py index e428e4c649..9aa8fe319f 100644 --- a/bitbake/lib/bb/ui/buildinfohelper.py +++ b/bitbake/lib/bb/ui/buildinfohelper.py | |||
@@ -695,10 +695,19 @@ class BuildInfoHelper(object): | |||
695 | 695 | ||
696 | ################################ | 696 | ################################ |
697 | ## external available methods to store information | 697 | ## external available methods to store information |
698 | @staticmethod | ||
699 | def _get_data_from_event(event): | ||
700 | evdata = None | ||
701 | if '_localdata' in vars(event): | ||
702 | evdata = event._localdata | ||
703 | elif 'data' in vars(event): | ||
704 | evdata = event.data | ||
705 | else: | ||
706 | raise Exception("Event with neither _localdata or data properties") | ||
707 | return evdata | ||
698 | 708 | ||
699 | def store_layer_info(self, event): | 709 | def store_layer_info(self, event): |
700 | assert '_localdata' in vars(event) | 710 | layerinfos = BuildInfoHelper._get_data_from_event(event) |
701 | layerinfos = event._localdata | ||
702 | self.internal_state['lvs'] = {} | 711 | self.internal_state['lvs'] = {} |
703 | for layer in layerinfos: | 712 | for layer in layerinfos: |
704 | self.internal_state['lvs'][self.orm_wrapper.get_update_layer_object(layerinfos[layer], self.brbe)] = layerinfos[layer]['version'] | 713 | self.internal_state['lvs'][self.orm_wrapper.get_update_layer_object(layerinfos[layer], self.brbe)] = layerinfos[layer]['version'] |
@@ -732,15 +741,16 @@ class BuildInfoHelper(object): | |||
732 | return self.brbe | 741 | return self.brbe |
733 | 742 | ||
734 | 743 | ||
735 | |||
736 | def update_target_image_file(self, event): | 744 | def update_target_image_file(self, event): |
737 | image_fstypes = self.server.runCommand(["getVariable", "IMAGE_FSTYPES"])[0] | 745 | image_fstypes = self.server.runCommand(["getVariable", "IMAGE_FSTYPES"])[0] |
746 | evdata = BuildInfoHelper._get_data_from_event(event) | ||
747 | |||
738 | for t in self.internal_state['targets']: | 748 | for t in self.internal_state['targets']: |
739 | if t.is_image == True: | 749 | if t.is_image == True: |
740 | output_files = list(event._localdata.viewkeys()) | 750 | output_files = list(evdata.viewkeys()) |
741 | for output in output_files: | 751 | for output in output_files: |
742 | if t.target in output and output.split('.rootfs.')[1] in image_fstypes: | 752 | if t.target in output and output.split('.rootfs.')[1] in image_fstypes: |
743 | self.orm_wrapper.save_target_image_file_information(t, output, event._localdata[output]) | 753 | self.orm_wrapper.save_target_image_file_information(t, output, evdata[output]) |
744 | 754 | ||
745 | def update_build_information(self, event, errors, warnings, taskfailures): | 755 | def update_build_information(self, event, errors, warnings, taskfailures): |
746 | if 'build' in self.internal_state: | 756 | if 'build' in self.internal_state: |
@@ -748,8 +758,8 @@ class BuildInfoHelper(object): | |||
748 | 758 | ||
749 | 759 | ||
750 | def store_license_manifest_path(self, event): | 760 | def store_license_manifest_path(self, event): |
751 | deploy_dir = event._localdata['deploy_dir'] | 761 | deploy_dir = BuildInfoHelper._get_data_from_event(event)['deploy_dir'] |
752 | image_name = event._localdata['image_name'] | 762 | image_name = BuildInfoHelper._get_data_from_event(event)['image_name'] |
753 | path = deploy_dir + "/licenses/" + image_name + "/" | 763 | path = deploy_dir + "/licenses/" + image_name + "/" |
754 | for target in self.internal_state['targets']: | 764 | for target in self.internal_state['targets']: |
755 | if target.target in image_name: | 765 | if target.target in image_name: |
@@ -797,7 +807,7 @@ class BuildInfoHelper(object): | |||
797 | 807 | ||
798 | 808 | ||
799 | def store_tasks_stats(self, event): | 809 | def store_tasks_stats(self, event): |
800 | for (taskfile, taskname, taskstats, recipename) in event._localdata: | 810 | for (taskfile, taskname, taskstats, recipename) in BuildInfoHelper._get_data_from_event(event): |
801 | localfilepath = taskfile.split(":")[-1] | 811 | localfilepath = taskfile.split(":")[-1] |
802 | assert localfilepath.startswith("/") | 812 | assert localfilepath.startswith("/") |
803 | 813 | ||
@@ -812,7 +822,8 @@ class BuildInfoHelper(object): | |||
812 | task_information['task_name'] = taskname | 822 | task_information['task_name'] = taskname |
813 | task_information['cpu_usage'] = taskstats['cpu_usage'] | 823 | task_information['cpu_usage'] = taskstats['cpu_usage'] |
814 | task_information['disk_io'] = taskstats['disk_io'] | 824 | task_information['disk_io'] = taskstats['disk_io'] |
815 | task_information['elapsed_time'] = taskstats['elapsed_time'] | 825 | if 'elapsed_time' in taskstats: |
826 | task_information['elapsed_time'] = taskstats['elapsed_time'] | ||
816 | task_obj = self.orm_wrapper.get_update_task_object(task_information, True) # must exist | 827 | task_obj = self.orm_wrapper.get_update_task_object(task_information, True) # must exist |
817 | 828 | ||
818 | def update_and_store_task(self, event): | 829 | def update_and_store_task(self, event): |
@@ -870,7 +881,7 @@ class BuildInfoHelper(object): | |||
870 | 881 | ||
871 | 882 | ||
872 | def store_missed_state_tasks(self, event): | 883 | def store_missed_state_tasks(self, event): |
873 | for (fn, taskname, taskhash, sstatefile) in event._localdata['missed']: | 884 | for (fn, taskname, taskhash, sstatefile) in BuildInfoHelper._get_data_from_event(event)['missed']: |
874 | 885 | ||
875 | identifier = fn + taskname + "_setscene" | 886 | identifier = fn + taskname + "_setscene" |
876 | recipe_information = self._get_recipe_information_from_taskfile(fn) | 887 | recipe_information = self._get_recipe_information_from_taskfile(fn) |
@@ -888,7 +899,7 @@ class BuildInfoHelper(object): | |||
888 | 899 | ||
889 | self.orm_wrapper.get_update_task_object(task_information) | 900 | self.orm_wrapper.get_update_task_object(task_information) |
890 | 901 | ||
891 | for (fn, taskname, taskhash, sstatefile) in event._localdata['found']: | 902 | for (fn, taskname, taskhash, sstatefile) in BuildInfoHelper._get_data_from_event(event)['found']: |
892 | 903 | ||
893 | identifier = fn + taskname + "_setscene" | 904 | identifier = fn + taskname + "_setscene" |
894 | recipe_information = self._get_recipe_information_from_taskfile(fn) | 905 | recipe_information = self._get_recipe_information_from_taskfile(fn) |
@@ -904,15 +915,14 @@ class BuildInfoHelper(object): | |||
904 | 915 | ||
905 | 916 | ||
906 | def store_target_package_data(self, event): | 917 | def store_target_package_data(self, event): |
907 | assert '_localdata' in vars(event) | ||
908 | # for all image targets | 918 | # for all image targets |
909 | for target in self.internal_state['targets']: | 919 | for target in self.internal_state['targets']: |
910 | if target.is_image: | 920 | if target.is_image: |
911 | try: | 921 | try: |
912 | pkgdata = event._localdata['pkgdata'] | 922 | pkgdata = BuildInfoHelper._get_data_from_event(event)['pkgdata'] |
913 | imgdata = event._localdata['imgdata'][target.target] | 923 | imgdata = BuildInfoHelper._get_data_from_event(event)['imgdata'][target.target] |
914 | self.orm_wrapper.save_target_package_information(self.internal_state['build'], target, imgdata, pkgdata, self.internal_state['recipes']) | 924 | self.orm_wrapper.save_target_package_information(self.internal_state['build'], target, imgdata, pkgdata, self.internal_state['recipes']) |
915 | filedata = event._localdata['filedata'][target.target] | 925 | filedata = BuildInfoHelper._get_data_from_event(event)['filedata'][target.target] |
916 | self.orm_wrapper.save_target_file_information(self.internal_state['build'], target, filedata) | 926 | self.orm_wrapper.save_target_file_information(self.internal_state['build'], target, filedata) |
917 | except KeyError: | 927 | except KeyError: |
918 | # we must have not got the data for this image, nothing to save | 928 | # we must have not got the data for this image, nothing to save |
@@ -1026,8 +1036,7 @@ class BuildInfoHelper(object): | |||
1026 | 1036 | ||
1027 | 1037 | ||
1028 | def store_build_package_information(self, event): | 1038 | def store_build_package_information(self, event): |
1029 | assert '_localdata' in vars(event) | 1039 | package_info = BuildInfoHelper._get_data_from_event(event) |
1030 | package_info = event._localdata | ||
1031 | self.orm_wrapper.save_build_package_information(self.internal_state['build'], | 1040 | self.orm_wrapper.save_build_package_information(self.internal_state['build'], |
1032 | package_info, | 1041 | package_info, |
1033 | self.internal_state['recipes'], | 1042 | self.internal_state['recipes'], |
diff --git a/bitbake/lib/bb/ui/toasterui.py b/bitbake/lib/bb/ui/toasterui.py index 9bd04df1c6..3a6104bcab 100644 --- a/bitbake/lib/bb/ui/toasterui.py +++ b/bitbake/lib/bb/ui/toasterui.py | |||
@@ -296,10 +296,9 @@ def main(server, eventHandler, params ): | |||
296 | pass | 296 | pass |
297 | except Exception as e: | 297 | except Exception as e: |
298 | # print errors to log | 298 | # print errors to log |
299 | logger.error(e) | ||
300 | import traceback | 299 | import traceback |
301 | exception_data = traceback.format_exc() | 300 | exception_data = traceback.format_exc() |
302 | print(exception_data) | 301 | logger.error("%s\n%s" % (e, exception_data)) |
303 | 302 | ||
304 | # save them to database, if possible; if it fails, we already logged to console. | 303 | # save them to database, if possible; if it fails, we already logged to console. |
305 | try: | 304 | try: |