Patchwork [36/52] gettext.bbclass: Use _append instead of =+

login
register
mail settings
Submitter Richard Purdie
Date May 3, 2011, 12:14 p.m.
Message ID <1304424898.21461.107.camel@rex>
Download mbox | patch
Permalink /patch/3095/
State New, archived
Headers show

Comments

Richard Purdie - May 3, 2011, 12:14 p.m.
On Fri, 2011-04-29 at 09:11 -0700, Khem Raj wrote:
> On Thu, Apr 28, 2011 at 2:01 AM, Richard Purdie
> <richard.purdie@linuxfoundation.org> wrote:
> > We can make this simpler. We should just setVar("DEPENDS_GETTEXT", "")
> > in the INHIBIT_DEFAULT_DEPS case. If anything is expanding the variables
> > somewhere, we should fix that.
> >
> 
> Infact the virtclass stuff complicates this since they are evaluated
> specially and I am not clear weather _append gets
> evaluation before that or after and also the anon python function
> evaluation as the one we are defining in this class.
> 
> I tried to empty out DEPENDS_GETTEXT but it does not work in nativesdk cases.

I still think we can simplify this. Could you try the following patch
please?:
Khem Raj - May 3, 2011, 6:04 p.m.
On (03/05/11 13:14), Richard Purdie wrote:
> On Fri, 2011-04-29 at 09:11 -0700, Khem Raj wrote:
> > On Thu, Apr 28, 2011 at 2:01 AM, Richard Purdie
> > <richard.purdie@linuxfoundation.org> wrote:
> > > We can make this simpler. We should just setVar("DEPENDS_GETTEXT", "")
> > > in the INHIBIT_DEFAULT_DEPS case. If anything is expanding the variables
> > > somewhere, we should fix that.
> > >
> > 
> > Infact the virtclass stuff complicates this since they are evaluated
> > specially and I am not clear weather _append gets
> > evaluation before that or after and also the anon python function
> > evaluation as the one we are defining in this class.
> > 
> > I tried to empty out DEPENDS_GETTEXT but it does not work in nativesdk cases.
> 
> I still think we can simplify this. Could you try the following patch
> please?:
> 
> diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
> index 4f20bc2..3b83e42 100644
> --- a/meta/classes/base.bbclass
> +++ b/meta/classes/base.bbclass
> @@ -89,9 +89,11 @@ def base_dep_prepend(d):
>  			deps += " virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs virtual/libc "
>  	return deps
>  
> -DEPENDS_prepend="${@base_dep_prepend(d)} "
> -DEPENDS_virtclass-native_prepend="${@base_dep_prepend(d)} "
> -DEPENDS_virtclass-nativesdk_prepend="${@base_dep_prepend(d)} "
> +BASEDEPENDS = "${@base_dep_prepend(d)}"
> +
> +DEPENDS_prepend="${BASEDEPENDS} "
> +DEPENDS_virtclass-native_prepend="${BASEDEPENDS} "
> +DEPENDS_virtclass-nativesdk_prepend="${BASEDEPENDS} "
>  
>  FILESPATH = "${@base_set_filespath([ "${FILE_DIRNAME}/${PF}", "${FILE_DIRNAME}/${P}", "${FILE_DIRNAME}/${PN}", "${FILE_DIRNAME}/${BP}", "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files", "${FILE_DIRNAME}" ], d)}"
>  # THISDIR only works properly with imediate expansion as it has to run
> diff --git a/meta/classes/gettext.bbclass b/meta/classes/gettext.bbclass
> index a40e74f..57b551e 100644
> --- a/meta/classes/gettext.bbclass
> +++ b/meta/classes/gettext.bbclass
> @@ -1,17 +1,17 @@
>  def gettext_after_parse(d):
>      # Remove the NLS bits if USE_NLS is no.
> -    if bb.data.getVar('USE_NLS', d, 1) == 'no':
> -        cfg = oe_filter_out('^--(dis|en)able-nls$', bb.data.getVar('EXTRA_OECONF', d, 1) or "", d)
> -        cfg += " --disable-nls"
> -        depends = bb.data.getVar('DEPENDS', d, 1) or ""
> -        bb.data.setVar('DEPENDS', oe_filter_out('^(virtual/libiconv|virtual/libintl)$', depends, d), d)
> -        bb.data.setVar('EXTRA_OECONF', cfg, d)
> +    if bb.data.getVar('USE_NLS', d, True) == 'no':
> +        bb.data.setVar('DEPENDS_GETTEXT', "", d)
> +        bb.data.setVar('OECONFNLSOPTION', '--disable-nls', d)
> +    if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not oe.utils.inherits(d, 'cross-canadian'):
> +        bb.data.setVar('DEPENDS_GETTEXT', "", d)
>  
>  python () {
>      gettext_after_parse(d)
>  }
>  
> -DEPENDS_GETTEXT = "gettext gettext-native"
> +DEPENDS_GETTEXT = "virtual/gettext gettext-native"
> +OECONFNLSOPTION = "--enable-nls"
>  
> -DEPENDS =+ "${DEPENDS_GETTEXT}"
> -EXTRA_OECONF += "--enable-nls"
> +BASEDEPENDS =+ "${DEPENDS_GETTEXT}"
> +EXTRA_OECONF += "${OECONFNLSOPTION}"
> 
> 
> 

