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
2023-12-05 09:44:18 +01:00
committed by Richard Purdie
parent 463d56b9f0
commit 2c59f5ad01

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()