[OE-core] sstate breakage with multimachine

Martin Jansa martin.jansa at gmail.com
Tue May 17 07:14:46 UTC 2011


On Mon, May 16, 2011 at 01:20:02PM +0200, Koen Kooi wrote:
> Hi,
> 
> This bug gets reintroduced every other week, so let's try to fix it properly this time. The situation:
> 
> 2 machines (beagleboard, pandaboard) using the same base architecture (armv7a).
> 
> step 0: rm build pseudone -rf
> step 1: MACHINE=beagleboard bitbake console-image
> step 2: MACHINE=omap4430-panda bitbake console-image
> 
> Step 0 and 1 work great, but I can't get step 2 to work. Attached is the complete output of step 2. As you can see without any updates to the repositories it wants to rebuild (e)glibc.
> 
> Why does it wants to rebuild all that? Why does it fail?
> 
> regards,
> 
> Koen

Hi,

there is also another source of many sstate rebuilds. I've discuessed
this with RP on IRC already and I'll fill bugs as recommended, sharing
here just because you have opened this topic.

If you have package with
PACKAGE_ARCH = "all"
then the resulting package is created by run.* scripts with different
pathsi, *FLAGS etc even when it produces same output (ie some theme).

So all packages with such PACKAGE_ARCH are rebuilt after machine switch
(if the machine is ie different arch like om-gta02/nokia900).
Sstate is reused when you go back to om-gta02 after building nokia900,
so you have ie populate_sysroot only with as many checksums as you're
building different archs.

RP said, that right fix is to introduce something like all.bbclass which
excludes all variables which shouldn't change the output of such package
and then checksums will be the same.

Here is example with gtk-theme-e17lookalike http://paste.pocoo.org/show/388032/

And as side-note there is small problem when someone tries to hunt such
checksum changes, because some tasks which are not directly using sstate
like do_install do not save their run.* scripts in better place then
${WORKDIR}/temp 

So if your bitbake-diffsigs shows something like this:

Hash for dependent task
/OE/shr-core/meta-shr/recipes-shr/shr/gtk-theme-e17lookalike_git.bb.do_install
changed from 8a0de44f3f238f645eab9509172c2d8b to
9d6bf027c5f435498017a652088d7327

You need to find right ${WORKDIR} for that version, and there in temp
directory right combination of run.do_install._pid_ scripts, but you
don't know which _pid_ belongs to which sstate checksum and I guess pid
cannot be stored in .siginfo because it would be always different.

Regards,

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com


More information about the Openembedded-core mailing list