This has the same problem It empties out DEPENDS_GETTEXT after they have
have already been added to DEPENDS via virtclass e.g. when you build
gcc-runtime-nativesdk it will report a dep loop since now it depends on
virtual/gettext-nativesdk (added by gettext class)
and virtual/gettext-nativesdk depends on compilerlibs
provided by gcc-runtime-nativesdk. This was same problem I was trying to
circumvent

Patch

diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 4f20bc2..3b83e42 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -89,9 +89,11 @@  def base_dep_prepend(d):
 			deps += " virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs virtual/libc "
 	return deps
 
-DEPENDS_prepend="${@base_dep_prepend(d)} "
-DEPENDS_virtclass-native_prepend="${@base_dep_prepend(d)} "
-DEPENDS_virtclass-nativesdk_prepend="${@base_dep_prepend(d)} "
+BASEDEPENDS = "${@base_dep_prepend(d)}"
+
+DEPENDS_prepend="${BASEDEPENDS} "
+DEPENDS_virtclass-native_prepend="${BASEDEPENDS} "
+DEPENDS_virtclass-nativesdk_prepend="${BASEDEPENDS} "
 
 FILESPATH = "${@base_set_filespath([ "${FILE_DIRNAME}/${PF}", "${FILE_DIRNAME}/${P}", "${FILE_DIRNAME}/${PN}", "${FILE_DIRNAME}/${BP}", "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files", "${FILE_DIRNAME}" ], d)}"
 # THISDIR only works properly with imediate expansion as it has to run
diff --git a/meta/classes/gettext.bbclass b/meta/classes/gettext.bbclass
index a40e74f..57b551e 100644
--- a/meta/classes/gettext.bbclass
+++ b/meta/classes/gettext.bbclass
@@ -1,17 +1,17 @@ 
 def gettext_after_parse(d):
     # Remove the NLS bits if USE_NLS is no.
-    if bb.data.getVar('USE_NLS', d, 1) == 'no':
-        cfg = oe_filter_out('^--(dis|en)able-nls$', bb.data.getVar('EXTRA_OECONF', d, 1) or "", d)
-        cfg += " --disable-nls"
-        depends = bb.data.getVar('DEPENDS', d, 1) or ""
-        bb.data.setVar('DEPENDS', oe_filter_out('^(virtual/libiconv|virtual/libintl)$', depends, d), d)
-        bb.data.setVar('EXTRA_OECONF', cfg, d)
+    if bb.data.getVar('USE_NLS', d, True) == 'no':
+        bb.data.setVar('DEPENDS_GETTEXT', "", d)
+        bb.data.setVar('OECONFNLSOPTION', '--disable-nls', d)
+    if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not oe.utils.inherits(d, 'cross-canadian'):
+        bb.data.setVar('DEPENDS_GETTEXT', "", d)
 
 python () {
     gettext_after_parse(d)
 }
 
-DEPENDS_GETTEXT = "gettext gettext-native"
+DEPENDS_GETTEXT = "virtual/gettext gettext-native"
+OECONFNLSOPTION = "--enable-nls"
 
-DEPENDS =+ "${DEPENDS_GETTEXT}"
-EXTRA_OECONF += "--enable-nls"
+BASEDEPENDS =+ "${DEPENDS_GETTEXT}"
+EXTRA_OECONF += "${OECONFNLSOPTION}"