
Você já criou uma substituição de variáveis de receita na sua meta-camada personalizada e nada acontece?
Não duvide de você e dê uma olhada na prioridade das meta-camadas usadas.
Exemplo
Queremos construir uma distro Yocto Linux para Raspberry Pi 4 e alterar a imagem de fundo da receita psplash. Para fazer isso, criamos uma pasta "psplash" na nossa meta-camada personalizada "meta-interelectronix" e adicionamos o arquivo "psplash_%.bbappend" para substituir as variáveis de "SPLASH_IMAGES".
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
Depois de adicionar "meta-interelectronix" ao "bblayers.conf", nós fazemos bitbake da distro do Linux, colocamos em um cartão SD e inicializamos o Raspberry Pi 4 com ele.
Mas nenhuma imagem de fundo personalizada para a tela inicial foi usada. Por que isso acontece?
O que causa esse comportamento?
Depois de pesquisar o "erro", vamos dar uma olhada na variável de prioridade das meta-camadas. Meta-camadas têm uma variável para a prioridade para definir em qual rank a meta-camada é usada ao fazer bitbake da distribuição Linux.
A variável é definida no arquivo "meta-interelectronix/conf/layer.conf":
BBFILE_PRIORITY_meta-interelectronix = "6"
No nosso caso, a prioridade de "meta-interelectronix" foi definida como "6" e a prioridade de "meta-raspberrypi" é definida como "9".
Quanto maior a prioridade, mais tarde as variáveis dos arquivos bbappend foram aplicadas ao bitbake. Como "meta-raspberrypi" também é um arquivo "psplash_%.bbappend", as variáveis deste arquivo substituem as substituições na nossa camada "meta-interelectronix" novamente, e nada muda.
Observação:
Altere a prioridade da sua meta-camada personalizada para um número alto, por exemplo, 50, para aplicar suas alterações mais tarde, pois todas substituem as meta-camadas estrangeiras.
Como facilitar a classificação das variáveis?
Existe um comando fácil para obter a classificação de uma variável sobre todas as meta-camadas:
bitbake-getvar -r recipe VARIABLE
No nosso caso, o comando foi:
bitbake-getvar -r psplash SPLASH_IMAGES
O resultado após alterar a prioridade da camada "meta-interelectronix" para "50" é o seguinte:
bitbake-getvar -r psplash SPLASH_IMAGES
#
# $SPLASH_IMAGES [4 operations]
# set /workdir/poky-kirkstone/meta/recipes-core/psplash/psplash_git.bb:19
# "file://psplash-poky-img.h;outsuffix=default"
# set /workdir/poky-kirkstone/meta-interelectronix/recipes-core/psplash/psplash_%.bbappend:10
# "file://psplash-ixlogo-white-img.h;outsuffix=interelectronix"
# override[rpi]:set /workdir/poky-kirkstone/meta-raspberrypi/recipes-core/psplash/psplash_%.bbappend:2
# "file://psplash-raspberrypi-img.h;outsuffix=raspberrypi"
# override[rpi]:set /workdir/poky-kirkstone/meta-interelectronix/recipes-core/psplash/psplash_%.bbappend:9
# "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
# pre-expansion value:
# "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
SPLASH_IMAGES="file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
Você também pode mostrar a prioridade das camadas usadas com o seguinte comando:
bitbake-layers show-layers
Licença de direitos autorais
Copyright © 2022 Interelectronix e.K.
Este código-fonte do Projeto está licenciado sob a licença * * GPL-3.0 * *.