Hob2 (Hob v2)

From Yocto Project
Revision as of 14:32, 7 November 2011 by Shanewang (talk | contribs)
Jump to navigationJump to search

This page holds the history for Hob v2 design and implementation.

Hob2 Requirements

See slides attached. File:HOBV2-plan-0.2.pdf

Hob2 Related Bugs

Hob2 Discussion

In order to get the accurate dependencies of the packages to be installed into a rootfs image, the hob v2 works in a 2-stages way: In stage 1, the users select the recipes which would be built to generate packages; In stage 2, the users select the packages which would be installed into the final rootfs image. The hob v2 will present the UI to the users in the form of a step-by-step wizard. Here is the main workflow:

Step 1: Users are asked to specify which layers(directories) should be included.

- TP1: Hob would check for the validity of the file conf/layer.conf to make sure the user input is a valid layer.

[P1][D5]http://bugzilla.pokylinux.org/show_bug.cgi?id=1742

Step 2: Users are asked to select various configurations, i.e. machine, distro, package format, image output type, etc.

- TP2: bitbake backend will then parse the configuration files and all the available recipes based on user's configuration.

[P1][D5]http://bugzilla.pokylinux.org/show_bug.cgi?id=1743

Step 3: Users are asked to select the recipes which will be built later to generate the packages. In this step, the users may select the recipes from scratch or select the recipes from the pre-defined base image templates, e.g. core-image-sato, core-image-minimal, etc.

- TP3: Hob frontend needs the information of all the available recipes, e.g. PN, license, description, section, etc.

[P1][D5]http://bugzilla.pokylinux.org/show_bug.cgi?id=1745


- TP4: Hob frontend needs to know the build dependencies between the recipes. Say recipe A has a build dependency on recipe B, if the users select recipe A, recipe B should also be automatically selected. Without deselecting recipe A, the users can NOT deselect recipe B only. If the users deselect recipe A, the recipe B will still remain selected.

[P1][D10]http://bugzilla.pokylinux.org/show_bug.cgi?id=1747

- TP5: bitbake backend needs to be able to generate the recipe dependencies quick enough so the Hob frontend UI won't wait too long.

[P1][TBD]http://bugzilla.pokylinux.org/show_bug.cgi?id=1749

Step 4: After the users select all the recipes they want to build and click "Next", bitbake will build them. This may take quite a long time if those recipes have never been built or if there is no sstate. During that time, the building log will be displayed in the hob UI along with the progress bar. The users may choose to cancel the build if they want.

- TP6: A progress bar should tell the users how much left for the building.

[P1][D3]http://bugzilla.pokylinux.org/show_bug.cgi?id=1751

Step 5: After all recipes are built successfully, the users will be asked to choose which packages they want to install into the final rootfs images. The available packages can be sorted by Name/Section/Size/Selected or not. The users may also be given the opportunity to configure other image options if appropriate, i.e. how much free space will be added into the final images, do we need prelink or mklibs on the final images, etc. Some packages are by default selected to be installed based on the base image template the users have chosen in step3.

- TP7: New items, i.e. package installed size, will be added into the current pkgdata.

[P1][D3]http://bugzilla.pokylinux.org/show_bug.cgi?id=1748

- TP8: Need to develop a new bitbake task to collect all the pkgdata information and send these information back to Hob UI frontend

[P1][D5]http://bugzilla.pokylinux.org/show_bug.cgi?id=1750

- TP9: Hob UI frontend will use the information generated in TP8 to build a reference count based tree model about the packages dependencies. This tree model helps the users to figure out what actually will be installed into the final rootfs images.

[P1][D15]http://bugzilla.pokylinux.org/show_bug.cgi?id=1752

- TP10: Hob UI needs to write a temporary recipe and reparse that recipes to build the final images.

[P1][D3]http://bugzilla.pokylinux.org/show_bug.cgi?id=1746

Other TPs: - TP11: users should be able to load/save their configurations, choices of recipes and/or packages.

[P1][D3]http://bugzilla.pokylinux.org/show_bug.cgi?id=1744

Open Issues(OI): - OI1: For TP5, we need to investigate whether the bitbake backend can generate the accurate recipe build dependencies using only cache data and taskData, without calling prepare_run_queue() which would take quite a long time because it will generate all the task dependencies. If not, we need to figure out a way to accelerate that process. One way is to write another special prepare_run_queue so it only process the information the hob concerns. But RP is concerned that if we have 2 kind of prepare_run_queue, we need to make sure the dependencies generated by each of them are exactly the same.

- OI2: How to handle the build dependencies of virtual targets. E.g. many recipes have build dependencies on virtual/libc, and we have both eglibc and uclibc to provide virtual/libc. Eglibc will be the default options but what if the user wants uclibc instead of eglibc. One possible way may be to treat this as part of the configuration PREPERRED_PROVIDER, and have the bitbake backend reparse the recipes based on the new configurations, but this way may take some time due to the reparsing.

[P1][TBD]http://bugzilla.pokylinux.org/show_bug.cgi?id=1753