qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4] scripts/symlink-install-tree.py: Fix MESONINTROSPECT parsing
@ 2024-10-18 13:08 Peter Maydell
  2024-10-21 17:27 ` Pierrick Bouvier
  2024-10-28 19:43 ` Pierrick Bouvier
  0 siblings, 2 replies; 6+ messages in thread
From: Peter Maydell @ 2024-10-18 13:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: Akihiko Odaki, Christophe Lyon

From: Akihiko Odaki <akihiko.odaki@daynix.com>

The arguments in MESONINTROSPECT are quoted with shlex.quote() so it
must be parsed with shlex.split().  Otherwise the script will fail if
the build directory has a character like "~" in it.

Note: this fix cannot be backported directly to any stable branch
that doesn't require Meson version 1.4.0 or better; otherwise it will
work OK on Linux but will break on Windows hosts.

(Unfortunately, Meson prior to version 1.4.0 was inconsistent between
host OSes about how it quoted arguments, and used a different quoting
process on Windows hosts.  Our current git trunk already requires
1.5.0 as of commit 07f0d32641e ("Require meson version 1.5.0"), but
the stable branches are still on older Meson.)

Fixes: cf60ccc330 ("cutils: Introduce bundle mechanism")
Reported-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
[PMM: Updated commit message to give all the detail about the
Meson version compability requirements.]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
This is essentially back to version 1 of Akihiko's patch, now we
have a new enough Meson; I just updated the commit message.
 https://patchew.org/QEMU/20230812061540.5398-1-akihiko.odaki@daynix.com/
(I have dropped the various reviewed-by and tested-by headers because
I figured the passage of time was enough to make them moot.)

 scripts/symlink-install-tree.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scripts/symlink-install-tree.py b/scripts/symlink-install-tree.py
index 8ed97e3c943..b72563895c5 100644
--- a/scripts/symlink-install-tree.py
+++ b/scripts/symlink-install-tree.py
@@ -4,6 +4,7 @@
 import errno
 import json
 import os
+import shlex
 import subprocess
 import sys
 
@@ -14,7 +15,7 @@ def destdir_join(d1: str, d2: str) -> str:
     return str(PurePath(d1, *PurePath(d2).parts[1:]))
 
 introspect = os.environ.get('MESONINTROSPECT')
-out = subprocess.run([*introspect.split(' '), '--installed'],
+out = subprocess.run([*shlex.split(introspect), '--installed'],
                      stdout=subprocess.PIPE, check=True).stdout
 for source, dest in json.loads(out).items():
     bundle_dest = destdir_join('qemu-bundle', dest)
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v4] scripts/symlink-install-tree.py: Fix MESONINTROSPECT parsing
  2024-10-18 13:08 [PATCH v4] scripts/symlink-install-tree.py: Fix MESONINTROSPECT parsing Peter Maydell
@ 2024-10-21 17:27 ` Pierrick Bouvier
  2024-10-21 17:48   ` Christophe Lyon
  2024-10-28 19:43 ` Pierrick Bouvier
  1 sibling, 1 reply; 6+ messages in thread
From: Pierrick Bouvier @ 2024-10-21 17:27 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Akihiko Odaki, Christophe Lyon

On 10/18/24 06:08, Peter Maydell wrote:
> From: Akihiko Odaki <akihiko.odaki@daynix.com>
> 
> The arguments in MESONINTROSPECT are quoted with shlex.quote() so it
> must be parsed with shlex.split().  Otherwise the script will fail if
> the build directory has a character like "~" in it.
> 
> Note: this fix cannot be backported directly to any stable branch
> that doesn't require Meson version 1.4.0 or better; otherwise it will
> work OK on Linux but will break on Windows hosts.
> 
> (Unfortunately, Meson prior to version 1.4.0 was inconsistent between
> host OSes about how it quoted arguments, and used a different quoting
> process on Windows hosts.  Our current git trunk already requires
> 1.5.0 as of commit 07f0d32641e ("Require meson version 1.5.0"), but
> the stable branches are still on older Meson.)
> 
> Fixes: cf60ccc330 ("cutils: Introduce bundle mechanism")
> Reported-by: Michael Tokarev <mjt@tls.msk.ru>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> [PMM: Updated commit message to give all the detail about the
> Meson version compability requirements.]
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> This is essentially back to version 1 of Akihiko's patch, now we
> have a new enough Meson; I just updated the commit message.
>   https://patchew.org/QEMU/20230812061540.5398-1-akihiko.odaki@daynix.com/
> (I have dropped the various reviewed-by and tested-by headers because
> I figured the passage of time was enough to make them moot.)
> 
>   scripts/symlink-install-tree.py | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/symlink-install-tree.py b/scripts/symlink-install-tree.py
> index 8ed97e3c943..b72563895c5 100644
> --- a/scripts/symlink-install-tree.py
> +++ b/scripts/symlink-install-tree.py
> @@ -4,6 +4,7 @@
>   import errno
>   import json
>   import os
> +import shlex
>   import subprocess
>   import sys
>   
> @@ -14,7 +15,7 @@ def destdir_join(d1: str, d2: str) -> str:
>       return str(PurePath(d1, *PurePath(d2).parts[1:]))
>   
>   introspect = os.environ.get('MESONINTROSPECT')
> -out = subprocess.run([*introspect.split(' '), '--installed'],
> +out = subprocess.run([*shlex.split(introspect), '--installed'],
>                        stdout=subprocess.PIPE, check=True).stdout
>   for source, dest in json.loads(out).items():
>       bundle_dest = destdir_join('qemu-bundle', dest)

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>

I confirm this fixes the error when the path to qemu src tree contains '~'.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4] scripts/symlink-install-tree.py: Fix MESONINTROSPECT parsing
  2024-10-21 17:27 ` Pierrick Bouvier
@ 2024-10-21 17:48   ` Christophe Lyon
  0 siblings, 0 replies; 6+ messages in thread
From: Christophe Lyon @ 2024-10-21 17:48 UTC (permalink / raw)
  To: Pierrick Bouvier; +Cc: Peter Maydell, qemu-devel, Akihiko Odaki

[-- Attachment #1: Type: text/plain, Size: 2983 bytes --]

Hi,



Le lun. 21 oct. 2024, 19:27, Pierrick Bouvier <pierrick.bouvier@linaro.org>
a écrit :

> On 10/18/24 06:08, Peter Maydell wrote:
> > From: Akihiko Odaki <akihiko.odaki@daynix.com>
> >
> > The arguments in MESONINTROSPECT are quoted with shlex.quote() so it
> > must be parsed with shlex.split().  Otherwise the script will fail if
> > the build directory has a character like "~" in it.
> >
> > Note: this fix cannot be backported directly to any stable branch
> > that doesn't require Meson version 1.4.0 or better; otherwise it will
> > work OK on Linux but will break on Windows hosts.
> >
> > (Unfortunately, Meson prior to version 1.4.0 was inconsistent between
> > host OSes about how it quoted arguments, and used a different quoting
> > process on Windows hosts.  Our current git trunk already requires
> > 1.5.0 as of commit 07f0d32641e ("Require meson version 1.5.0"), but
> > the stable branches are still on older Meson.)
> >
> > Fixes: cf60ccc330 ("cutils: Introduce bundle mechanism")
> > Reported-by: Michael Tokarev <mjt@tls.msk.ru>
> > Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> > [PMM: Updated commit message to give all the detail about the
> > Meson version compability requirements.]
> > Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> > ---
> > This is essentially back to version 1 of Akihiko's patch, now we
> > have a new enough Meson; I just updated the commit message.
> >
> https://patchew.org/QEMU/20230812061540.5398-1-akihiko.odaki@daynix.com/
> > (I have dropped the various reviewed-by and tested-by headers because
> > I figured the passage of time was enough to make them moot.)
> >
> >   scripts/symlink-install-tree.py | 3 ++-
> >   1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/scripts/symlink-install-tree.py
> b/scripts/symlink-install-tree.py
> > index 8ed97e3c943..b72563895c5 100644
> > --- a/scripts/symlink-install-tree.py
> > +++ b/scripts/symlink-install-tree.py
> > @@ -4,6 +4,7 @@
> >   import errno
> >   import json
> >   import os
> > +import shlex
> >   import subprocess
> >   import sys
> >
> > @@ -14,7 +15,7 @@ def destdir_join(d1: str, d2: str) -> str:
> >       return str(PurePath(d1, *PurePath(d2).parts[1:]))
> >
> >   introspect = os.environ.get('MESONINTROSPECT')
> > -out = subprocess.run([*introspect.split(' '), '--installed'],
> > +out = subprocess.run([*shlex.split(introspect), '--installed'],
> >                        stdout=subprocess.PIPE, check=True).stdout
> >   for source, dest in json.loads(out).items():
> >       bundle_dest = destdir_join('qemu-bundle', dest)
>
> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
>
> I confirm this fixes the error when the path to qemu src tree contains '~'.
>

I confirm this fixes the problem we detected in our CI (where some build
dirnames have '~'

Thanks

>

[-- Attachment #2: Type: text/html, Size: 4603 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4] scripts/symlink-install-tree.py: Fix MESONINTROSPECT parsing
  2024-10-18 13:08 [PATCH v4] scripts/symlink-install-tree.py: Fix MESONINTROSPECT parsing Peter Maydell
  2024-10-21 17:27 ` Pierrick Bouvier
