From: Tom Rini <tom_rini@mentor.com>
To: Khem Raj <raj.khem@gmail.com>
Cc: Patches and discussions about the oe-core layer
<openembedded-core@lists.openembedded.org>
Subject: Re: DEPENDS tranlation with BBCLASSEXTEND
Date: Mon, 28 Mar 2011 13:24:13 -0700 [thread overview]
Message-ID: <4D90EE6D.3050707@mentor.com> (raw)
In-Reply-To: <AANLkTimU7e58ygQxXVjCPFFGxNAbaW7LgKQjnFm1+u+V@mail.gmail.com>
On 03/28/2011 01:11 PM, Khem Raj wrote:
> On Mon, Mar 28, 2011 at 1:06 PM, Tom Rini <tom_rini@mentor.com> wrote:
>> On 03/28/2011 12:48 PM, Khem Raj wrote:
>>> On Mon, Mar 28, 2011 at 12:03 PM, Tom Rini <tom_rini@mentor.com> wrote:
>>>> On 03/27/2011 04:03 PM, Chris Larson wrote:
>>>>> On Sun, Mar 27, 2011 at 1:08 PM, Khem Raj <raj.khem@gmail.com> 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.
I think this is getting blown out of proportion. The issue here is that
BBCLASSEXTEND "breaks" the model people have of how they can modify
variables since there's a tendency to tread "DEPENDS_virtclass-native"
like it's "DEPENDSVIRTCLASSNATIVE" and doesn't already have one set of
operators applied already, when it does. And Richard as suggested
something that should help here so that what most people assume works
(since it works elsewhere) will keep working.
--
Tom Rini
Mentor Graphics Corporation
prev parent reply other threads:[~2011-03-28 20:26 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-27 20:08 DEPENDS tranlation with BBCLASSEXTEND Khem Raj
2011-03-27 23:03 ` Chris Larson
2011-03-28 12:48 ` Richard Purdie
2011-03-28 19:03 ` Tom Rini
2011-03-28 19:48 ` Khem Raj
2011-03-28 20:06 ` Tom Rini
2011-03-28 20:11 ` Khem Raj
2011-03-28 20:24 ` Tom Rini [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D90EE6D.3050707@mentor.com \
--to=tom_rini@mentor.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=raj.khem@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox