diff mbox series

[v3,11/11] qapi: Restrict code generated for user-mode

Message ID 20200930164949.1425294-12-philmd@redhat.com
State New
Headers show
Series user-mode: Prune build dependencies (part 3) | expand

Commit Message

Philippe Mathieu-Daudé Sept. 30, 2020, 4:49 p.m. UTC
A lot of QAPI generated code is never used by user-mode.

Split out qapi_system_modules and qapi_system_or_tools_modules
from the qapi_all_modules array. We now have 3 groups:
- always used
- use by system-mode or tools (usually by the block layer)
- only used by system-mode

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
Resetting due to Meson update:
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
 qapi/meson.build | 51 ++++++++++++++++++++++++++++++++++--------------
 1 file changed, 36 insertions(+), 15 deletions(-)

Comments

Markus Armbruster Oct. 1, 2020, 5:09 a.m. UTC | #1
Philippe Mathieu-Daudé <philmd@redhat.com> writes:

> A lot of QAPI generated code is never used by user-mode.
>
> Split out qapi_system_modules and qapi_system_or_tools_modules
> from the qapi_all_modules array. We now have 3 groups:
> - always used
> - use by system-mode or tools (usually by the block layer)
> - only used by system-mode
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> Resetting due to Meson update:
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  qapi/meson.build | 51 ++++++++++++++++++++++++++++++++++--------------
>  1 file changed, 36 insertions(+), 15 deletions(-)
>
> diff --git a/qapi/meson.build b/qapi/meson.build
> index 7c4a89a882..ba9677ba97 100644
> --- a/qapi/meson.build
> +++ b/qapi/meson.build
> @@ -14,39 +14,60 @@ util_ss.add(files(
>  ))
>  
>  qapi_all_modules = [
> +  'common',
> +  'introspect',
> +  'misc',
> +]
> +
> +qapi_system_modules = [
>    'acpi',
>    'audio',
> +  'dump',
> +  'machine-target',
> +  'machine',
> +  'migration',
> +  'misc-target',
> +  'net',
> +  'pci',
> +  'qdev',
> +  'rdma',
> +  'rocker',
> +  'tpm',
> +  'trace',
> +]
> +
> +# system or tools
> +qapi_block_modules = [
>    'authz',
>    'block-core',
>    'block',
>    'char',
> -  'common',
>    'control',
>    'crypto',
> -  'dump',
>    'error',
> -  'introspect',
>    'job',
> -  'machine',
> -  'machine-target',
> -  'migration',
> -  'misc',
> -  'misc-target',
> -  'net',
>    'pragma',
> -  'qdev',
> -  'pci',
>    'qom',
> -  'rdma',
> -  'rocker',
>    'run-state',
>    'sockets',
> -  'tpm',
> -  'trace',
>    'transaction',
>    'ui',
>  ]

Most of these aren't "block modules".  Name the thing
qapi_system_or_tools_modules?

> +if have_system
> +  qapi_all_modules += qapi_system_modules
> +elif have_user
> +  # Temporary kludge because X86CPUFeatureWordInfo is not
> +  # restricted to system-mode. This should be removed (along
> +  # with target/i386/feature-stub.c) once target/i386/cpu.c
> +  # has been cleaned.
> +  qapi_all_modules += ['machine-target']
> +endif
> +
> +if have_block

Aha, precedence for using "block" as an abbreviation of "system or
tools".  I find that confusing.

