bitbake/cache.py: Ensure skipped recipes make it into the cache to avoid reparsing

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2011-04-10 10:55:48 -07:00
parent c8928e93dd
commit 001a555c2f
3 changed files with 14 additions and 5 deletions

View File

@ -129,7 +129,10 @@ class RecipeInfo(namedtuple('RecipeInfo', recipe_fields)):
@classmethod
def from_metadata(cls, filename, metadata):
if cls.getvar('__SKIPPED', metadata):
return cls.make_optional(skipped=True)
return cls.make_optional(skipped=True,
file_depends=metadata.getVar('__depends', False),
timestamp=bb.parse.cached_mtime(filename),
variants=cls.listvar('__VARIANTS', metadata) + [''])
tasks = metadata.getVar('__BBTASKS', False)
@ -480,11 +483,13 @@ class Cache(object):
return bb.parse.cached_mtime_noerror(cachefile)
def add_info(self, filename, info, cacheData, parsed=None):
cacheData.add_from_recipeinfo(filename, info)
if not info.skipped:
cacheData.add_from_recipeinfo(filename, info)
if not self.has_cache:
return
if 'SRCREVINACTION' not in info.pv and not info.nocache:
if (info.skipped or 'SRCREVINACTION' not in info.pv) and not info.nocache:
if parsed:
self.cacheclean = False
self.depends_cache[filename] = info

View File

@ -1169,8 +1169,7 @@ class CookerParser(object):
for virtualfn, info in result:
if info.skipped:
self.skipped += 1
else:
self.bb_cache.add_info(virtualfn, info, self.cooker.status,
self.bb_cache.add_info(virtualfn, info, self.cooker.status,
parsed=parsed)
return True

View File

@ -150,12 +150,17 @@ def main(server, eventHandler):
logger.info(event._message)
continue
if isinstance(event, bb.event.ParseStarted):
if event.total == 0:
continue
parseprogress = new_progress("Parsing recipes", event.total).start()
continue
if isinstance(event, bb.event.ParseProgress):
parseprogress.update(event.current)
continue
if isinstance(event, bb.event.ParseCompleted):
if not parseprogress:
continue
parseprogress.finish()
print(("Parsing of %d .bb files complete (%d cached, %d parsed). %d targets, %d skipped, %d masked, %d errors."
% ( event.total, event.cached, event.parsed, event.virtuals, event.skipped, event.masked, event.errors)))