diff mbox series

[RFC,v2] meson: Only generate trace files for selected targets

Message ID 20210224213515.3331631-1-philmd@redhat.com (mailing list archive)
State New, archived
Headers show
Series [RFC,v2] meson: Only generate trace files for selected targets | expand

Commit Message

Philippe Mathieu-Daudé Feb. 24, 2021, 9:35 p.m. UTC
We don't need to generate trace files for targets we
are not building. Restrict the the ones selected.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 meson.build | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

Comments

Stefan Hajnoczi March 8, 2021, 4:46 p.m. UTC | #1
On Wed, Feb 24, 2021 at 10:35:15PM +0100, Philippe Mathieu-Daudé wrote:
> We don't need to generate trace files for targets we
> are not building. Restrict the the ones selected.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>  meson.build | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index 05a67c20d93..8503aa1b628 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1826,16 +1826,16 @@
>    trace_events_subdirs += [
>      'accel/tcg',
>      'hw/core',
> -    'target/arm',
> -    'target/hppa',
> -    'target/i386',
>      'target/i386/kvm',

Please add a comment explaining why an exception is needed here and the
rest of the target directories are handled by the loop below when you
send a non-RFC patch.

That will help people who add sub-directories in the future.

Thanks,
Stefan
Philippe Mathieu-Daudé March 8, 2021, 5:48 p.m. UTC | #2
On 3/8/21 5:46 PM, Stefan Hajnoczi wrote:
> On Wed, Feb 24, 2021 at 10:35:15PM +0100, Philippe Mathieu-Daudé wrote:
>> We don't need to generate trace files for targets we
>> are not building. Restrict the the ones selected.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>>  meson.build | 16 ++++++++--------
>>  1 file changed, 8 insertions(+), 8 deletions(-)
>>
>> diff --git a/meson.build b/meson.build
>> index 05a67c20d93..8503aa1b628 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -1826,16 +1826,16 @@
>>    trace_events_subdirs += [
>>      'accel/tcg',
>>      'hw/core',
>> -    'target/arm',
>> -    'target/hppa',
>> -    'target/i386',
>>      'target/i386/kvm',
> 
> Please add a comment explaining why an exception is needed here and the
> rest of the target directories are handled by the loop below when you
> send a non-RFC patch.

Better would be a recursive function that adds the directory if
necessary. But I'm happy adding a simple comment =)

> 
> That will help people who add sub-directories in the future.

Yes. Anyhow I expect this to clash with Claudio's work in progress
(which split target/ and add multiple subdirectories).
Claudio Fontana March 9, 2021, 8:41 a.m. UTC | #3
On 3/8/21 6:48 PM, Philippe Mathieu-Daudé wrote:
> On 3/8/21 5:46 PM, Stefan Hajnoczi wrote:
>> On Wed, Feb 24, 2021 at 10:35:15PM +0100, Philippe Mathieu-Daudé wrote:
>>> We don't need to generate trace files for targets we
>>> are not building. Restrict the the ones selected.
>>>
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>> ---
>>>  meson.build | 16 ++++++++--------
>>>  1 file changed, 8 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/meson.build b/meson.build
>>> index 05a67c20d93..8503aa1b628 100644
>>> --- a/meson.build
>>> +++ b/meson.build
>>> @@ -1826,16 +1826,16 @@
>>>    trace_events_subdirs += [
>>>      'accel/tcg',
>>>      'hw/core',
>>> -    'target/arm',
>>> -    'target/hppa',
>>> -    'target/i386',
>>>      'target/i386/kvm',
>>
>> Please add a comment explaining why an exception is needed here and the
>> rest of the target directories are handled by the loop below when you
>> send a non-RFC patch.
> 
> Better would be a recursive function that adds the directory if
> necessary. But I'm happy adding a simple comment =)
> 
>>
>> That will help people who add sub-directories in the future.
> 
> Yes. Anyhow I expect this to clash with Claudio's work in progress
> (which split target/ and add multiple subdirectories).
> 
> 

np, just the tracedirs should be easy to solve;

I personally don't see updating a simple list as difficult for the dev; does generating trace files for all require a lot of time?

In any case, I agree that just recursing all directories in target/ looking for trace.h / traceevents files could be better.

But how much time do we spare, compared with just generating all?

Ciao,

Claudio
Philippe Mathieu-Daudé March 9, 2021, 9:21 a.m. UTC | #4
On 3/9/21 9:41 AM, Claudio Fontana wrote:
> On 3/8/21 6:48 PM, Philippe Mathieu-Daudé wrote:
>> On 3/8/21 5:46 PM, Stefan Hajnoczi wrote:
>>> On Wed, Feb 24, 2021 at 10:35:15PM +0100, Philippe Mathieu-Daudé wrote:
>>>> We don't need to generate trace files for targets we
>>>> are not building. Restrict the the ones selected.
>>>>
>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>>> ---
>>>>  meson.build | 16 ++++++++--------
>>>>  1 file changed, 8 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/meson.build b/meson.build
>>>> index 05a67c20d93..8503aa1b628 100644
>>>> --- a/meson.build
>>>> +++ b/meson.build
>>>> @@ -1826,16 +1826,16 @@
>>>>    trace_events_subdirs += [
>>>>      'accel/tcg',
>>>>      'hw/core',
>>>> -    'target/arm',
>>>> -    'target/hppa',
>>>> -    'target/i386',
>>>>      'target/i386/kvm',
>>>
>>> Please add a comment explaining why an exception is needed here and the
>>> rest of the target directories are handled by the loop below when you
>>> send a non-RFC patch.
>>
>> Better would be a recursive function that adds the directory if
>> necessary. But I'm happy adding a simple comment =)
>>
>>>
>>> That will help people who add sub-directories in the future.
>>
>> Yes. Anyhow I expect this to clash with Claudio's work in progress
>> (which split target/ and add multiple subdirectories).
>>
>>
> 
> np, just the tracedirs should be easy to solve;
> 
> I personally don't see updating a simple list as difficult for the dev; does generating trace files for all require a lot of time?
> 
> In any case, I agree that just recursing all directories in target/ looking for trace.h / traceevents files could be better.
> 
> But how much time do we spare, compared with just generating all?

Well now on slow 32-bit hosts my impression is we spend more time in
meson / generating trace boilerplate files (even if the python code
is trivial, it is invoked many times) rather than compiling C.

trace doesn't use Kconfig to filter, so everything is processed.
Maybe the root problem is 'hw/core' actually, not the 'target/'
directories...

This is more noticeable for the user-only builds, which are the
ones likely to be supported longer on 32-bit hosts (there are
some discussions about keeping maintaining sysemu there).

That said this is user experience feeling and I didn't care to
benchmark it.

Anyhow this doesn't seem to have big impact (yet) so let's
postpone this series.

Thanks,

Phil.
Paolo Bonzini March 9, 2021, 10:26 a.m. UTC | #5
On 09/03/21 09:41, Claudio Fontana wrote:
> In any case, I agree that just recursing all directories in target/
> looking for trace.h / traceevents files could be better.

Using the directory structure to find source files is a bad idea because 
you don't notice that you haven't "git add"ed a file until it's too late 
(typically the maintainer notices it for you...).

We do it for default-configs/targets, but that's an exception and I'd 
rather not extend it more.

In fact, Philippe, perhaps you can add the extra tracedirs for hw/ and 
target/ to the default-config/targets/*.mak file?

Thanks,

Paolo
Claudio Fontana March 9, 2021, 10:46 a.m. UTC | #6
On 3/9/21 11:26 AM, Paolo Bonzini wrote:
> On 09/03/21 09:41, Claudio Fontana wrote:
>> In any case, I agree that just recursing all directories in target/
>> looking for trace.h / traceevents files could be better.
> 
> Using the directory structure to find source files is a bad idea because 
> you don't notice that you haven't "git add"ed a file until it's too late 
> (typically the maintainer notices it for you...).
> 
> We do it for default-configs/targets, but that's an exception and I'd 
> rather not extend it more.
> 
> In fact, Philippe, perhaps you can add the extra tracedirs for hw/ and 
> target/ to the default-config/targets/*.mak file?
> 
> Thanks,
> 
> Paolo
> 

There was also the discussion of improving check-patch to detect missing updates to trace files,
but my attempt to make a reliable patch at the time failed..

Ciao,

Claudio
Philippe Mathieu-Daudé March 9, 2021, 10:54 a.m. UTC | #7
On 3/9/21 11:26 AM, Paolo Bonzini wrote:
> On 09/03/21 09:41, Claudio Fontana wrote:
>> In any case, I agree that just recursing all directories in target/
>> looking for trace.h / traceevents files could be better.
> 
> Using the directory structure to find source files is a bad idea because
> you don't notice that you haven't "git add"ed a file until it's too late
> (typically the maintainer notices it for you...).
> 
> We do it for default-configs/targets, but that's an exception and I'd
> rather not extend it more.
> 
> In fact, Philippe, perhaps you can add the extra tracedirs for hw/ and
> target/ to the default-config/targets/*.mak file?

Hmm interesting idea... I'll have a look, thanks!
diff mbox series

Patch

diff --git a/meson.build b/meson.build
index 05a67c20d93..8503aa1b628 100644
--- a/meson.build
+++ b/meson.build
@@ -1826,16 +1826,16 @@ 
   trace_events_subdirs += [
     'accel/tcg',
     'hw/core',
-    'target/arm',
-    'target/hppa',
-    'target/i386',
     'target/i386/kvm',
-    'target/mips',
-    'target/ppc',
-    'target/riscv',
-    'target/s390x',
-    'target/sparc',
   ]
+  foreach target : target_dirs
+    arch = config_target_mak[target]['TARGET_BASE_ARCH']
+    target_trace_events_subdir = 'target' / arch
+    if fs.exists(meson.current_source_dir() / target_trace_events_subdir / 'trace-events') and \
+        target_trace_events_subdir not in trace_events_subdirs
+      trace_events_subdirs += [target_trace_events_subdir]
+    endif
+  endforeach
 endif
 
 vhost_user = not_found