On Sat, Jun 7, 2025 at 5:47 AM oltolm <oleg.tolmat...@gmail.com> wrote:
>
> Sorry, I forgot to cc the maintainers.
>
> The build failed when run on Windows. I replaced calls to Unix programs
> like ´cat´, ´sed´ and ´true´ with calls to ´python´. I wrapped calls to
> ´os.path.relpath´ in try-except because it can fail when the two paths
> are on different drives. I made sure to convert the Windows paths to
> Unix paths to prevent warnings in generated files.
>
> Signed-off-by: oltolm <oleg.tolmat...@gmail.com>
> ---
>  contrib/plugins/meson.build         |  2 +-
>  plugins/meson.build                 |  2 +-
>  scripts/tracetool/__init__.py       | 15 ++++++++++++---
>  scripts/tracetool/backend/ftrace.py |  4 +---
>  scripts/tracetool/backend/log.py    |  4 +---
>  scripts/tracetool/backend/syslog.py |  4 +---
>  tests/functional/meson.build        |  4 +---
>  tests/include/meson.build           |  2 +-
>  tests/tcg/plugins/meson.build       |  2 +-
>  trace/meson.build                   |  5 +++--
>  10 files changed, 23 insertions(+), 21 deletions(-)
>
> diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build
> index fa8a426c8..1876bc784 100644
> --- a/contrib/plugins/meson.build
> +++ b/contrib/plugins/meson.build
> @@ -24,7 +24,7 @@ endif
>  if t.length() > 0
>    alias_target('contrib-plugins', t)
>  else
> -  run_target('contrib-plugins', command: find_program('true'))
> +  run_target('contrib-plugins', command: [python, '-c', ''])
>  endif
>
>  plugin_modules += t
> diff --git a/plugins/meson.build b/plugins/meson.build
> index 5383c7b88..cb7472df8 100644
> --- a/plugins/meson.build
> +++ b/plugins/meson.build
> @@ -33,7 +33,7 @@ if host_os == 'windows'
>      input: qemu_plugin_symbols,
>      output: 'qemu_plugin_api.def',
>      capture: true,
> -    command: ['sed', '-e', '0,/^/s//EXPORTS/; s/[{};]//g', '@INPUT@'])
> +    command: [python, '-c', 'import fileinput, re; print("EXPORTS", end=""); 
> [print(re.sub(r"[{};]", "", line), end="") for line in fileinput.input()]', 
> '@INPUT@'])
>
>    # then use dlltool to assemble a delaylib.
>    # The delaylib will have an "imaginary" name (qemu.exe), that is used by 
> the
> diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
> index bc03238c0..6dfcbf71e 100644
> --- a/scripts/tracetool/__init__.py
> +++ b/scripts/tracetool/__init__.py
> @@ -12,12 +12,14 @@
>  __email__      = "stefa...@redhat.com"
>
>
> +import os
>  import re
>  import sys
>  import weakref
> +from pathlib import PurePath
>
> -import tracetool.format
>  import tracetool.backend
> +import tracetool.format
>
>
>  def error_write(*lines):
> @@ -36,7 +38,7 @@ def error(*lines):
>
>  def out_open(filename):
>      global out_filename, out_fobj
> -    out_filename = filename
> +    out_filename = posix_relpath(filename)
>      out_fobj = open(filename, 'wt')
>
>  def out(*lines, **kwargs):
> @@ -308,7 +310,7 @@ def build(line_str, lineno, filename):
>              fmt = [fmt_trans, fmt]
>          args = Arguments.build(groups["args"])
>
> -        return Event(name, props, fmt, args, lineno, filename)
> +        return Event(name, props, fmt, args, lineno, posix_relpath(filename))
>
>      def __repr__(self):
>          """Evaluable string representation for this object."""
> @@ -447,3 +449,10 @@ def generate(events, group, format, backends,
>      tracetool.backend.dtrace.PROBEPREFIX = probe_prefix
>
>      tracetool.format.generate(events, format, backend, group)
> +
> +def posix_relpath(path, start=None):
> +    try:
> +        path = os.path.relpath(path, start)
> +    except ValueError:
> +        pass
> +    return PurePath(path).as_posix()
> diff --git a/scripts/tracetool/backend/ftrace.py 
> b/scripts/tracetool/backend/ftrace.py
> index baed2ae61..5fa30ccc0 100644
> --- a/scripts/tracetool/backend/ftrace.py
> +++ b/scripts/tracetool/backend/ftrace.py
> @@ -12,8 +12,6 @@
>  __email__      = "stefa...@redhat.com"
>
>
> -import os.path
> -
>  from tracetool import out
>
>
> @@ -47,7 +45,7 @@ def generate_h(event, group):
>          args=event.args,
>          event_id="TRACE_" + event.name.upper(),
>          event_lineno=event.lineno,
> -        event_filename=os.path.relpath(event.filename),
> +        event_filename=event.filename,
>          fmt=event.fmt.rstrip("\n"),
>          argnames=argnames)
>
> diff --git a/scripts/tracetool/backend/log.py 
> b/scripts/tracetool/backend/log.py
> index de27b7e62..17ba1cd90 100644
> --- a/scripts/tracetool/backend/log.py
> +++ b/scripts/tracetool/backend/log.py
> @@ -12,8 +12,6 @@
>  __email__      = "stefa...@redhat.com"
>
>
> -import os.path
> -
>  from tracetool import out
>
>
> @@ -55,7 +53,7 @@ def generate_h(event, group):
>          '    }',
>          cond=cond,
>          event_lineno=event.lineno,
> -        event_filename=os.path.relpath(event.filename),
> +        event_filename=event.filename,
>          name=event.name,
>          fmt=event.fmt.rstrip("\n"),
>          argnames=argnames)
> diff --git a/scripts/tracetool/backend/syslog.py 
> b/scripts/tracetool/backend/syslog.py
> index 012970f6c..5a3a00fe3 100644
> --- a/scripts/tracetool/backend/syslog.py
> +++ b/scripts/tracetool/backend/syslog.py
> @@ -12,8 +12,6 @@
>  __email__      = "stefa...@redhat.com"
>
>
> -import os.path
> -
>  from tracetool import out
>
>
> @@ -43,7 +41,7 @@ def generate_h(event, group):
>          '    }',
>          cond=cond,
>          event_lineno=event.lineno,
> -        event_filename=os.path.relpath(event.filename),
> +        event_filename=event.filename,
>          name=event.name,
>          fmt=event.fmt.rstrip("\n"),
>          argnames=argnames)
> diff --git a/tests/functional/meson.build b/tests/functional/meson.build
> index 52b4706cf..ee222888f 100644
> --- a/tests/functional/meson.build
> +++ b/tests/functional/meson.build
> @@ -411,6 +411,4 @@ foreach speed : ['quick', 'thorough']
>    endforeach
>  endforeach
>
> -run_target('precache-functional',
> -           depends: precache_all,
> -           command: ['true'])
> +alias_target('precache-functional', precache_all)

