未找到 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 本身的一部分时,可以使用它。
我的问题是 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 本身的一部分时,可以使用它。