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

标签 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,而类又继承了image.bbclass,其中包含bitbake代码:

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 目录。

最佳答案

首先,请注意,在 Jethro 版本发布后,rootfs/image 代码已经进行了相当多的重构:最后的版本没有示例中提到的某些功能。

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

from oe.image import create_image

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

关于python-2.7 - 构建 core-image-minimal.bb 时如何包含 poky/meta/lib/oe/image.py ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41368527/

相关文章:

python - 如何查找和卸载 numpy 重复版本

python - 如何从自定义对象按字段堆化

python - $ne 不适用于 pymongo

c++ - Yocto bitbake 与 SDK sysroot 冲突

yocto - 像在实时系统上一样在 bitbake 配方中运行命令

embedded - Yocto 中的 BSP 和分布层有什么区别

yocto - 如何清理、释放空间?

python - 在 MAC OSX 上使用 PY2APP 打包 key 环模块时出错

yocto - 如何简化 recipe-sysroot-native

linux - 如何指定使用 bitbake/yocto 构建哪个内核