[poky] Proper recipe naming and PV definition

Darren Hart dvhart at linux.intel.com
Mon Dec 6 19:46:30 PST 2010


On 12/06/2010 04:53 PM, Bruce Ashfield wrote:
> On 10-12-06 6:17 PM, Darren Hart wrote:
>> I'm having trouble determining what the best practice is for naming a
>> linux kernel recipe.
>>
>> The meta-linaro layer contains a linux-linaro recipe, and eventually I'd
>> like it to contain two. One for the stable kernel and one for the
>> development kernel. These are currently 2.6.35 and 2.6.37 respectively.
>> I currently have:
>>
>> linux-linaro-2.6.35_git.bb
>> PV=2.6.35
>>
>> This results in directory names in the build tree like:
>> linux-linaro-2.6.36_2.6.35 (or similar, with the version duplicated). As
>> I understand it, the PV _must_ contain a standard Linux kernel version
>> along the lines of 2.6.[0-9]+-* (and parsing fails without it).
>>
>> In order to both track the version and distinguish between stable and
>> dev, would something like the following be appropriate? This also
>> replaces _git with _KERNELVER (as proposed by Marcin).
>>
>> linux-linaro-stable_2.6.35.bb
>> PV=2.6.35+git${SRCREV}
>>
>> linux-linaro-dev_2.6.37.bb
>> PV=2.6.37+git${SRCREV}
>
> For me the _git is not negotiable. It is the indication of
> the source of the package. One of the main points about building
> from an upstream git source is that we can bump it via the
> SRCREV and leave the recipe alone.
>
> I'm going to continue using this:
>
> PV = "${LINUX_VERSION}+git${SRCPV}"

You have SRCPV here - I believe you intended SRCREV - correct?

If so, then your PV looks the same as mine above. The place where I 
replaced the _git was in the filename of the recipe. It still isn't 
clear to me what the _VERSION part of recipe-name_VERSION.bb is meant to 
indicate or how exactly it is used. It clearly isn't the exact and 
complete version of the source, that is what PE.PV is for, and PR 
identifies the recipe version (for lack of a better description).

For linux-yocto, _git is not actually very descriptive, while 
linux-yocto_2.6.34 and linux-yocto_2.6.37 are (there are two git trees - 
so "_git" doesn't tell the user much about where the source comes from). 
Whether the backing sourcecode source is a tarball, a git tree, or 
something else entirely is, IMO, an implementation detail which is 
adequately described by the PV we have agreed on above. This is used in 
the directory name of the build and IIRC in the messages printed to the 
console and logs, so the package and it's source should remain clear.

I do appreciate the value of -stable and -dev naming which don't have to 
change just because the underlying version changed - although I can see 
the argument that being forced to change when the version changes makes 
the change obvious to all users - which can be valuable.

A few more iterations on this and I think we'll have something :-)

-- 
Darren Hart
Yocto Linux Kernel



More information about the poky mailing list