Hob2 (Hob v2): Difference between revisions
Line 39: | Line 39: | ||
- TP1: Hob would check for the validity of the file conf/layer.conf to make sure the user input is a valid layer. | - 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. | 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. | - 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. | 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. | - 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. | - 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. | - 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. | 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. | - 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. | 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. | - 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 | - 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. | - 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. | - 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: | Other TPs: | ||
- TP11: users should be able to load/save their configurations, choices of recipes and/or packages. | - 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): | Open Issues(OI): | ||
Line 70: | Line 96: | ||
- 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. | - 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''' |
Revision as of 14:18, 7 November 2011
Hob2 Requirements
See slides attached. File:HOBV2-plan-0.2.pdf
Hob2 Related Bugs
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1588
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1688
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1573
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1691
- http://bugzilla.pokylinux.org/show_bug.cgi?id=991
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1241
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1272
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1303
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1450
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1572
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1581
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1221
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1277
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1742
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1743
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1744
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1745
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1746
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1747
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1748
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1749
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1750
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1751
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1752
- http://bugzilla.pokylinux.org/show_bug.cgi?id=1753
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.