diff mbox series

trace: add meson custom_target() depend_files for tracetool

Message ID 20210125110958.214017-1-stefanha@redhat.com
State New
Headers show
Series trace: add meson custom_target() depend_files for tracetool | expand

Commit Message

Stefan Hajnoczi Jan. 25, 2021, 11:09 a.m. UTC
Re-generate tracetool output when the tracetool source code changes. Use
the same approach as qapi_gen_depends and introduce a tracetool_depends
files list so meson is aware of the dependencies.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 meson.build       | 28 +++++++++++++++++++++++++++-
 trace/meson.build | 21 ++++++++++++++-------
 2 files changed, 41 insertions(+), 8 deletions(-)

Comments

Paolo Bonzini Jan. 25, 2021, 11:27 a.m. UTC | #1
On 25/01/21 12:09, Stefan Hajnoczi wrote:
> Re-generate tracetool output when the tracetool source code changes. Use
> the same approach as qapi_gen_depends and introduce a tracetool_depends
> files list so meson is aware of the dependencies.
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>   meson.build       | 28 +++++++++++++++++++++++++++-
>   trace/meson.build | 21 ++++++++++++++-------
>   2 files changed, 41 insertions(+), 8 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index 35a9eddf5c..3909d6b4c1 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1626,6 +1626,31 @@ tracetool = [
>     python, files('scripts/tracetool.py'),
>      '--backend=' + config_host['TRACE_BACKENDS']
>   ]
> +tracetool_depends = files(
> +  'scripts/tracetool/backend/log.py',
> +  'scripts/tracetool/backend/__init__.py',
> +  'scripts/tracetool/backend/dtrace.py',
> +  'scripts/tracetool/backend/ftrace.py',
> +  'scripts/tracetool/backend/simple.py',
> +  'scripts/tracetool/backend/syslog.py',
> +  'scripts/tracetool/backend/ust.py',
> +  'scripts/tracetool/format/tcg_h.py',
> +  'scripts/tracetool/format/ust_events_c.py',
> +  'scripts/tracetool/format/ust_events_h.py',
> +  'scripts/tracetool/format/__init__.py',
> +  'scripts/tracetool/format/d.py',
> +  'scripts/tracetool/format/tcg_helper_c.py',
> +  'scripts/tracetool/format/simpletrace_stap.py',
> +  'scripts/tracetool/format/c.py',
> +  'scripts/tracetool/format/h.py',
> +  'scripts/tracetool/format/tcg_helper_h.py',
> +  'scripts/tracetool/format/log_stap.py',
> +  'scripts/tracetool/format/stap.py',
> +  'scripts/tracetool/format/tcg_helper_wrapper_h.py',
> +  'scripts/tracetool/__init__.py',
> +  'scripts/tracetool/transform.py',
> +  'scripts/tracetool/vcpu.py'
> +)
>   
>   qemu_version_cmd = [find_program('scripts/qemu-version.sh'),
>                       meson.current_source_dir(),
> @@ -2192,7 +2217,8 @@ foreach target : target_dirs
>                           '--target-type=' + target_type,
>                           '--probe-prefix=qemu.' + target_type + '.' + target_name,
>                           '@INPUT@', '@OUTPUT@'
> -                      ])
> +                      ],
> +                      depend_files: tracetool_depends)
>         endforeach
>       endif
>     endforeach
> diff --git a/trace/meson.build b/trace/meson.build
> index a0be8f9b0d..08f83a15c3 100644
> --- a/trace/meson.build
> +++ b/trace/meson.build
> @@ -12,17 +12,20 @@ foreach dir : [ '.' ] + trace_events_subdirs
>     trace_h = custom_target(fmt.format('trace', 'h'),
>                             output: fmt.format('trace', 'h'),
>                             input: trace_events_file,
> -                          command: [ tracetool, group, '--format=h', '@INPUT@', '@OUTPUT@' ])
> +                          command: [ tracetool, group, '--format=h', '@INPUT@', '@OUTPUT@' ],
> +                          depend_files: tracetool_depends)
>     genh += trace_h
>     trace_c = custom_target(fmt.format('trace', 'c'),
>                             output: fmt.format('trace', 'c'),
>                             input: trace_events_file,
> -                          command: [ tracetool, group, '--format=c', '@INPUT@', '@OUTPUT@' ])
> +                          command: [ tracetool, group, '--format=c', '@INPUT@', '@OUTPUT@' ],
> +                          depend_files: tracetool_depends)
>     if 'CONFIG_TRACE_UST' in config_host
>       trace_ust_h = custom_target(fmt.format('trace-ust', 'h'),
>                                   output: fmt.format('trace-ust', 'h'),
>                                   input: trace_events_file,
> -                                command: [ tracetool, group, '--format=ust-events-h', '@INPUT@', '@OUTPUT@' ])
> +                                command: [ tracetool, group, '--format=ust-events-h', '@INPUT@', '@OUTPUT@' ],
> +                                depend_files: tracetool_depends)
>       trace_ss.add(trace_ust_h, lttng, urcubp)
>       genh += trace_ust_h
>     endif
> @@ -31,7 +34,8 @@ foreach dir : [ '.' ] + trace_events_subdirs
>       trace_dtrace = custom_target(fmt.format('trace-dtrace', 'dtrace'),
>                                    output: fmt.format('trace-dtrace', 'dtrace'),
>                                    input: trace_events_file,
> -                                 command: [ tracetool, group, '--format=d', '@INPUT@', '@OUTPUT@' ])
> +                                 command: [ tracetool, group, '--format=d', '@INPUT@', '@OUTPUT@' ],
> +                                 depend_files: tracetool_depends)
>       trace_dtrace_h = custom_target(fmt.format('trace-dtrace', 'h'),
>                                      output: fmt.format('trace-dtrace', 'h'),
>                                      input: trace_dtrace,
> @@ -66,7 +70,8 @@ foreach d : [
>     gen = custom_target(d[0],
>                   output: d[0],
>                   input: meson.source_root() / 'trace-events',
> -                command: [ tracetool, '--group=root', '--format=@0@'.format(d[1]), '@INPUT@', '@OUTPUT@' ])
> +                command: [ tracetool, '--group=root', '--format=@0@'.format(d[1]), '@INPUT@', '@OUTPUT@' ],
> +                depend_files: tracetool_depends)
>     specific_ss.add(when: 'CONFIG_TCG', if_true: gen)
>   endforeach
>   
> @@ -74,11 +79,13 @@ if 'CONFIG_TRACE_UST' in config_host
>     trace_ust_all_h = custom_target('trace-ust-all.h',
>                                     output: 'trace-ust-all.h',
>                                     input: trace_events_files,
> -                                  command: [ tracetool, '--group=all', '--format=ust-events-h', '@INPUT@', '@OUTPUT@' ])
> +                                  command: [ tracetool, '--group=all', '--format=ust-events-h', '@INPUT@', '@OUTPUT@' ],
> +                                  depend_files: tracetool_depends)
>     trace_ust_all_c = custom_target('trace-ust-all.c',
>                                     output: 'trace-ust-all.c',
>                                     input: trace_events_files,
> -                                  command: [ tracetool, '--group=all', '--format=ust-events-c', '@INPUT@', '@OUTPUT@' ])
> +                                  command: [ tracetool, '--group=all', '--format=ust-events-c', '@INPUT@', '@OUTPUT@' ],
> +                                  depend_files: tracetool_depends)
>     trace_ss.add(trace_ust_all_h, trace_ust_all_c)
>     genh += trace_ust_all_h
>   endif
> 

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Stefan Hajnoczi Jan. 25, 2021, 4:20 p.m. UTC | #2
On Mon, Jan 25, 2021 at 11:09:58AM +0000, Stefan Hajnoczi wrote:
> Re-generate tracetool output when the tracetool source code changes. Use
> the same approach as qapi_gen_depends and introduce a tracetool_depends
> files list so meson is aware of the dependencies.
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  meson.build       | 28 +++++++++++++++++++++++++++-
>  trace/meson.build | 21 ++++++++++++++-------
>  2 files changed, 41 insertions(+), 8 deletions(-)

