【问题标题】:Yocto: : does bitbake cleanall ,cleans dependencies as wellYocto: : 是否 bitbake cleanall ,也清理依赖项
【发布时间】:2017-11-18 11:02:31
【问题描述】:

bitbake cleanall 删除目标的所有输出文件、共享状态缓存和下载的源文件

不清楚或记录它是否也清除了所有构建时间依赖项

【问题讨论】:

  • 目前还不清楚您在帖子中的实际要求和想说的内容。
  • 不,它不会清理依赖项

标签: yocto bitbake


【解决方案1】:

如果你想清洁一切,

bitbake world -c cleanall --continue

--continue 将在清理时忽略任何依赖错误。出错后尽可能继续。

【讨论】:

    【解决方案2】:

    不,cleanall 不会清除依赖项。例如

      bitbake -c cleanall core-image-minimal
    

    仅删除该命名配方的输出。

    我通常做的清理“一切”是在收据“世界”上运行 cleanall:

    bitbake -c cleanall world 
    

    如果因为这样的无法解析的包而失败:

    ERROR: Nothing PROVIDES 'sg3-utils' (but /home/blubb/meta-freescale/recipes-devtools/utp-com/utp-com_git.bb DEPENDS on or otherwise requires it).
    

    我只是像这样将包临时添加到 ASSUME_PROVIDED 变量中:

    bitbake -c cleanall world --ignore-deps=python-nativedtc-native --ignore-deps=sg3-utils
    

    如果没有提供此软件包,则它们不太可能在任何地方构建。

    【讨论】:

    • 当“cleanall world”正常运行时,会显示正常的进度条,其中包含大量“do_clean”任务
    【解决方案3】:

    请阅读大型手册部分do_cleanall

    do_cleanall 删除:

    • 所有输出文件
    • 共享状态 (sstate) 缓存
    • 并为目标下载源文件(即 DL_DIR 的内容)。

    您可以使用 BitBake 运行此任务,如下所示:

     $ bitbake -c cleanall <recipe-name>
    

    如果配方名称未传递给 cleanall 任务,则它不起作用。

    【讨论】:

    • 如果你想为所有的recipies清空,使用“world”作为recipe名称。
    【解决方案4】:

    删除目标的所有输出文件、共享状态 (sstate) 缓存和下载的源文件(即 DL_DIR 的内容)。本质上,do_cleanall 任务与 do_cleansstate 任务相同,只是添加了删除下载的源文件。

    您可以使用 BitBake 运行此任务,如下所示:

     $ bitbake -c cleanall recipe
    

    通常,您通常不会使用 cleanall 任务。仅当您想重新开始执行 do_fetch 任务时才这样做。

    【讨论】:

    • +1 表示 -c cleansstate 解释。正是我所需要的:清理,以便重建所有内容,但无需重新下载所有包。
    【解决方案5】:

    其他人已经回答说 bitbake 不会自动清理依赖项,但您可以创建一个任务间依赖项 (https://www.yoctoproject.org/docs/3.1/bitbake-user-manual/bitbake-user-manual.html#inter-task-dependencies) 以在需要时通过向配方添加命令来清理您的依赖项:

    do_task[depends] = "recipe:task"
    

    我们已扩展 bitbake 以构建原生配方并在构建过程中自动运行单元测试。在这种情况下,我们需要在清理目标时清理本机配方,以便您可以添加:

    do_clean[depends] = "${PN}-native:do_clean"
    do_cleanall[depends] = "${PN}-native:do_cleanall"
    do_cleansstate[depends] = "${PN}-native:do_cleansstate"
    

    这个解决方案有点短,因为原生配方会尝试清理 ${PN}-native-native,所以如果它已经是原生的,你需要一个不应用的条件:

    do_clean[depends] += "${@'' if bb.data.inherits_class('native', d) else '${PN}-native:do_clean'}"
    do_cleanall[depends] += "${@'' if bb.data.inherits_class('native', d) else '${PN}-native:do_cleanall'}"
    do_cleansstate[depends] += "${@'' if bb.data.inherits_class('native', d) else '${PN}-native:do_cleansstate'}"
    

    【讨论】:

    • 只是问...你不是在do_cleanstate 中缺少s 吗?不应该是do_cleansstate吗?
    猜你喜欢
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 2016-08-19
    • 2012-02-19
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2011-09-11
    相关资源
    最近更新 更多