> +  qapi_all_modules += qapi_block_modules
> +endif
> +
>  qapi_storage_daemon_modules = [
>    'block-core',
>    'char',
Philippe Mathieu-Daudé Oct. 1, 2020, 10:23 a.m. UTC | #2
On 10/1/20 7:09 AM, Markus Armbruster wrote:
> Philippe Mathieu-Daudé <philmd@redhat.com> writes:
> 
>> A lot of QAPI generated code is never used by user-mode.
>>
>> Split out qapi_system_modules and qapi_system_or_tools_modules
>> from the qapi_all_modules array. We now have 3 groups:
>> - always used
>> - use by system-mode or tools (usually by the block layer)
>> - only used by system-mode
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>> Resetting due to Meson update:
>> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>>  qapi/meson.build | 51 ++++++++++++++++++++++++++++++++++--------------
>>  1 file changed, 36 insertions(+), 15 deletions(-)
>>
>> diff --git a/qapi/meson.build b/qapi/meson.build
>> index 7c4a89a882..ba9677ba97 100644
>> --- a/qapi/meson.build
>> +++ b/qapi/meson.build
>> @@ -14,39 +14,60 @@ util_ss.add(files(
>>  ))
>>  
>>  qapi_all_modules = [
>> +  'common',
>> +  'introspect',
>> +  'misc',
>> +]
>> +
>> +qapi_system_modules = [
>>    'acpi',
>>    'audio',
>> +  'dump',
>> +  'machine-target',
>> +  'machine',
>> +  'migration',
>> +  'misc-target',
>> +  'net',
>> +  'pci',
>> +  'qdev',
>> +  'rdma',
>> +  'rocker',
>> +  'tpm',
>> +  'trace',
>> +]
>> +
>> +# system or tools
>> +qapi_block_modules = [
>>    'authz',
>>    'block-core',
>>    'block',
>>    'char',
>> -  'common',
>>    'control',
>>    'crypto',
>> -  'dump',
>>    'error',
>> -  'introspect',
>>    'job',
>> -  'machine',
>> -  'machine-target',
>> -  'migration',
>> -  'misc',
>> -  'misc-target',
>> -  'net',
>>    'pragma',
>> -  'qdev',
>> -  'pci',
>>    'qom',
>> -  'rdma',
>> -  'rocker',
>>    'run-state',
>>    'sockets',
>> -  'tpm',
>> -  'trace',
>>    'transaction',
>>    'ui',
>>  ]
> 
> Most of these aren't "block modules".  Name the thing
> qapi_system_or_tools_modules?

This is why I used first, then realized this is defined
as:
  have_block = have_system or have_tools

> 
>> +if have_system
>> +  qapi_all_modules += qapi_system_modules
>> +elif have_user
>> +  # Temporary kludge because X86CPUFeatureWordInfo is not
>> +  # restricted to system-mode. This should be removed (along
>> +  # with target/i386/feature-stub.c) once target/i386/cpu.c
>> +  # has been cleaned.
>> +  qapi_all_modules += ['machine-target']
>> +endif
>> +
>> +if have_block
> 
> Aha, precedence for using "block" as an abbreviation of "system or
> tools".  I find that confusing.

I'll use qapi_system_or_tools_modules back, it is clearer, thanks.

> 
>> +  qapi_all_modules += qapi_block_modules
>> +endif
>> +
>>  qapi_storage_daemon_modules = [
>>    'block-core',
>>    'char',
>
diff mbox series

Patch

diff --git a/qapi/meson.build b/qapi/meson.build
index 7c4a89a882..ba9677ba97 100644
--- a/qapi/meson.build
+++ b/qapi/meson.build
@@ -14,39 +14,60 @@  util_ss.add(files(
 ))
 
 qapi_all_modules = [
+  'common',
+  'introspect',
+  'misc',
+]
+
+qapi_system_modules = [
   'acpi',
   'audio',
+  'dump',
+  'machine-target',
+  'machine',
+  'migration',
+  'misc-target',
+  'net',
+  'pci',
+  'qdev',
+  'rdma',
+  'rocker',
+  'tpm',
+  'trace',
+]
+
+# system or tools
+qapi_block_modules = [
   'authz',
   'block-core',
   'block',
   'char',
-  'common',
   'control',
   'crypto',
-  'dump',
   'error',
-  'introspect',
   'job',
-  'machine',
-  'machine-target',
-  'migration',
-  'misc',
-  'misc-target',
-  'net',
   'pragma',
-  'qdev',
-  'pci',
   'qom',
-  'rdma',
-  'rocker',
   'run-state',
   'sockets',
-  'tpm',
-  'trace',
   'transaction',
   'ui',
 ]
 
+if have_system
+  qapi_all_modules += qapi_system_modules
+elif have_user
+  # Temporary kludge because X86CPUFeatureWordInfo is not
+  # restricted to system-mode. This should be removed (along
+  # with target/i386/feature-stub.c) once target/i386/cpu.c
+  # has been cleaned.
+  qapi_all_modules += ['machine-target']
+endif
+
+if have_block
+  qapi_all_modules += qapi_block_modules
+endif
+
 qapi_storage_daemon_modules = [
   'block-core',
   'char',