do_compile[noexec]和空函数在bitbake配方中有什么区别?

21

如果我想禁用特定的构建步骤,我可以使用以下任一方式:

do_configure[noexec] = "1"

或者

do_configure() {
}

这些替代方案有什么区别?我听说在使用 noexec 时可能会存在升级条件。

1个回答

32

通常有三种方法可以移除任务:

  1. deltask:完全删除任务及其依赖项。因此,可能依赖于已删除任务的任务不会自动依赖已删除任务的依赖项。(A->B->C,删除B不会创建A->C)。因此,只有在明确知道自己在做什么时,才应该使用此选项。
  2. 将任务设置为空do_task() { : }。这是禁用任务的旧方法。任务仍将被执行,但其中没有任何内容要处理。因此,执行开销将保持不变。
  3. do_task[noexec],禁用任务的较新方法。与第2种方法类似,但不会保留执行开销(因为任务根本不会执行)。

1
当使用noexec时,依赖任务会发生什么?A->B,当B设置为noexec时,A会发生什么? - ATOzTOA
1
在涉及到依赖任务时,2和3之间不应该有任何差异。因此,它们将被执行,完整的依赖链应该被保留。 - Anders

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