Yocto:关于在 Yocto 构建中添加 bluez-alsa 的问题
Posted
技术标签:
【中文标题】Yocto:关于在 Yocto 构建中添加 bluez-alsa 的问题【英文标题】:Yocto: question on adding bluez-alsa in Yocto build 【发布时间】:2020-04-08 13:23:58 【问题描述】:我是 Yocto
的新手,我为默认机器 (x86-qemu) 构建了 core-image-sato
。我对添加配方有以下疑问:
-
我想在构建中添加 bluez-alsa。我检查了http://layers.openembedded.org/layerindex/branch/master/recipes/ 并得到了 bb 文件(bluez-alsa_git.bb)。为了添加它,我创建了一个目录(bluez-alsa)并在其中创建了一个 bluez-alsa_git.bb 文件。这是添加新包的正确方法吗?
现在,在添加 bluez-alsa(如上面的步骤 1 中指定)后,我正在构建 core-image-sato,但由于 systemd 模块中的依赖性(我从 systemd 模块中的 bb 文件依赖性中看到)而失败。以下是错误:
错误:没有提供“systemd”(但 /home/srawat/tree/yocto/yocto_x86/poky/meta/recipes-connectivity/bluez-alsa/bluez-alsa.bb 依赖或需要它)
systemd 被跳过:缺少必需的发行版功能“systemd”(不在 DISTRO_FEATURES 中)
错误:所需的构建目标“bluez-alsa”没有可构建的提供程序。 缺少或无法构建的依赖链是:['bluez-alsa', 'systemd']
#
现在包含“systemd”模块的方法是什么?或者
IOW一般来说,如何在镜像中包含依赖包(说的是layers.openembedded.org的现有包,没有新包)?
我还有更多现有的包要添加,将使用建议的方法添加它们。
提前谢谢
【问题讨论】:
【参考方案1】:最好包含提供配方的层,这可能有助于引入所需的直接和间接依赖关系,并且您还看到了缺少依赖关系的问题,但是故事的另一面,源层可能对其他层有进一步的依赖关系,这可能对添加单个配方需要什么要求过高。
所以在你的情况下,樱桃采摘配方似乎是一种更好的方法,因为源层有很多依赖,而且这个给定的配方只依赖于核心层。
但是您遇到的问题是您的发行版策略不使用 systemd,但本秘籍假设 systemd 已启用。所以你有两种方法
-
通过向 local.conf 添加如下内容来启用 systemd 发行版
DISTRO_FEATURES_append = " systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
VIRTUAL-RUNTIME_initscripts = ""
-
从配方中移除对 systemd 的需求
改变
DEPENDS += "alsa-lib bluez5 systemd glib-2.0 sbc"
到
DEPENDS += "alsa-lib bluez5 glib-2.0 sbc"
但这意味着你不会有存根来启用/禁用/启动/停止从这个包启动服务。由层中的配方文件为 systemd 提供 将 systemd 用于 init system see
如果需要,您可能必须编写自己的初始化脚本来启动它 你的项目
【讨论】:
感谢@Khem 的投入。我看到我的问题已被编辑,此外我还有以下问题: 1. 我在问题中的第 1 点中指定的添加包的方法是否正确(即创建目录和 .bb 文件)? 2.正如你所建议的,添加图层。我从layers.openembedded.org 看到,systemd 是“openembedded-core”层的一部分。这一层已经是 poky 的一部分,对吧?我的发行版层: meta /home/srawat/tree/yocto/yocto_x86/poky/meta 5 meta-poky /home/srawat/tree/yocto/yocto_x86/poky/meta-poky 5 meta-yocto-bsp /home/srawat /tree/yocto/yocto_x86/poky/meta-yocto-bsp 5 是的 poky 是一个发行版,由一个 repo 中的 openembedded-core+bitbake+meta-yocto 组成。以上是关于Yocto:关于在 Yocto 构建中添加 bluez-alsa 的问题的主要内容,如果未能解决你的问题,请参考以下文章