对 Yocto 的 devtool modify 的误解

Misunderstanding Yocto's devtool modify

在 Ubuntu 下开发,我正在开发 Web UI,它是完整操作系统的一小部分。我一直在使用 BeyondCompare 将文件从我的开发目录复制到 devtool 目录。

~/develop/web_ui
~/develop/product/build/.build-yocto/workspace/sources/web_ui

我已经转向 Ubuntu 在 Windows WSL2 下进行开发,并且被建议不要使用该方法。

我必须将 webui.bb 中的散列修改为最新版本。在最新的提交之后有 10 个月和数十次提交。我不控制配方,也不想修改它。

Q1。我可以在 devtool modify webui 时覆盖哈希值或版本吗?

我提交了一些文件,但它们转到了 b运行ch devtool。我运行devtool update-recipe webui。它将 file://0001-blah-blah-blah.path 添加到 webui.bb。那不是我想要的。

现在我想要 ~/develop/web_ui 中的文件,我一直在那里开发用于模拟测试。看起来我必须将 devtool b运行ch 推送到远程存储库,将其拉入另一个目录树,合并更改并将它们提交到远程存储库中的主 b运行ch。

Q2。其他开发人员是这样做的还是有更简单的方法?

其他人会在发布新版本时更改 webui.bb 中的哈希值。配方中不会有补丁。

由于您已经在您喜欢的位置和您喜欢的版本中检查了源 - 您可以告诉 devtool modify 使用该源目录:

# devtool modify --no-extract recipename [srctree]
devtool modify --no-extract webui ~/develop/web_ui

--no-extract 选项告诉 devtool 期望源代码已经存在,而不是签出新副本的默认行为。

在幕后,devtool modify 通过创建一个 .bbappend 文件来工作,该文件覆盖了配方中用于获取和解压缩源代码的原始步骤 - 并将它们替换为对您在上面指定的 srctree 的引用.因此,当它在 devtool 中时,原始配方中指定的任何 versioning/SRCREV 都将被忽略。

虽然配方保留在 devtool 中,但您指定的源将用于该配方的所有构建。

一旦您对更改感到满意(并将 pushed/merged 它们放入主分支),您可以从 devtool (devtool reset webui) 中删除配方并使用最新的更新原始配方散列。

eSDK 手册中描述了此开发工具工作流程(以及其他几个):

2.4.2 Use devtool modify to Modify the Source of an Existing Component

The workflow above is the "Right" option

请注意,使用 devtool 不需要 eSDK,它恰好是最能描述 devtool modify.

的文档的 eSDK 部分