【发布时间】:2017-11-18 11:02:31
【问题描述】:
bitbake cleanall 删除目标的所有输出文件、共享状态缓存和下载的源文件
不清楚或记录它是否也清除了所有构建时间依赖项
【问题讨论】:
-
目前还不清楚您在帖子中的实际要求和想说的内容。
-
不,它不会清理依赖项
bitbake cleanall 删除目标的所有输出文件、共享状态缓存和下载的源文件
不清楚或记录它是否也清除了所有构建时间依赖项
【问题讨论】:
如果你想清洁一切,
bitbake world -c cleanall --continue
--continue 将在清理时忽略任何依赖错误。出错后尽可能继续。
【讨论】:
不,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
如果没有提供此软件包,则它们不太可能在任何地方构建。
【讨论】:
请阅读大型手册部分do_cleanall。
do_cleanall 删除:
您可以使用 BitBake 运行此任务,如下所示:
$ bitbake -c cleanall <recipe-name>
如果配方名称未传递给 cleanall 任务,则它不起作用。
【讨论】:
删除目标的所有输出文件、共享状态 (sstate) 缓存和下载的源文件(即 DL_DIR 的内容)。本质上,do_cleanall 任务与 do_cleansstate 任务相同,只是添加了删除下载的源文件。
您可以使用 BitBake 运行此任务,如下所示:
$ bitbake -c cleanall recipe
通常,您通常不会使用 cleanall 任务。仅当您想重新开始执行 do_fetch 任务时才这样做。
【讨论】:
其他人已经回答说 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吗?