@ 2024-10-28 19:43 ` Pierrick Bouvier
  2024-10-29 10:04   ` Peter Maydell
  1 sibling, 1 reply; 6+ messages in thread
From: Pierrick Bouvier @ 2024-10-28 19:43 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Akihiko Odaki, Christophe Lyon

On 10/18/24 06:08, Peter Maydell wrote:
> From: Akihiko Odaki <akihiko.odaki@daynix.com>
> 
> The arguments in MESONINTROSPECT are quoted with shlex.quote() so it
> must be parsed with shlex.split().  Otherwise the script will fail if
> the build directory has a character like "~" in it.
> 
> Note: this fix cannot be backported directly to any stable branch
> that doesn't require Meson version 1.4.0 or better; otherwise it will
> work OK on Linux but will break on Windows hosts.
> 
> (Unfortunately, Meson prior to version 1.4.0 was inconsistent between
> host OSes about how it quoted arguments, and used a different quoting
> process on Windows hosts.  Our current git trunk already requires
> 1.5.0 as of commit 07f0d32641e ("Require meson version 1.5.0"), but
> the stable branches are still on older Meson.)
> 
> Fixes: cf60ccc330 ("cutils: Introduce bundle mechanism")
> Reported-by: Michael Tokarev <mjt@tls.msk.ru>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> [PMM: Updated commit message to give all the detail about the
> Meson version compability requirements.]
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> This is essentially back to version 1 of Akihiko's patch, now we
> have a new enough Meson; I just updated the commit message.
>   https://patchew.org/QEMU/20230812061540.5398-1-akihiko.odaki@daynix.com/
> (I have dropped the various reviewed-by and tested-by headers because
> I figured the passage of time was enough to make them moot.)
> 
>   scripts/symlink-install-tree.py | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/scripts/symlink-install-tree.py b/scripts/symlink-install-tree.py
> index 8ed97e3c943..b72563895c5 100644
> --- a/scripts/symlink-install-tree.py
> +++ b/scripts/symlink-install-tree.py
> @@ -4,6 +4,7 @@
>   import errno
>   import json
>   import os
> +import shlex
>   import subprocess
>   import sys
>   
> @@ -14,7 +15,7 @@ def destdir_join(d1: str, d2: str) -> str:
>       return str(PurePath(d1, *PurePath(d2).parts[1:]))
>   
>   introspect = os.environ.get('MESONINTROSPECT')
> -out = subprocess.run([*introspect.split(' '), '--installed'],
> +out = subprocess.run([*shlex.split(introspect), '--installed'],
>                        stdout=subprocess.PIPE, check=True).stdout
>   for source, dest in json.loads(out).items():
>       bundle_dest = destdir_join('qemu-bundle', dest)

Hi,

would that be possible to pull this patch please?
It's currently blocking the devs who reported it initially.

Thanks,
Pierrick


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4] scripts/symlink-install-tree.py: Fix MESONINTROSPECT parsing
  2024-10-28 19:43 ` Pierrick Bouvier
@ 2024-10-29 10:04   ` Peter Maydell
  2024-10-29 15:50     ` Pierrick Bouvier
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Maydell @ 2024-10-29 10:04 UTC (permalink / raw)
  To: Pierrick Bouvier; +Cc: qemu-devel, Akihiko Odaki, Christophe Lyon

On Mon, 28 Oct 2024 at 19:43, Pierrick Bouvier
<pierrick.bouvier@linaro.org> wrote:
>
> On 10/18/24 06:08, Peter Maydell wrote:
> > From: Akihiko Odaki <akihiko.odaki@daynix.com>
> >
> > The arguments in MESONINTROSPECT are quoted with shlex.quote() so it
> > must be parsed with shlex.split().  Otherwise the script will fail if
> > the build directory has a character like "~" in it.
> >
> > Note: this fix cannot be backported directly to any stable branch
> > that doesn't require Meson version 1.4.0 or better; otherwise it will
> > work OK on Linux but will break on Windows hosts.
> >
> > (Unfortunately, Meson prior to version 1.4.0 was inconsistent between
> > host OSes about how it quoted arguments, and used a different quoting
> > process on Windows hosts.  Our current git trunk already requires
> > 1.5.0 as of commit 07f0d32641e ("Require meson version 1.5.0"), but
> > the stable branches are still on older Meson.)
> >
> > Fixes: cf60ccc330 ("cutils: Introduce bundle mechanism")
> > Reported-by: Michael Tokarev <mjt@tls.msk.ru>
> > Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> > [PMM: Updated commit message to give all the detail about the
> > Meson version compability requirements.]
> > Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> > ---
> > This is essentially back to version 1 of Akihiko's patch, now we
> > have a new enough Meson; I just updated the commit message.
> >   https://patchew.org/QEMU/20230812061540.5398-1-akihiko.odaki@daynix.com/
> > (I have dropped the various reviewed-by and tested-by headers because
> > I figured the passage of time was enough to make them moot.)
> >
> >   scripts/symlink-install-tree.py | 3 ++-
> >   1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/scripts/symlink-install-tree.py b/scripts/symlink-install-tree.py
> > index 8ed97e3c943..b72563895c5 100644
> > --- a/scripts/symlink-install-tree.py
> > +++ b/scripts/symlink-install-tree.py
> > @@ -4,6 +4,7 @@
> >   import errno
> >   import json
> >   import os
> > +import shlex
> >   import subprocess
> >   import sys
> >
> > @@ -14,7 +15,7 @@ def destdir_join(d1: str, d2: str) -> str:
> >       return str(PurePath(d1, *PurePath(d2).parts[1:]))
> >
> >   introspect = os.environ.get('MESONINTROSPECT')
> > -out = subprocess.run([*introspect.split(' '), '--installed'],
> > +out = subprocess.run([*shlex.split(introspect), '--installed'],
> >                        stdout=subprocess.PIPE, check=True).stdout
> >   for source, dest in json.loads(out).items():
> >       bundle_dest = destdir_join('qemu-bundle', dest)
>
> Hi,
>
> would that be possible to pull this patch please?
> It's currently blocking the devs who reported it initially.

Yes, I'll put it in my upcoming pullreq.

thanks
-- PMM


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4] scripts/symlink-install-tree.py: Fix MESONINTROSPECT parsing
  2024-10-29 10:04   ` Peter Maydell
