[yocto] "external"/"internal" SDK
Joshua Watt
jpewhacker at gmail.com
Tue Jan 17 18:54:14 PST 2017
> external SDK:
> everything the same as above, but for some packages there should be
> only libraries - no header files.
Is there a reason why you want the libraries without the headers? It
doesn't seem particularly useful to be able to link a program against a
library, but not have the header to use its API (especially in an SDK,
where the point is to build program against the libraries). If you are
just worried about including the source code in the external SDK, you
might be able to get by with simply removing "dbg-pkgs" from
SDKIMAGE_FEATURES. This would still include the development headers for
the libraries (i.e. the API), but would remove the source code for
debugging (I think, I haven't actually tried it).
As an alternative, there might be a way to completely exclude those
particular packages from the external SDK instead of removing the header
files (see below)?
>
> I guess I'm not the first one who needs something like this.
>
> How would you do something like this the "Yocto way"?
We have to do something similar to this where I work. We actually
accomplish this by having multiple "image" recipes dedicated to the
SDK(s) that are distinct from our actual main image that goes on our
final product. This allows us to add whatever we want to the SDK image,
but keep our final image paired down to only what is necessary. For
example, our (internal) SDK image has many libraries included in it that
aren't going to necessarily be used by our final product, but we may
want to use in the future. Having a separate SDK image allows us to
(more or less) start using the library without having to go through the
hassle of updating and re-releasing the SDK to add support (granted, we
*do* have to install the new library on our product before it works, but
that is generally easier in our particular work flow). To reduce
duplicate maintenance, between the internal SDK and our product image,
we make judicious use of bitbake include files to make sure that they
both get all the packages that should be common.
Using a external SDK is a similar exercise, except we are much more
careful about what libraries end up on that one. We make sure that none
of our "special sauce" (i.e. proprietary) libraries end up there if we
can help it. This might work for you if you can pare down what packages
are including to keep the libraries you don't want from getting included
in the SDK.
Finally, failing all that, you can probably create an external SDK image
but remove "dev-pkgs" and "dbg-pkgs" from SDKIMAGE_FEATURES. This would
create an SDK that isn't very exciting because you wouldn't have the
headers for *any* libraries, but you could manually add the ones you did
want back into the image by including the corresponding "-dev" package
in IMAGE_INSTALL. It would be a lot of manual work, but you could
probably get exactly what you wanted.
Not sure if its the "Yocto way", but it works well enough for us.
Hopefully it will at least give a place to start.
Joshua Watt
More information about the yocto
mailing list