On Fri, Mar 19, 2021 at 7:23 AM Robert P. J. Day <[email protected]> wrote: > colleague just asked me about the difference between building an SDK > with either of: > > $ bitbake meta-toolchain > $ bitbake -c populate_sdk <some target> > > i know that the meta-toolchain recipe file contains little more than > inheriting populate_sdk so, without checking, i speculated wildly as > follows: > > "bitbake meta-toolchain" takes no target, so it's limited to > whatever info it can glean from local.conf and bitbake.conf and so on > and so on, things like MACHINE and DISTRO, and whatever assignments to > TOOLCHAIN_HOST_TASK, etc, it runs into in its travels; in essence, > it's a "generic" toolchain.
It's an example of a "pure" toolchain recipe. You are free to modify it and add additional packages or use it as a reference to create your own toolchain recipe. Here's another example of a pure toolchain recipe from my current project: SUMMARY = "Installable toolchain for SK" LICENSE = "MIT" inherit populate_sdk TOOLCHAIN_TARGET_TASK_append = " packagegroup-sk-build-deps" (As a side note, LICENSE still seems to be required in toolchain recipes even though it's not in image recipes... it's a bug). > on the other hand, "bitbake -c populate_sdk <target>" can, in > addition, consult the target recipe file where it can collect even > further SDK defining info, like what you find in core-image-sato.bb: You mean <image-recipe> instead of <target>. I don't think you can create a toolchain from a normal recipe. > TOOLCHAIN_HOST_TASK_append = " nativesdk-intltool nativesdk-glib-2.0" > > at the risk of over-simplification, is that a not wholly inaccurate > explanation of the difference? Sounds about right. Note that using the populate_sdk task for an image recipe means your toolchain will contain some extra junk (e.g. busybox, etc) which isn't required and won't be there in toolchains created from a pure toolchain recipe (since in a pure toolchain recipe you have direct control over TOOLCHAIN_TARGET_TASK). They both basically do the same but the populate_sdk task for an image recipe automatically sets TOOLCHAIN_TARGET_TASK and TOOLCHAIN_HOST_TASK for you based on the contents of the image whereas with a pure toolchain recipe you are responsible for controlling these explicitly (or leaving them alone, in which case you'll get a minimal toolchain, as you do with the meta-toolchain recipe (horrible naming IMO)).
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#149682): https://lists.openembedded.org/g/openembedded-core/message/149682 Mute This Topic: https://lists.openembedded.org/mt/81456418/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
