介绍Yocto的MACHINE_FEATURES和DISTRO_FEATURES

发布时间 2024-01-04 14:56:03作者: 博朗哥哥

在学习Yocto之初以及翻阅Yocto manual时,对于MACHINE_FEATURES和DISTRO_FEATURE的解释都十分官方,只是说明代表有相关的功能支持,但是一直对enable MACHINE_FEATURE的特定项究竟包含了哪一些Package以及是怎么定义的十分模糊。
这次就自己上手去追了一下源代码,从源代码 poky/meta/recipes-core/packagegroups/packagegroup-base.bb 中就能比较清晰的看出,MACHINE_FEATURES和DISTRO_FEATURE都只是条件变量的输入,在此recipe中会定义每个MACHINE_FEATURES对应的具体的package是什么。

摘取其中的片段进行说明下:当在machine.conf中定义了WIFI MACHINE_FEATURES和DISTRO_FEATURE后,会自动添加packagegroup-base-wifi中的包。
${@bb.utils.contains("COMBINED_FEATURES", "wifi", "packagegroup-base-wifi", "", d)}

SUMMARY:packagegroup-base-wifi = "WiFi support"
RDEPENDS:packagegroup-base-wifi = "
iw
wireless-regdb-static
wpa-supplicant"

RRECOMMENDS:packagegroup-base-wifi = "
${@bb.utils.contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-zd1211rw', '',d)}
kernel-module-ieee80211-crypt
kernel-module-ieee80211-crypt-ccmp
kernel-module-ieee80211-crypt-tkip
kernel-module-ieee80211-crypt-wep
kernel-module-ecb
kernel-module-arc4
kernel-module-crypto_algapi
kernel-module-cryptomgr
kernel-module-michael-mic
kernel-module-aes-generic
kernel-module-aes"