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

login
register
mail settings
Submitter Khem Raj
Date May 5, 2011, 1:07 a.m.
Message ID <BANLkTi=y+rFFeojpoX_OB2uoswF373P_Ww@mail.gmail.com>
Download mbox | patch
Permalink /patch/3199/
State New, archived
Headers show

Comments

Khem Raj - May 5, 2011, 1:07 a.m.
On Tue, May 3, 2011 at 3:39 PM, Richard Purdie
<richard.purdie@linuxfoundation.org> wrote:
> On Tue, 2011-05-03 at 11:04 -0700, Khem Raj wrote:
>> 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
>
> Ok, how about this version:
>
> 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..6f79e5e 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)
> +def gettext_dependencies(d):
> +    if d.getVar('USE_NLS', True) == 'no':
> +        return ""
> +    if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not oe.utils.inherits(d, 'cross-canadian'):
> +        return ""
> +    return d.getVar('DEPENDS_GETTEXT', False)
>
> -python () {
> -    gettext_after_parse(d)
> -}
> +def gettext_oeconf(d):
> +    # Remove the NLS bits if USE_NLS is no.
> +    if d.getVar('USE_NLS', True) == 'no':
> +        return '--disable-nls'
> +    return "--enable-nls"
>
> -DEPENDS_GETTEXT = "gettext gettext-native"
> +DEPENDS_GETTEXT = "virtual/gettext gettext-native"
>
> -DEPENDS =+ "${DEPENDS_GETTEXT}"
> -EXTRA_OECONF += "--enable-nls"
> +BASEDEPENDS =+ "${@gettext_dependencies(d)}"
> +EXTRA_OECONF += "${@gettext_oeconf(d)}"
>
>

a build from scratch revealed few more issues with this patch too.

1. We have to only remove gettext from dependencies if its a target
package for all other it still it needed otherwise all native and
cross tools start failing to build
 e.g. binutils-cross this can be easily solved by a patch

iff --git a/meta/classes/gettext.bbclass b/meta/classes/gettext.bbclass
index 6f79e5e..cc39204 100644
oe.utils.inherits(d, 'cross-canadian')
         return ""


second problem is that EXTRA_OECONF when recipes override it instead
of += or appending etc.
then --enable|--disable-nls that we added via gettext_oeconf() is lost
as a result some packages complain about config.rpath
when USE_NLS is set to no the reason is their configure is missing the
argument --disable-nls this works ok
for eglibc based targets since default is to enable-nls if nothing is
specified but uclibc fails. As a testcase try to preprocess
utils-linux
recipe and check the contents of EXTRA_OECONF
Khem Raj - May 5, 2011, 4:19 a.m.
On (04/05/11 18:07), Khem Raj wrote:
> On Tue, May 3, 2011 at 3:39 PM, Richard Purdie
> <richard.purdie@linuxfoundation.org> wrote:
> > On Tue, 2011-05-03 at 11:04 -0700, Khem Raj wrote:
> >> 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
> >
> > Ok, how about this version:
> >
> > 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..6f79e5e 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)
> > +def gettext_dependencies(d):
> > +    if d.getVar('USE_NLS', True) == 'no':
> > +        return ""
> > +    if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not oe.utils.inherits(d, 'cross-canadian'):
> > +        return ""
> > +    return d.getVar('DEPENDS_GETTEXT', False)
> >
> > -python () {
> > -    gettext_after_parse(d)
> > -}
> > +def gettext_oeconf(d):
> > +    # Remove the NLS bits if USE_NLS is no.
> > +    if d.getVar('USE_NLS', True) == 'no':
> > +        return '--disable-nls'
> > +    return "--enable-nls"
> >
> > -DEPENDS_GETTEXT = "gettext gettext-native"
> > +DEPENDS_GETTEXT = "virtual/gettext gettext-native"
> >
> > -DEPENDS =+ "${DEPENDS_GETTEXT}"
> > -EXTRA_OECONF += "--enable-nls"
> > +BASEDEPENDS =+ "${@gettext_dependencies(d)}"
> > +EXTRA_OECONF += "${@gettext_oeconf(d)}"
> >
> >
> 
> a build from scratch revealed few more issues with this patch too.
> 
> 1. We have to only remove gettext from dependencies if its a target
> package for all other it still it needed otherwise all native and
> cross tools start failing to build
>  e.g. binutils-cross this can be easily solved by a patch
> 
> iff --git a/meta/classes/gettext.bbclass b/meta/classes/gettext.bbclass
> index 6f79e5e..cc39204 100644
> --- a/meta/classes/gettext.bbclass
> +++ b/meta/classes/gettext.bbclass
> @@ -1,5 +1,5 @@
>  def gettext_dependencies(d):
> -    if d.getVar('USE_NLS', True) == 'no':
> +    if d.getVar('USE_NLS', True) == 'no' and not oe.utils.inherits(d,
> 'native', 'nativesdk', 'cross')
>          return ""
>      if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not
> oe.utils.inherits(d, 'cross-canadian')
>          return ""
> 
> 
> second problem is that EXTRA_OECONF when recipes override it instead
> of += or appending etc.
> then --enable|--disable-nls that we added via gettext_oeconf() is lost
> as a result some packages complain about config.rpath
> when USE_NLS is set to no the reason is their configure is missing the
> argument --disable-nls this works ok
> for eglibc based targets since default is to enable-nls if nothing is
> specified but uclibc fails. As a testcase try to preprocess
> utils-linux
> recipe and check the contents of EXTRA_OECONF

