| 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
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
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
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
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
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