On 2015-04-07 10:33, Martin Jansa wrote:
On Tue, Apr 07, 2015 at 10:29:14AM -0600, Gary Thomas wrote:
On 2015-04-07 10:19, Martin Jansa wrote:
On Tue, Apr 07, 2015 at 08:52:36AM -0600, Gary Thomas wrote:
I'm building for multiple ARM i.MX6 platforms.  These have
the same SoC, but slightly different peripherals. As far as
I can tell, they should be able to share everything except
for a few ${MACHINE} specific packages, e.g. the kernel and
u-boot.

Sadly, that doesn't seem to be the case.  The architecture
specific packages are being split into two categories - plain
ARM/Cortex-A9 and those that have i.MX6 specific optimizations.
For example, after building a complete image (on the order of
core-image-sato), I have this split:
$ ls tmp/work/cortexa9hf-vfp-neon-amltd-linux-gnueabi/
acl                  gst-player                 libsamplerate0         
modutils-initscripts  shadow-sysroot
alsa-utils           gst-plugins-bad            libsm                  mpeg2dec 
             shared-mime-info
apmd                 gst-plugins-good           libsndfile1            mplayer2 
             speex
atk                  gst-plugins-ugly           libsoup-2.4            mtdev    
             sqlite3
attr                 gstreamer                  libtheora              ncurses  
             startup-notification
base-passwd          gstreamer1.0               libtirpc               neon     
             strace
      ...
gst-ffmpeg           libpostproc                matchbox-wm            
scrnsaverproto        zlib
gst-fluendo-mpegmux  libproxy                   mkfontdir              
settings-daemon
gst-meta-base        libpthread-stubs           mkfontscale            shadow

$ ls tmp/work/cortexa9hf-vfp-neon-mx6qdl-amltd-linux-gnueabi/
alsa-lib      gst-plugins-base           imx-gpu-viv  libfslparser   libsdl     
 xf86-video-imxfb-vivante
cairo         gstreamer1.0-plugins-bad   libdrm       libfslvpuwrap  mesa       
 xserver-xorg
firmware-imx  gstreamer1.0-plugins-base  libfslcodec  libglu         pulseaudio

It's the second category that is causing problems.  They do not
seem to end up in any shareable sstate at all.  If I try to rebuild
using only sstate, i.e. build my complete image to success, then
remove 'tmp' and rebuild, using the sstate-cache from the first go,
all of the above packages (alsa-lib, ..., xserver-xorg) are all
rebuilt from scratch.  Those recipes do seem to end in my sstate-cache,
but they are never reused from it.

What would make this happen?  How can I prevent it?

As is, sstate is not really shareable between these i.MX6 targets
as so much is being rebuilt all the time...

Any ideas or pointers gladly welcomed.

Try openembedded-core/scripts/sstate-diff-machines.sh
to see why.


Can this work if I build for the two machines in separate trees?

Yes, you can generate the report in each tree separately and then
compare them in one of them.

Also, I'm really trying to find out why a build for the same machine
doesn't reuse sstate, in the same build tree, back-to-back builds
(no metadata changes)

Sorry, is "the same build tree" something else than "the two machines in
separate trees" or are you testing both?


Both actually, but at the moment the most interesting problem
is for a given machine that sstate is not being [re]used for
these recipes.

--
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------
--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to