attached is a patch on top of this patch which fixes both the issues I
mentioned. I also thought of defining USE_NLS to yes in
native/cross/nativesdk classes but then I resorted to add the check in
gettext.bbclass

Please review and apply if appropriate

Thanks
Saul Wold - May 5, 2011, 5:06 a.m.
On 05/04/2011 09:19 PM, Khem Raj wrote:
> On (04/05/11 18:07), Khem Raj wrote:
>> On Tue, May 3, 2011 at 3:39 PM, Richard Purdie
>> <richard.purdie@linuxfoundation.org>  wrote:
>>> On Tue, 2011-05-03 at 11:04 -0700, Khem Raj wrote:
>>>> 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
>>>
>>> Ok, how about this version:
>>>
>>> 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..6f79e5e 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)
>>> +def gettext_dependencies(d):
>>> +    if d.getVar('USE_NLS', True) == 'no':
>>> +        return ""
>>> +    if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not oe.utils.inherits(d, 'cross-canadian'):
>>> +        return ""
>>> +    return d.getVar('DEPENDS_GETTEXT', False)
>>>
>>> -python () {
>>> -    gettext_after_parse(d)
>>> -}
>>> +def gettext_oeconf(d):
>>> +    # Remove the NLS bits if USE_NLS is no.
>>> +    if d.getVar('USE_NLS', True) == 'no':
>>> +        return '--disable-nls'
>>> +    return "--enable-nls"
>>>
>>> -DEPENDS_GETTEXT = "gettext gettext-native"
>>> +DEPENDS_GETTEXT = "virtual/gettext gettext-native"
>>>
>>> -DEPENDS =+ "${DEPENDS_GETTEXT}"
>>> -EXTRA_OECONF += "--enable-nls"
>>> +BASEDEPENDS =+ "${@gettext_dependencies(d)}"
>>> +EXTRA_OECONF += "${@gettext_oeconf(d)}"
>>>
>>>
>>
>> a build from scratch revealed few more issues with this patch too.
>>
>> 1. We have to only remove gettext from dependencies if its a target
>> package for all other it still it needed otherwise all native and
>> cross tools start failing to build
>>   e.g. binutils-cross this can be easily solved by a patch
>>
>> iff --git a/meta/classes/gettext.bbclass b/meta/classes/gettext.bbclass
>> index 6f79e5e..cc39204 100644
>> --- a/meta/classes/gettext.bbclass
>> +++ b/meta/classes/gettext.bbclass
>> @@ -1,5 +1,5 @@
>>   def gettext_dependencies(d):
>> -    if d.getVar('USE_NLS', True) == 'no':
>> +    if d.getVar('USE_NLS', True) == 'no' and not oe.utils.inherits(d,
>> 'native', 'nativesdk', 'cross')
>>           return ""
>>       if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not
>> oe.utils.inherits(d, 'cross-canadian')
>>           return ""
>>
>>
>> second problem is that EXTRA_OECONF when recipes override it instead
>> of += or appending etc.
>> then --enable|--disable-nls that we added via gettext_oeconf() is lost
>> as a result some packages complain about config.rpath
>> when USE_NLS is set to no the reason is their configure is missing the
>> argument --disable-nls this works ok
>> for eglibc based targets since default is to enable-nls if nothing is
>> specified but uclibc fails. As a testcase try to preprocess
>> utils-linux
>> recipe and check the contents of EXTRA_OECONF
>
> attached is a patch on top of this patch which fixes both the issues I
> mentioned. I also thought of defining USE_NLS to yes in
> native/cross/nativesdk classes but then I resorted to add the check in
> gettext.bbclass
>
Khem,

