[yocto] Extending images

Robert P. J. Day rpjday at crashcourse.ca
Fri Jul 18 11:45:17 PDT 2014


On Fri, 18 Jul 2014, Gary Thomas wrote:

> On 2014-07-18 10:49, Christopher Larson wrote:
> >
> > On Fri, Jul 18, 2014 at 9:26 AM, Gary Thomas <gary at mlbassoc.com
> > <mailto:gary at mlbassoc.com>> wrote:
> >
> >     've always used 'IMAGE_INSTALL += " xyz"' in my local.conf
> >     to add new packages to a build.  That said, I had a working
> >     build for qemuarm (probably doesn't matter) and I added:
> >        IMAGE_INSTALL += " strace"
> >     This produced a completely broken image which barely came
> >     up to a shell, lots of missing programs, etc.
> >
> >     I then tried
> >        CORE_IMAGE_EXTRA_INSTALL += " strace"
> >     which produced a perfectly working build (just as previous)
> >     with the new package added.
> >
> >     I can see that the images produced are vastly different:
> >
> >     * Original working build
> >     -rw-r--r-- 1 gthomas gthomas     11719 Jul 18 09:34
> >     core-image-sato-qemuarm-__20140718124453.rootfs.manifest
> >     -rw-r--r-- 1 gthomas gthomas  87611203 Jul 18 09:34
> >     core-image-sato-qemuarm-__20140718124453.rootfs.tar.bz2
> >
> >     * After 'IMAGE_INSTALL += '
> >     -rw-r--r-- 1 gthomas gthomas      9986 Jul 18 09:55
> >     core-image-sato-qemuarm-__20140718155134.rootfs.manifest
> >     -rw-r--r-- 1 gthomas gthomas  37859884 Jul 18 09:56
> >     core-image-sato-qemuarm-__20140718155134.rootfs.tar.bz2
> >
> >     * After 'CORE_IMAGE_EXTRA_INSTALL += '
> >     -rw-r--r-- 1 gthomas gthomas     11738 Jul 18 10:05
> >     core-image-sato-qemuarm-__20140718160108.rootfs.manifest
> >     -rw-r--r-- 1 gthomas gthomas  87720106 Jul 18 10:05
> >     core-image-sato-qemuarm-__20140718160108.rootfs.tar.bz2
> >
> >     What's the difference and why did the first attempt fail?
> >
> >
> > Most likely the image defined its own IMAGE_INSTALL using ?=, so
> > defining it yourself in the configuration data overrode its
> > default definition, since ?= is "set only if unset". If the recipe
> > didn't use ?=, then your IMAGE_INSTALL += would have had no effect
> > at all. To append to IMAGE_INSTALL directly without using
> > CORE_IMAGE_EXTRA_INSTALL you could have used IMAGE_INSTALL_append,
> > since that's a postponed operation that happens at the end of the
> > recipe parsing.
>
> That makes sense, thanks.  I'll stick to using
> CORE_IMAGE_EXTRA_INSTALL from now on!

  not to sound repetitively repetitive, but this is related to what i
thought was the weird way core images are defined based off of
core-image.bbclass, where core-image.bbclass does *exactly* what you
describe above:

CORE_IMAGE_BASE_INSTALL = '\
    packagegroup-core-boot \
    packagegroup-base-extended \
    \
    ${CORE_IMAGE_EXTRA_INSTALL} \
    '

CORE_IMAGE_EXTRA_INSTALL ?= ""

IMAGE_INSTALL ?= "${CORE_IMAGE_BASE_INSTALL}"

  the danger here is that if someone has been defining/building images
for a while based off of the lower-level image.bbclass, then (i think)
using "IMAGE_INSTALL +=" will work just fine, and the poor developer
gets lulled into a false sense of security and carries that habit over
to her first core-image and ... boom.

  i know there's a standard to define variables prefixed with "EXTRA_"
meant for users to add features, and i think that's a great idea. i
think the docs should strongly emphasize that users should look for
the EXTRA_ variable before messing with anything else.

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================




More information about the yocto mailing list