Yocto 的 ROOTFS_POSTPROCESS_COMMAND 不起作用?

cyb*_*rro 3 yocto

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

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

我已将完全相同的代码片段添加到我的食谱 (.bb) 文件中,但没有任何运气......出了什么问题?这是我放入 .bb 文件中的代码:

my_postprocess_function() {
   echo "hello" > ${IMAGE_ROOTFS}/hello.txt
}
ROOTFS_POSTPROCESS_COMMAND += "my_postprocess_function; "
Run Code Online (Sandbox Code Playgroud)

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

Cra*_* AA 5

我相信有一个错误会根据您将右花括号放在哪一列而显现出来。最初,我无法相信这是这种行为,但在我测试并确认后,这是我的结果:

$ bitbake --version
BitBake Build Tool Core version 1.28.0
Run Code Online (Sandbox Code Playgroud)

我正在修改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; "
Run Code Online (Sandbox Code Playgroud)

上面的代码会默默地失败,并且不会生成 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; "
Run Code Online (Sandbox Code Playgroud)

然后,生成hello.txt。

我发现此错误的方法是将“inherit core-image”行移至文件末尾,如下所示:

诊断

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
Run Code Online (Sandbox Code Playgroud)

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

ERROR: ParseError at ......./recipes-core/images/core-image-minimal.bb:13: Shell function my_postprocess_function is never closed
Run Code Online (Sandbox Code Playgroud)

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