[oe] DEPENDS broken for native(sdk).bbclass Was: libgee introspection problem

Martin Jansa martin.jansa at gmail.com
Tue Oct 26 11:25:51 UTC 2010


On Tue, Oct 26, 2010 at 11:39:26AM +0200, Martin Jansa wrote:
> On Tue, Oct 26, 2010 at 11:16:46AM +0200, Frans Meulenbroeks wrote:
> > Hi,
> > 
> > With the testing branch I get a problem with libgee native in
> > combination with introspection.
> > I'm building distro minimal, target neek (but I doubt that the latter matters)
> > 
> > Anyone an idea?
> 
> that should be fixed with
> http://git.openembedded.org/cgit.cgi/openembedded/commit/?id=df932a2769c2f6f7195363e8eb83994846805398
> 
> but that didn't make it to DEPENDS_virtclass-native (as well as
> glib-2.0), I'm checking why (reading native.bbclass looks like it 
> should be there automatically).
> 
> if I don't find bug in native.bbclass I'll append it to
> DEPENDS_virtclass-native too

native.bbclass and nativesdk.bbclass use
ORIG_DEPENDS := "${DEPENDS}"
DEPENDS_virtclass-native ?= "${ORIG_DEPENDS}"

and then for every dependency in DEPENDS_virtclass-native it does:

1) if it ends with -cross appends dependency ending -native instead
2) if it ends with -native it just appends
3) else appends dependency ending with native instead

That's all nice and right and works in theory, BUT:

base.bbclass:
DEPENDS_prepend="${@base_deps(d)} "
DEPENDS_virtclass-native_prepend="${@base_deps(d)} "
DEPENDS_virtclass-nativesdk_prepend="${@base_deps(d)} "

autotools.bbclass:
DEPENDS_prepend = "${@autotools_deps(d)}"
DEPENDS_virtclass-native_prepend = "${@autotools_deps(d)}"
DEPENDS_virtclass-nativesdk_prepend = "${@autotools_deps(d)}"

vala.bbclass:
DEPENDS += "vala-native"
DEPENDS_virtclass-native += "vala-native"

so DEPENDS_virtclass-native is not empty when native.bbclass calls:
DEPENDS_virtclass-native ?= "${ORIG_DEPENDS}"
and ORIG_DEPENDS are just ignored

we cannot fix it with
DEPENDS_virtclass-native += "${ORIG_DEPENDS}"

because sometimes we want to override DEPENDS_virtclass-native from
recipe (ie when target recipe depends on its own ${PN}-native).

Maybe it's because the order of bbclass processing was changed? It would
work OK if we process native and nativesdk first.

I've added small debug output to see order now
DEBUG: Removing /OE/dev/recipes/libgee/libgee_0.6.0.bb from cache
DEBUG: Parsing /OE/dev/recipes/libgee/libgee_0.6.0.bb
DEBUG: inherited base
DEBUG: inherited autotools
DEBUG: inherited vala
DEBUG: inherited base
DEBUG: inherited autotools
DEBUG: inherited vala
DEBUG: inherited native

No idea why I see it twice..

Current broken state:
DEBUG: OrigDepends: autoconf-native automake-native libtool-native gnu-config-native coreutils-native linux-libc-headers-native glib-2.0 vala-native gobject-introspection-native
DEBUG: Depends: autoconf-native automake-native libtool-native gnu-config-native coreutils-native linux-libc-headers-native vala-native
glib-2.0 is from libgee.inc, gobject-introspection-native from libgee_0.6.0.bb, but both lost

If I remove those append/preppend from bbclasses:
DEBUG: OrigDepends: autoconf-native automake-native libtool-native gnu-config-native coreutils-native linux-libc-headers-native glib-2.0 vala-native gobject-introspection-native
DEBUG: Depends: autoconf-native automake-native libtool-native gnu-config-native coreutils-native linux-libc-headers-native glib-2.0 vala-native gobject-introspection-native


I'll send patch for removing those DEPENDS_virtclass-native(sdk) from bbclasses. 
But that will break those recipes where DEPENDS_virtclass-native is used to override
common DEPENDS but without still needed dependencies from classes, so enforced 
bbclass order would be probably better fix.

We really need some sort of unit tests :/.

Regards,

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com




More information about the Openembedded-devel mailing list