【问题标题】:Execute bitbake recipe discarding what sstate_cache is执行 bitbake recipe 丢弃 sstate_cache 是什么
【发布时间】:2019-01-21 03:51:26
【问题描述】:

我有一个 yocto 项目,我在其中添加了一些食谱,其中的一些功能在构建时至关重要(这些功能包括一些链接创建,一些文件“平衡”)。尽管在第一次构建时所有内容都已完成,并且 sstate_cache 被保存到 shared/sstate_cache 以便提及执行这些配方。当我对构建系统进行一些更改时,还删除了一些构建文件或洞构建目录并重新运行构建,bitbake 不执行配方。 唯一的解决办法是:

bitbake -c cleanall <list_of_my_recipes_to_be_rerun>

所以我必须明确地清理缓存来告诉 bitbake 重新运行它们。

所以我的问题是: 无论共享缓存保存在什么上面,是否有某种方法可以显式设置要执行的配方? 或者也许将状态保存在本地构建目录中? 或者告诉 bitbake 不要为配方保存状态?

【问题讨论】:

    标签: yocto bitbake build-system


    【解决方案1】:

    您可以在配方中设置 BB_DONT_CACHE = "1",使用 -C 选项重新运行配方,或者使任务校验和取决于您正在更改的这些内容,以便在您更改它们时自动重建。您也可以只清理配方,然后使用 --no-setscene 进行 bitbake。

    【讨论】:

      【解决方案2】:

      简单的方法:

      $ bitbake <recipe> -C unpack
      

      这会构建配方,但会强制解包重新运行,这意味着其他所有内容也必须重新运行。

      但是,如果配方不适用于 sstate,那么这就是您的配方有问题。

      【讨论】:

        【解决方案3】:

        是否有某种方法可以显式设置要执行的配方,无论共享缓存保存在什么上面?

        要强制配方运行,而不管共享状态缓存中的内容(或其他任何内容), 将-f | --force 选项传递给bitbake 命令,例如

        bitbake -f [other_options...] recipe_name ...
        

        请参阅手册中的bitbake commmandline options

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-21
          • 2016-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-21
          相关资源
          最近更新 更多