Are you refering to the changes above?  If so, it would be better to 
have it in a proper patch email, if you could resend with just the patch 
and comments that would be most appreciated.

Thanks
	Sau!

> Please review and apply if appropriate
>
> Thanks
>
>
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Khem Raj - May 5, 2011, 6:38 a.m.
On (04/05/11 22:06), Saul Wold wrote:
> On 05/04/2011 09:19 PM, Khem Raj wrote:
> >On (04/05/11 18:07), Khem Raj wrote:
> >>On Tue, May 3, 2011 at 3:39 PM, Richard Purdie
> >><richard.purdie@linuxfoundation.org>  wrote:
> >>>On Tue, 2011-05-03 at 11:04 -0700, Khem Raj wrote:
> >>>>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
> >>>
> >>>Ok, how about this version:
> >>>
> >>>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..6f79e5e 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)
> >>>+def gettext_dependencies(d):
> >>>+    if d.getVar('USE_NLS', True) == 'no':
> >>>+        return ""
> >>>+    if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not oe.utils.inherits(d, 'cross-canadian'):
> >>>+        return ""
> >>>+    return d.getVar('DEPENDS_GETTEXT', False)
> >>>
> >>>-python () {
> >>>-    gettext_after_parse(d)
> >>>-}
> >>>+def gettext_oeconf(d):
> >>>+    # Remove the NLS bits if USE_NLS is no.
> >>>+    if d.getVar('USE_NLS', True) == 'no':
> >>>+        return '--disable-nls'
> >>>+    return "--enable-nls"
> >>>
> >>>-DEPENDS_GETTEXT = "gettext gettext-native"
> >>>+DEPENDS_GETTEXT = "virtual/gettext gettext-native"
> >>>
> >>>-DEPENDS =+ "${DEPENDS_GETTEXT}"
> >>>-EXTRA_OECONF += "--enable-nls"
> >>>+BASEDEPENDS =+ "${@gettext_dependencies(d)}"
> >>>+EXTRA_OECONF += "${@gettext_oeconf(d)}"
> >>>
> >>>
> >>
> >>a build from scratch revealed few more issues with this patch too.
> >>
> >>1. We have to only remove gettext from dependencies if its a target
> >>package for all other it still it needed otherwise all native and
> >>cross tools start failing to build
> >>  e.g. binutils-cross this can be easily solved by a patch
> >>
> >>iff --git a/meta/classes/gettext.bbclass b/meta/classes/gettext.bbclass
> >>index 6f79e5e..cc39204 100644
> >>--- a/meta/classes/gettext.bbclass
> >>+++ b/meta/classes/gettext.bbclass
> >>@@ -1,5 +1,5 @@
> >>  def gettext_dependencies(d):
> >>-    if d.getVar('USE_NLS', True) == 'no':
> >>+    if d.getVar('USE_NLS', True) == 'no' and not oe.utils.inherits(d,
> >>'native', 'nativesdk', 'cross')
> >>          return ""
> >>      if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not
> >>oe.utils.inherits(d, 'cross-canadian')
> >>          return ""
> >>
> >>
> >>second problem is that EXTRA_OECONF when recipes override it instead
> >>of += or appending etc.
> >>then --enable|--disable-nls that we added via gettext_oeconf() is lost
> >>as a result some packages complain about config.rpath
> >>when USE_NLS is set to no the reason is their configure is missing the
> >>argument --disable-nls this works ok
> >>for eglibc based targets since default is to enable-nls if nothing is
> >>specified but uclibc fails. As a testcase try to preprocess
> >>utils-linux
> >>recipe and check the contents of EXTRA_OECONF
> >
> >attached is a patch on top of this patch which fixes both the issues I
> >mentioned. I also thought of defining USE_NLS to yes in
> >native/cross/nativesdk classes but then I resorted to add the check in
> >gettext.bbclass
> >
> Khem,
> 
> Are you refering to the changes above?  If so, it would be better to
> have it in a proper patch email, if you could resend with just the
> patch and comments that would be most appreciated.

As it was untested. I wanted to run through RP and see if he sees any
issues before I put out a pull request

