[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 04/17] qapi: Prepare for system modules other
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH v3 04/17] qapi: Prepare for system modules other than 'builtin' |
Date: |
Thu, 7 Feb 2019 12:16:09 +0100 |
On Wed, Feb 6, 2019 at 7:17 PM Markus Armbruster <address@hidden> wrote:
>
> The next commit wants to generate qapi-emit-events.{c.h}. To support
> that, extend QAPISchemaModularCVisitor to support additional "system
> modules", i.e. modules that don't correspond to a (user-defined) QAPI
> schema module.
>
> Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
> ---
> scripts/qapi/common.py | 35 +++++++++++++++++++++++++----------
> scripts/qapi/types.py | 2 +-
> scripts/qapi/visit.py | 2 +-
> 3 files changed, 27 insertions(+), 12 deletions(-)
>
> diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py
> index 0e3ec598a4..c327ae5036 100644
> --- a/scripts/qapi/common.py
> +++ b/scripts/qapi/common.py
> @@ -2327,27 +2327,42 @@ class QAPISchemaModularCVisitor(QAPISchemaVisitor):
> self._module = {}
> self._main_module = None
>
> + @staticmethod
> + def _is_user_module(name):
> + return name and not name.startswith('./')
> +
> @staticmethod
> def _is_builtin_module(name):
> return not name
>
> def _module_basename(self, what, name):
> - if name is None:
> - return re.sub(r'-', '-builtin-', what)
> - basename = os.path.join(os.path.dirname(name),
> - self._prefix + what)
> - if name == self._main_module:
> - return basename
> - return basename + '-' + os.path.splitext(os.path.basename(name))[0]
> + ret = '' if self._is_builtin_module(name) else self._prefix
> + if self._is_user_module(name):
> + dirname, basename = os.path.split(name)
> + ret += what
> + if name != self._main_module:
> + ret += '-' + os.path.splitext(basename)[0]
> + ret = os.path.join(dirname, ret)
> + else:
> + name = name[2:] if name else 'builtin'
> + ret += re.sub(r'-', '-' + name + '-', what)
> + return ret
>
> def _add_module(self, name, blurb):
> - if self._main_module is None and not self._is_builtin_module(name):
> - self._main_module = name
> genc = QAPIGenC(blurb, self._pydoc)
> genh = QAPIGenH(blurb, self._pydoc)
> self._module[name] = (genc, genh)
> self._set_module(name)
>
> + def _add_user_module(self, name, blurb):
> + assert self._is_user_module(name)
> + if self._main_module is None:
> + self._main_module = name
> + self._add_module(name, blurb)
> +
> + def _add_system_module(self, name, blurb):
> + self._add_module(name and './' + name, blurb)
> +
> def _set_module(self, name):
> self._genc, self._genh = self._module[name]
>
> @@ -2372,7 +2387,7 @@ class QAPISchemaModularCVisitor(QAPISchemaVisitor):
> self._genc = None
> self._genh = None
> else:
> - self._add_module(name, self._blurb)
> + self._add_user_module(name, self._blurb)
> self._begin_user_module(name)
>
> def visit_include(self, name, info):
> diff --git a/scripts/qapi/types.py b/scripts/qapi/types.py
> index 9fa510f7df..2bd6fcd44f 100644
> --- a/scripts/qapi/types.py
> +++ b/scripts/qapi/types.py
> @@ -183,7 +183,7 @@ class QAPISchemaGenTypeVisitor(QAPISchemaModularCVisitor):
> QAPISchemaModularCVisitor.__init__(
> self, prefix, 'qapi-types', ' * Schema-defined QAPI types',
> __doc__)
> - self._add_module(None, ' * Built-in QAPI types')
> + self._add_system_module(None, ' * Built-in QAPI types')
> self._genc.preamble_add(mcgen('''
> #include "qemu/osdep.h"
> #include "qapi/dealloc-visitor.h"
> diff --git a/scripts/qapi/visit.py b/scripts/qapi/visit.py
> index ca86009398..826b8066e1 100644
> --- a/scripts/qapi/visit.py
> +++ b/scripts/qapi/visit.py
> @@ -284,7 +284,7 @@ class
> QAPISchemaGenVisitVisitor(QAPISchemaModularCVisitor):
> QAPISchemaModularCVisitor.__init__(
> self, prefix, 'qapi-visit', ' * Schema-defined QAPI visitors',
> __doc__)
> - self._add_module(None, ' * Built-in QAPI visitors')
> + self._add_system_module(None, ' * Built-in QAPI visitors')
> self._genc.preamble_add(mcgen('''
> #include "qemu/osdep.h"
> #include "qemu-common.h"
> --
> 2.17.2
>
- [Qemu-devel] [PATCH v3 12/17] qapi: make query-cpu-model-expansion depend on s390 or x86, (continued)
- [Qemu-devel] [PATCH v3 12/17] qapi: make query-cpu-model-expansion depend on s390 or x86, Markus Armbruster, 2019/02/06
- [Qemu-devel] [PATCH v3 15/17] Revert "qapi-events: add 'if' condition to implicit event enum", Markus Armbruster, 2019/02/06
- [Qemu-devel] [PATCH v3 07/17] qapi: New module target.json, Markus Armbruster, 2019/02/06
- [Qemu-devel] [PATCH v3 13/17] qapi: make query-cpu-definitions depend on specific targets, Markus Armbruster, 2019/02/06
- [Qemu-devel] [PATCH v3 04/17] qapi: Prepare for system modules other than 'builtin', Markus Armbruster, 2019/02/06
- Re: [Qemu-devel] [PATCH v3 04/17] qapi: Prepare for system modules other than 'builtin',
Marc-André Lureau <=
- [Qemu-devel] [PATCH v3 09/17] qapi: make s390 commands depend on TARGET_S390X, Markus Armbruster, 2019/02/06
- [Qemu-devel] [PATCH v3 10/17] target.json: add a note about query-cpu* not being s390x-specific, Markus Armbruster, 2019/02/06
- [Qemu-devel] [PATCH v3 03/17] qapi: Clean up modular built-in code generation a bit, Markus Armbruster, 2019/02/06
- [Qemu-devel] [PATCH v3 16/17] qmp: Deprecate query-events in favor of query-qmp-schema, Markus Armbruster, 2019/02/06