gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:39:08 33 4
gpt4 key购买 nike

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

在我的 .bbappend 中,我试图附加 do_unpack将文件从与 .bbappend 文件相同的目录复制到工作目录 ${WORKDIR}问题是:在里面时 do_unpack_append , ${THISDIR}正在返回原始 .bb 配方的目录,而不是 .bbappend 的目录

这是一个例子:

  • 原始配方位于: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: cannot stat '/fileToBeReplaced': No such file or directory

  • 发生此错误是因为 fileToBeReplaced 位于 meta-origLayer 的子目录中(即 meta-origLayer/machine1/fileToBeReplaced)并且 .bbappend 期望在 /fileToBeReplaced
  • 中找到该文件

我的问题。 . .

我假设 ${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

关于yocto - 如何在 .bbappend 文件中的 do_unpack_append 中获取 ${THISDIR},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58610052/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com