Как запустить сценарий оболочки при компиляции рецепта в Yocto

#yocto #bitbake

#yocto #bitbake

Вопрос:

Я создал сценарий оболочки bash и хочу, чтобы этот сценарий выполнялся во время сборки этого рецепта (в соответствии с которым был создан скрипт). Итак, я хочу, чтобы bitbake запускал этот скрипт при создании рецепта. Что я должен добавить в файл .bb?

Любая помощь была бы действительно оценена.

Комментарии:

1. зависит от того, что должен делать ваш скрипт. Но обычно просто создайте задачу или проще, сделайте do_compile_append(){ ${WORKDIR}/<your-script> <аргументы>} и она будет запущена. Если еще нет задачи do_compile, вы можете опустить _append или просто использовать другую задачу

Ответ №1:

Если вы хотите запустить скрипт в рецепте, вы можете определить задачу и добавить к ней зависимость

Это в моем uboot.bb файле. При этом образ uboot копируется в каталог каждый раз, когда компилируется uboot

before do_build означает, что этот сценарий выполняется при каждом запуске bitbake <recipe>

after do deploy Означает, что при каждой компиляции uboot выполняется этот сценарий.

 PACKET_OUTDIR ?= "${DEPLOY_DIR_IMAGE}/out"
UBOOT_OUTFILE ?= "${MACHINE}.uboot"

# Copy bin after compile
addtask bin after do_deploy before do_build
# redo task if vardeps variables changed from last execution
do_bin[vardeps] = "UBOOT_OUTFILE PACKET_OUTDIR"
do_bin() {
  # create directory
  install -d ${PACKET_OUTDIR}
  
  # copy uboot bin to the out directory and print output on display  
  bbplain $(cp -vH ${DEPLOY_DIR_IMAGE}/${UBOOT_MAKE_TARGET}-${UBOOT_CONFIG} ${PACKET_OUTDIR}/${UBOOT_OUTFILE})  
  
  # run an external script in home
  ~/external_script.sh
}
  

Если вы хотите запустить скрипт перед компиляцией, просто используйте before do_compile