| Submitter | Saul Wold |
|---|---|
| Date | April 27, 2011, 7:29 a.m. |
| Message ID | <ed1614da74a5bf5820855d9d5bd9ab6213bc36de.1303889119.git.sgw@linux.intel.com> |
| Download | mbox | patch |
| Permalink | /patch/2961/ |
| State | New, archived |
| Headers | show |
Comments
On Wed, 2011-04-27 at 00:29 -0700, Saul Wold wrote: > From: Khem Raj <raj.khem@gmail.com> > > Ensure gettext and gettext-native are removed from DEPENDS when > not using NLS > > Use append instead of += to get gettext dependecies processed > correctly in all cases > > Dont remove gettext-native for native recipes as ENABLE_NLS is > only for target and not for native recipes > > Replace using 1 for a boolean type with True > > Honor INHIBIT_DEFAULT_DEPS > > Remove the added dependencies for gettext if INHIBIT_DEFAULT_DEPS is non > null > > operate on virtclass overrides individually > > virtclass classes are parsed at the end hence > just doing DEPENDS munging is not enough since > it will be overridden This patch is better but I have a couple of things I'd like to see tweaked. > Signed-off-by: Khem Raj <raj.khem@gmail.com> > --- > meta/classes/gettext.bbclass | 38 ++++++++++++++++++++++++++------------ > 1 files changed, 26 insertions(+), 12 deletions(-) > > diff --git a/meta/classes/gettext.bbclass b/meta/classes/gettext.bbclass > index a40e74f..f7b84ec 100644 > --- a/meta/classes/gettext.bbclass > +++ b/meta/classes/gettext.bbclass > @@ -1,17 +1,31 @@ > 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) > - > + # Remove the NLS bits if USE_NLS is no. > + if bb.data.getVar('USE_NLS', d, True) == '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, True) or "" These lines all look the same but the indentation is different. Python should always be four spaces and indentation changes should always be as a separate patch from code changes anyway. Please fix :) > + depends = oe_filter_out('^(virtual/libiconv|virtual/libintl|virtual/gettext|gettext)$', depends, d) > + if not oe.utils.inherits(d, 'native', 'nativesdk', 'cross', 'crosssdk'): > + depends = oe_filter_out('^(gettext-native)$', depends, d) > + bb.data.setVar('DEPENDS', depends, d) > + bb.data.setVar('EXTRA_OECONF', cfg, d) > + # check if INHIBIT_DEFAULT_DEPS is 1 then we forcibly remove dependencies > + # added by this class through DEPENDS_GETTEXT > + if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True): > + depends_native = bb.data.getVar('DEPENDS_virtclass-native', d, True) or "" > + depends_nativesdk = bb.data.getVar('DEPENDS_virtclass-nativesdk', d, True) or "" > + depends = bb.data.getVar('DEPENDS', d, True) or "" > + gettext_deps = bb.data.getVar('DEPENDS_GETTEXT', d, True).replace(' ','|') > + gettext_deps = '^(' + gettext_deps + ')$' > + depends_native = oe_filter_out(gettext_deps, depends_native, d) > + depends_nativesdk = oe_filter_out(gettext_deps, depends_nativesdk, d) > + depends = oe_filter_out(gettext_deps, depends, d) > + bb.data.setVar('DEPENDS_virtclass-native', depends, d) > + bb.data.setVar('DEPENDS_virtclass-nativesdk', depends, d) > + bb.data.setVar('DEPENDS', depends, d) 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. In fact, rather than all this ugly manipulation can't we just set DEPENDS_GETTEXT to "" in the INHIBIT_DEFAULT_DEPS or USE_NLS cases? If that doesn't work, the recipes dependencies are broken and should be fixed to inherit this class, right? > python () { > gettext_after_parse(d) > } > - > -DEPENDS_GETTEXT = "gettext gettext-native" > - > -DEPENDS =+ "${DEPENDS_GETTEXT}" > EXTRA_OECONF += "--enable-nls" > +DEPENDS_GETTEXT ?= "virtual/gettext" > +DEPENDS_append = " ${DEPENDS_GETTEXT} " I think this needs to be: DEPENDS_GETTEXT ?= "virtual/gettext virtual/gettext-native" as I'm sure we're been bitten by a lack of the native dependency before :/. Target packages using gettext do definitely need both to be available. Cheers, Richard
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. > In fact, rather than all this ugly manipulation can't we just set > DEPENDS_GETTEXT to "" in the INHIBIT_DEFAULT_DEPS or USE_NLS cases? If > that doesn't work, the recipes dependencies are broken and should be > fixed to inherit this class, right? >
Patch
diff --git a/meta/classes/gettext.bbclass b/meta/classes/gettext.bbclass index a40e74f..f7b84ec 100644 --- a/meta/classes/gettext.bbclass +++ b/meta/classes/gettext.bbclass @@ -1,17 +1,31 @@ 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) - + # Remove the NLS bits if USE_NLS is no. + if bb.data.getVar('USE_NLS', d, True) == '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, True) or "" + depends = oe_filter_out('^(virtual/libiconv|virtual/libintl|virtual/gettext|gettext)$', depends, d) + if not oe.utils.inherits(d, 'native', 'nativesdk', 'cross', 'crosssdk'): + depends = oe_filter_out('^(gettext-native)$', depends, d) + bb.data.setVar('DEPENDS', depends, d) + bb.data.setVar('EXTRA_OECONF', cfg, d) + # check if INHIBIT_DEFAULT_DEPS is 1 then we forcibly remove dependencies + # added by this class through DEPENDS_GETTEXT + if bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, True): + depends_native = bb.data.getVar('DEPENDS_virtclass-native', d, True) or "" + depends_nativesdk = bb.data.getVar('DEPENDS_virtclass-nativesdk', d, True) or "" + depends = bb.data.getVar('DEPENDS', d, True) or "" + gettext_deps = bb.data.getVar('DEPENDS_GETTEXT', d, True).replace(' ','|') + gettext_deps = '^(' + gettext_deps + ')$' + depends_native = oe_filter_out(gettext_deps, depends_native, d) + depends_nativesdk = oe_filter_out(gettext_deps, depends_nativesdk, d) + depends = oe_filter_out(gettext_deps, depends, d) + bb.data.setVar('DEPENDS_virtclass-native', depends, d) + bb.data.setVar('DEPENDS_virtclass-nativesdk', depends, d) + bb.data.setVar('DEPENDS', depends, d) python () { gettext_after_parse(d) } - -DEPENDS_GETTEXT = "gettext gettext-native" - -DEPENDS =+ "${DEPENDS_GETTEXT}" EXTRA_OECONF += "--enable-nls" +DEPENDS_GETTEXT ?= "virtual/gettext" +DEPENDS_append = " ${DEPENDS_GETTEXT} "