[poky] [PATCH 1/4] linux-yocto-rt: initial PREEMPT_RT recipe for the linux-yocto stable kernel

Bruce Ashfield bruce.ashfield at gmail.com
Mon Dec 20 10:08:30 PST 2010


On Mon, Dec 20, 2010 at 12:59 PM, Darren Hart <dvhart at linux.intel.com> wrote:
> On 12/19/2010 09:20 PM, Bruce Ashfield wrote:
>>
>> On Fri, Dec 10, 2010 at 5:53 PM, Darren Hart<dvhart at linux.intel.com>
>>  wrote:
>>>
>>> Signed-off-by: Darren Hart<dvhart at linux.intel.com>
>>> ---
>>>  .../conf/distro/include/poky-default-revisions.inc |    3 +
>>>  .../linux/linux-yocto-rt_stablegit.bb              |   47
>>> ++++++++++++++++++++
>>>  2 files changed, 50 insertions(+), 0 deletions(-)
>>>  create mode 100644 meta/recipes-kernel/linux/linux-yocto-rt_stablegit.bb
>>>
>>> diff --git a/meta/conf/distro/include/poky-default-revisions.inc
>>> b/meta/conf/distro/include/poky-default-revisions.inc
>>> index 0612b7d..efb4a5d 100644
>>> --- a/meta/conf/distro/include/poky-default-revisions.inc
>>> +++ b/meta/conf/distro/include/poky-default-revisions.inc
>>> @@ -95,6 +95,9 @@ SRCREV_machine_pn-linux-yocto-stable_routerstationpro
>>> ?= "2ec2edaf256dd8500ee3d4
>>>  SRCREV_machine_pn-linux-yocto-stable_mpc8315e-rdb ?=
>>> "986e6eb66c26007cee7916d5d12f4756e6b5436f"
>>>  SRCREV_machine_pn-linux-yocto-stable_beagleboard ?=
>>> "0431115c9d720fee5bb105f6a7411efb4f851d26"
>>>  SRCREV_meta_pn-linux-yocto-stable ?=
>>> "50ccd2b3213b6a1bacb3f898c035119802dac420"
>>> +# preempt_rt SRCREVs
>>> +SRCREV_machine_pn-linux-yocto-rt_qemux86-64 ?=
>>> "f49444f06875894389e640bcda6c3f6ceb1f0c3e"
>>> +SRCREV_meta_pn-linux-yocto-rt ?=
>>> "50ccd2b3213b6a1bacb3f898c035119802dac420"
>>>  # development SRCREVs
>>>  SRCREV_machine_pn-linux-yocto_qemuarm =
>>> "87e00a2d47ba80b4ad1f9170cb3f6cf81f21d739"
>>>  SRCREV_machine_pn-linux-yocto_qemumips =
>>> "7231e473dd981a28e3cea9f677ed60583e731550"
>>> diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_stablegit.bb
>>> b/meta/recipes-kernel/linux/linux-yocto-rt_stablegit.bb
>>> new file mode 100644
>>> index 0000000..cb182da
>>> --- /dev/null
>>> +++ b/meta/recipes-kernel/linux/linux-yocto-rt_stablegit.bb
>>> @@ -0,0 +1,47 @@
>>> +inherit kernel
>>> +require linux-yocto.inc
>>> +
>>> +KMACHINE_qemux86  = "common_pc/base"
>>
>> For stable, this one would be common_pc, which I see points out a bug in
>> the -stable recipe. I'll fix that one in the morning.
>>
>>> +KMACHINE_qemux86-64  = "common_pc_64"
>>> +KMACHINE_qemuppc  = "qemu_ppc32"
>>> +KMACHINE_qemumips = "mti_malta32_be"
>>> +KMACHINE_qemuarm  = "arm_versatile_926ejs"
>>> +KMACHINE_atom-pc  = "atom-pc"
>>> +KMACHINE_routerstationpro = "routerstationpro"
>>> +KMACHINE_mpc8315e-rdb = "fsl-mpc8315e-rdb"
>>> +KMACHINE_beagleboard = "beagleboard"
>>> +
>>> +LINUX_VERSION ?= "2.6.34"
>>> +LINUX_KERNEL_TYPE = "preempt_rt"
>>> +LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE_EXTENSION}"
>>
>> In the initial factoring of the recipes had these in a common location,
>> but
>> when the -stable and -dev kernels split the branching I had to move
>> the branch specifications, kernel version and extension into the specific
>> recipe files and out of the includes (since they were different).
>>
>> If we end up with a proliferation of recipes, it does make sense to create
>> a stablegit.inc and devgit.inc (or some other suitable names), since
>> we clearly don't want to repeat the machie mappings, and extension
>> everywhere. I'll toss that into an upcoming series.
>>
>>> +
>>> +PR = "r0"
>>> +PV = "${LINUX_VERSION}+git${SRCPV}"
>>> +SRCREV_FORMAT = "meta_machine"
>>
>> Same as this, we can make this part of an include
>>
>>> +
>>> +COMPATIBLE_MACHINE = "(qemux86-64)"
>>> +
>>> +# this performs a fixup on the SRCREV for new/undefined BSPs
>>> +python __anonymous () {
>>> +    import bb, re, string
>>> +
>>> +    rev = bb.data.getVar("SRCREV_machine", d, 1)
>>> +    if rev == "standard":
>>> +        bb.data.setVar("SRCREV_machine", "${SRCREV_meta}", d)
>>> +
>>> +    kerntype = string.replace(bb.data.expand("${LINUX_KERNEL_TYPE}", d),
>>> "_", "-")
>>> +    bb.data.setVar("LINUX_KERNEL_TYPE_EXTENSION", kerntype, d)
>>> +}
>>
>> This can probably go away soon, either to somewhere common, or away
>> completely but for now it is required.
>>
>>> +
>>> +SRC_URI =
>>> "git://git.pokylinux.org/linux-2.6-windriver.git;protocol=git;fullclone=1;branch=${KBRANCH};name=machine
>>> \
>>> +
>>> git://git.pokylinux.org/linux-2.6-windriver.git;protocol=git;noclone=1;branch=wrs_meta;name=meta"
>>
>> This should be inherited as well, more to factor out, good to see more
>> recipes that highlight what I missed.
>>
>>> +
>>> +# Functionality flags
>>> +KERNEL_REVISION_CHECKING ?= "t"
>>> +KERNEL_FEATURES=features/netfilter
>>> +
>>> +# extra tasks
>>> +addtask kernel_link_vmlinux after do_compile before do_install
>>> +addtask validate_branches before do_patch after do_kernel_checkout
>>
>> Probably the tasks as well. Something to try at least.
>>
>> But it looks good, not as small as we'd want, but getting there. Having
>> too small a recipe with everything factored out is also bad, but the
>> arcane
>> parts should at least be made common.
>
> Agreed on all points. Much of the above should be in an include. I think we
> should keep "COMPATIBLE MACHINES", "KERNEL_FEATURES", and possible
> "KMACHINE_*" in each recipe instance. Or are we better off to just override
> them in each instance?

compatible machines: per-recipe
kernel_features: per-recipe

kmachine_*: common. It is a mapping of machines to branches, not a guarantee
that they'll work for every recipe. So having the base recipe (stable
vs dev) have
the full list of mappings makes sense.

I've made most of the changes here and will run some tests and send them
out for merging.

cheers,

Bruce

>
> --
> Darren Hart
> Yocto Linux Kernel
>



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"



More information about the poky mailing list