如何在 .bbappend 文件中获取 do_unpack_append 中的 ${THISDIR}

how to get ${THISDIR} inside do_unpack_append in .bbappend file

我正在尝试用 .bbappend 文件替换另一层的文件。我的目标是在 unpack 阶段用自定义的配置文件覆盖特定的配置文件。

在我的 .bbappend 中,我试图附加 do_unpack 以将文件从与 .bbappend 文件相同的目录复制到工作目录中 ${WORKDIR} 问题是:当在 do_unpack_append, ${THISDIR} 返回的是原始 .bb 配方的目录,而不是 .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. 时的行为不同
  3. 当 运行 bitbake 时,配方失败,产生以下错误:

cp: cannot stat '/fileToBeReplaced': No such file or directory

我的问题。 . .

我假设 ${THISDIR} 在同一个 .bbappend 中会表现一致,但它似乎没有。从 do_unpack_append() 中引用 meta-newLayer/fileToBeReplaced 的最佳方法是什么?

这个 *.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