[yocto] sstate black hole?
Gary Thomas
gary at mlbassoc.com
Mon Jun 15 17:19:21 PDT 2015
On 2015-06-15 13:33, Gary Thomas wrote:
> On 2015-06-15 11:46, Martin Jansa wrote:
>> On Mon, Jun 15, 2015 at 11:41:47AM -0600, Gary Thomas wrote:
>>> On 2015-06-15 08:21, Martin Jansa wrote:
>>>> On Mon, Jun 15, 2015 at 07:35:20AM -0600, Gary Thomas wrote:
>>>>> I'm working with i.MX6 targets (meta-fsl-arm*). For these
>>>>> targets, some packages are "special" in that they use i.MX6
>>>>> specific graphics support. This ends up with an additional
>>>>> layer of stratification, so my tmp/work tree has:
>>>>> all-amltd-linux
>>>>> cortexa9hf-vfp-neon-amltd-linux-gnueabi
>>>>> cortexa9hf-vfp-neon-mx6qdl-amltd-linux-gnueabi
>>>>> teton_p0382-amltd-linux-gnueabi
>>>>> x86_64-amltd-linux-gnueabi
>>>>> x86_64-linux
>>>>>
>>>>> The packages that are built in tmp/work/cortex* are architecture
>>>>> specific, not target specific, hence my question:
>>>>>
>>>>> If I build for two i.MX6 targets, identical in every way
>>>>> except for the ${MACHINE} name, if I use sstate to share
>>>>> the builds from target A when building for target B, why
>>>>> are the packages built in cortexa9hf-vfp-neon-mx6qdl-amltd-linux-gnueabi
>>>>> not shared by sstate? I can see that they are present in
>>>>> the sstate cache, but they are always rebuilt for target B.
>>>>> I consider this incorrect behaviour as these are the same
>>>>> architecture and so they should be sharable via sstate.
>>>>>
>>>>> Am I missing something here? How can I determine why the
>>>>> package from target A (sstate cache) is not usable by target B?
>>>>
>>>> Use openembedded-core/scripts/sstate-diff-machines.sh to check if the
>>>> signatures of the recipes you expect to be re-used are the same.
>>>>
>>>
>>> How can I use this if the two targets have their own tmp/ tree?
>>
>> call it twice (once in each tmp tree) and compare resulting list.M files
>>
>
> Sadly, that script seems to destroy all of the .sigdata files which
> are needed to actually track down the culprit(s).
>
I followed this down to an i.MX6 specific package which is
in DEPENDS:
Variable PROVIDES value changed from
'${PN} virtual/wayland-egl virtual/libgal-x11 virtual/egl virtual/libopenvg virtual/libg2d virtual/libgl virtual/libgles1 virtual/libgles2'
to
'${PN} virtual/wayland-egl virtual/libgal-x11 virtual/egl virtual/libopenvg virtual/libg2d virtual/libgl virtual/libgles1 virtual/libgles2 virtual/libgl virtual/libgles1
virtual/libgles2'
Why aren't these considered the same (duplicate elements and/or order)
should not matter for PROVIDES. Is there some way we could get bitbake
to collapse this and remove the duplicates?
I found that this happens in meta-fsl-arm:recipes-graphics/imx-gpu-viv/imx-gpu-viv.inc
which contains these lines:
PROVIDES += "virtual/wayland-egl virtual/libgal-x11 virtual/egl virtual/libopenvg virtual/libg2d"
PROVIDES_append_mx6q = " virtual/libgl virtual/libgles1 virtual/libgles2"
PROVIDES_append_mx6dl = " virtual/libgl virtual/libgles1 virtual/libgles2"
PROVIDES_append_mx6sx = " virtual/libgl virtual/libgles1 virtual/libgles2"
Some i.MX6 targets, nitrogen6x in particular, has overrides for both mx6q and mx6dl,
hence the duplication.
Note: I removed the extra override (for testing) and found that
now the packages built by target A can be shared via sstate with
target B (at least the few I tested)
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------
More information about the yocto
mailing list