我正在使用Yocto项目,Jethro发行版。然而,我认为这个问题也适用于其他版本。
我需要修改图像创建过程。我已经阅读了BitBake手册,但我仍然不知道如何包含完整的python脚本或多个脚本。
以下是我到目前为止所发现的:
bitbake core-image-mininmalbitbake读取所有配置文件并解析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函数中。
但是,我仍然想知道如何从poky/meta/lib/oe目录中包含image.py和大量其他*.py文件(例如rootfs.py)。
发布于 2016-12-29 09:29:53
首先,请注意,在Jethro发布之后,rootfs/映像代码已经被重构了相当多的内容:最后一个版本没有示例中提到的一些函数。
在库函数的使用中没有特定于Yocto的魔力:它们通过标准python模块导入来使用,只与meta/lib/在模块搜索路径中使用。
from oe.image import create_image将使meta/lib/oe/image.py中的create_image()函数在当前作用域中可用。
https://stackoverflow.com/questions/41368527
复制相似问题