Hi Oleg,
There is a CI hexagon build failure. Maybe precache_all is []:
../tests/functional/meson.build:417:0: ERROR: alias_target takes at
least 2 arguments, but got 1.

https://gitlab.com/qemu-project/qemu/-/jobs/10336566320#L4267

Please take a look. Thanks!

Stefan

> diff --git a/tests/include/meson.build b/tests/include/meson.build
> index 9abba308f..8e8d1ec4e 100644
> --- a/tests/include/meson.build
> +++ b/tests/include/meson.build
> @@ -13,4 +13,4 @@ test_qapi_outputs_extra = [
>  test_qapi_files_extra = custom_target('QAPI test (include)',
>                                        output: test_qapi_outputs_extra,
>                                        input: test_qapi_files,
> -                                      command: 'true')
> +                                      command: [python, '-c', ''])
> diff --git a/tests/tcg/plugins/meson.build b/tests/tcg/plugins/meson.build
> index 41f02f2c7..029342282 100644
> --- a/tests/tcg/plugins/meson.build
> +++ b/tests/tcg/plugins/meson.build
> @@ -17,7 +17,7 @@ endif
>  if t.length() > 0
>    alias_target('test-plugins', t)
>  else
> -  run_target('test-plugins', command: find_program('true'))
> +  run_target('test-plugins', command: [python, '-c', ''])
>  endif
>
>  plugin_modules += t
> diff --git a/trace/meson.build b/trace/meson.build
> index 3df454935..9c42a57a0 100644
> --- a/trace/meson.build
> +++ b/trace/meson.build
> @@ -4,7 +4,7 @@ trace_events_files = []
>  foreach item : [ '.' ] + trace_events_subdirs + qapi_trace_events
>    if item in qapi_trace_events
>      trace_events_file = item
> -    group_name = item.full_path().split('/')[-1].underscorify()
> +    group_name = fs.name(item).underscorify()
>    else
>      trace_events_file = meson.project_source_root() / item / 'trace-events'
>      group_name = item == '.' ? 'root' : item.underscorify()
> @@ -57,10 +57,11 @@ foreach item : [ '.' ] + trace_events_subdirs + 
> qapi_trace_events
>    endif
>  endforeach
>
> +cat = [ python, '-c', 'import fileinput; [print(line, end="") for line in 
> fileinput.input()]', '@INPUT@' ]
>  trace_events_all = custom_target('trace-events-all',
>                                   output: 'trace-events-all',
>                                   input: trace_events_files,
> -                                 command: [ 'cat', '@INPUT@' ],
> +                                 command: cat,
>                                   capture: true,
>                                   install: get_option('trace_backends') != [ 
> 'nop' ],
>                                   install_dir: qemu_datadir)
> --
> 2.49.0.windows.1
>
>

Reply via email to