[OE-core] Multiple MACHINE building is broken in OE-core?

Mike Looijmans mike.looijmans at topic.nl
Tue Jan 29 10:21:09 UTC 2013


On 01/29/2013 10:40 AM, Martin Jansa wrote:
> On Tue, Jan 29, 2013 at 10:29:07AM +0100, Mike Looijmans wrote:
>> I often have several hardware boards sharing 99% of periferals and
>> configuration. Usually they all have the exact same CPU, and the
>> difference is in the minor details like the screen resolution.
>>
>> In "classic" OE I was used to sharing the work, by just changing the
>> MACHINE variable I could create an image for a slightly changed board in
>> a matter of minutes.
>>
>> In OE-core this seems to be horribly broken, unless there's some other
>> procedure to follow.
>>
>> If I change the MACHINE, it insists on rebuilding all kinds of packages
>> that don't need rebuilding at all. Instead of minutes, it takes an hour
>> to switch machines. And if I change back, the same thing happens all
>> over again.
>>
>> In addition to needlessly rebuilding dozens of packages for the same
>> architecture, it often "starts" halfway through, so it tries to run the
>> "deploy" phase for a package while the workspace has already been
>> removed in the rm_work phase of the previous build. Which fails, so I
>> have to manually reset stamps for that package and let it start over
>> again (while usually the package shouldn't be rebuilt in the first place).
>>
>> Is building for several machines no longer supported in OE-core? Or is
>> there some secret way of setting up directories and variables that will
>> make it work as it used to?
>
> It's more strict and every machine now has own sysroot (so it's doing a
> bit more after MACHINE change then it did with OE-Classic), but it still
> works. I'm using it like this.

How are you using it? Because for me it doesn't work at all, it results 
in build errors and needless rebuilds on every switch. I've tried in 
three different environments, and it never works.

(Needless rebuild: Built package X for machine A. Switch to B, and it 
will build X again, which isn't needed because they're for the same 
architecture and the package isn't dependent on the machine. Switch back 
to A, and it will AGAIN build package X, which is beyond just needless, 
it's a bug in my opinion.)

> Use openembedded-core/scripts/sstate-diff-machines.sh to compare your
> machines and make sure that different checksums are only for
> MACHINE_ARCH recipes.

How? The tool only explains its commandline, but doesn't explain what 
it's supposed to do...

Mike.





More information about the Openembedded-core mailing list