[yocto] Change in override behavior?

Gary Thomas gary at mlbassoc.com
Fri Apr 29 03:00:58 PDT 2016


On 2016-04-29 11:51, Paul Eggleton wrote:
> On Fri, 29 Apr 2016 09:24:23 Gary Thomas wrote:
>> On 2016-04-29 09:16, Paul Eggleton wrote:
>>> On Fri, 29 Apr 2016 08:06:16 Gary Thomas wrote:
>>>> On 2016-04-29 07:08, Paul Eggleton wrote:
>>>>> On Fri, 29 Apr 2016 06:24:55 Gary Thomas wrote:
>>>>>> I used to be able to use something like this:
>>>>>>       VARIABLE = "xyz"
>>>>>>
>>>>>> and maybe in a .bbappend use
>>>>>>
>>>>>>       VARIABLE_mymachine = "xyzzy"
>>>>>>
>>>>>> where 'mymachine' is in OVERRIDES, which resulted in
>>>>>>
>>>>>>       VARIABLE = "xyzzy"
>>>>>>
>>>>>> This doesn't seem to work the same today, what I get is
>>>>>>
>>>>>>       VARIABLE = "xyz"
>>>>>>       VARIABLE_mymachine = "xyzzy"
>>>>>>
>>>>>> Has this changed (recently)?  Why?  How to I make use of overrides?
>>>>>>
>>>>>> Note: I'm using the latest Poky master (a9b503b26) updated 2016-04-28
>>>>>
>>>>> When you say this is what you're seeing, how are you checking this?
>>>>> bitbake -e ? Which part of that output are you looking at?
>>>>>
>>>>> You *will* now see VARIABLE_mymachine in bitbake -e output even if
>>>>> "mymachine" is in OVERRIDES - that's because the overridden values stay
>>>>> in the datastore instead of a "finalisation" step eliminating them, in
>>>>> order to allow OVERRIDES to be changed dynamically (possibly multiple
>>>>> times) and still get the datastore contents you expect. That change was
>>>>> made in the 2.0 release (jethro). However That should not affect the
>>>>> final value of VARIABLE if "mymachine" is in OVERRIDES however. Are you
>>>>> sure you are seeing what you think you're seeing? If so, is the bbappend
>>>>> in fact being applied? Because if what you describe was really happening
>>>>> then pretty much the entire system would be broken. I just checked a
>>>>> similar case here and I see the expected results.
>>>>
>>>> Yes, I am using 'bitbake -e <recipe> | grep ^VARIABLE' to look at this.
>>>>
>>>> In my main recipe, I have this:
>>>>      SOME_OTHER_VARIABLE ?= "${MACHINE}"
>>>>
>>>> and my .bbappend for that recipe has these lines:
>>>>      SOME_OTHER_VARIABLE_my-target-A = "something-else1"
>>>>      SOME_OTHER_VARIABLE_my-target-B = "something-else2"
>>>>
>>>> and local.conf has
>>>>
>>>>      MACHINE="my-target-B"
>>>>
>>>> With Yocto 2.0 (Poky ceeb52a2544) I get this:
>>>>      SOME_OTHER_VARIABLE = "something-else2"
>>>>      SOME_OTHER_VARIABLE_my-target-A = "something-else1"
>>>>      SOME_OTHER_VARIABLE_my-target-B = "something-else2"
>>>>
>>>> With today's (Poky a9b503b26) I get this:
>>>>      SOME_OTHER_VARIABLE = "my-target-B"
>>>>      SOME_OTHER_VARIABLE_my-target-A = "something-else1"
>>>>      SOME_OTHER_VARIABLE_my-target-B = "something-else2"
>>>>
>>>> I also use this mechanism to set COMPATIBLE_MACHINE a lot and
>>>> that doesn't seem to be working the same either.
>>>>
>>>> Am I doing something incorrectly (and just got away with it for years)?
>>>>
>>>> n.b. If you're interested, I can share the .bb/.bbappend files
>>>> with you privately (I can't put them on the public list)
>>>
>>> Ah, one thing... do your machine names have uppercase characters in them
>>> (as your pseudo-examples above do)? If so that was a 2.1 change; anything
>>> that is to be used as an override must now be lower case (so DISTRO,
>>> MACHINE, etc.)
>>
>> Indeed, my machine names do have an upper case letter in them.
>> Any suggestions for how to handle this (short of renaming everything which
>> would be a HUGE chore)?
>
> It's no longer supported I'm afraid, BitBake's datastore is now coded to
> expect lowercase for all override values. You say it's a huge chore but surely
> a grep -l | xargs -n1 sed -i would do it?

If I were to rename my target (MACHINE), I'd then have to go through
and rename all of the directories in the recipes that hold machine
customizations and there are quite a few of those.  Similarly I'd
have to rework all the recipes that use the old names (with upper case
letters) to the new ones.  Not impossible, but quite a lot of work.

Short of actually renaming the target machines, I could add an additional
override (in <MACHINE>.conf) that is lowercase only and update just the
recipes to use that instead.

By experimentation, I have found that XYZ_append_<MACHINE> seems to do
the correct thing, even when <MACHINE> has upper case letters.  Maybe this
is an oversight that will be fixed?

-- 
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------



More information about the yocto mailing list