(Additional comments welcome, I can drop this patch from my queue
changes are requested.)

Thanks, applied to my tracing tree:
https://gitlab.com/stefanha/qemu/commits/tracing

Stefan
Philippe Mathieu-Daudé Jan. 25, 2021, 4:40 p.m. UTC | #3
On 1/25/21 12:09 PM, Stefan Hajnoczi wrote:
> Re-generate tracetool output when the tracetool source code changes. Use
> the same approach as qapi_gen_depends and introduce a tracetool_depends
> files list so meson is aware of the dependencies.
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  meson.build       | 28 +++++++++++++++++++++++++++-
>  trace/meson.build | 21 ++++++++++++++-------
>  2 files changed, 41 insertions(+), 8 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Philippe Mathieu-Daudé Jan. 27, 2021, 8:56 p.m. UTC | #4
Hi Stefan,

On Mon, Jan 25, 2021 at 5:40 PM Philippe Mathieu-Daudé
<philmd@redhat.com> wrote:>
> On 1/25/21 12:09 PM, Stefan Hajnoczi wrote:
> > Re-generate tracetool output when the tracetool source code changes. Use
> > the same approach as qapi_gen_depends and introduce a tracetool_depends
> > files list so meson is aware of the dependencies.
> >
> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > ---
> >  meson.build       | 28 +++++++++++++++++++++++++++-
> >  trace/meson.build | 21 ++++++++++++++-------
> >  2 files changed, 41 insertions(+), 8 deletions(-)

