bitbake: 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.

(Bitbake rev: a9e23e0066ea4dc16806ed3d269587ad1c895353)

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>
This commit is contained in:
Paul Barker 2015-10-22 15:21:49 +01:00 committed by Richard Purdie
parent 6b421cd7fe
commit fa55b8e505

View File

@ -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]
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:
# we must have not got the data for this image, nothing to save
pass
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)