【问题标题】:Yocto bitbake .bbappend not installing fileYocto bitbake .bbappend 未安装文件
【发布时间】:2020-09-30 08:27:45
【问题描述】:

我正在尝试将 json 添加到设备上的 /etc。 已阅读许多 SO 答案并没有找到解决方案。 新的 json 名为 audio_config.json,它位于 files/ 与 .bbappend 相同的目录下。之所以使用 append,是因为只有一个设备型号需要此文件,而主要配方适用于多个型号。

这样做:

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://audio_config.json"

do_install_append() {
   install -d ${D}${sysconfdir}
   install -m 644 ${B}/audio_config.json ${D}${sysconfdir}
}

得到一个错误,指出 json 不在工作目录中。 如果我使用 ${WORKDIR} 而不是 ${B},也会发生同样的事情。 此树中的其他配方遵循相同的模型,不确定问题出在哪里。

如果我使用 ${THISDIR} 那么它说 json 不在基本配方目录中 - 它不应该是。

来自我尝试过的 SO 帖子

FILES_${PN}-audio_config.json = "${sysconfdir}/audio_config.json"

但这似乎没有效果。

TIA!

【问题讨论】:

  • 是xraudio_config.json 还是audio_config.json?因为你的安装似乎是install -m 644 ${B}/xraudio_config.json ${D}${sysconfdir}。
  • 抱歉打错了,我已经更正了。
  • 如果audio_config.json位于${RECIPE_APPEND_DIR}/files/audio_config.json,应该可以找到,然后install -m 644 ${WORKDIR}/audio_config.json ${D}${sysconfdir}应该可以做
  • 您是否尝试使用 bbdebug 调试验证 SRC_URI 和 FILESEXTRAPATHS ?您还可以使用 devshell 任务来确保文件存在于工作路径中?

标签: yocto recipe


【解决方案1】:

根据用户和文档,我上面的内容应该有效。但它没有。 起作用的是:

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
AUDIO_CONFIG_FILES := "${THISDIR}/files"

do_install_append() {
   install -d ${D}${sysconfdir}
   install -m 644 ${AUDIO_CONFIG_FILES}/audio_config.json ${D}${sysconfdir}
}

使用变量立即扩展 $THISDIR 正确设置本地路径并进行安装。

【讨论】:

  • 首先检查文件audio_config.json的位置。您应该使用类似${S}/audio_config.json 而不是${AUDIO_CONFIG_FILES}/audio_config.json。 S 可能在 bb recipes 文件中定义
  • audio_config.json 位于 .bbappend 所在目录下的 files/ 中。 ${S} 是可能需要也可能不需要 json 的组件的源目录,所以我不能把它放在那里。
  • 我从未见过在安装过程中使用 THISDIR。因为查找文件时使用的搜索路径已经扩展,所以我会先将 json 文件添加到提取的 src 文件中,然后再将其移动到目标目录。
【解决方案2】:

在do_unpack() 中,文件被复制到${WORKDIR},而不是${B}(构建目录)和${S}(源目录)。这个食谱适用于 Yocto Dunfell:

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://audio_config.json"

do_install_append() {
   install -d ${D}${sysconfdir}
   install -m 644 ${WORKDIR}/audio_config.json ${D}${sysconfdir}
}

注意第二次调用install时的不同源路径参数。

我猜是有一个 yocto/bitbake 错误影响了你。

【讨论】:

    【解决方案3】:

    您添加 FILES_${PN} 以将文件添加到图像是正确的。但不要添加任何后缀,只需将文件附加到变量:

    FILES_${PN} += "${sysconfdir}/audio_config.json"
    

    此外,您应该在安装中使用${WORKDIR}。

    install -m 644 ${WORKDIR}/audio_config.json ${D}${sysconfdir}
    

    同时检查你的包的工作目录以获取一些日志并查看实际检索到的文件以便于调试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 2017-01-01
      相关资源
      最近更新 更多