Please do not merge "trace: make the 'log' backend timestamp configurable"
without this patch -- even better, queue this one directly after it -- as this
gave me troubles with the multiple directories I'm using to build:

In file included from trace/trace-io.c:5:
trace/trace-io.h: In function ‘_nocheck__trace_qio_channel_command_wait’:
trace/trace-io.h:1756:13: error: ‘message_with_timestamp’ undeclared
(first use in this function); did you mean ‘error_with_timestamp’?
1756 |         if (message_with_timestamp) {
     |             ^~~~~~~~~~~~~~~~~~~~~~
     |             error_with_timestamp
ninja: build stopped: subcommand failed.
Philippe Mathieu-Daudé Feb. 4, 2021, 9:51 a.m. UTC | #5
On 1/27/21 9:56 PM, Philippe Mathieu-Daudé wrote:
> Hi Stefan,
> 
> On Mon, Jan 25, 2021 at 5:40 PM Philippe Mathieu-Daudé
> <philmd@redhat.com> wrote:>
>> On 1/25/21 12:09 PM, Stefan Hajnoczi wrote:
>>> Re-generate tracetool output when the tracetool source code changes. Use
>>> the same approach as qapi_gen_depends and introduce a tracetool_depends
>>> files list so meson is aware of the dependencies.
>>>
>>> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
>>> ---
>>>  meson.build       | 28 +++++++++++++++++++++++++++-
>>>  trace/meson.build | 21 ++++++++++++++-------
>>>  2 files changed, 41 insertions(+), 8 deletions(-)
> 
> Please do not merge "trace: make the 'log' backend timestamp configurable"
> without this patch -- even better, queue this one directly after it -- as this
> gave me troubles with the multiple directories I'm using to build:
> 
> In file included from trace/trace-io.c:5:
> trace/trace-io.h: In function ‘_nocheck__trace_qio_channel_command_wait’:
> trace/trace-io.h:1756:13: error: ‘message_with_timestamp’ undeclared
> (first use in this function); did you mean ‘error_with_timestamp’?
> 1756 |         if (message_with_timestamp) {
>      |             ^~~~~~~~~~~~~~~~~~~~~~
>      |             error_with_timestamp
> ninja: build stopped: subcommand failed.

I just realized bisecting, this problem is present when jumping from
*after* 0572d6cd29d to *before* it. Range [7fd51e68c34 -> 0572d6cd29d].

I doubt there is much we can do :(
diff mbox series

Patch

diff --git a/meson.build b/meson.build
index 35a9eddf5c..3909d6b4c1 100644
--- a/meson.build
+++ b/meson.build
@@ -1626,6 +1626,31 @@  tracetool = [
   python, files('scripts/tracetool.py'),
    '--backend=' + config_host['TRACE_BACKENDS']
 ]
+tracetool_depends = files(
+  'scripts/tracetool/backend/log.py',
+  'scripts/tracetool/backend/__init__.py',
+  'scripts/tracetool/backend/dtrace.py',
+  'scripts/tracetool/backend/ftrace.py',
+  'scripts/tracetool/backend/simple.py',
+  'scripts/tracetool/backend/syslog.py',
+  'scripts/tracetool/backend/ust.py',
+  'scripts/tracetool/format/tcg_h.py',
+  'scripts/tracetool/format/ust_events_c.py',
+  'scripts/tracetool/format/ust_events_h.py',
+  'scripts/tracetool/format/__init__.py',
+  'scripts/tracetool/format/d.py',
+  'scripts/tracetool/format/tcg_helper_c.py',
+  'scripts/tracetool/format/simpletrace_stap.py',
+  'scripts/tracetool/format/c.py',
+  'scripts/tracetool/format/h.py',
+  'scripts/tracetool/format/tcg_helper_h.py',
+  'scripts/tracetool/format/log_stap.py',
+  'scripts/tracetool/format/stap.py',
+  'scripts/tracetool/format/tcg_helper_wrapper_h.py',
+  'scripts/tracetool/__init__.py',
+  'scripts/tracetool/transform.py',
+  'scripts/tracetool/vcpu.py'
+)
 
 qemu_version_cmd = [find_program('scripts/qemu-version.sh'),
                     meson.current_source_dir(),
@@ -2192,7 +2217,8 @@  foreach target : target_dirs
                         '--target-type=' + target_type,
                         '--probe-prefix=qemu.' + target_type + '.' + target_name,
                         '@INPUT@', '@OUTPUT@'
-                      ])
+                      ],
+                      depend_files: tracetool_depends)
       endforeach
     endif
   endforeach
