我是&#39; BitBake &#39;的初学者。我需要修改源代码并构建它。我发现源位于build / tmp / work /目录中,其中git commit id为其名称。我想重建源代码。所以我给了bitbake -c clean <package_name>
,然后是bitbake <package_name>
。图像构建完毕。但是,当我回去修改源代码时,git存储库似乎在其位置中丢失了。
1)如何获取源?
2)修改后重建源的安全方法是什么?
提前致谢。
答案 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>
一样简单。