[meta-freescale] Linux kernel recipe override question

Otavio Salvador otavio at ossystems.com.br
Tue Feb 25 04:20:18 PST 2014


John,

On Tue, Feb 25, 2014 at 12:59 AM, John Weber <rjohnweber at gmail.com> wrote:
> On 2/24/14, 2:27 PM, Robin Findley wrote:
>>
>> On 2014-02-24 12:51, John Weber wrote:
>>>
>>> Here is a question someone might be able to quickly answer.
>>>
>>> I want to be able to override the SRCREV, SRCBRANCH, and the git
>>> repository
>>
>> for
>>>
>>> the kernel recipe in local.conf.  I like to do this so that I can do
>>> local
>>> hacking on a kernel without having to edit the recipe files themselves,
>>> and
>>
>> I
>>>
>>> find that managing local.conf is easier when I'm changing SRCREVs a lot.
>>>
>>> I've been able to override SRCBRANCH by doing this:
>>>
>>> In recipes-kernel/linux/linux-wandboard.inc:
>>>
>>> SRCBRANCH ??= "master"
>>>
>>> The default is set in recipes-kernel/linux/linux-wandboard_3.10.17.bb:
>>>
>>> SRCBRANCH ?= "<the-default-branch>"
>>>
>>> Then, in local.conf, I can override it:
>>>
>>> SRCBRANCH_linux-wandboard = "<my-local-hacking-branch>"
>>>
>>> This works fine for SRCBRANCH. If I do the same thing with SRCREV, it
>>
>> doesn't
>>>
>>> seem to work.  I've done this:
>>>
>>> In linux-wandboard_3.10.17.bb:
>>>
>>> SRCREV ??= "<default big long commit id>"
>>>
>>> In local.conf:
>>>
>>> SRCREV_linux-wandboard = "<my local branch commit id>"
>>>
>>> I always get the checkout of the SRCREV assignment done in the recipe
>>> file,
>>
>> not
>>>
>>> the one I set in local.conf.
>>>
>>> Any idea why?  The only thing I can think of is that SRCREV is evaluated
>>
>> completely before
>>>
>>> local.conf settings are evaluated.
>>
>>
>> John, you were close.  Here's an example from my local.conf:
>>
>> PREFERRED_VERSION_linux-wandboard = "3.10.17"
>> SRCBRANCH_pn-linux-wandboard = "wandboard_imx_3.10.17_1.0.0_beta_test"
>> SRCREV_pn-linux-wandboard = "4299c87fd4d46fd786d1600c57986b1fe164138a"
>
> Beautiful.  Thanks for the help.  This works.
>
>>
>> You may want to double-check if your SRCBRANCH override really did work as
>> you
>> expected.  I think you need the "_pn-".
>
> Yes. In my setup I had modified the assignment of SRCBRANCH to the weakest
> one (??=) in the linux-wandboard.inc file and then set it using a stronger
> one (?=) in the recipe (.bb) file, and then finally set it using the hardest
> one (=) in the local.conf.  I certainly do not have a solid foundation in
> these assignment operators.  :-)

No; this is wrong.

??= is late setting operator. So basically if noone sets it (either a
?=) it is used. Another difference is that the last evaluated value
for ??= is used.

So:

A ??= "value1"
A ??= "value2"

A is value2

But

A ??= "value1"
A ?= "valuenew"
A ??= "value2"

A is valuenew

?= is weak setting; so:

A ?= "value1"
A ?= "value2"

A is value1.

> Using this method I was able to remove those other changes, so this is all
> good stuff.  What does the _pn- do?  In other recipes it serves as a short
> reference for packagename, I think.

Same here. pn- is a way to target the override to the package itself.
The reason why this works is due BitBake code:

http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/bitbake/lib/bb/fetch2/__init__.py#n870

But SRCREV_linux-wandboard should work in this case. I'd like to debug
it here if you can send your working patch so we can understand why it
did not.

-- 
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750


More information about the meta-freescale mailing list