【问题标题】:How do I figure out what is causing a recipe to be included?我如何找出导致配方被包含在内的原因?
【发布时间】:2020-11-16 14:00:55
【问题描述】:

我正在处理一个 yocto 项目,在我的自定义层中,我有几十个食谱。一些食谱仍在开发中,未在我的图片食谱中列出。然而,一个损坏的配方仍在被拉入构建中。我已经删除了 build/tmp 目录以及我的状态缓存并重建。但是这个糟糕的食谱仍然被拉进来。我如何弄清楚这个糟糕的食谱是什么? bitbake -e 根本不显示我的食谱。

我是靠运气弄明白的,所以我真的要求将来有调试技能来做这件事。就我而言,糟糕的食谱有十几个提供,另一个食谱取决于其中一个。有没有办法让 bitbake 指示为什么要烘烤食谱?类似于“编译 lib_bad.bb 因为 lib_good.bb 依赖它”

【问题讨论】:

    标签: yocto bitbake


    【解决方案1】:

    你可以生成依赖图:

    bitbake -g <packagename>
    vim task-depends.dot
    

    或图形版本(graphviz):

    bitbake -g <packagename> -u taskexp
    

    【讨论】:

      【解决方案2】:

      所以要回答我自己的问题,有几点可以提供:https://docs.yoctoproject.org/what-i-wish-id-known.html 我的问题基本上是该列表中第 8 项的症结所在。所以这就是我可以做的事情来加快解开这个谜团。

      当您运行 bitbake -g core-image-minimal 时,您会在构建目录中获得两个文件:task-depends.dotpn-buildlist

      然后查看task-depends.dot 文件并搜索包。 grep &lt;package&gt; task-depends.dot 第一个搜索结果将显示几个用于拉入坏包的罪魁祸首包的条目。

      ~/poky/build$ grep lib_bad task-depends.dot
      "lib_good.do_build" -> "lib_bad.do_package_write_deb"
      "lib_good.do_package" -> "lib_bad.do_packagedata"
      "lib_good.do_prepare_recipe_sysroot" -> "lib_bad.do_populate_sysroot"
      "lib_bad.do_build" -> "autoconf.do_package_write_deb"
      etc...
      

      所以在搜索依赖图之后,我们可以看到 lib_good 以某种方式将 lib_bad 拉入构建。下一步将在该配方中查找其 DEPENDS 或 RDEPENDS 变量,并将它们与 lib_bad 在其 PROVIDES 变量中的内容进行比较。

      【讨论】:

        猜你喜欢
        • 2019-09-16
        • 1970-01-01
        • 2010-12-08
        • 2017-03-24
        • 2014-01-17
        • 2020-02-23
        • 2018-02-22
        • 1970-01-01
        • 2023-02-08
        相关资源
        最近更新 更多