summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Barker <paul.barker@commagility.com>2015-10-22 15:21:49 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-10-24 11:59:00 +0100
commita9e23e0066ea4dc16806ed3d269587ad1c895353 (patch)
tree70256a3463ca1ca7a7ac1dc5d617d1d9046f891c
parented30f4ee1cef8db9ea422c5e54b2375c4f3b1d6f (diff)
downloadbitbake-a9e23e0066ea4dc16806ed3d269587ad1c895353.tar.gz
toaster: buildinfohelper Skip packages we have no build info about
If there are more packages listed as installed than we know about from bitbake, and therefore have insufficient information to be able to create a Toaster Package object then skip it. Also handle the case where a dependency references such a package. Also clarify the error logging. Signed-off-by: Paul Barker <paul.barker@commagility.com> Cc: Michael Wood <michael.g.wood@intel.com> Cc: Elliot Smith <elliot.smith@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/ui/buildinfohelper.py40
1 files changed, 28 insertions, 12 deletions
diff --git a/lib/bb/ui/buildinfohelper.py b/lib/bb/ui/buildinfohelper.py
index 64bd94e5e..f7e0bfb5c 100644
--- a/lib/bb/ui/buildinfohelper.py
+++ b/lib/bb/ui/buildinfohelper.py
@@ -419,6 +419,11 @@ class ORMWrapper(object):
errormsg = ""
for p in packagedict:
searchname = p
+ if p not in pkgpnmap:
+ logger.warning("Image packages list contains %p, but is"
+ " missing from all packages list where the"
+ " metadata comes from. Skipping...", p)
+ continue
if 'OPKGN' in pkgpnmap[p].keys():
searchname = pkgpnmap[p]['OPKGN']
@@ -462,13 +467,20 @@ class ORMWrapper(object):
elif deptype == 'recommends':
tdeptype = Package_Dependency.TYPE_TRECOMMENDS
- packagedeps_objs.append(Package_Dependency( package = packagedict[p]['object'],
- depends_on = packagedict[px]['object'],
- dep_type = tdeptype,
- target = target_obj))
+ try:
+ packagedeps_objs.append(Package_Dependency(
+ package = packagedict[p]['object'],
+ depends_on = packagedict[px]['object'],
+ dep_type = tdeptype,
+ target = target_obj))
+ except KeyError as e:
+ logger.warn("Could not add dependency to the package %s "
+ "because %s is an unknown package", p, px)
if len(packagedeps_objs) > 0:
Package_Dependency.objects.bulk_create(packagedeps_objs)
+ else:
+ logger.info("No package dependencies created")
if (len(errormsg) > 0):
logger.warn("buildinfohelper: target_package_info could not identify recipes: \n%s" % errormsg)
@@ -1015,17 +1027,21 @@ class BuildInfoHelper(object):
# for all image targets
for target in self.internal_state['targets']:
if target.is_image:
+ pkgdata = BuildInfoHelper._get_data_from_event(event)['pkgdata']
+ imgdata = BuildInfoHelper._get_data_from_event(event)['imgdata'][target.target]
+ filedata = BuildInfoHelper._get_data_from_event(event)['filedata'][target.target]
+
try:
- pkgdata = BuildInfoHelper._get_data_from_event(event)['pkgdata']
- imgdata = BuildInfoHelper._get_data_from_event(event)['imgdata'][target.target]
self.orm_wrapper.save_target_package_information(self.internal_state['build'], target, imgdata, pkgdata, self.internal_state['recipes'])
- filedata = BuildInfoHelper._get_data_from_event(event)['filedata'][target.target]
- self.orm_wrapper.save_target_file_information(self.internal_state['build'], target, filedata)
- except KeyError:
- # we must have not got the data for this image, nothing to save
- pass
-
+ except KeyError as e:
+ logger.warn("KeyError in save_target_package_information"
+ "%s ", e)
+ try:
+ self.orm_wrapper.save_target_file_information(self.internal_state['build'], target, filedata)
+ except KeyError as e:
+ logger.warn("KeyError in save_target_file_information"
+ "%s ", e)
def store_dependency_information(self, event):
assert '_depgraph' in vars(event)