如何获取BitBake配方中通过inherit指令继承的类列表?
获取BitBake配方中通过
inherit指令继承的类列表 在Yocto Project Honister(v3.4.1)和BitBake 1.52.0环境下,要获取配方中通过inherit指令继承的类,可采用以下几种实用方法:
方法1:用bitbake -e解析配方并过滤结果
执行命令展开配方的完整执行环境,再提取inherit指令相关内容:
bitbake -e my-recipe | grep -E "^inherit"
如果需要同时查看INHERIT变量定义的类,可调整过滤规则:
bitbake -e my-recipe | grep -E "^inherit|^INHERIT"
bitbake -e会完整解析配方的所有指令和变量,能直接呈现inherit指令声明的所有类,包括通过其他继承类间接引入的。
方法2:直接检查配方与类文件
- 打开目标配方文件(
my-recipe.bb或对应.bbappend),直接查看所有inherit开头的行,获取直接继承的类。 - 若存在间接继承的情况,可到
meta-*/classes/目录下查看对应类文件的内容,确认该类是否又通过inherit引入了其他类。
方法3:编写自定义脚本程序化获取
若需要通过代码批量获取,可利用BitBake的解析接口编写脚本。创建list_inherited_classes.py文件,内容如下:
from bb.parse import handle def list_inherited_classes(recipe_path): data = handle(recipe_path, True) inherited_classes = data.getVar("__inherit_cache", True) or [] print("\n".join(inherited_classes)) if __name__ == "__main__": import sys if len(sys.argv) != 2: print(f"Usage: {sys.argv[0]} <recipe-path>") sys.exit(1) list_inherited_classes(sys.argv[1])
在构建环境中执行脚本:
python3 list_inherited_classes.py path/to/my-recipe.bb
该脚本会输出配方所有继承的类(包括直接和间接通过inherit指令引入的)。
内容的提问来源于stack exchange,提问作者Caglayan Dokme
相关产品推荐
相关产品推荐

