我有一个 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 消息。
我做错了什么?