如何在 .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
的目录
这是一个例子:
- 原食谱位于: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 有两个问题:
- 我希望文件 shouldContain_meta-newLayer 包含
meta-newLayer
,但它包含 meta-origLayer
.
我主要想了解为什么 ${THISDIR}
放在 do_unpack_append()
中时与用于前置 FILESEXTRAPATHS
时的行为不同
- 当 运行 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
我正在尝试用 .bbappend 文件替换另一层的文件。我的目标是在 unpack 阶段用自定义的配置文件覆盖特定的配置文件。
在我的 .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 有两个问题:
- 我希望文件 shouldContain_meta-newLayer 包含
meta-newLayer
,但它包含meta-origLayer
.
我主要想了解为什么${THISDIR}
放在do_unpack_append()
中时与用于前置FILESEXTRAPATHS
时的行为不同
- 当 运行 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