-Khem
Richard Purdie - May 5, 2011, 9:41 a.m.
On Wed, 2011-05-04 at 18:07 -0700, Khem Raj wrote:
> a build from scratch revealed few more issues with this patch too.
> 
> 1. We have to only remove gettext from dependencies if its a target
> package for all other it still it needed otherwise all native and
> cross tools start failing to build
>  e.g. binutils-cross this can be easily solved by a patch
> 
> iff --git a/meta/classes/gettext.bbclass b/meta/classes/gettext.bbclass
> index 6f79e5e..cc39204 100644
> --- a/meta/classes/gettext.bbclass
> +++ b/meta/classes/gettext.bbclass
> @@ -1,5 +1,5 @@
>  def gettext_dependencies(d):
> -    if d.getVar('USE_NLS', True) == 'no':
> +    if d.getVar('USE_NLS', True) == 'no' and not oe.utils.inherits(d,
> 'native', 'nativesdk', 'cross')
>          return ""
>      if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not
> oe.utils.inherits(d, 'cross-canadian')
>          return ""

This looks reasonable, its still much clearer what is happening and why
compared to the original version...

> second problem is that EXTRA_OECONF when recipes override it instead
> of += or appending etc.
> then --enable|--disable-nls that we added via gettext_oeconf() is lost
> as a result some packages complain about config.rpath
> when USE_NLS is set to no the reason is their configure is missing the
> argument --disable-nls this works ok
> for eglibc based targets since default is to enable-nls if nothing is
> specified but uclibc fails. As a testcase try to preprocess
> utils-linux
> recipe and check the contents of EXTRA_OECONF

I suspect we can fix this with:

-EXTRA_OECONF += "${@gettext_oeconf(d)}"
+EXTRA_OECONF_append = " ${@gettext_oeconf(d)}"

?

Cheers,

Richard
Khem Raj - May 5, 2011, 4:58 p.m.
On Thu, May 5, 2011 at 2:41 AM, Richard Purdie
<richard.purdie@linuxfoundation.org> wrote:
> On Wed, 2011-05-04 at 18:07 -0700, Khem Raj wrote:
>> a build from scratch revealed few more issues with this patch too.
>>
>> 1. We have to only remove gettext from dependencies if its a target
>> package for all other it still it needed otherwise all native and
>> cross tools start failing to build
>>  e.g. binutils-cross this can be easily solved by a patch
>>
>> iff --git a/meta/classes/gettext.bbclass b/meta/classes/gettext.bbclass
>> index 6f79e5e..cc39204 100644
>> --- a/meta/classes/gettext.bbclass
>> +++ b/meta/classes/gettext.bbclass
>> @@ -1,5 +1,5 @@
>>  def gettext_dependencies(d):
>> -    if d.getVar('USE_NLS', True) == 'no':
>> +    if d.getVar('USE_NLS', True) == 'no' and not oe.utils.inherits(d,
>> 'native', 'nativesdk', 'cross')
>>          return ""
>>      if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not
>> oe.utils.inherits(d, 'cross-canadian')
>>          return ""
>
> This looks reasonable, its still much clearer what is happening and why
> compared to the original version...
>
>> second problem is that EXTRA_OECONF when recipes override it instead
>> of += or appending etc.
>> then --enable|--disable-nls that we added via gettext_oeconf() is lost
>> as a result some packages complain about config.rpath
>> when USE_NLS is set to no the reason is their configure is missing the
>> argument --disable-nls this works ok
>> for eglibc based targets since default is to enable-nls if nothing is
>> specified but uclibc fails. As a testcase try to preprocess
>> utils-linux
>> recipe and check the contents of EXTRA_OECONF
>
> I suspect we can fix this with:
>
> -EXTRA_OECONF += "${@gettext_oeconf(d)}"
> +EXTRA_OECONF_append = " ${@gettext_oeconf(d)}"
>
> ?
>
yes something like that
somehow the patch I attached did not make it to ml
I have sent it separately now.


> Cheers,
>
> Richard
>
>

Patch

--- a/meta/classes/gettext.bbclass
+++ b/meta/classes/gettext.bbclass
@@ -1,5 +1,5 @@ 
 def gettext_dependencies(d):
-    if d.getVar('USE_NLS', True) == 'no':
+    if d.getVar('USE_NLS', True) == 'no' and not oe.utils.inherits(d,
'native', 'nativesdk', 'cross')
         return ""
     if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True) and not