[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