как получить $ {THISDIR} внутри do_unpack_append в файле .bbappend - PullRequest
1 голос
/ 29 октября 2019

Я пытаюсь заменить файл из другого слоя файлом .bbappend. Моя цель - перезаписать определенный файл конфигурации настроенным во время этапа unpack .

В моем .bbappend я пытаюсь добавить do_unpack для копирования файла изтот же каталог, что и файл .bbappend, в рабочий каталог ${WORKDIR} Проблема заключается в том, что: * * * * ${THISDIR} возвращает каталог с оригинальным рецептом .bb, а не каталог .bbappend

* 1010. * Вот пример:
  • Оригинальный рецепт находится в: meta-origLayer / recipe.bb
  • Мой * .bbappend находится в: meta-newLayer / recipe.bbappend

recipe.bbappend :

`FILESEXTRAPATHS_prepend := "${THISDIR}:"`
do_unpack_append(){
    bb.build.exec_func('replace_file', d)
}

replace_file(){
    cp -f ${THISDIR}/fileToBeReplaced ${WORKDIR}/fileToBeReplaced
    echo ${THISDIR} > ${WORKDIR}/shouldContain_meta-newLayer
}

Существует две проблемы с recipe.bbappend:

  1. Я бы ожидал, что файл shouldContain_meta-newLayer будет содержать meta-newLayer, но вместо этого он содержит meta-origLayer.
    Я бы прежде всего хотел понять, почему ${THISDIR}ведет себя по-разному, когда помещен внутрь do_unpack_append(), когда он используется для добавления FILESEXTRAPATHS
  2. При запуске bitbake рецепт завершается ошибкой, что приводит к следующей ошибке:

cp: not stat '/ fileToBeReplaced': такого файла или каталога нет

  • Эта ошибка возникает из-за того, что fileToBeReplaced находится в подкаталоге meta-origLayer (т.е. meta-origLayer / machine1 / fileToBeReplaced ), а .bbappend ожидаетнайдите файл в / fileToBeReplaced

Мой вопрос. ,.

Я предполагал, что ${THISDIR} будет вести себя согласованно в пределах одного и того же .bbappend, но, похоже, не будет. Как лучше всего ссылаться на meta-newLayer / fileToBeReplaced из do_unpack_append()?

1 Ответ

0 голосов
/ 05 ноября 2019

Этот * .bbappend корректно перезаписывает fileToBeReplaced в рабочем каталоге во время распаковки:

FILESEXTRAPATHS_prepend := "${THISDIR}:"
SRC_URI_append += " file://fileToBeReplaced "
SAVED_DIR := "${THISDIR}"

do_unpack_append(){
    bb.build.exec_func('replace_file', d)
}

replace_file(){
    cp -f ${SAVED_DIR}/fileToBeReplaced ${WORKDIR}/fileToBeReplaced
}

Спасибо за объяснение разбора bbappend и выполнения johannes-schaub-ltb

...