Yocto:关于在Yocto构建中添加bluez alsa的问题

Yocto:关于在Yocto构建中添加bluez alsa的问题,yocto,alsa,bluez,Yocto,Alsa,Bluez,我不熟悉Yocto,我为默认机器(x86qemu)构建了核心映像sato。关于添加配方,我有以下问题: 我想在构建中添加bluez alsa。我检查并得到了bb文件(bluez-alsa_git.bb)。为了添加它,我创建了一个目录(bluez-alsa)并在其中创建了一个bluez-alsa_git.bb文件。这是添加新包的正确方法吗 现在,在添加bluez alsa(如上面步骤1中所指定)之后,我正在构建核心映像sato,但由于systemd模块中的依赖关系(我从systemd模块中的bb文

我不熟悉
Yocto
,我为默认机器(x86qemu)构建了
核心映像sato
。关于添加配方,我有以下问题:

  • 我想在构建中添加bluez alsa。我检查并得到了bb文件(bluez-alsa_git.bb)。为了添加它,我创建了一个目录(bluez-alsa)并在其中创建了一个bluez-alsa_git.bb文件。这是添加新包的正确方法吗
  • 现在,在添加bluez alsa(如上面步骤1中所指定)之后,我正在构建核心映像sato,但由于systemd模块中的依赖关系(我从systemd模块中的bb文件依赖关系中可以看到),它失败了。以下是错误:
  • 错误:没有提供“systemd”(但是/home/srawat/tree/yocto/yocto_x86/poky/meta/recipes连接/bluez-alsa/bluez-alsa.bb取决于或需要它)

    已跳过systemd:缺少必需的发行版功能“systemd”(不在发行版功能中)

    错误:所需的生成目标“bluez alsa”没有可生成的提供程序。 缺少或无法构建的依赖项链为:['bluez-alsa','systemd']

    # 现在包括“systemd”模块的方法是什么?或

    一般来说,如何在映像中包含依赖包(谈论layers.openembedded.org的现有包,没有新包?

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


    提前感谢

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

    因此,在您的情况下,cherry picking recipe似乎是一种更好的方法,因为源层有相当多的DEP,加上这个给定的recipe只依赖于核心层

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

  • 通过在local.conf中添加如下内容来启用systemd发行版范围

    发行版功能\u append=“systemd” VIRTUAL-RUNTIME_init_manager=“systemd” 发行版功能\u回填\u考虑=“sysvinit” 虚拟运行时_initscripts=“”

  • 从配方中删除对systemd的需求

  • 改变

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

    但这意味着您将没有存根来启用/可扩展/启动/停止从该包启动服务。它由层中的配方文件提供给systemd 当您将systemd用于init系统时,您将从盒子中取出它

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

    感谢@Khem的投入。我看到我的问题被编辑了,我还有以下问题:1。我在问题第1点中指定的添加包的方法是否正确(即创建目录和.bb文件)?2。正如您所建议的,添加层。我从中看到,systemd是“openembedded core”层的一部分。这层已经是poky的一部分了,对吧?my distro的层:meta/home/srawat/tree/yocto/yocto_x86/poky/meta 5 meta poky/home/srawat/tree/yocto/yocto/yocto_x86/poky/meta 5 meta poky/home/srawat/tree/yocto/yocto_x86/poky/meta yocto bsp 5yes poky是一个由开放式内核+bitbake+meta yocto组成的发行版。
    DEPENDS += "alsa-lib bluez5 glib-2.0 sbc"