[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