From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: marcandre.lureau@redhat.com
Subject: [Qemu-devel] [PATCH v3 04/17] qapi: Prepare for system modules other than 'builtin'
Date: Wed, 6 Feb 2019 19:17:12 +0100 [thread overview]
Message-ID: <20190206181725.14337-5-armbru@redhat.com> (raw)
In-Reply-To: <20190206181725.14337-1-armbru@redhat.com>
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 <armbru@redhat.com>
---
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
next prev parent reply other threads:[~2019-02-06 18:18 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-06 18:17 [Qemu-devel] [PATCH v3 00/17] qapi: add #if pre-processor conditions to generated code (part 3) Markus Armbruster
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 01/17] qapi: Belatedly document modular code generation Markus Armbruster
2019-02-06 18:26 ` Marc-André Lureau
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 02/17] qapi: Fix up documentation for recent commit a95291007b2 Markus Armbruster
2019-02-06 18:19 ` Marc-André Lureau
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 03/17] qapi: Clean up modular built-in code generation a bit Markus Armbruster
2019-02-07 11:15 ` Marc-André Lureau
2019-02-07 12:46 ` Markus Armbruster
2019-02-06 18:17 ` Markus Armbruster [this message]
2019-02-07 11:16 ` [Qemu-devel] [PATCH v3 04/17] qapi: Prepare for system modules other than 'builtin' Marc-André Lureau
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 05/17] qapi: Generate QAPIEvent stuff into separate files Markus Armbruster
2019-02-07 11:16 ` Marc-André Lureau
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 06/17] build-sys: move qmp-introspect per target Markus Armbruster
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 07/17] qapi: New module target.json Markus Armbruster
2019-02-07 11:16 ` Marc-André Lureau
2019-02-07 14:58 ` Eric Blake
2019-02-07 16:32 ` Markus Armbruster
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 08/17] qapi: make rtc-reset-reinjection and SEV depend on TARGET_I386 Markus Armbruster
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 09/17] qapi: make s390 commands depend on TARGET_S390X Markus Armbruster
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 10/17] target.json: add a note about query-cpu* not being s390x-specific Markus Armbruster
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 11/17] qapi: make query-gic-capabilities depend on TARGET_ARM Markus Armbruster
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 12/17] qapi: make query-cpu-model-expansion depend on s390 or x86 Markus Armbruster
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 13/17] qapi: make query-cpu-definitions depend on specific targets Markus Armbruster
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 14/17] qapi: remove qmp_unregister_command() Markus Armbruster
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 15/17] Revert "qapi-events: add 'if' condition to implicit event enum" Markus Armbruster
2019-02-06 18:30 ` Marc-André Lureau
2019-02-06 20:08 ` Markus Armbruster
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 16/17] qmp: Deprecate query-events in favor of query-qmp-schema Markus Armbruster
2019-02-06 18:42 ` Eric Blake
2019-02-07 12:29 ` [Qemu-devel] [libvirt] " Peter Krempa
2019-02-07 13:46 ` Markus Armbruster
2019-02-08 11:17 ` Peter Krempa
2019-02-07 11:19 ` [Qemu-devel] " Marc-André Lureau
2019-02-06 18:17 ` [Qemu-devel] [PATCH v3 17/17] qapi: move RTC_CHANGE to the target schema Markus Armbruster
2019-02-06 18:40 ` Eric Blake
2019-02-06 20:09 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190206181725.14337-5-armbru@redhat.com \
--to=armbru@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).