【问题标题】:"git binary diffs are not supported" error using yocto“不支持 git 二进制差异”错误使用 yocto
【发布时间】:2020-12-20 03:14:18
【问题描述】:

我有一个 git repo,我在其中维护一些二进制文件。现在我想创建最后几个提交的补丁并将它们集成到 Yocto 构建中。

我已经创建了类似的补丁

git format-patch -3 --binary

现在我已将这些补丁集成到 Yocto 配方文件中。 Yocto 在git apply 在do_patch() 中给出以下错误

git binary diffs are not supported.
Patch xyz.patch does not apply (enforce with -f)

在这里创建二进制补丁时我是否遗漏了什么?

或

我可以在我的配方文件中执行任何 Yocto Hacks 来处理二进制补丁吗?

【问题讨论】:

    标签: patch yocto


    【解决方案1】:

    也许您需要将此 cmd 与附加标志 --full-index 一起使用

    git format-patch -3 --full-index --binary

    https://git-scm.com/docs/git-format-patch --二进制 除了 --full-index 之外,还输出一个可以用 git-apply 应用的二进制 diff。

    【讨论】:

    • 这适用于直接 git apply 命令。但是这些补丁仍然不适用于 Yocto !!
    • 可能的原因是 bin 文件的不同历史记录。那么,Yocto bin-file 和 patched bin-file 历史记录是否相同?
    • 是的,补丁历史在这两种情况下都是相同的。现在我已经在配方文件中分叉了 do_patch() 并使用 git apply 应用了补丁,这些工作正常。但是对于默认的 do_patch() 实现,它会给出同样的错误。
    【解决方案2】:

    我可以在我的配方文件中执行任何 Yocto Hacks 来处理二进制补丁吗?

    当我处理二进制源时,我将二进制部分放入.tar.gz,将其添加到SRC_URI,然后将cp 所需的位与do_install_append 一起添加到我需要它们的位置。

    【讨论】:

      【解决方案3】:

      我在使用 yocto 工具 (devtool update-recipe) 创建的补丁时也遇到了这个问题,我不想改变创建补丁的方式。

      默认情况下 yocto 使用 quilt 来应用补丁,我使用 git 解决了这个问题。

      这可以通过在配方中设置PATCHTOOL 变量来配置:

      PATCHTOOL = "git"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-06
        • 2021-10-01
        • 2010-09-08
        • 1970-01-01
        • 2016-08-31
        • 1970-01-01
        相关资源
        最近更新 更多