Bitbake -c clean删除了源代码

时间:2016-05-10 07:30:01

标签: build compilation bitbake openembedded

我是&#39; BitBake &#39;的初学者。我需要修改源代码并构建它。我发现源位于build / tmp / work /目录中,其中git commit id为其名称。我想重建源代码。所以我给了bitbake -c clean <package_name>,然后是bitbake <package_name>。图像构建完毕。但是,当我回去修改源代码时,git存储库似乎在其位置中丢失了。

1)如何获取源?

2)修改后重建源的安全方法是什么?

提前致谢。

3 个答案:

答案 0 :(得分:9)

  

1)如何获取源?

bitbake -ccleansstate <package_name>
bitbake <package_name>

这将确保bitbake不会使用共享状态,并且必须在第二个命令期间实际执行所有任务(包括解压缩和补丁,这将填充$ WORKDIR中目录中的源)。

  

2)修改后重建源的安全方法是什么?

如果你想修改$ WORKDIR中的来源作为快速黑客,那么

bitbake -f -ccompile <package_name>
bitbake <package_name>

将编译任务标记为脏,当下一个命令构建配方时,将执行编译之后的所有任务。请注意,在您执行cleansstate之前,bitbake会向您发出关于脏状态的警告,并且cleansstate将在您的更改旁边擦除$ WORKDIR:因此这仅对快速测试有用。

如果您正在寻找一种方法来进行更多开发,并且仍然可以使用yocto / OE构建快速测试开发,请查看devtool。我期待第4.3.1.2部分。 (使用devtool修改以启用与现有配方关联的代码的工作)可能与您相关。

答案 1 :(得分:1)

除了很棒的jku答案:

ad.1)如何获取资源?

您只需获取源代码,就不会执行任何其他任务:

bitbake -c fetch -f <package_name>

一般通过:

bitbake -c clean <package_name>

或使用强制选项:

bitbake -c clean -f <package_name>

您已从负责此程序包的食谱中触发了任务do_clean。通过检查任务代码(直接在配方或继承的配方中)将完成什么。  同样在同一目录build / tmp / work /中,您可以为每个执行的任务找到/ temp / with logs。例如:log.do_fetch将包含此特定包的任务do_fetch()的输出。

答案 2 :(得分:1)

active

不会删除源,因此do_fetch内容将保持原样。 下次

v-model

因此,do_fetch不会在下次执行,而是其余的。例如do_patch,do_metadata,do_compile等。 如果您想尝试在源级别进行一些更改,您也可以尝试

bitbake -c cleansstate <package name>

我发现devshell是一种方便的方法来尝试一些源代码或包内级别的更改和试用。它确实在包位置打开了一个新的shell。你可以在哪里给出命令。就像bitbake <package name> 一样简单。