[bitbake-devel] [HELP] Create a new image recipe based on a (changed) existing one

Andre McCurdy armccurdy at gmail.com
Mon Feb 10 21:12:34 UTC 2020


On Mon, Feb 10, 2020 at 6:15 AM Joao Carlos Cabral (P)
<Joao.CCabral at parceiros.nos.pt> wrote:
>
> Hi,
>
> I'm trying to create a image recipe based on a existing one.
> I've searched online, and I could find such an example.
>
> My problem is that the image I what to serve as a base is changed in
> another layer, and I want to include that changes.
>
> Ex:
>
> (tree)
>
> Prj_root
>     -> layer1
>         -> recipes-core
>             -> images
>                 -> my-image.bb  [This is the base recipe]
>     -> layer2
>         -> recipes-core
>             -> images
>                 -> my-image.bbappend [This is the changed one]
>     -> layer3
>         -> recipes-core
>             -> images
>                 -> my-image-dev.bb [this is the new image, based on my-image]
>
> my-image.bbappend is something like this:
>
> --------------------- my-image.bbappend ---------
> PROVIDES = "product"
>
> IMAGE_INSTALL += " \
>         <some_packages> \
> "
> IMAGE_INSTALL_remove += " \
>         <other-packeges>
> "
>
> (+ other functions related with signing the image)
> _________________________________________________
>
> The final image is created with 'bitbake product'.
> And, I want to create a dev image that must be based on the current
> "product" image (my-image.bb + my-image.bbappend) with some dev
> packages.
> So, I need to include the changes that my-image.bbapend does to this
> dev image I'm trying to create.
>
>
> Tried simple create a new image that should be a copy of the working
> one, and then add the needed packages for development.
> So I did the following...
>
> ---------------- my-image-dev.bbappend ----------
>
> SUMMARY = "dev Image"
>
> require layer1/recipes-core/images/my-image.bb
> ------------------------------------------------
>
> I can run 'bitbake my-image-dev' and it runs, but doesn't produce the
> same output as 'bitbake product'.
>
> Also, If I run 'bitbake my-image-dev' 1st, it finishes fine. Running
> 'bitbake product' after makes a bunch of other tasks and finishes fine.
> Running again 'bitbake my-image-dev' finishes with an error on a
> specific task. ( It shows that they are not building the same thing)
>
> How can I do what I need?
> NOTE: I can't change anything in the layer1 and layer2.

For the future, the clean way to do this would be to for the base
image to include a package group for dev tools. The dev tools package
group would be defined by a recipe in layer 1 and empty by default.
When you want to add dev tools you can create a .bbappend (in layer 3)
for the dev tools recipe.

If you can't modify layers 1 or 2 you can archieve something similar
with a .bbappend in layer 3 which adds the dev tools to one of the
package groups which _is_ being included in the image. For example, if
you look in the manifest for the image you should see a number of
package groups named packagegroup-base-ipv6, packagegroup-base-nfs,
etc which are being included in the image. You can add packages to
these package groups by using a .bbappend for the "
packagegroup-base.bb" recipe.


More information about the bitbake-devel mailing list