@ 2024-10-29 15:50     ` Pierrick Bouvier
  0 siblings, 0 replies; 6+ messages in thread
From: Pierrick Bouvier @ 2024-10-29 15:50 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel, Akihiko Odaki, Christophe Lyon

On 10/29/24 03:04, Peter Maydell wrote:
> On Mon, 28 Oct 2024 at 19:43, Pierrick Bouvier
> <pierrick.bouvier@linaro.org> wrote:
>>
>> On 10/18/24 06:08, Peter Maydell wrote:
>>> From: Akihiko Odaki <akihiko.odaki@daynix.com>
>>>
>>> The arguments in MESONINTROSPECT are quoted with shlex.quote() so it
>>> must be parsed with shlex.split().  Otherwise the script will fail if
>>> the build directory has a character like "~" in it.
>>>
>>> Note: this fix cannot be backported directly to any stable branch
>>> that doesn't require Meson version 1.4.0 or better; otherwise it will
>>> work OK on Linux but will break on Windows hosts.
>>>
>>> (Unfortunately, Meson prior to version 1.4.0 was inconsistent between
>>> host OSes about how it quoted arguments, and used a different quoting
>>> process on Windows hosts.  Our current git trunk already requires
>>> 1.5.0 as of commit 07f0d32641e ("Require meson version 1.5.0"), but
>>> the stable branches are still on older Meson.)
>>>
>>> Fixes: cf60ccc330 ("cutils: Introduce bundle mechanism")
>>> Reported-by: Michael Tokarev <mjt@tls.msk.ru>
>>> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
>>> [PMM: Updated commit message to give all the detail about the
>>> Meson version compability requirements.]
>>> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
>>> ---
>>> This is essentially back to version 1 of Akihiko's patch, now we
>>> have a new enough Meson; I just updated the commit message.
>>>    https://patchew.org/QEMU/20230812061540.5398-1-akihiko.odaki@daynix.com/
>>> (I have dropped the various reviewed-by and tested-by headers because
>>> I figured the passage of time was enough to make them moot.)
>>>
>>>    scripts/symlink-install-tree.py | 3 ++-
>>>    1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/scripts/symlink-install-tree.py b/scripts/symlink-install-tree.py
>>> index 8ed97e3c943..b72563895c5 100644
>>> --- a/scripts/symlink-install-tree.py
>>> +++ b/scripts/symlink-install-tree.py
>>> @@ -4,6 +4,7 @@
>>>    import errno
>>>    import json
>>>    import os
>>> +import shlex
>>>    import subprocess
>>>    import sys
>>>
>>> @@ -14,7 +15,7 @@ def destdir_join(d1: str, d2: str) -> str:
>>>        return str(PurePath(d1, *PurePath(d2).parts[1:]))
>>>
>>>    introspect = os.environ.get('MESONINTROSPECT')
>>> -out = subprocess.run([*introspect.split(' '), '--installed'],
>>> +out = subprocess.run([*shlex.split(introspect), '--installed'],
>>>                         stdout=subprocess.PIPE, check=True).stdout
>>>    for source, dest in json.loads(out).items():
>>>        bundle_dest = destdir_join('qemu-bundle', dest)
>>
>> Hi,
>>
>> would that be possible to pull this patch please?
>> It's currently blocking the devs who reported it initially.
> 
> Yes, I'll put it in my upcoming pullreq.
> 
> thanks
> -- PMM

Thanks a lot Peter :).


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-10-29 15:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-18 13:08 [PATCH v4] scripts/symlink-install-tree.py: Fix MESONINTROSPECT parsing Peter Maydell
2024-10-21 17:27 ` Pierrick Bouvier
2024-10-21 17:48   ` Christophe Lyon
2024-10-28 19:43 ` Pierrick Bouvier
2024-10-29 10:04   ` Peter Maydell
2024-10-29 15:50     ` Pierrick Bouvier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).