diff mbox series

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

Message ID 20231127134903.1327808-1-yoann.congal@smile.fr
State Accepted, archived
Commit 58f845499c0277a2b8069eefa235430b5f5f7661
Headers show
Series lib/oe/patch: handle creating patches for CRLF sources | expand

Commit Message

Yoann Congal Nov. 27, 2023, 1:49 p.m. UTC
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]

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
 meta/lib/oe/patch.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Alexandre Belloni Dec. 5, 2023, 7:48 a.m. UTC | #1
Hello,

This doesn't apply on master, can you rebase?

On 27/11/2023 14:49:03+0100, Yoann Congal wrote:
> 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]
> 
> Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
> ---
>  meta/lib/oe/patch.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
> index ff9afc9df9..7bf660978e 100644
> --- a/meta/lib/oe/patch.py
> +++ b/meta/lib/oe/patch.py
> @@ -477,7 +477,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()
> -- 
> 2.30.2
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#191303): https://lists.openembedded.org/g/openembedded-core/message/191303
> Mute This Topic: https://lists.openembedded.org/mt/102828787/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Yoann Congal Dec. 5, 2023, 8:11 a.m. UTC | #2
Le mar. 5 déc. 2023 à 08:48, Alexandre Belloni <
alexandre.belloni@bootlin.com> a écrit :

> Hello,
>
> This doesn't apply on master, can you rebase?
>

Yes! I will send a v2 today

On 27/11/2023 14:49:03+0100, Yoann Congal wrote:
> > 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]
> >
> > Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
> > ---
> >  meta/lib/oe/patch.py | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
> > index ff9afc9df9..7bf660978e 100644
> > --- a/meta/lib/oe/patch.py
> > +++ b/meta/lib/oe/patch.py
> > @@ -477,7 +477,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()
> > --
> > 2.30.2
> >
>
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#191303):
> https://lists.openembedded.org/g/openembedded-core/message/191303
> > Mute This Topic: https://lists.openembedded.org/mt/102828787/3617179
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alexandre.belloni@bootlin.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
>
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
diff mbox series

Patch

diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index ff9afc9df9..7bf660978e 100644
--- a/meta/lib/oe/patch.py
+++ b/meta/lib/oe/patch.py
@@ -477,7 +477,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()