Patchwork [bitbake-devel,4/7] bitbake: cooker: add extra recipe information

login
register
mail settings
Submitter Richard Purdie
Date Sept. 16, 2013, 2:10 p.m.
Message ID <1379340656.3484.309.camel@ted>
Download mbox | patch
Permalink /patch/58157/
State New
Headers show

Comments

Richard Purdie - Sept. 16, 2013, 2:10 p.m.
On Mon, 2013-09-16 at 14:33 +0100, Alex DAMIAN wrote:
> From: Alexandru DAMIAN <alexandru.damian@intel.com>
> 
> Adding in the extra recipe information when creating
> the dependency tree information.
> 
> This works in server-mode because the HOB extra_cache
> is already enabled. In normal mode, it will do nothing
> with no performance impact.
> 
> Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
> ---
>  bitbake/lib/bb/cooker.py | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
> index 68a3c01..cb0e3e5 100644
> --- a/bitbake/lib/bb/cooker.py
> +++ b/bitbake/lib/bb/cooker.py
> @@ -439,6 +439,29 @@ class BBCooker:
>                  depend_tree["pn"][pn] = {}
>                  depend_tree["pn"][pn]["filename"] = fn
>                  depend_tree["pn"][pn]["version"] = version
> +
> +                # This data is needed for webhob;
> +                # it's here if the bitbake runs in server mode
> +                try:
> +                    summary = self.recipecache.summary[fn]
> +                    lic = self.recipecache.license[fn]
> +                    section = self.recipecache.section[fn]
> +                    description = self.recipecache.description[fn]
> +                    homepage = self.recipecache.homepage[fn]
> +                    bugtracker = self.recipecache.bugtracker[fn]
> +                    inherits = self.recipecache.inherits.get(fn, None)
> +                    depend_tree["pn"][pn]["filename"] = fn
> +                    depend_tree["pn"][pn]["version"] = version
> +                    depend_tree["pn"][pn]["summary"] = summary
> +                    depend_tree["pn"][pn]["license"] = lic
> +                    depend_tree["pn"][pn]["section"] = section
> +                    depend_tree["pn"][pn]["description"] = description
> +                    depend_tree["pn"][pn]["inherits"] = inherits
> +                    depend_tree["pn"][pn]["homepage"] = homepage
> +                    depend_tree["pn"][pn]["bugtracker"] = bugtracker
> +                except:
> +                    pass
> +
>              for dep in rq.rqdata.runq_depends[task]:
>                  depfn = taskdata.fn_index[rq.rqdata.runq_fnid[dep]]
>                  deppn = self.recipecache.pkg_fn[depfn]

This is horrible, please try and do something like:

cache info file which generated the data. You might as well fix the
hardcoding in the following function marked with:

     ######## WARNING : this function requires cache_extra to be enabled ########

to use this approach too whilst you're doing this.

Thanks,

Richard

Patch

diff --git a/bitbake/lib/bb/cache_extra.py b/bitbake/lib/bb/cache_extra.py
index 9e38a43..041ba0e 100644
--- a/bitbake/lib/bb/cache_extra.py
+++ b/bitbake/lib/bb/cache_extra.py
@@ -67,3 +67,6 @@  class HobRecipeInfo(RecipeInfoCommon):
         cachedata.bugtracker[fn] = self.bugtracker
         cachedata.prevision[fn] = self.prevision
         cachedata.files_info[fn] = self.files_info
+
+    @staticmethod
+    def addDepTreePackageInfo(xxx)
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 2c8d4dc..84d62e5 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -485,6 +485,10 @@  class BBCooker:
                         depend_tree["packages"][package]["filename"] = fn
                         depend_tree["packages"][package]["version"] = version
 
+                        for extracache in self.cooker.caches_array:
+                            if <executable function>:
+                                 <function>(depend_tree["packages"][package])
+
         return depend_tree

so the extra cache info is added as a staticmethod function in the extra