首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在构建核心图像时包含poky/meta/lib/oe/image.py?

如何在构建核心图像时包含poky/meta/lib/oe/image.py?
EN

Stack Overflow用户
提问于 2016-12-28 19:31:34
回答 1查看 482关注 0票数 2

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

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

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

代码语言:javascript
复制
bitbake core-image-mininmal

bitbake读取所有配置文件并解析bblayers.conf,之后,它将搜索所有图层目录中的菜谱core-image-minimal.bb

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

代码语言:javascript
复制
inherit core-image

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

代码语言:javascript
复制
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中找到了以下内容

代码语言:javascript
复制
def create_image(d):
    Image(d).create()

还包括:

代码语言:javascript
复制
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,并将以下内容放入其中:

代码语言:javascript
复制
fakeroot python do_rootfs_prepend () {
    print("==> do_rootfs_prepend")
}

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

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

但是,我仍然想知道如何从poky/meta/lib/oe目录中包含image.py和大量其他*.py文件(例如rootfs.py)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-29 09:29:53

首先,请注意,在Jethro发布之后,rootfs/映像代码已经被重构了相当多的内容:最后一个版本没有示例中提到的一些函数。

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

代码语言:javascript
复制
from oe.image import create_image

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41368527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档