【问题标题】:Yocto's ROOTFS_POSTPROCESS_COMMAND not working?Yocto 的 ROOTFS_POSTPROCESS_COMMAND 不起作用?
【发布时间】:2019-02-22 04:34:16
【问题描述】:

我正在尝试使用此变量,以便在生成我的根 FS 后删除一些不需要的 init 文件,遵循以下文档:

http://www.yoctoproject.org/docs/1.8/ref-manual/ref-manual.html#migration-1.6-variable-changes-variable-entry-behavior

我已将完全相同的 sn-p 添加到我的食谱 (.bb) 文件中,但没有任何运气...怎么了?这是我放入 .bb 文件中的代码:

my_postprocess_function() {
   echo "hello" > ${IMAGE_ROOTFS}/hello.txt
}
ROOTFS_POSTPROCESS_COMMAND += "my_postprocess_function; "

日志没有显示任何类型的错误或警告,只是 my_postprocess_function 没有执行。

【问题讨论】:

  • 你能告诉我们你的食谱和失败的日志吗?我在ROOTFS_POSTPROCESS_COMMANDS 中使用了许多函数,没有任何问题。
  • 当然,刚刚编辑了问题文本。提前致谢。

标签: yocto


【解决方案1】:

我相信存在一个基于您将右大括号放入的列而表现出来的错误。起初,我不敢相信这是这种行为,但在我测试并确认后,这是我的结果:

$ bitbake --version
BitBake Build Tool Core version 1.28.0

我正在修改 core-image-minimal.bb 如下:

失败案例

SUMMARY = "G5 - A small image just capable of allowing a device to boot."

IMAGE_INSTALL = "packagegroup-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP} ${CORE_IMAGE_EXTRA_INSTALL}"

IMAGE_LINGUAS = " "

LICENSE = "MIT"

IMAGE_ROOTFS_SIZE ?= "8192"
IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 4096", "" ,d)}"

inherit core-image

my_postprocess_function() {
  echo "hello" > ${IMAGE_ROOTFS}/hello.txt
 }

ROOTFS_POSTPROCESS_COMMAND += "my_postprocess_function; "

以上方式静默失败,不生成hello.txt 注意 } 是如何缩进一个空格的(缩进除一次空格以外的任何数量也会失败)。

但是,如果你修改如下:

成功案例

SUMMARY = "G5 - A small image just capable of allowing a device to boot."

IMAGE_INSTALL = "packagegroup-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP} ${CORE_IMAGE_EXTRA_INSTALL}"

IMAGE_LINGUAS = " "

LICENSE = "MIT"

IMAGE_ROOTFS_SIZE ?= "8192"
IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 4096", "" ,d)}"

inherit core-image

my_postprocess_function() {
  echo "hello" > ${IMAGE_ROOTFS}/hello.txt
}

ROOTFS_POSTPROCESS_COMMAND += "my_postprocess_function; "

然后,生成hello.txt。

我发现这个错误的方法是将“继承核心图像”行移动到文件末尾,如下所示:

诊断

SUMMARY = "G5 - A small image just capable of allowing a device to boot."

IMAGE_INSTALL = "packagegroup-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP} ${CORE_IMAGE_EXTRA_INSTALL}"

IMAGE_LINGUAS = " "

LICENSE = "MIT"

IMAGE_ROOTFS_SIZE ?= "8192"
IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 4096", "" ,d)}"


my_postprocess_function() {
  echo "hello" > ${IMAGE_ROOTFS}/hello.txt
 }

ROOTFS_POSTPROCESS_COMMAND += "my_postprocess_function; "

inherit core-image

在这种情况下,我得到了错误:

ERROR: ParseError at ......./recipes-core/images/core-image-minimal.bb:13: Shell function my_postprocess_function is never closed

我提到了最后一部分,以防其他人有奇怪的行为并且你已经用尽了所有调试的可能性。

【讨论】:

    【解决方案2】:

    cyberguijarro 只说他的代码存在于 .bb 配方中,但没有说明该配方是否是图像配方。 由于他不接受任何给定的答案,我建议他的问题是他的代码不在 image 配方中。

    【讨论】:

      【解决方案3】:

      这对我有用:

      my_postprocess_function() {
         echo "hello" > ${IMAGE_ROOTFS}/hello.txt
      }
      
      ROOTFS_POSTPROCESS_COMMAND_append = " \
        my_postprocess_function; \
      "
      

      【讨论】:

        猜你喜欢
        • 2015-05-29
        • 2021-10-04
        • 1970-01-01
        • 2017-07-13
        • 2021-08-28
        • 2019-01-07
        • 1970-01-01
        • 1970-01-01
        • 2019-08-05
        相关资源
        最近更新 更多