构建core-image-minimal.bb时如何包含poky / meta / lib / oe / image.py?

时间:2016-12-28 19:31:35

标签: python-2.7 yocto bitbake openembedded

我正在使用Yocto项目,Jethro发布。但是,我认为这个问题也适用于其他版本。

我需要修改图像创建过程。我已阅读过BitBake手册,但我仍然不知道如何包含完整的python脚本或多个脚本。

这是我到目前为止所发现的:

bitbake core-image-mininmal

bitbake读取所有配置文件并解析 bblayers.conf 后,会在所有图层目录中搜索配方 core-image-minimal.bb

core-image-minimal.bb 中,我们有:

inherit core-image

这继承了 core-image.bbclass 类,后者又继承了包含bitbake代码的 image.bbclass

fakeroot python do_rootfs () {
    from oe.rootfs import create_rootfs
    from oe.image import create_image
    from oe.manifest import create_manifest

    # generate the initial manifest
    create_manifest(d)

    # generate rootfs
    create_rootfs(d)

    # generate final images
    create_image(d)
}

在源树中搜索文本 create_image ,我在 image.py 中找到了以下内容:

def create_image(d):
    Image(d).create()

还有:

def create(self):
    bb.note("###### Generate images #######")
    pre_process_cmds = self.d.getVar("IMAGE_PREPROCESS_COMMAND", True)
    post_process_cmds = self.d.getVar("IMAGE_POSTPROCESS_COMMAND", True)

我还创建了自己的班级 my-class.bbclass ,并将以下内容添加到其中:

fakeroot python do_rootfs_prepend () {
    print("==> do_rootfs_prepend")
}

fakeroot python do_rootfs_append () {
    print("==> do_rootfs_append")
}

我看到了日志文件中的消息,所以我知道这是为了将我的python代码添加到 image.bbclass 中的 do_rootfs 函数。

但是,我仍然想知道如何 image.py 和一大堆其他* .py文件(例如 rootfs.py )来自< strong> poky / meta / lib / oe 目录。

1 个答案:

答案 0 :(得分:3)

首先请注意,在Jethro发布之后,rootfs / image代码已经被重构了:最后一个版本没有你的例子中提到的一些函数。

在库函数用法中没有特定于Yocto的魔法:它们通过标准python模块导入使用,只是在模块搜索路径中使用meta / lib /,例如。

from oe.image import create_image

将使meta / lib / oe / image.py中的create_image()函数在当前作用域中可用。