我有一个tarball src.tar.gz,其内容已解压缩到src /中,并使用此命令生成此源代码的补丁:
<video>
补丁标题以这三行开头:
$ diff -Nurp src/ src_mod/ > my.patch
我的bitbake配方使用此SRC_URI引用路径和tarball文件:
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
do_fetch和do_unpack任务按预期工作,将my.patch和src /留在$ {S}目录中,即:
SRC_URI = " \
file://my.patch \
file://src.tar.gz \
"
但是do_patch任务失败并显示此ERROR消息:
${S}/my.path
${S}/src.tar.gz
我测试了不同的替代方案,例如设置“patchdir”属性,如下所示:
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”与使用“patch -d dir”相同。但它不能按预期工作,它总是返回相同的ERROR消息。
我做错了什么?
答案 0 :(得分:7)
我的变量document.getElementById('testo_da_inviare').onclick
在我的食谱中重新定义了这个内容:
${S}
但是,抓取工具会在S = "${WORKDIR}/${PN}-${PV}"
内部my.patch
和src/
下载,而不是在${WORKDIR}
目录中,所以:
${S}
还在${WORKDIR}/my.path
${WORKDIR}/src.tar.gz
${WORKDIR}
该修复正确设置了“patchdir”属性,将${WORKDIR}/src/
替换为${S}
${WORKDIR}
那已经有效了!
答案 1 :(得分:0)
尽管作者提供了自己的解决方案,但该问题是在Yocto构建中搜索“找不到要修补的文件”错误的解决方案时出现的第一个结果,因此我想分享一个产生相同错误输出的不同情况的解决方案。
在我的情况下,我尝试使用.bbappend文件将覆盖控制的补丁应用于先前存在的配方,并且收到“找不到要修补的文件”错误。 https://community.nxp.com/thread/474138处的线程确定了解决方案:使用“ _append”语法而不是“ + =”语法。也就是说,使用:
SRC_URI_append_machineoverride = " file://my.patch"
代替
SRC_URI_machineoverride += "file://my.patch"
请注意,使用'_append'需要一个前导空格(与上面链接的线程中指出的尾随空格相反)。我还没有进行足够的研究来解释为什么必须使用这种语法,但是我认为这仍然是对该问题记录的宝贵补充。