Yocto:在Yocto版本中添加bluez-alsa的问题

问题描述 投票:0回答:1

我是Yocto的新手,我为默认计算机(x86-qemu)构建了core-image-sato。我在添加配方时遇到以下问题:

  1. 我想在构建中添加bluez-alsa。我检查了http://layers.openembedded.org/layerindex/branch/master/recipes/并获得了bb文件(bluez-alsa_git.bb)。为了添加它,我创建了一个目录(bluez-alsa)并在其中创建了bluez-alsa_git.bb文件。 这是添加新软件包的正确方法吗?
  2. 现在添加bluez-alsa(如上面的步骤1中所述)后,我正在构建core-image-sato,但是由于systemd模块中的依赖性而失败了(我从systemd模块中的bb文件依赖性中看到)。下面是错误:

错误:没有提供“系统”的内容(但/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的现有包,没有新包?

此外,我还有更多现有软件包要添加,将使用建议的方法添加它们。

提前感谢

yocto alsa bluez
1个回答
0
投票

最好包括提供配方的层,这可能有助于引入所需的直接和间接依赖关系,并且您还看到了缺少的依赖关系问题,但是故事的另一面,源层可能具有对其他层的进一步依赖,这可能是问一个添加单个配方需要什么的问题。

因此,在您的情况下,选择樱桃食谱似乎是一种更好的方法,因为源层有很多dep,而且此给定的食谱仅依赖于核心层。

但是,您的问题是您的发行版策略不使用systemd,但是此配方假定已启用systemd。所以你有两种方法

  1. 通过在local.conf中添加以下内容来启用发行版systemd

    DISTRO_FEATURES_append =“ systemd”VIRTUAL-RUNTIME_init_manager =“系统”DISTRO_FEATURES_BACKFILL_CONSIDERED =“ sysvinit”VIRTUAL-RUNTIME_initscripts =“”

  2. 从配方中删除对systemd的需求

更改

DEPENDS += "alsa-lib bluez5 systemd glib-2.0 sbc"

to

DEPENDS += "alsa-lib bluez5 glib-2.0 sbc"

但是这意味着您将没有存根来启用/从此程序包启动/远程/启动/停止服务。由该层的配方文件为systemd提供将systemd用作初始化系统see]时,您将发现其中的开箱即用

如果需要,您可能需要编写自己的初始化脚本来启动它您的项目

© www.soinside.com 2019 - 2024. All rights reserved.