[bitbake-devel] [PATCH] cooker: bitbake memres server should not always reload the cache
Alex Damian
alex.r.damian at gmail.com
Fri Mar 28 11:43:25 UTC 2014
Please hold merging this change.
I think we need to discuss a bit on this. My expectation is that the
Bitbake server will reinit its state between builds, re-parsing the
configuration files and reload the cache.
I am not sure why we would consider maintaining the hot cache copy in
memory between builds.
The patch for bug
https://bugzilla.yoctoproject.org/show_bug.cgi?id=5535will re-create
the exact same scenario that we try to change through this
patch, so
I think we need to clarify the issue before moving forward.
Thanks,
Alex
On Wed, Mar 26, 2014 at 8:05 AM, Cristiana Voicu
<cristiana.voicu at intel.com>wrote:
> Due to commit dd15648fc2654b8d7c3e00ea7ab3dbf04f24f24b, after an async
> command is executed, the state of the server is set back to state.initial,
> so the cache is always reloaded.
> This patch adds a sanity check on the validity of the cache and then only
> reload if something has changed.
> depends_cache variable is needed in this case, so the del statement needs
> to be removed.
>
> [YOCTO #5603]
> Signed-off-by: Cristiana Voicu <cristiana.voicu at intel.com>
> ---
> bitbake/lib/bb/cache.py | 2 --
> bitbake/lib/bb/cooker.py | 32 ++++++++++++++++++++++----------
> 2 files changed, 22 insertions(+), 12 deletions(-)
>
> diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py
> index 318781b..da9ad5d 100644
> --- a/bitbake/lib/bb/cache.py
> +++ b/bitbake/lib/bb/cache.py
> @@ -612,8 +612,6 @@ class Cache(object):
> cache_class_name = cache_class.__name__
> file_dict[cache_class_name].close()
>
> - del self.depends_cache
> -
> @staticmethod
> def mtime(cachefile):
> return bb.parse.cached_mtime_noerror(cachefile)
> diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
> index 07202e3..c90bb44 100644
> --- a/bitbake/lib/bb/cooker.py
> +++ b/bitbake/lib/bb/cooker.py
> @@ -1265,21 +1265,33 @@ class BBCooker:
> raise bb.BBHandledException()
>
> if self.state != state.parsing:
> - self.parseConfiguration ()
> + check_cache = False
> + if self.parser:
> + self.parser.bb_cache.checked = set()
> + for filename in self.parser.filelist:
> + appends = self.collection.get_file_appends(filename)
> + if not self.parser.bb_cache.cacheValid(filename,
> appends):
> + check_cache = True
> + break
> + else:
> + check_cache = True
>
> - ignore = self.data.getVar("ASSUME_PROVIDED", True) or ""
> - self.recipecache.ignored_dependencies = set(ignore.split())
> + if check_cache:
> + self.parseConfiguration ()
> +
> + ignore = self.data.getVar("ASSUME_PROVIDED", True) or ""
> + self.recipecache.ignored_dependencies =
> set(ignore.split())
>
> - for dep in self.configuration.extra_assume_provided:
> - self.recipecache.ignored_dependencies.add(dep)
> + for dep in self.configuration.extra_assume_provided:
> + self.recipecache.ignored_dependencies.add(dep)
>
> - self.collection =
> CookerCollectFiles(self.recipecache.bbfile_config_priorities)
> - (filelist, masked) =
> self.collection.collect_bbfiles(self.data, self.event_data)
> + self.collection =
> CookerCollectFiles(self.recipecache.bbfile_config_priorities)
> + (filelist, masked) =
> self.collection.collect_bbfiles(self.data, self.event_data)
>
> - self.data.renameVar("__depends", "__base_depends")
> + self.data.renameVar("__depends", "__base_depends")
>
> - self.parser = CookerParser(self, filelist, masked)
> - self.state = state.parsing
> + self.parser = CookerParser(self, filelist, masked)
> + self.state = state.parsing
>
> if not self.parser.parse_next():
> collectlog.debug(1, "parsing complete")
> --
> 1.7.9.5
>
> --
> _______________________________________________
> bitbake-devel mailing list
> bitbake-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/bitbake-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/bitbake-devel/attachments/20140328/f106e93f/attachment-0002.html>
More information about the bitbake-devel
mailing list