补丁找不到文件

补丁找不到文件

我目前在目录中 -/usr/lib/llvm-9/build

include/目录是一个符号链接 -

reikdas@reikdas-VirtualBox:/usr/lib/llvm-9/build$ ls -l
lrwxrwxrwx 1 root root 10 Jan 31 2020 include -> ../include

但由于我将通过脚本修补它,因此我无法手动输入符号链接的实际路径。

我有一个.diff看起来像这样的文件 -

diff --git a/include/llvm/Demangle/MicrosoftDemangleNodes.h b/include/llvm/Demangle/MicrosoftDemangleNodes.h
index da9d9d5bfdc..3d47471f0ef 100644
--- a/include/llvm/Demangle/MicrosoftDemangleNodes.h
+++ b/include/llvm/Demangle/MicrosoftDemangleNodes.h
@@ -16,6 +16,8 @@
 #include "llvm/Demangle/DemangleConfig.h"
 #include "llvm/Demangle/StringView.h"
 #include <array>
+#include <cstdint>
+#include <string>
 
 namespace llvm {
 namespace itanium_demangle {

我愿意 -patch -p1 < nameofthepatch.diff

但是,我收到一个错误 -

Can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading upto this was:
....
File to patch:

但该文件确实存在 -

reikdas@reikdas-VirtualBox:/usr/lib/llvm-9/build$ ls include/llvm/Demangle/ | grep MicrosoftDemangleNodes.h
MicrosoftDemangleNodes.h

我遇到同样的错误 -patch -p1 --follow-symlinks < nameofthepatch.diff

(请注意,我指定了从哪个目录执行这些命令)

diff 是在 Linux 机器上生成的,因此没有隐藏的回车符。

另外,这有效 -

patch -p1 include/llvm/Demangle/MicrosoftDemangleNodes.h nameofthepatch.diff

这是站不住脚的,因为单个.diff文件可能包含多个文件的差异。

为什么我会收到此错误?

相关内容