On Mon, Mar 28, 2011 at 1:06 PM, Tom Rini <[email protected]> wrote: > On 03/28/2011 12:48 PM, Khem Raj wrote: >> On Mon, Mar 28, 2011 at 12:03 PM, Tom Rini <[email protected]> wrote: >>> On 03/27/2011 04:03 PM, Chris Larson wrote: >>>> On Sun, Mar 27, 2011 at 1:08 PM, Khem Raj <[email protected]> wrote: >>>>> I observed that if I have >>>>> DEPENDS = "a b" in recipe.bb which has BBCLASSEXTEND = "native" >>>>> then dependecies for recipe-native shows a-native b-native so far so >>>>> good >>>>> >>>>> Now if I want to add a dependency which only is needed for native recipe >>>>> I do >>>>> >>>>> DEPENDS_virtclass-native += "c-native" >>>>> >>>>> what this does is it will ignore a-native and b-native dependencies and >>>>> only adds "c-native" to depends of native recipe >>>>> >>>>> DEPENDS_virtclass-native_append = " c-native" >>>>> >>>>> This does what I wanted i.e. have deps on a-native b-native c-native >>>>> >>>>> I think behavior of += or _append should be similar. Is my understanding >>>>> correct ? >>>> >>>> They've never been the same. += is immediate, _append is delayed. If >>>> a class, say, native.bbclass, defines the variable with ?=, and you >>>> used += before the inherit, then it will have a value, and the ?= >>>> won't assign. I assume native.bbclass does it this way today so you >>>> can override the automatic behavior by defining the variable yourself, >>>> but I'll let Richard speak to that decision. >>> >>> As Richard said, this is a good summary. And a shorter still summary >>> (as Chris reminds me everytime I forget) is that since BBCLASSEXTENDS >>> makes use of an override already (virtclass-native/cross/etc) you must >>> keep that in mind when further modifying it as you get not what you >>> expected but what you asked for. >>> >> >> Yes no doubt on how it works and can be coded to likings of what we >> have but I think >> that having += and friends as well as _append and _prepend could be >> combined into one logic >> immediate appending/prepending operation may be confusing IMO while >> immediate assignments >> I think still are ok. We have more than one directives doing very >> similar yet semantically different operations >> It becomes hard for recipe writers. May be I am over simplifying > > The problem is that we have different operators for different things. > Usually +=/=+ are what you want in a recipe for variables and append / > prepend are for classes that do tricky things.
well can you generalize like this for languages ? I am thinking of say in C you cant restrict usage to abstractions like this this only can be used in header and this in C files Even if we do then we should make bitbake refuse do _append/_prepend operations in .bb files. The problem, as Richard > explains is that BBCLASSEXTEND makes things special and we need to deal > with that better. > > -- > Tom Rini > Mentor Graphics Corporation > _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
