Yocto: 当执行"bitbake cleanall"时,依赖关系也会被清除。

13

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

不清楚或未记录它是否也会清理所有构建时依赖项


你的帖子非常不清楚,很难理解你想要表达什么。 - Krupip
5
不,它不能清除依赖关系。 - Fl0v0
5个回答

19

如果您想要清除所有内容,请执行以下操作:

bitbake world -c cleanall --continue

--continue 参数在清理时会忽略任何依赖错误。即使出现错误,也尽可能继续执行。


10
不,cleanall不会清除依赖项。例如。
  bitbake -c cleanall core-image-minimal

只删除该命名食谱的输出。

我通常做的清理“所有内容”的方法是在名为“world”的食谱上运行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

如果没有任何东西提供这些软件包,那么它们很可能从未被构建。


2
当“cleanall world”正常运行时,会显示普通的进度条,并有大量“do_clean”任务。 - Tenacious

6
请阅读mega-manual章节do_cleanall
do_cleanall会删除以下内容:
  • 所有输出文件
  • 共享状态(sstate)缓存
  • 以及目标的下载源文件(即DL_DIR的内容)。
您可以使用BitBake运行此任务,如下所示:
 $ bitbake -c cleanall <recipe-name>

如果未将配方名称传递给cleanall任务,则其无法正常工作。

7
如果您想要清除所有配方,请使用“world”作为配方名称。 - Oleg Kokorin

3

清除目标的所有输出文件、共享状态(sstate)缓存以及已下载的源文件(即DL_DIR的内容)。实质上,do_cleanall任务与do_cleansstate任务相同,只是额外删除了已下载的源文件。

您可以使用BitBake运行此任务,方法如下:

 $ bitbake -c cleanall recipe

通常情况下,您不会使用cleanall任务。只有在想要从头开始执行do_fetch任务时才需要使用。


2
+1 对于 -c cleansstate 的解释。正是我所需要的:清理以便重新构建所有内容,但无需重新下载所有软件包。 - Michel

0

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

do_task[depends] = "recipe:task"

我们已经扩展了bitbake来构建本地recipes并在构建过程中自动运行单元测试。在这种情况下,当清理目标时,我们需要清理本地recipe,因此您可以添加以下内容:
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 吧? - SimonSimCity

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接