【问题标题】:Bitbake error - Nothing RPROVIDESBitbake 错误 - 没有 RPROVIDES
【发布时间】:2015-04-06 13:34:24
【问题描述】:

我会将应用程序拆分为多个包。基本上我只是想添加另一个可以使用特定图像构建的图像。

在与我添加的应用程序关联的 .bb 文件中:

SRC_URI = " \
          ...
          file://api.conf \
          file://script.sh \
          "

PACKAGES =+ "${PN} ${PN}-tools"

FILES_${PN}-tools = "${bindir}/mrvl/tools/script.sh \
                     ${sysconfdir}/mrvl/api.conf \
                    "

然后,我在我的 bb 图像测试中添加了以下行

IMAGE_INSTALL += " mrvl-tools"

我正在使用命令 bitbake image-test 返回:

ERROR: Nothing RPROVIDES 'mrvl-tools' (but /home/usr/../image-test.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'mrvl-tools' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['mrvl-tools']
ERROR: Required build target 'image-test' has no buildable providers.
Missing or unbuildable dependency chain was: ['image-test', 'mrvl-tools']

我遵循 bluez5-obex 包的相同定义,并且 IMAGE_ISTALL += " bluez5-obex" 有效..

我忘记了什么?

【问题讨论】:

  • 什么是“mrvl-tools”?您还必须有它的食谱。
  • 我已经有一个“mrvl”食谱,我在 /mrvl/files 下添加了 script.sh 和 api.conf,我只想拆分食谱以便将这两个文件包含在我的专用于测试的图像。我关注了:yoctoproject.org/docs/1.1/poky-ref-manual/…
  • 是否在do_install() 中安装script.sh 和api.conf?否则,mrvl-tools 将为空,因此不会创建...
  • 文件是如何命名的,存储在哪里?如果它在自己的层中,您是否已将此层添加到您的配置中?
  • 这些文件存放在 meta-bsp/recipes-kernel/mrvl-test/files 下,层 meta-bsp 添加到配置 bblayers.conf

标签: packages yocto openembedded bitbake


【解决方案1】:

安德斯很近。

首先,您的 PACKAGES 定义是错误的,您需要的只是 PACKAGES += "${PN}-tools"。

但要记住的重要一点是 FILES 是按照 PACKAGES 的顺序进行评估的,所以首先处理 ${PN} 并且默认的 FILES_${PN} 包含 ${bindir} ${sysconfdir},所以 ${bindir} 和 ${sysconfdir} 的所有 都在 ${PN} 中。然后它尝试处理 ${PN}-tools 并且它的 FILES 中的表达式都不匹配任何剩余的文件,因此包是空的。

因此,要么将 FILES_${PN} 设置为您希望它包含的内容,要么使用 PACKAGE_BEFORE_PN=${PN}-tools 在默认 PACKAGES 值中注入 PN-toolsbefore PN。我保证,阅读 bitbake.conf 将有助于使这一点更清楚。

请注意,我预计该错误是 rootfs 时间失败而不是映像构建失败,但希望这就是问题所在。

【讨论】:

    【解决方案2】:

    最好验证一下图层是否已经添加到了

    conf/bblayers.conf

    这是它通常以“没有提供”开头的地方

    BBLAYERS += " \
      ${BSPDIR}/sources/"your layer" \
    

    【讨论】:

      【解决方案3】:

      感谢罗斯伯顿的回答。但我修改了 .bb 文件,它目前包含以下几行:

      SUMMARY_${PN}-tools="mrvl tools test"
      PACKAGE_BEFORE_PN += "${PN}-tools"
      RDEPENDS_${PN}-tools = ""
      
      FILES_${PN}-tools = "${bindir}/mrvl/tools/script.sh ${sysconfdir}/mrvl/api.conf"
      ALLOW_EMPTY_${PN}-tools = "1"
      

      构建完成,名为 mrvl-test-tools_0.1-r0.ipk 的包在 /build/tmp/deploy/ipk/board/ 下创建良好,但它不包含任何内容。这是由于变量“ALLOW_EMPTY..="1"”。如果没有此行,则构建失败并显示以下消息

      Collected errors:
       * opkg_install_cmd: Cannot install package mrvl-test-tools.
      
       ERROR: Function failed: do_rootfs
       ERROR: Logfile of failure stored in: /home/../build/tmp/work/oe-linux/test-img/1.0-r0/temp/log.do_rootfs.4639
       ERROR: Task 7 (/home/../sources/meta-board/recipes-images/images/test-img.bb, do_rootfs) failed with exit code '1'
      

      我不明白为什么文件现在不包含在 .ipk 中

      【讨论】:

      • 你能给我们看看完整的 .bb 文件吗?由于 mrl-test-tools 仍然是空的,我认为您没有正确安装 script.sh 和 api.conf 。因此,我想看看完整的食谱。并删除ALLOW_EMPTY_${PN}-tools = "1",因为您不想得到一个空包。图层在某处是公开的吗?
      【解决方案4】:

      你不需要在额外文件路径中添加file

      THISAPPENDFILESDIR := "${THISDIR}/file"
      FILESEXTRAPATHS_prepend := "${THISDIR}/file:"
      

      【讨论】:

        猜你喜欢
        • 2019-12-06
        • 2018-07-17
        • 2018-04-03
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 2020-07-18
        • 2017-06-17
        • 1970-01-01
        相关资源
        最近更新 更多