lib/oe/patch: handle creating patches for CRLF sources

Using devtool to patch CRLF based sources creates patch files which have
mixed end of lines : LF for headers and CRLF for source context and
modified lines.

Python open(..., newline=None) (default for newline arg)does detect
end-of-line in this mixed file but only outputs LF EOL data. This
result in patch files that does not apply on the original sources.

Switching to open(..., newline='') allows to detect end-of-line but keep
the original end-of-line intact. This generate correct patches for CRLF
based sources.

Fixes [YOCTO #15285]

(From OE-Core rev: 58f845499c0277a2b8069eefa235430b5f5f7661)

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Yoann Congal authored and Richard Purdie committed 2023-12-06 22:55:49 +00:00
1 parent 463d56b9f0
commit 2c59f5ad01
1 file changed
+1 -1
+1 -1
View File
@@ -478,7 +478,7 @@ class GitApplyTree(PatchTree):
patchlines = []
outfile = None
try:
with open(srcfile, 'r', encoding=encoding) as f:
with open(srcfile, 'r', encoding=encoding, newline='') as f:
for line in f:
if line.startswith(GitApplyTree.patch_line_prefix):
outfile = line.split()[-1].strip()