没有找到Buildroot补丁?

时间:2015-02-27 00:36:14

标签: patch buildroot

我的问题是this one的变体。事实上,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"文件夹并使用全局修补程序目录设置的文件) - 然后运行{{1}我的补丁将在此过程中自动应用。但是,它似乎根本没有拿起补丁。

我相信我错过了应用补丁的一些步骤。 This section文档描述了补丁的应用方式,但我很难理解它。我该如何运行make命令?当我运行<packagename>_PRE_PATCH_HOOKS时,这可以自动执行吗?

作为参考,makemyprogram文件夹中作为下载的tarball开始 - 稍后将其解压缩然后进行编译。我希望不必修改此tarball的内容,并且能够在提取内容之后但在构建包之前使用buildroot修补机制来应用补丁。这甚至是在buildroot中应用补丁的有效方式吗?

1 个答案:

答案 0 :(得分:1)

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

您必须正确设置BR2_GLOBAL_PATCH_DIR,因为如果不存在,则构建错误。作为完整性检查,将其更改为一些不存在的目录,并观察您是否收到错误。

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

作为第一步,我将省略路径的版本部分 - 仅当您想要支持多个版本的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本身的一部分时,可以使用它。