Patchwork packagedata: Add warnings if multiple recipes try to write the same package

login
register
mail settings
Submitter Richard Purdie
Date Jan. 21, 2013, 10:49 p.m.
Message ID <1358808590.14265.73.camel@ted>
Download mbox | patch
Permalink /patch/43105/
State Accepted
Commit 1f8f6fe4eb6884ac3a254d4ef54c7841e407ecab
Headers show

Comments

Richard Purdie - Jan. 21, 2013, 10:49 p.m.
If multiple recipes try and write the same package it resulted in a
rather confusing traceback and unintuitive error. This patch
prints a human readable error instead.

[YOCTO #3645]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
Martin Jansa - Jan. 22, 2013, 12:08 p.m.
On Mon, Jan 21, 2013 at 10:49:50PM +0000, Richard Purdie wrote:
> If multiple recipes try and write the same package it resulted in a
> rather confusing traceback and unintuitive error. This patch
> prints a human readable error instead.

bitbake world found 2 more recipes creating the same package:
vim/gvim in meta-oe
gnome-panel3_3.0.2.bb/gnome-panel_2.32.1.b in meta-gnome

But this error is a lot better then that traceback, maybe change commit
message to say fatal errors instead of warnings.

Acked-by: Martin Jansa <Martin.Jansa@gmail.com>

Cheers,

> 
> [YOCTO #3645]
> 
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> ---
> diff --git a/meta/classes/packagedata.bbclass b/meta/classes/packagedata.bbclass
> index 790d874..120cd64 100644
> --- a/meta/classes/packagedata.bbclass
> +++ b/meta/classes/packagedata.bbclass
> @@ -1,7 +1,8 @@
>  python read_subpackage_metadata () {
>      import oe.packagedata
>  
> -    data = oe.packagedata.read_pkgdata(d.getVar('PN', True), d)
> +    pn = d.getVar('PN', True)
> +    data = oe.packagedata.read_pkgdata(pn, d)
>  
>      for key in data.keys():
>          d.setVar(key, data[key])
> @@ -9,5 +10,9 @@ python read_subpackage_metadata () {
>      for pkg in d.getVar('PACKAGES', True).split():
>          sdata = oe.packagedata.read_subpkgdata(pkg, d)
>          for key in sdata.keys():
> +            if key == "PN":
> +                if sdata[key] != pn:
> +                    bb.fatal("Recipe %s is trying to create package %s which was already written by recipe %s. This will cause corruption, please resolve this and only provide the package from one recipe or the other or only build one of the recipes." % (pn, pkg, sdata[key]))
> +                continue
>              d.setVar(key, sdata[key])
>  }
> 
> 
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Patch

diff --git a/meta/classes/packagedata.bbclass b/meta/classes/packagedata.bbclass
index 790d874..120cd64 100644
--- a/meta/classes/packagedata.bbclass
+++ b/meta/classes/packagedata.bbclass
@@ -1,7 +1,8 @@ 
 python read_subpackage_metadata () {
     import oe.packagedata
 
-    data = oe.packagedata.read_pkgdata(d.getVar('PN', True), d)
+    pn = d.getVar('PN', True)
+    data = oe.packagedata.read_pkgdata(pn, d)
 
     for key in data.keys():
         d.setVar(key, data[key])
@@ -9,5 +10,9 @@  python read_subpackage_metadata () {
     for pkg in d.getVar('PACKAGES', True).split():
         sdata = oe.packagedata.read_subpkgdata(pkg, d)
         for key in sdata.keys():
+            if key == "PN":
+                if sdata[key] != pn:
+                    bb.fatal("Recipe %s is trying to create package %s which was already written by recipe %s. This will cause corruption, please resolve this and only provide the package from one recipe or the other or only build one of the recipes." % (pn, pkg, sdata[key]))
+                continue
             d.setVar(key, sdata[key])
 }