gpt4 book ai didi

patch - Bitbake 配方未按预期应用补丁

转载 作者:行者123 更新时间:2023-12-01 07:16:16 24 4
gpt4 key购买 nike

我有一个 tarball src.tar.gz,它的内容被解压到 src/中,还有一个用这个命令生成的源补丁:

$ diff -Nurp src/ src_mod/ > my.patch

补丁头以这三行开头:
 diff -Nurp src/path/to/file src_PATCHED/path/to/file
--- src/path/to/file 2012-10-22 05:52:59.000000000 +0200
+++ src_PATCHED/path/to/file 2016-03-14 12:27:52.892802283 +0100

我的 bitbake 配方使用这个 SRC_URI 引用了路径和 tarball 文件:
SRC_URI = " \
file://my.patch \
file://src.tar.gz \
"

do_fetch 和 do_unpack 任务按预期工作,将 my.patch 和 src/留在 ${S} 目录中,即:
${S}/my.path
${S}/src.tar.gz

但是 do_patch 任务失败并显示此错误消息:
ERROR: Command Error: exit status: 1  Output:
Applying patch my.patch
can't find file to patch at input line 4
Perhaps you used the wrong -p or --strip option?

我测试了不同的替代方案,例如设置“patchdir”属性,如下所示:
SRC_URI = " \
file://my.patch;patchdir=${S}/src \
file://src.tar.gz \
"

我希望“patchdir”与使用“patch -d dir”相同。但它没有按预期工作,它总是返回相同的 ERROR 消息。

我做错了什么?

最佳答案

我的变量 ${S}在我的食谱中重新定义了以下内容:

S = "${WORKDIR}/${PN}-${PV}"

但是fetchers下载 my.patchsrc/${WORKDIR} ,不在 ${S}目录,所以:
${WORKDIR}/my.path
${WORKDIR}/src.tar.gz

并且 tarball 也被提取到了 ${WORKDIR}
${WORKDIR}/src/

修复是正确设置“patchdir”属性,替换 ${S}来自 ${WORKDIR}
SRC_URI = " \
file://my.patch;patchdir=${WORKDIR}/src \
file://src.tar.gz \
"

那已经在起作用了!

关于patch - Bitbake 配方未按预期应用补丁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36038341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com