[yocto] [Yocto] RFC: Image Creator and Config Creator, design thoughts

Darren Hart dvhart at linux.intel.com
Tue Apr 26 11:51:08 PDT 2011



On 04/26/2011 11:40 AM, Bruce Ashfield wrote:
> On 11-04-22 11:10 AM, Tom Zanussi wrote:
>> On Thu, 2011-04-21 at 09:05 -0700, Darren Hart wrote:
>>> I sat down with Josh earlier this week to discuss how I might use the
>>> Image Creator in my development and to address any issues that might
>>> pose as blockers to my finding such a tool useful. This led to various
>>> feature discussions, scope setting, etc. I wanted to capture that here
>>> and also ask for comments from other users and developers.
>>>
>>>
>>> Image Recipe Generation
>>> -----------------------
>>> The image creator Josh is working on currently facilitates specifying
>>> the policy (bitbake term "distro", such as poky, poky-bleeding, or
>>> poky-lsb), image, and any additional packages you may want to include.
>>> It then provides a simple wrapper to bitbake and it's output. This is
>>> useful in and of itself as sorting out which variables to modify
>>> (IMAGE_INSTALL, MACHINE(_ESSENTIAL?)_R?DEPENDS_append(_$MACHINE), etc)
>>> and which tasks to rebuild (task_base, task_machine_base, poky-image-*,
>>> etc.) can be a frustrating exercise (or at least it has been for me).
>>>
>>> In order for this feature to be the most useful, it needs to be able to
>>> save the result of the user's selection. This involves saving off the
>>> "distro" selection (typically in local.conf) as well as an image recipe
>>> defining which packages to include in the resulting image. This could be
>>> done by writing to local.conf and saving a new *image*.bb file in a
>>> suitable location.
>>>
>>>
>>> Writing Layers
>>> --------------
>>> The suitable location is most likely a layer, which suggests the Image
>>> Builder should probably know how to construct a basic layer skeleton and
>>> prompt the user to fill in the descriptive bits required for layer.conf.
>>>
>>> I could see this as having been useful for the recent Yocto Project 1.0
>>> launch demo we worked on, which added rygel upnp video renderers to the
>>> the 0.9 audio only demo. This implies the Image Builder should also be
>>> able to work with an existing layer - perhaps only those that it created
>>> - and save the changes back to that layer.
>>>
>>>
>>> Configuration Fragments
>>> -----------------------
>>> In order to properly build the demo images (poky-image-rygel
>>> specifically) some specific license related variables need to be set,
>>> typically in local.conf:
>>>
>>> COMMERCIAL_LICENSE = ""
>>> COMMERCIAL_AUDIO_PLUGINS ?= "gst-plugins-ugly-mad
>>> gst-plugins-ugly-mpegaudioparse"
>>> COMMERCIAL_VIDEO_PLUGINS ?= "gst-plugins-ugly-mpeg2dec
>>> gst-plugins-ugly-mpegstream gst-plugins-bad-mpegvideoparse"
>>>
>>> Without the above, the upnp demo is mostly non-functional. Having to
>>> manually add these sorts of settings significantly reduces the value of
>>> the Image Builder in my mind. This led to the discussion of providing a
>>> graphical mechanism to set the variables that have some impact on how
>>> the generated image recipe is built.
>>>
>>> Something like a Linux kernel kconfig mechanism, which only shows the
>>> user relevant options (albeit still WAY too many), might be really nice
>>> here. Perhaps an interface that parsed the recipes included in the image
>>> recipe and determined which variables would be relevant to the user and
>>> present those in the UI with help derived from documentation.conf
>>> doctags (or perhaps a new mechanism).
>>>
>>
>> Input we got from the ELC talk suggested that people did think it would
>> be intuitive and useful to expand the kernel menuconfig 'UI' down to all
>> the other packages in the image.
>>
>> I've used UIs designed like that in other build systems and it was very
>> useful, so I'd add my +1 to the ELC requests...
> 
> And I'd add another +1 to that.
> 

So the kernel guys agree that menuconfig should used everywhere.
Surprise, Surprise. ;-)

--
Darren

> Bruce
> 
>>
>> Tom
>>
>>> As this would be a considerable effort, and would surely delay the
>>> progress of the image builder itself, perhaps a Configuration Editor
>>> would be a good companion tool which the Image Builder could launch to
>>> do the relevant configurations
>>>
>>>
>>> Conclusions
>>> -----------
>>> The goal of any user interface should be to abstract away to
>>> implementation details that are not particularly relevant to task at
>>> hand, or to the user's perception of the task at hand.  I feel these
>>> tools as discussed above would help contain feature creep, while still
>>> allowing for a more complete graphical interface to configuring and
>>> building images.
>>>
>>>
>>> Thoughts? Criticisms?
>>>
>>>
>>
>>
>> _______________________________________________
>> yocto mailing list
>> yocto at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/yocto
> 
> 

-- 
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel



More information about the yocto mailing list