summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/ui/buildinfohelper.py
diff options
context:
space:
mode:
authorAlexandru DAMIAN <alexandru.damian@intel.com>2013-11-01 15:58:28 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-11-04 10:52:59 +0000
commit1e6e27d98d04301bcef4c9f6b71720007dbf9fab (patch)
treefc102dc3d6152d4eead02a6f2fbfd1d5d7bc04dc /bitbake/lib/bb/ui/buildinfohelper.py
parent73293c64815f15fd671ebbfca9bea1b8df0d7f46 (diff)
downloadpoky-1e6e27d98d04301bcef4c9f6b71720007dbf9fab.tar.gz
bitbake: toaster: fixes for null values from events
Some of the data values may come of as None through the event system, and the UI would encounter a problem saving the Configuration. It would be trying to save these values as NULL in the database, which is not allowed. This patch adds more verification for data coming through the event system. Other minor updates: * update for the event model from toaster.bbclass * minor code flow fix in the event system (Bitbake rev: 03fafd086381723c6486522873671515824e49f2) 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/buildinfohelper.py')
-rw-r--r--bitbake/lib/bb/ui/buildinfohelper.py40
1 files changed, 18 insertions, 22 deletions
diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py
index fbb2620fda..5881d136c2 100644
--- a/bitbake/lib/bb/ui/buildinfohelper.py
+++ b/bitbake/lib/bb/ui/buildinfohelper.py
@@ -171,7 +171,7 @@ class ORMWrapper(object):
171 return log_object.save() 171 return log_object.save()
172 172
173 173
174 def save_build_package_information(self, build_obj, package_info, recipes, files): 174 def save_build_package_information(self, build_obj, package_info, recipes):
175 # create and save the object 175 # create and save the object
176 bp_object = Build_Package.objects.create( build = build_obj, 176 bp_object = Build_Package.objects.create( build = build_obj,
177 recipe = recipes[package_info['PN']], 177 recipe = recipes[package_info['PN']],
@@ -185,35 +185,33 @@ class ORMWrapper(object):
185 license = package_info['LICENSE'], 185 license = package_info['LICENSE'],
186 ) 186 )
187 # save any attached file information 187 # save any attached file information
188 if bp_object.name in files.keys(): 188 for path in package_info['FILES_INFO']:
189 for path, size in files[bp_object.name]:
190 fo = Build_File.objects.create( bpackage = bp_object, 189 fo = Build_File.objects.create( bpackage = bp_object,
191 path = path, 190 path = path,
192 size = size ) 191 size = package_info['FILES_INFO'][path] )
193 del files[bp_object.name]
194 192
195 # save soft dependency information 193 # save soft dependency information
196 if package_info['RDEPENDS']: 194 if 'RDEPENDS' in package_info and package_info['RDEPENDS']:
197 for p in bb.utils.explode_deps(package_info['RDEPENDS']): 195 for p in bb.utils.explode_deps(package_info['RDEPENDS']):
198 Build_Package_Dependency.objects.get_or_create( package = bp_object, 196 Build_Package_Dependency.objects.get_or_create( package = bp_object,
199 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RDEPENDS) 197 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RDEPENDS)
200 if package_info['RPROVIDES']: 198 if 'RPROVIDES' in package_info and package_info['RPROVIDES']:
201 for p in bb.utils.explode_deps(package_info['RPROVIDES']): 199 for p in bb.utils.explode_deps(package_info['RPROVIDES']):
202 Build_Package_Dependency.objects.get_or_create( package = bp_object, 200 Build_Package_Dependency.objects.get_or_create( package = bp_object,
203 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RPROVIDES) 201 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RPROVIDES)
204 if package_info['RRECOMMENDS']: 202 if 'RRECOMMENDS' in package_info and package_info['RRECOMMENDS']:
205 for p in bb.utils.explode_deps(package_info['RRECOMMENDS']): 203 for p in bb.utils.explode_deps(package_info['RRECOMMENDS']):
206 Build_Package_Dependency.objects.get_or_create( package = bp_object, 204 Build_Package_Dependency.objects.get_or_create( package = bp_object,
207 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RRECOMMENDS) 205 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RRECOMMENDS)
208 if package_info['RSUGGESTS']: 206 if 'RSUGGESTS' in package_info and package_info['RSUGGESTS']:
209 for p in bb.utils.explode_deps(package_info['RSUGGESTS']): 207 for p in bb.utils.explode_deps(package_info['RSUGGESTS']):
210 Build_Package_Dependency.objects.get_or_create( package = bp_object, 208 Build_Package_Dependency.objects.get_or_create( package = bp_object,
211 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RSUGGESTS) 209 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RSUGGESTS)
212 if package_info['RREPLACES']: 210 if 'RREPLACES' in package_info and package_info['RREPLACES']:
213 for p in bb.utils.explode_deps(package_info['RREPLACES']): 211 for p in bb.utils.explode_deps(package_info['RREPLACES']):
214 Build_Package_Dependency.objects.get_or_create( package = bp_object, 212 Build_Package_Dependency.objects.get_or_create( package = bp_object,
215 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RREPLACES) 213 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RREPLACES)
216 if package_info['RCONFLICTS']: 214 if 'RCONFLICTS' in package_info and package_info['RCONFLICTS']:
217 for p in bb.utils.explode_deps(package_info['RCONFLICTS']): 215 for p in bb.utils.explode_deps(package_info['RCONFLICTS']):
218 Build_Package_Dependency.objects.get_or_create( package = bp_object, 216 Build_Package_Dependency.objects.get_or_create( package = bp_object,
219 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RCONFLICTS) 217 depends_on = p, dep_type = Build_Package_Dependency.TYPE_RCONFLICTS)
@@ -223,10 +221,16 @@ class ORMWrapper(object):
223 def save_build_variables(self, build_obj, vardump): 221 def save_build_variables(self, build_obj, vardump):
224 for k in vardump: 222 for k in vardump:
225 if not bool(vardump[k]['func']): 223 if not bool(vardump[k]['func']):
224 value = vardump[k]['v'];
225 if value is None:
226 value = ''
227 desc = vardump[k]['doc'];
228 if desc is None:
229 desc = ''
226 Variable.objects.create( build = build_obj, 230 Variable.objects.create( build = build_obj,
227 variable_name = k, 231 variable_name = k,
228 variable_value = vardump[k]['v'], 232 variable_value = value,
229 description = vardump[k]['doc']) 233 description = desc)
230 234
231 235
232class BuildInfoHelper(object): 236class BuildInfoHelper(object):
@@ -668,15 +672,7 @@ class BuildInfoHelper(object):
668 self.orm_wrapper.save_build_package_information(self.internal_state['build'], 672 self.orm_wrapper.save_build_package_information(self.internal_state['build'],
669 package_info, 673 package_info,
670 self.internal_state['recipes'], 674 self.internal_state['recipes'],
671 self.internal_state['package_files']) 675 )
672
673
674 def store_package_file_information(self, event):
675 if not 'package_files' in self.internal_state.keys():
676 self.internal_state['package_files'] = {}
677
678 data = event.data
679 self.internal_state['package_files'][data['PKG']] = data['FILES']
680 676
681 def _store_log_information(self, level, text): 677 def _store_log_information(self, level, text):
682 log_information = {} 678 log_information = {}