我的问题是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
时,这可以自动执行吗?
作为参考,make
在myprogram
文件夹中作为下载的tarball开始 - 稍后将其解压缩然后进行编译。我希望不必修改此tarball的内容,并且能够在提取内容之后但在构建包之前使用buildroot修补机制来应用补丁。这甚至是在buildroot中应用补丁的有效方式吗?
答案 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本身的一部分时,可以使用它。