0

我正在尝试覆盖 dropbear.default

该层看起来像这样: meta/recipes-core/dropbear

    ├── dropbear
    │   ├── 0001-urandom-xauth-changes-to-options.h.patch
    │   ├── 0005-dropbear-enable-pam.patch
    │   ├── 0006-dropbear-configuration-file.patch
    │   ├── dropbear
    │   ├── dropbear.default
    │   ├── dropbear-disable-weak-ciphers.patch
    │   ├── dropbearkey.service
    │   ├── dropbear@.service
    │   ├── dropbear.socket
    │   └── init
    ├── dropbear_2020.81.bb
    ├── dropbear_%.bbappend
    ├── dropbear.inc
    └── files
        ├── 0007-patch1.patch
        └── 0008-patch2.patch
    └──$MACHINE folder name
        ├──dropbear.default   -------> this one I want to use to replace the old one from the /dropbear/dropbear.default above

我创建了一个 dropbear_%.bbappend

在那个 dropbear_%.bbappend 文件中我有

FILESEXTRAPATHS_prepend_myfolder := "${THISDIR}/${PN}:${THISDIR}/${MACHINE}:${THISDIR}/files:" -----> 这应该是

${THISDIR}/${MACHINE}:${THISDIR}/文件:"

我仍然遇到同样的错误

4

1 回答 1

0

将 bbappend 放在与将要附加到的 bb 配方相同的目录中是非常不寻常的,但不管你的船是什么 :) 在这种情况下,这种不寻常的情况实际上是问题的一部分。

我不确定_myfolder代表什么FILESEXTRAPATHS_prepend_myfolder?如果myfolder不是OVERRIDES变量的一部分(或其他隐式值,例如class-target,virtclass-等),那么它将不起作用。我很确定您实际上应该将其从FILESEXTRAPATHS_prepend. cf https://docs.yoctoproject.org/ref-manual/variables.html#term-OVERRIDES

考虑到当前目录布局,FILESEXTRAPATHS_prepend您的 bbappend 中的 将扩展为:

./dropbear:./${MACHINE}:./files:

Yocto 将在其中搜索文件的路径SRC_URI将从最左到右进行搜索,参见https://docs.yoctoproject.org/ref-manual/variables.html#term-FILESPATH(虽然 IMO 我没有明确表述可以给你)。

所以从技术上讲,你是在告诉 Yocto 在dropbear目录中搜索dropbear.defaultfirst 然后是${MACHINE}directory 然后files. 这已经是原始配方所使用的,所以总而言之,您的 bbappend 对您想要覆盖的文件是无操作的。

要解决此问题,请执行以下任一操作:

  • 将您的 bbappend 移动到另一个目录(可能还有层,因为我很确定您无权提交并推送到原始 dropbear 配方所在的层?然后该dropbear.default文件将从dropbear,${MACHINE}files目录中获取水平作为您的 bbappend。(由于FILESEXTRAPATHS(和FILESPATH) 中的路径是绝对的,它会找到您想要的文件),
  • 从您的文件中删除${THISDIR}/${PN}(即./dropbearFILESEXTRAPATHS_prepend或将其放在您放置要覆盖的文件的目录之后,
  • 将一个以机器( )命名的子目录${MACHINE}直接放入其中,因为(因此, )中./dropbear指定的目录会自动扩展,其中包含机器名称。基本上,假设设置为, (如果 poky 是您的发行版)将首先被搜索,然后是,然后是 ,最后是。因此,通过在其中包含一个以您的机器命名的子目录,Yocto会自动搜索它。cf https://docs.yoctoproject.org/ref-manual/variables.html#term-FILESPATHFILESPATHFILESEXTRAPATHSFILESOVERRIDESFILESPATHdirA:dirBdirA/pokydirB/pokydirA/machinedirB/machinedirAdirB./dropbear./dropbear

log.do_fetch您可以通过从 读取日志文件来检查搜索了哪些目录以及以何种顺序搜索${WORKDIR}/temp${WORKDIR}可能会以类似tmp/work/<target_arch>/dropbear/2020.81-r0/.

您可以通过运行检查变量的值以及这些值是如何构建的历史记录bitbake dropbear -e。由于它可以输出数百万行,因此您通常要么将其通过管道传输到,less要么more将其重定向到文件或将其通过管道传输到grep -e "^VARTOCHECK=".

于 2021-02-06T21:20:53.560 回答