未找到 Buildroot 补丁?

Buildroot patches not being found?

我的问题是 this one. In fact, this one 的一个变体也与预期他实际上比我更远有关。据我所知,我无法让 buildroot 找到并应用我的任何补丁。

我已经按照 formatting instructions 创建了我的补丁文件,现在位于此处:

./buildroot/board/mycompany/myboard/patches/myprogram/myversion/myprogram-0-fix.patch

据我所知,我已经在 these instructions 之后正确设置了路径和文件名。我还将 BR2_GLOBAL_PATCH_DIR 设置为:

"board/mycompany/myboard/patches"

我做了一个假设,在完成所有这些之后,加载我的配置文件(指向 "myboard" 文件夹并设置了全局补丁目录的那个)- 然后 运行ning make 我的补丁将在此过程中自动应用。但是,它似乎根本没有拾取补丁。

我想我缺少一些应用补丁的步骤。 This section 的文档描述了如何应用补丁,但我很难理解它。我将如何 运行 <packagename>_PRE_PATCH_HOOKS 命令?当我 运行 a make ?

时,可以自动为我执行此操作吗?

作为参考,myprogram 开始时是 dl/ 文件夹中下载的 tarball - 它随后被提取并编译。我希望不必修改此 tarball 的内容,并且能够在提取内容之后但在构建包之前使用 buildroot 修补机制来应用补丁。这甚至是在 buildroot 中应用补丁的有效方式吗?

您描述的步骤是正确的,因此可能其中有一处您没有正确应用。

您必须正确设置 BR2_GLOBAL_PATCH_DIR,因为如果它不存在,buildroot 就会出错。作为健全性检查,将其更改为某个不存在的目录,然后观察是否出现错误。

所以您的目录名称很可能有问题。

作为第一步,我将省略路径的版本部分 - 它仅在您想要支持 myprogram 的多个版本时才有用。所以把你的补丁放在 board/mycompany/myboard/patches/myprogram/0-fix.patch.

此外,请检查 myprogram 的拼写。

否则,运行:

make myprogram-dirclean
make myprogram-patch V=1

这将向您展示 buildroot 执行的确切步骤。您应该首先看到一个不执行任何操作的下载步骤,然后是提取 tarball 的提取步骤,然后是带有长而复杂的 shell 命令的补丁步骤,该命令在多个位置查找补丁。将此 shell 命令复制并粘贴到您的 shell 中,然后开始剥离它以找出问题所在。

关于 MYPROGRAM_PRE_PATCH_HOOKS,这是您要放入 myprogram.mk 文件中的内容。例如,当要应用的补丁是 tarball 本身的一部分时,可以使用它。