[OE-core] Going beyond MACHINE?

Richard Purdie richard.purdie at linuxfoundation.org
Mon Oct 20 12:04:17 UTC 2014


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.

Cheers,

Richard




More information about the Openembedded-core mailing list