[OE-core] Going beyond MACHINE?

Otavio Salvador otavio at ossystems.com.br
Mon Oct 20 13:36:32 UTC 2014


On Mon, Oct 20, 2014 at 10:40 AM, Mike Looijmans
<mike.looijmans at topic.nl> wrote:
> On 10/20/2014 02:04 PM, Richard Purdie wrote:
>>
>> On Mon, 2014-10-20 at 13:55 +0200, Mike Looijmans wrote:
>>>
>>> The short version of my question: Can I define a "level" that goes
>>> beyond MACHINE?
>>>
>>> My problem in detail (and I suspect there are more systems with similar
>>> problems):
>>>
>>> I have an SOC called "topic-miami". There are currently two variants: The
>>> 7015
>>> and 7030. They are identical but for one component: They have a different
>>> FPGA
>>> part (the 7030 is bigger and faster).
>>> Both run exactly the same kernel and bootloader, and all other software
>>> and
>>> libraries are exactly the same.
>>>
>>> Currently I have MACHINE="topic-miami-7015" and then
>>> SOC_FAMILY="topic-miami"
>>> so I can use "topic-miami" as override word for all packages.
>>>
>>> However, this means I get two kernels, two bootloaders, etc. even though
>>> they
>>> are exactly the same.
>>>
>>> The only package that currently differs is the one that delivers the
>>> bitstream(s) for the FPGA. These are big, too big to fit bitstreams for
>>> both
>>> models into flash and leave room for applications, so just installing
>>> both
>>> into the rootfs and pick the correct one at boot time is not really an
>>> option.
>>>
>>> Maybe I could define some extra PACKAGE_ARCH for the bitstreams (which
>>> make
>>> sense, as this is sort of firmware for a different platform). But how
>>> would a
>>> user then pick the right value for this variable, since MACHINE seems to
>>> be
>>> the only thing he can really choose?
>>>
>>> Any thoughts and ideas are welcome...
>>
>>
>> One possible solution would be to inject another PACKAGE_ARCH (as the
>> intel gmgd graphics does for example), then mark the MACHINE specific
>> packages as being that package architecture. They'd then only get built
>> once per package architecture yet your bitstreams would still be machine
>> specific. You could probably do the "remarking" using anonymous python
>> injected at the machine level.
>
>
> Sounds doable, but I can't find anything about "intel gmgd" in any layer.
> Which machine are you referring to here?

We did something similar in meta-fsl-arm, check:

http://git.yoctoproject.org/cgit/cgit.cgi/meta-fsl-arm/tree/classes/fsl-dynamic-packagearch.bbclass
http://git.yoctoproject.org/cgit/cgit.cgi/meta-fsl-arm/tree/conf/machine/include/imx-base.inc#n41

This should be easy to adapt for your specific case.

-- 
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 Openembedded-core mailing list