Layers: CLI

Il comando bitbake-layers ci permette di avere una panoramica di tutto quello che è presente nel nostro progetto. Non solo “i layers attivi”, ma anche:

  • i recipe che abbiamo a disposizione
  • gli append applicati ad un recipe
  • le dipendeze tra recipe

Questo a seconda del argomento che diamo al comando:

  • show-layers
  • show-recipes
  • show-appends
  • show-cross-depends
  • show-overlayed

Come sempre, per maggiori dettagli… documentazione ufficiale.

show-layers

Per avere una panoramica di quali layer sono presenti e attivi nel nostro progetto possiamo utilizzare:

terminal
bitbake-layers show-layers
terminal
layer                 path                                                            priority
==============================================================================================
meta                  /home/user/bitbake-builds/layers/openembedded-core/meta           5
meta-poky             /home/user/bitbake-builds/layers/meta-yocto/meta-poky             5
meta-yocto-bsp        /home/user/bitbake-builds/layers/meta-yocto/meta-yocto-bsp        5
workspace             /home/user/bitbake-builds/build/workspace                         99

show-recipes

Per vedere quali recipe sono disponibili nel nostro progetto:

terminal
bitbake-layers show-recipes
terminal
Parsing recipes...done.
Parsing of 3112 .bb files complete (3111 cached, 1 parsed). 5112 targets, 621 skipped, 0 masked, 0 errors.
=== Available recipes: ===
a2jmidid:
  meta-oe              9
abseil-cpp:
  meta-oe              20240116.3
accountsservice:
  meta-gnome           22.08.8
ace:
  meta-oe              6.5.19
ace-cloud-editor:
  meta-oe              02.07.17+git
acl:
  meta                 2.3.2

Questo comando non serve a dare informazioni su quali recipe verranno effettivamente utilizzati per costruire la nostra immagine e quali no, ma per dirci quali recipe abbiamo a disposizione grazie ai layer attivi nel nostro progetto.

show-appends

Per capire quali .bb e .bbappend vengono utilizzati per definire un recipe:

terminal
bitbake-layers show-appends
terminal
=== Appended recipes ===
base-files_3.0.14.bb:
  /workdir/build/../layers/oe/meta-poky/recipes-core/base-files/base-files_%.bbappend
  /workdir/build/../layers/st/meta-st-stm32mp/recipes-core/base-files/base-files_%.bbappend
bash_5.2.21.bb:
  /workdir/build/../layers/st/meta-st-openstlinux/recipes-extended/bash/bash_%.bbappend
build-sysroots.bb:
  /workdir/build/../layers/qt/meta-qt6/recipes-core/meta/build-sysroots.bbappend
busybox_1.36.1.bb:
  /workdir/build/../layers/oe/meta-poky/recipes-core/busybox/busybox_%.bbappend
  /workdir/build/../layers/st/meta-st-openstlinux/recipes-core/busybox/busybox_%.bbappend
  /workdir/build/../layers/st/meta-st-stm32mp/recipes-core/busybox/busybox_%.bbappend
ckermit_302.bb:
  /workdir/build/../layers/st/meta-st-openstlinux/recipes-support/ckermit/ckermit_%.bbappend

show-cross-depends

All’interno di un recipe esistono varie istruzioni che creano una dipendenza rispetto ad un altro recipe. Possiamo visualizzarle in dettaglio con:

terminal
bitbake-layers show-cross-depends
terminal
meta-networking/recipes-support/netcat/netcat-openbsd_1.195.bb inherits meta/classes-recipe/update-alternatives.bbclass
meta-networking/recipes-support/netcat/netcat-openbsd_1.195.bb inherits meta/classes-recipe/gettext.bbclass
meta-networking/recipes-support/netcat/netcat-openbsd_1.195.bb inherits meta/classes-recipe/pkgconfig.bbclass
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb RDEPENDS meta/recipes-core/base-files/base-files_3.0.14.bb
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb RDEPENDS meta/recipes-core/base-passwd/base-passwd_3.6.3.bb
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb RDEPENDS meta/recipes-core/busybox/busybox_1.36.1.bb
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb RDEPENDS meta/recipes-core/netbase/netbase_6.4.bb
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb RRECOMMENDS meta-st-stm32mp/recipes-kernel/linux/linux-stm32mp_6.6.bb
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb inherits meta-st-stm32mp/classes/flashlayout-stm32mp.bbclass
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb inherits meta/classes-global/base.bbclass
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb inherits meta/classes-global/patch.bbclass
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb inherits meta/classes/terminal.bbclass
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb inherits meta/classes-global/staging.bbclass
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb inherits meta/classes-global/mirrors.bbclass
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb inherits meta/classes-global/utils.bbclass
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb inherits meta/classes-global/utility-tasks.bbclass
meta-oe/recipes-core/packagegroups/packagegroup-boot.bb inherits meta/classes-global/logging.bbclass

show-overlayed

Se in un progetto sono presenti due file .bb con stesso nome, ma versioni diverse, bitbake sceglie quello con versione più alta. Esistono meccanismi per modificare questo comportamento, ma rimane vero che un solo .bb può essere utilizzato per un recipe. Il termine overlayed si riferisce al fatto che un .bb ha la precedenza su un altro .bb e lo oscura. Possiamo visualizzare questi casi con:

terminal
bitbake-layers show-overlayed
terminal
=== Overlayed recipes ===
noto:
  meta-fg-software     1.0
  meta-fg-bsp          1.0
pipewire:
  meta-st-openstlinux  1.2.3
  meta-multimedia      1.0.9
python3-qface:
  meta-qt6             2.0.11
  meta-python          2.0.8
wireplumber:
  meta-st-openstlinux  0.5.6
  meta-multimedia      0.5.1