【问题标题】:Applying patch to a package outside of buildroot directory将补丁应用于 buildroot 目录之外的包
【发布时间】:2021-01-01 15:29:09
【问题描述】:

我正在尝试将补丁应用到不在buildroot/package 内但位于其他位置的包。

我已将以下内容添加到我的 buildroot .config 中

BR2_GLOBAL_PATCH_DIR="absolute/path/to/folder"

文件夹是正确的,因为如果路径不正确,buildroot 会出错。所以目录的路径就好了。

使用指令herehere。我添加了一个名称与包匹配的子目录,并将补丁添加到该子目录,但没有任何反应。

Buildroot 从不输出它正在尝试应用补丁,这让我相信 buildroot 甚至没有查看 BR2_GLOBAL_PATCH_DIR 或在 buildroot/support/scripts/ 中调用 apply-patches.sh

为什么 buildroot 不尝试将补丁应用到我的包?

【问题讨论】:

    标签: c++ git patch buildroot


    【解决方案1】:

    Buildroot 仅将补丁应用于具有已下载源代码的软件包。换句话说,它不会将补丁应用于本地使用FOO_SITE_METHOD = localFOO_OVERRIDE_SRCDIR = /path/to/foo 获取的包。

    如果你看到这样的输出:

    >>> foo custom Syncing from source dir /path/to/foo
    

    你正处于这种情况。

    -编辑-

    Buildroot 不支持在这种情况下应用补丁。但是,您可以通过以下方式解决它:

    define FOO_APPLY_PATCHES
            $(APPLY_PATCHES) $(@D) $(addsuffix /$(RAWNAME),$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \*.patch
    endef
    FOO_POST_RSYNC_HOOKS += FOO_APPLY_PATCHES
    

    【讨论】:

    • 有没有办法给本地包打补丁?我的情况是,我使用来自另一个组的代码对我们的软件不起作用,因此我需要在另一个分支上修改它并改用那个分支。但是,如果我可以构建他们的标签并在构建之前应用我的补丁,那就太好了......我觉得这是可能的......对吧?
    • 但是无论如何您都需要一个存储库来维护这些补丁,对吧?所以最后,你最终创建了另一个组的 repo 的一个分支,并将你自己的补丁应用到 git 中,你可以使用普通的 git 下载方法来获取源代码。
    • 我已经为答案添加了一个解决方法。我还没有测试过,所以可能需要修改:-)
    • 所以我有一个针对我的 buildroot 配置等的存储库,我只需将这些补丁放在那个存储库中。感觉就像应用补丁是一种更清洁的方法,然后在每次软件发布后创建一个全新的分支。但也许这很正常?我很欣赏这个解决方法,我会试一试!
    猜你喜欢
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多