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',