[yocto] Recipe availability through eSDK (cppzmq)

Paul Eggleton paul.eggleton at linux.intel.com
Wed May 2 14:19:27 PDT 2018


On Wednesday, 2 May 2018 8:33:12 PM NZST Andrea Galbusera wrote:
> On Wed, May 2, 2018 at 9:52 AM, Martin Siegumfeldt <mns at gomspace.com> wrote:
> > Hacking the recipe according to:
> > martin at dell:~/work/z7000-distro-zcu102/meta-openembedded$ git diff
> > diff --git a/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
> > b/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
> > index a64745c94..aba1d6edb 100644
> > --- a/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
> > +++ b/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
> > @@ -13,9 +13,11 @@ S = "${WORKDIR}/git"
> >
> >  do_install () {
> >          install -d ${D}/usr/include
> > +        install -d ${D}/etc
> >          install -m 0755 ${S}/zmq.hpp ${D}/usr/include/
> > +        install -m 0755 ${S}/zmq.hpp ${D}/etc
> >  }
> >
> > -PACKAGES = "${PN}-dev"
> > +PACKAGES = "${PN}-dev ${PN}"
> 
> If you go down the patch-the-recipe way, you can probably leave
> PACKAGES at its default: both ${PN} and ${PN}-dev are there by
> default.
> 
> > RDEPENDS_${PN}-dev = "zeromq-dev"
> >
> > triggers both ${PN}-dev and ${PN} variants to be packaged and included by
> > the image. Leaving out the installation into /etc causes ${PN} package not
> > to be generated and the image generation does not pick up the ${PN}-dev
> > variant.
> 
> Better would be adding:
> 
> ALLOW_EMPTY_${PN} = "1"
> 
> This way it's cleaner and should work as well. However, you'll need to
> force your image to depend upon an empty package to be added
> (meaningless for the target), for the sake of the corresponding -dev
> package to be part of the tailored eSDK... Maybe there's a better way
> to achieve this, possibly by adding cppzmq-dev to the SDK explicitly
> with something like TOOLCHAIN_TARGET_TASK_append (never used it in
> practice though). Hopefully someone can further comment on this to add
> some wisdom.
> 
> > In essence, it looks like image generation disregards recipes residing
> > exclusively in the ${PN}-dev variant - question is whether this is
> > intended
> > or not?
> 
> Yes it is. -dev packages are not intended to be installed into target
> image by design.

Rather than "by design" I would say "by default" - you can certainly install 
them explicitly (or for the whole image via IMAGE_FEATURES += "dev-pkgs" and 
that is intended - but out of the box it's not expected that you would be 
doing compilation on the target and thus the expectation is that the 
development files aren't needed.

A couple of other things worth mentioning from earlier in the discussion:


1) If you want the cppzmq development files to be available *within* the eSDK 
(so you can write code to use them using the eSDK), even if they are not 
brought in by way of the image containing a package from the cppzmq recipe, 
you can install them into the eSDK by running this within the eSDK 
environment:

devtool sdk-install -s cppzmq

Alternatively you can add them to the built eSDK by setting this before you 
build it:

SDK_TARGETS += "cppzmq:do_populate_sysroot"

FWIW there is a bug open to make this more friendly:

 https://bugzilla.yoctoproject.org/show_bug.cgi?id=10600


2) To add packages to the image when doing devtool build-image within the eSDK 
you would use the -p option (rather than trying to set IMAGE_INSTALL on the 
command line), so you could do the following for this situation:

devtool build-image -p cppzmq-dev

(This should work regardless of whether or not you do #1 above)


Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre




More information about the yocto mailing list