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 /bitbake/lib/bb/ui | |
| 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>
Diffstat (limited to 'bitbake/lib/bb/ui')
| -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: |
