[OE-core] [PATCH 6/6] image.bbclass: Add support to build the SDK in parallel with the image
Mark Hatle
mark.hatle at windriver.com
Mon Jul 2 21:37:24 UTC 2012
On 7/2/12 4:05 PM, Phil Blundell wrote:
> On Mon, 2012-07-02 at 15:32 -0500, Mark Hatle wrote:
>> On 7/2/12 3:12 PM, Phil Blundell wrote:
>>> On Sat, 2012-06-30 at 00:07 -0500, Mark Hatle wrote:
>>>> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
>>>> index 4f50376..7e41982 100644
>>>> --- a/meta/classes/image.bbclass
>>>> +++ b/meta/classes/image.bbclass
>>>> @@ -3,6 +3,11 @@ inherit rootfs_${IMAGE_PKGTYPE}
>>>> IMAGETEST ?= "dummy"
>>>> inherit imagetest-${IMAGETEST}
>>>>
>>>> +inherit populate_sdk_base
>>>
>>> This seems to haul a vast amount of stuff into image.bbclass. Is it
>>> really necessary to have all that in there by default?
>>
>> Yes, in order to build an SDK that matches an image, it is.
>>
>> We need to have all of the code that is needed for both IMAGE and SDK
>> generation. The SDK code is only active if and only if you call the
>> populate_sdk task.
>
> Can the SDK bits not live in another class which is applied on top of
> the images via BBCLASSEXTEND or some such? I don't entirely understand
> why this all needs to be in image.bbclass if, as you say, it's inactive
> by default.
In order to build an SDK that matches an images behavior, we need information
that can only be supplied from an image recipe, and corresponding image.bbclass
processing. Once we have that information, then we can generate an SDK.
The SDK code needs to be included into this stream in order to get the
information for all possible image types, otherwise we'd have to modify each
image type that you might possibly want an SDK for. I believe that is
unreasonable, since if it works for one image type, why shouldn't it work for
all of them.
The code is not enabled by default, i.e. in the main task order, specifically to
preserve existing behavior for the majority of users who don't want a matching
SDK each time they build an image. (Building an SDK usually involves building
somewhere around 800-1000 extra tasks, depending on configuration.)
The SDK code is only enabled when the bitbake -c populate_sdk <image recipe> is
called. This also avoids all of the standard tasks from the image recipe.
> The code itself looks harmless enough to a casual inspection, but the
> increased number of nested "inherits" does make it rather more difficult
> to understand what's going on, since you have to inspect all of the
> inherited files to understand whether or not they are doing anything.
The image class and populate_sdk_base class are designed to continue to be
managed and handled separately from a development point of view. The only
interconnection is (in image.bbclass) the definiton of:
TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}"
TOOLCHAIN_TARGET_TASK_ATTEMPTONLY += "${PACKAGE_INSTALL_ATTEMPTONLY}
${PACKAGE_GROUP_dev-pkgs} ${PACKAGE_GROUP_dbg-pkgs}"
(note: the PACKAGE_GROUP_*, PACKAGE_INSTALL and PACKAGE_INSTALL_ATTEMPTONLY are
the items that are only known by the image recipe/image.bbclass..)
If you are not using the SDK, the values get set and ignored.
> If we really are going to have this included in image.bbclass, though,
> then it might be worth trying to eliminate the duplicate definitions
> between image.bbclass and populate_sdk{_base}.bbclass. I think PID and
> EXCLUDE_FROM_WORLD, at least, are defined in both places and I suspect
> there are probably some more.
If these duplications were removed, then the standalone SDKs such as
meta-toolchain or meta-toolchain-gmae would fail. By leaving them there, the
behaviors are kept in sync, those values happen to be the same in both, and it
allows the SDK to continue to be used separately as it has always been.
We could conceivable remove them from the image.bbclass, but if someone decides
later to break apart this code -- then they'll have to re-add them to get the
desired behavior. I felt it was safer to leave the image and populate_sdk as
complete as possible.
--Mark
> p.
>
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
More information about the Openembedded-core
mailing list