diff --git a/trace/meson.build b/trace/meson.build
index a0be8f9b0d..08f83a15c3 100644
--- a/trace/meson.build
+++ b/trace/meson.build
@@ -12,17 +12,20 @@  foreach dir : [ '.' ] + trace_events_subdirs
   trace_h = custom_target(fmt.format('trace', 'h'),
                           output: fmt.format('trace', 'h'),
                           input: trace_events_file,
-                          command: [ tracetool, group, '--format=h', '@INPUT@', '@OUTPUT@' ])
+                          command: [ tracetool, group, '--format=h', '@INPUT@', '@OUTPUT@' ],
+                          depend_files: tracetool_depends)
   genh += trace_h
   trace_c = custom_target(fmt.format('trace', 'c'),
                           output: fmt.format('trace', 'c'),
                           input: trace_events_file,
-                          command: [ tracetool, group, '--format=c', '@INPUT@', '@OUTPUT@' ])
+                          command: [ tracetool, group, '--format=c', '@INPUT@', '@OUTPUT@' ],
+                          depend_files: tracetool_depends)
   if 'CONFIG_TRACE_UST' in config_host
     trace_ust_h = custom_target(fmt.format('trace-ust', 'h'),
                                 output: fmt.format('trace-ust', 'h'),
                                 input: trace_events_file,
-                                command: [ tracetool, group, '--format=ust-events-h', '@INPUT@', '@OUTPUT@' ])
+                                command: [ tracetool, group, '--format=ust-events-h', '@INPUT@', '@OUTPUT@' ],
+                                depend_files: tracetool_depends)
     trace_ss.add(trace_ust_h, lttng, urcubp)
     genh += trace_ust_h
   endif
@@ -31,7 +34,8 @@  foreach dir : [ '.' ] + trace_events_subdirs
     trace_dtrace = custom_target(fmt.format('trace-dtrace', 'dtrace'),
                                  output: fmt.format('trace-dtrace', 'dtrace'),
                                  input: trace_events_file,
-                                 command: [ tracetool, group, '--format=d', '@INPUT@', '@OUTPUT@' ])
+                                 command: [ tracetool, group, '--format=d', '@INPUT@', '@OUTPUT@' ],
+                                 depend_files: tracetool_depends)
     trace_dtrace_h = custom_target(fmt.format('trace-dtrace', 'h'),
                                    output: fmt.format('trace-dtrace', 'h'),
                                    input: trace_dtrace,
@@ -66,7 +70,8 @@  foreach d : [
   gen = custom_target(d[0],
                 output: d[0],
                 input: meson.source_root() / 'trace-events',
-                command: [ tracetool, '--group=root', '--format=@0@'.format(d[1]), '@INPUT@', '@OUTPUT@' ])
+                command: [ tracetool, '--group=root', '--format=@0@'.format(d[1]), '@INPUT@', '@OUTPUT@' ],
+                depend_files: tracetool_depends)
   specific_ss.add(when: 'CONFIG_TCG', if_true: gen)
 endforeach
 
@@ -74,11 +79,13 @@  if 'CONFIG_TRACE_UST' in config_host
   trace_ust_all_h = custom_target('trace-ust-all.h',
                                   output: 'trace-ust-all.h',
                                   input: trace_events_files,
-                                  command: [ tracetool, '--group=all', '--format=ust-events-h', '@INPUT@', '@OUTPUT@' ])
+                                  command: [ tracetool, '--group=all', '--format=ust-events-h', '@INPUT@', '@OUTPUT@' ],
+                                  depend_files: tracetool_depends)
   trace_ust_all_c = custom_target('trace-ust-all.c',
                                   output: 'trace-ust-all.c',
                                   input: trace_events_files,
-                                  command: [ tracetool, '--group=all', '--format=ust-events-c', '@INPUT@', '@OUTPUT@' ])
+                                  command: [ tracetool, '--group=all', '--format=ust-events-c', '@INPUT@', '@OUTPUT@' ],
+                                  depend_files: tracetool_depends)
   trace_ss.add(trace_ust_all_h, trace_ust_all_c)
   genh += trace_ust_all_h
 endif