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 的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Yocto 中正确构建 mDNS?

Yocto/Qt5.6:无法构建示例 Qt 应用程序

在 Yocto 树中使用预构建的工具链

yocto / qemu 中的 efi 变量

无法构建,因为配方 sysroot 中缺少依赖项 - yocto

为啥 yocto 跳过我的食谱?