qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20
@ 2017-12-20 18:59 Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 01/13] qapi-schema: Fix query-vm-generation-id's doc comment markup Markus Armbruster
                   ` (13 more replies)
  0 siblings, 14 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

The following changes since commit 200780a3a3ed067dfb2e0d2210b0ed09e748ba26:

  Merge remote-tracking branch 'remotes/armbru/tags/pull-cmdline-2017-12-18-v2' into staging (2017-12-20 13:20:48 +0000)

are available in the git repository at:

  git://repo.or.cz/qemu/armbru.git tags/pull-qapi-2017-12-20

for you to fetch changes up to 49ccefde303c84d291c70842922c37b6de6ef15a:

  qmp: remove qmp_cpu (2017-12-20 19:18:33 +0100)

----------------------------------------------------------------
QAPI patches for 2017-12-20

----------------------------------------------------------------
Chen Hanxiao (1):
      qapi-docs: fix a comment typo

Daniel Henrique Barboza (1):
      qmp: remove qmp_cpu

Markus Armbruster (11):
      qapi-schema: Fix query-vm-generation-id's doc comment markup
      qapi: Stop rejecting #optional
      qapi: Eliminate QAPISchemaParser.__init__()'s local fname
      qapi: Make cur_doc local to QAPISchemaParser.__init__()
      tests/qapi-schema/doc-bad-section: New, factored out of doc-good
      qapi2texi: Clean up texi_sections()
      qapi: Unify representation of doc section without name
      qapi: Simplify representation of QAPIDoc section text
      qapi2texi: Simplify representation of section text
      qapi: Rename QAPIDoc.parser, .section to ._parser, ._section
      qapi2texi: De-duplicate code to add blank line before symbol

 docs/devel/qapi-code-gen.txt           |   2 +-
 qapi-schema.json                       |  13 +---
 qmp.c                                  |   5 --
 scripts/qapi.py                        | 107 +++++++++++++++------------------
 scripts/qapi2texi.py                   |  65 +++++++++-----------
 tests/Makefile.include                 |   3 +-
 tests/qapi-schema/doc-bad-section.err  |   0
 tests/qapi-schema/doc-bad-section.exit |   1 +
 tests/qapi-schema/doc-bad-section.json |  11 ++++
 tests/qapi-schema/doc-bad-section.out  |  13 ++++
 tests/qapi-schema/doc-good.json        |   1 -
 tests/qapi-schema/doc-good.out         |   4 +-
 tests/qapi-schema/doc-good.texi        |  11 +---
 tests/qapi-schema/test-qapi.py         |   6 +-
 14 files changed, 111 insertions(+), 131 deletions(-)
 create mode 100644 tests/qapi-schema/doc-bad-section.err
 create mode 100644 tests/qapi-schema/doc-bad-section.exit
 create mode 100644 tests/qapi-schema/doc-bad-section.json
 create mode 100644 tests/qapi-schema/doc-bad-section.out

-- 
2.13.6

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 01/13] qapi-schema: Fix query-vm-generation-id's doc comment markup
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 02/13] qapi: Stop rejecting #optional Markus Armbruster
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

Reported-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20171002141341.24616-2-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 qapi-schema.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/qapi-schema.json b/qapi-schema.json
index 18457954a8..ea3723f903 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3188,7 +3188,7 @@
 #
 # Show Virtual Machine Generation ID
 #
-# Since 2.9
+# Since: 2.9
 ##
 { 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' }
 
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 02/13] qapi: Stop rejecting #optional
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 01/13] qapi-schema: Fix query-vm-generation-id's doc comment markup Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 03/13] qapi: Eliminate QAPISchemaParser.__init__()'s local fname Markus Armbruster
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

Commit 1d8bda1 got rid of #optional tags, and added a check to keep
them from getting added back, to make sure patches then in flight
don't add them back.  It's been six months, time to drop that check.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20171002141341.24616-3-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 scripts/qapi.py | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 62dc52ed6e..dc92bca620 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -234,10 +234,6 @@ class QAPIDoc(object):
             raise QAPIParseError(self.parser,
                                  "'%s' not allowed in free-form documentation"
                                  % match.group(1))
-        # TODO Drop this once the dust has settled
-        if (isinstance(self.section, QAPIDoc.ArgSection)
-                and '#optional' in line):
-            raise QAPISemError(self.info, "Please drop the #optional tag")
         self.section.append(line)
 
     def connect_member(self, member):
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 03/13] qapi: Eliminate QAPISchemaParser.__init__()'s local fname
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 01/13] qapi-schema: Fix query-vm-generation-id's doc comment markup Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 02/13] qapi: Stop rejecting #optional Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 04/13] qapi: Make cur_doc local to QAPISchemaParser.__init__() Markus Armbruster
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20171002141341.24616-4-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 scripts/qapi.py | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index dc92bca620..6c8001e96d 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -261,8 +261,7 @@ class QAPISchemaParser(object):
 
     def __init__(self, fp, previously_included=[], incl_info=None):
         abs_fname = os.path.abspath(fp.name)
-        fname = fp.name
-        self.fname = fname
+        self.fname = fp.name
         previously_included.append(abs_fname)
         self.incl_info = incl_info
         self.src = fp.read()
@@ -277,7 +276,7 @@ class QAPISchemaParser(object):
         self.accept()
 
         while self.tok is not None:
-            info = {'file': fname, 'line': self.line,
+            info = {'file': self.fname, 'line': self.line,
                     'parent': self.incl_info}
             if self.tok == '#':
                 self.reject_expr_doc()
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 04/13] qapi: Make cur_doc local to QAPISchemaParser.__init__()
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
                   ` (2 preceding siblings ...)
  2017-12-20 18:59 ` [Qemu-devel] [PULL 03/13] qapi: Eliminate QAPISchemaParser.__init__()'s local fname Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 05/13] tests/qapi-schema/doc-bad-section: New, factored out of doc-good Markus Armbruster
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

QAPISchemaParser.cur_doc is used only by .__init__() and its helper
.reject_expr_doc().  Make it local to __init__() and pass it to
.reject_expr_doc() explicitly.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20171002141341.24616-5-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 scripts/qapi.py | 34 +++++++++++++++++-----------------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 6c8001e96d..2f2738f562 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -272,21 +272,21 @@ class QAPISchemaParser(object):
         self.line_pos = 0
         self.exprs = []
         self.docs = []
-        self.cur_doc = None
         self.accept()
+        cur_doc = None
 
         while self.tok is not None:
             info = {'file': self.fname, 'line': self.line,
                     'parent': self.incl_info}
             if self.tok == '#':
-                self.reject_expr_doc()
-                self.cur_doc = self.get_doc(info)
-                self.docs.append(self.cur_doc)
+                self.reject_expr_doc(cur_doc)
+                cur_doc = self.get_doc(info)
+                self.docs.append(cur_doc)
                 continue
 
             expr = self.get_expr(False)
             if 'include' in expr:
-                self.reject_expr_doc()
+                self.reject_expr_doc(cur_doc)
                 if len(expr) != 1:
                     raise QAPISemError(info, "Invalid 'include' directive")
                 include = expr['include']
@@ -296,7 +296,7 @@ class QAPISchemaParser(object):
                 self._include(include, info, os.path.dirname(abs_fname),
                               previously_included)
             elif "pragma" in expr:
-                self.reject_expr_doc()
+                self.reject_expr_doc(cur_doc)
                 if len(expr) != 1:
                     raise QAPISemError(info, "Invalid 'pragma' directive")
                 pragma = expr['pragma']
@@ -308,22 +308,22 @@ class QAPISchemaParser(object):
             else:
                 expr_elem = {'expr': expr,
                              'info': info}
-                if self.cur_doc:
-                    if not self.cur_doc.symbol:
+                if cur_doc:
+                    if not cur_doc.symbol:
                         raise QAPISemError(
-                            self.cur_doc.info,
-                            "Expression documentation required")
-                    expr_elem['doc'] = self.cur_doc
+                            cur_doc.info, "Expression documentation required")
+                    expr_elem['doc'] = cur_doc
                 self.exprs.append(expr_elem)
-            self.cur_doc = None
-        self.reject_expr_doc()
+            cur_doc = None
+        self.reject_expr_doc(cur_doc)
 
-    def reject_expr_doc(self):
-        if self.cur_doc and self.cur_doc.symbol:
+    @staticmethod
+    def reject_expr_doc(doc):
+        if doc and doc.symbol:
             raise QAPISemError(
-                self.cur_doc.info,
+                doc.info,
                 "Documentation for '%s' is not followed by the definition"
-                % self.cur_doc.symbol)
+                % doc.symbol)
 
     def _include(self, include, info, base_dir, previously_included):
         incl_abs_fname = os.path.join(base_dir, include)
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 05/13] tests/qapi-schema/doc-bad-section: New, factored out of doc-good
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
                   ` (3 preceding siblings ...)
  2017-12-20 18:59 ` [Qemu-devel] [PULL 04/13] qapi: Make cur_doc local to QAPISchemaParser.__init__() Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 06/13] qapi2texi: Clean up texi_sections() Markus Armbruster
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

A negative test case crept into doc-good.json: invalid use of section
markup we currently fail to reject.  Move this into its own
doc-bad-section.json.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20171002141341.24616-6-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tests/Makefile.include                 |  3 ++-
 tests/qapi-schema/doc-bad-section.err  |  0
 tests/qapi-schema/doc-bad-section.exit |  1 +
 tests/qapi-schema/doc-bad-section.json | 11 +++++++++++
 tests/qapi-schema/doc-bad-section.out  | 13 +++++++++++++
 tests/qapi-schema/doc-good.json        |  1 -
 tests/qapi-schema/doc-good.out         |  2 +-
 tests/qapi-schema/doc-good.texi        |  2 +-
 8 files changed, 29 insertions(+), 4 deletions(-)
 create mode 100644 tests/qapi-schema/doc-bad-section.err
 create mode 100644 tests/qapi-schema/doc-bad-section.exit
 create mode 100644 tests/qapi-schema/doc-bad-section.json
 create mode 100644 tests/qapi-schema/doc-bad-section.out

diff --git a/tests/Makefile.include b/tests/Makefile.include
index b4bcc872f2..f8e20d9f5d 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -416,6 +416,7 @@ qapi-schema += command-int.json
 qapi-schema += comments.json
 qapi-schema += doc-bad-alternate-member.json
 qapi-schema += doc-bad-command-arg.json
+qapi-schema += doc-bad-section.json
 qapi-schema += doc-bad-symbol.json
 qapi-schema += doc-bad-union-member.json
 qapi-schema += doc-before-include.json
@@ -433,10 +434,10 @@ qapi-schema += doc-invalid-end2.json
 qapi-schema += doc-invalid-return.json
 qapi-schema += doc-invalid-section.json
 qapi-schema += doc-invalid-start.json
-qapi-schema += doc-missing.json
 qapi-schema += doc-missing-colon.json
 qapi-schema += doc-missing-expr.json
 qapi-schema += doc-missing-space.json
+qapi-schema += doc-missing.json
 qapi-schema += doc-no-symbol.json
 qapi-schema += double-data.json
 qapi-schema += double-type.json
diff --git a/tests/qapi-schema/doc-bad-section.err b/tests/qapi-schema/doc-bad-section.err
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/qapi-schema/doc-bad-section.exit b/tests/qapi-schema/doc-bad-section.exit
new file mode 100644
index 0000000000..573541ac97
--- /dev/null
+++ b/tests/qapi-schema/doc-bad-section.exit
@@ -0,0 +1 @@
+0
diff --git a/tests/qapi-schema/doc-bad-section.json b/tests/qapi-schema/doc-bad-section.json
new file mode 100644
index 0000000000..560df4b087
--- /dev/null
+++ b/tests/qapi-schema/doc-bad-section.json
@@ -0,0 +1,11 @@
+# = section within an expression comment
+# BUG: not rejected
+
+##
+# @Enum:
+# == Produces *invalid* texinfo
+# @one: The _one_ {and only}
+#
+# @two is undocumented
+##
+{ 'enum': 'Enum', 'data': [ 'one', 'two' ] }
diff --git a/tests/qapi-schema/doc-bad-section.out b/tests/qapi-schema/doc-bad-section.out
new file mode 100644
index 0000000000..6fce84dd34
--- /dev/null
+++ b/tests/qapi-schema/doc-bad-section.out
@@ -0,0 +1,13 @@
+enum Enum ['one', 'two']
+enum QType ['none', 'qnull', 'qnum', 'qstring', 'qdict', 'qlist', 'qbool']
+    prefix QTYPE
+object q_empty
+doc symbol=Enum
+    body=
+== Produces *invalid* texinfo
+    arg=one
+The _one_ {and only}
+    arg=two
+
+    section=
+@two is undocumented
diff --git a/tests/qapi-schema/doc-good.json b/tests/qapi-schema/doc-good.json
index cfdc0a8a81..97ab4625ff 100644
--- a/tests/qapi-schema/doc-good.json
+++ b/tests/qapi-schema/doc-good.json
@@ -51,7 +51,6 @@
 
 ##
 # @Enum:
-# == Produces *invalid* texinfo
 # @one: The _one_ {and only}
 #
 # @two is undocumented
diff --git a/tests/qapi-schema/doc-good.out b/tests/qapi-schema/doc-good.out
index 63ca25a8b9..c55e394e8a 100644
--- a/tests/qapi-schema/doc-good.out
+++ b/tests/qapi-schema/doc-good.out
@@ -77,7 +77,7 @@ Examples:
 - {braces}
 doc symbol=Enum
     body=
-== Produces *invalid* texinfo
+
     arg=one
 The _one_ {and only}
     arg=two
diff --git a/tests/qapi-schema/doc-good.texi b/tests/qapi-schema/doc-good.texi
index c410626e4a..a331349756 100644
--- a/tests/qapi-schema/doc-good.texi
+++ b/tests/qapi-schema/doc-good.texi
@@ -76,7 +76,7 @@ Examples:
 
 @deftp {Enum} Enum
 
-@subsection Produces @strong{invalid} texinfo
+
 
 @b{Values:}
 @table @asis
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 06/13] qapi2texi: Clean up texi_sections()
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
                   ` (4 preceding siblings ...)
  2017-12-20 18:59 ` [Qemu-devel] [PULL 05/13] tests/qapi-schema/doc-bad-section: New, factored out of doc-good Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 07/13] qapi: Unify representation of doc section without name Markus Armbruster
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

Repurposing the function parameter doc for stepping through
doc.sections.__str__() is not nice.  Use new variable @text instead.

While there, eliminate variables name and func.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20171002141341.24616-7-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 scripts/qapi2texi.py | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/scripts/qapi2texi.py b/scripts/qapi2texi.py
index a317526e51..f876d9a174 100755
--- a/scripts/qapi2texi.py
+++ b/scripts/qapi2texi.py
@@ -180,16 +180,14 @@ def texi_sections(doc):
     """Format additional sections following arguments"""
     body = ''
     for section in doc.sections:
-        name, doc = (section.name, str(section))
-        func = texi_format
-        if name.startswith('Example'):
-            func = texi_example
-
-        if name:
+        if section.name:
             # prefer @b over @strong, so txt doesn't translate it to *Foo:*
-            body += '\n\n@b{%s:}\n' % name
-
-        body += func(doc)
+            body += '\n\n@b{%s:}\n' % section.name
+        text = str(section)
+        if section.name.startswith('Example'):
+            body += texi_example(text)
+        else:
+            body += texi_format(text)
     return body
 
 
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 07/13] qapi: Unify representation of doc section without name
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
                   ` (5 preceding siblings ...)
  2017-12-20 18:59 ` [Qemu-devel] [PULL 06/13] qapi2texi: Clean up texi_sections() Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 08/13] qapi: Simplify representation of QAPIDoc section text Markus Armbruster
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

We have two representations of sections without a name: the main
section uses name=None, the others name=''.  Standardize on name=None.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20171002141341.24616-8-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 scripts/qapi.py                       | 2 +-
 scripts/qapi2texi.py                  | 2 +-
 tests/qapi-schema/doc-bad-section.out | 2 +-
 tests/qapi-schema/doc-good.out        | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 2f2738f562..2137067b48 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -204,7 +204,7 @@ class QAPIDoc(object):
         self.section = QAPIDoc.ArgSection(name)
         self.args[name] = self.section
 
-    def _start_section(self, name=''):
+    def _start_section(self, name=None):
         if name in ('Returns', 'Since') and self.has_section(name):
             raise QAPIParseError(self.parser,
                                  "Duplicated '%s' section" % name)
diff --git a/scripts/qapi2texi.py b/scripts/qapi2texi.py
index f876d9a174..f16fa1ba53 100755
--- a/scripts/qapi2texi.py
+++ b/scripts/qapi2texi.py
@@ -184,7 +184,7 @@ def texi_sections(doc):
             # prefer @b over @strong, so txt doesn't translate it to *Foo:*
             body += '\n\n@b{%s:}\n' % section.name
         text = str(section)
-        if section.name.startswith('Example'):
+        if section.name and section.name.startswith('Example'):
             body += texi_example(text)
         else:
             body += texi_format(text)
diff --git a/tests/qapi-schema/doc-bad-section.out b/tests/qapi-schema/doc-bad-section.out
index 6fce84dd34..089bde1381 100644
--- a/tests/qapi-schema/doc-bad-section.out
+++ b/tests/qapi-schema/doc-bad-section.out
@@ -9,5 +9,5 @@ doc symbol=Enum
 The _one_ {and only}
     arg=two
 
-    section=
+    section=None
 @two is undocumented
diff --git a/tests/qapi-schema/doc-good.out b/tests/qapi-schema/doc-good.out
index c55e394e8a..1d2c250527 100644
--- a/tests/qapi-schema/doc-good.out
+++ b/tests/qapi-schema/doc-good.out
@@ -82,7 +82,7 @@ doc symbol=Enum
 The _one_ {and only}
     arg=two
 
-    section=
+    section=None
 @two is undocumented
 doc symbol=Base
     body=
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 08/13] qapi: Simplify representation of QAPIDoc section text
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
                   ` (6 preceding siblings ...)
  2017-12-20 18:59 ` [Qemu-devel] [PULL 07/13] qapi: Unify representation of doc section without name Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 09/13] qapi2texi: Simplify representation of " Markus Armbruster
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

Use a string instead of a list of strings.

This makes qapi2texi.py generate additional blank lines.  They're
harmless, and the next commit will get rid of them again.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20171002141341.24616-9-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 scripts/qapi.py                 | 16 ++++++----------
 scripts/qapi2texi.py            | 14 +++++++-------
 tests/qapi-schema/doc-good.texi |  1 +
 tests/qapi-schema/test-qapi.py  |  6 +++---
 4 files changed, 17 insertions(+), 20 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 2137067b48..e338868a52 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -106,13 +106,10 @@ class QAPIDoc(object):
             # optional section name (argument/member or section name)
             self.name = name
             # the list of lines for this section
-            self.content = []
+            self.text = ''
 
         def append(self, line):
-            self.content.append(line)
-
-        def __repr__(self):
-            return '\n'.join(self.content).strip()
+            self.text += line.rstrip() + '\n'
 
     class ArgSection(Section):
         def __init__(self, name):
@@ -160,7 +157,7 @@ class QAPIDoc(object):
         # recognized, and get silently treated as ordinary text
         if self.symbol:
             self._append_symbol_line(line)
-        elif not self.body.content and line.startswith('@'):
+        elif not self.body.text and line.startswith('@'):
             if not line.endswith(':'):
                 raise QAPIParseError(self.parser, "Line should end with :")
             self.symbol = line[1:-1]
@@ -214,16 +211,15 @@ class QAPIDoc(object):
 
     def _end_section(self):
         if self.section:
-            contents = str(self.section)
-            if self.section.name and (not contents or contents.isspace()):
+            text = self.section.text = self.section.text.strip()
+            if self.section.name and (not text or text.isspace()):
                 raise QAPIParseError(self.parser, "Empty doc section '%s'"
                                      % self.section.name)
             self.section = None
 
     def _append_freeform(self, line):
         in_arg = isinstance(self.section, QAPIDoc.ArgSection)
-        if (in_arg and self.section.content
-                and not self.section.content[-1]
+        if (in_arg and self.section.text.endswith('\n\n')
                 and line and not line[0].isspace()):
             self._start_section()
         if (in_arg or not self.section.name
diff --git a/scripts/qapi2texi.py b/scripts/qapi2texi.py
index f16fa1ba53..379d27643d 100755
--- a/scripts/qapi2texi.py
+++ b/scripts/qapi2texi.py
@@ -125,7 +125,7 @@ def texi_format(doc):
 
 def texi_body(doc):
     """Format the main documentation body"""
-    return texi_format(str(doc.body)) + '\n'
+    return texi_format(doc.body.text) + '\n'
 
 
 def texi_enum_value(value):
@@ -149,8 +149,8 @@ def texi_members(doc, what, base, variants, member_func):
     items = ''
     for section in doc.args.itervalues():
         # TODO Drop fallbacks when undocumented members are outlawed
-        if section.content:
-            desc = texi_format(str(section))
+        if section.text:
+            desc = texi_format(section.text)
         elif (variants and variants.tag_member == section.member
               and not section.member.type.doc_type()):
             values = section.member.type.member_names()
@@ -183,11 +183,10 @@ def texi_sections(doc):
         if section.name:
             # prefer @b over @strong, so txt doesn't translate it to *Foo:*
             body += '\n\n@b{%s:}\n' % section.name
-        text = str(section)
         if section.name and section.name.startswith('Example'):
-            body += texi_example(text)
+            body += texi_example(section.text)
         else:
-            body += texi_format(text)
+            body += texi_format(section.text)
     return body
 
 
@@ -240,7 +239,8 @@ class QAPISchemaGenDocVisitor(qapi.QAPISchemaVisitor):
             self.out += '\n'
         if boxed:
             body = texi_body(doc)
-            body += '\n@b{Arguments:} the members of @code{%s}' % arg_type.name
+            body += ('\n@b{Arguments:} the members of @code{%s}\n'
+                     % arg_type.name)
             body += texi_sections(doc)
         else:
             body = texi_entity(doc, 'Arguments')
diff --git a/tests/qapi-schema/doc-good.texi b/tests/qapi-schema/doc-good.texi
index a331349756..c032f23fc1 100644
--- a/tests/qapi-schema/doc-good.texi
+++ b/tests/qapi-schema/doc-good.texi
@@ -230,6 +230,7 @@ If you're bored enough to read this, go see a video of boxed cats
 
 @b{Arguments:} the members of @code{Object}
 
+
 @b{Example:}
 @example
 -> in
diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py
index c7724d3437..fe0ca08d78 100644
--- a/tests/qapi-schema/test-qapi.py
+++ b/tests/qapi-schema/test-qapi.py
@@ -61,8 +61,8 @@ for doc in schema.docs:
         print 'doc symbol=%s' % doc.symbol
     else:
         print 'doc freeform'
-    print '    body=\n%s' % doc.body
+    print '    body=\n%s' % doc.body.text
     for arg, section in doc.args.iteritems():
-        print '    arg=%s\n%s' % (arg, section)
+        print '    arg=%s\n%s' % (arg, section.text)
     for section in doc.sections:
-        print '    section=%s\n%s' % (section.name, section)
+        print '    section=%s\n%s' % (section.name, section.text)
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 09/13] qapi2texi: Simplify representation of section text
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
                   ` (7 preceding siblings ...)
  2017-12-20 18:59 ` [Qemu-devel] [PULL 08/13] qapi: Simplify representation of QAPIDoc section text Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 10/13] qapi: Rename QAPIDoc.parser, .section to ._parser, ._section Markus Armbruster
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

Use a string instead of a list of strings.  While there, generate
fewer superfluous blank lines.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20171002141341.24616-10-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 scripts/qapi2texi.py            | 33 ++++++++++++++++-----------------
 tests/qapi-schema/doc-good.texi | 10 ----------
 2 files changed, 16 insertions(+), 27 deletions(-)

diff --git a/scripts/qapi2texi.py b/scripts/qapi2texi.py
index 379d27643d..58add26c11 100755
--- a/scripts/qapi2texi.py
+++ b/scripts/qapi2texi.py
@@ -13,7 +13,6 @@ MSG_FMT = """
 @deftypefn {type} {{}} {name}
 
 {body}
-
 @end deftypefn
 
 """.format
@@ -22,7 +21,6 @@ TYPE_FMT = """
 @deftp {{{type}}} {name}
 
 {body}
-
 @end deftp
 
 """.format
@@ -74,7 +72,7 @@ def texi_format(doc):
     - 1. or 1): generates an @enumerate @item
     - */-: generates an @itemize list
     """
-    lines = []
+    ret = ''
     doc = subst_braces(doc)
     doc = subst_vars(doc)
     doc = subst_emph(doc)
@@ -100,32 +98,32 @@ def texi_format(doc):
             line = '@subsection ' + line[3:]
         elif re.match(r'^([0-9]*\.) ', line):
             if not inlist:
-                lines.append('@enumerate')
+                ret += '@enumerate\n'
                 inlist = 'enumerate'
+            ret += '@item\n'
             line = line[line.find(' ')+1:]
-            lines.append('@item')
         elif re.match(r'^[*-] ', line):
             if not inlist:
-                lines.append('@itemize %s' % {'*': '@bullet',
-                                              '-': '@minus'}[line[0]])
+                ret += '@itemize %s\n' % {'*': '@bullet',
+                                          '-': '@minus'}[line[0]]
                 inlist = 'itemize'
-            lines.append('@item')
+            ret += '@item\n'
             line = line[2:]
         elif lastempty and inlist:
-            lines.append('@end %s\n' % inlist)
+            ret += '@end %s\n\n' % inlist
             inlist = ''
 
         lastempty = empty
-        lines.append(line)
+        ret += line + '\n'
 
     if inlist:
-        lines.append('@end %s\n' % inlist)
-    return '\n'.join(lines)
+        ret += '@end %s\n\n' % inlist
+    return ret
 
 
 def texi_body(doc):
     """Format the main documentation body"""
-    return texi_format(doc.body.text) + '\n'
+    return texi_format(doc.body.text)
 
 
 def texi_enum_value(value):
@@ -154,10 +152,11 @@ def texi_members(doc, what, base, variants, member_func):
         elif (variants and variants.tag_member == section.member
               and not section.member.type.doc_type()):
             values = section.member.type.member_names()
-            desc = 'One of ' + ', '.join(['@t{"%s"}' % v for v in values])
+            members_text = ', '.join(['@t{"%s"}' % v for v in values])
+            desc = 'One of ' + members_text + '\n'
         else:
-            desc = 'Not documented'
-        items += member_func(section.member) + desc + '\n'
+            desc = 'Not documented\n'
+        items += member_func(section.member) + desc
     if base:
         items += '@item The members of @code{%s}\n' % base.doc_type()
     if variants:
@@ -182,7 +181,7 @@ def texi_sections(doc):
     for section in doc.sections:
         if section.name:
             # prefer @b over @strong, so txt doesn't translate it to *Foo:*
-            body += '\n\n@b{%s:}\n' % section.name
+            body += '\n@b{%s:}\n' % section.name
         if section.name and section.name.startswith('Example'):
             body += texi_example(section.text)
         else:
diff --git a/tests/qapi-schema/doc-good.texi b/tests/qapi-schema/doc-good.texi
index c032f23fc1..1778312581 100644
--- a/tests/qapi-schema/doc-good.texi
+++ b/tests/qapi-schema/doc-good.texi
@@ -101,7 +101,6 @@ Not documented
 the first member
 @end table
 
-
 @end deftp
 
 
@@ -118,7 +117,6 @@ Another paragraph (but no @code{var}: line)
 Not documented
 @end table
 
-
 @end deftp
 
 
@@ -127,7 +125,6 @@ Not documented
 
 
 
-
 @end deftp
 
 
@@ -143,7 +140,6 @@ Not documented
 @item The members of @code{Variant2} when @code{base1} is @t{"two"}
 @end table
 
-
 @end deftp
 
 
@@ -160,7 +156,6 @@ One of @t{"one"}, @t{"two"}
 @item @code{data: Variant2} when @code{type} is @t{"two"}
 @end table
 
-
 @end deftp
 
 
@@ -182,7 +177,6 @@ argument
 Not documented
 @end table
 
-
 @b{Note:}
 @code{arg3} is undocumented
 
@@ -209,14 +203,12 @@ Duis aute irure dolor
 <- out
 @end example
 
-
 @b{Examples:}
 @example
 - *verbatim*
 - @{braces@}
 @end example
 
-
 @b{Since:}
 2.10
 
@@ -230,7 +222,6 @@ If you're bored enough to read this, go see a video of boxed cats
 
 @b{Arguments:} the members of @code{Object}
 
-
 @b{Example:}
 @example
 -> in
@@ -238,7 +229,6 @@ If you're bored enough to read this, go see a video of boxed cats
 <- out
 @end example
 
-
 @end deftypefn
 
 
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 10/13] qapi: Rename QAPIDoc.parser, .section to ._parser, ._section
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
                   ` (8 preceding siblings ...)
  2017-12-20 18:59 ` [Qemu-devel] [PULL 09/13] qapi2texi: Simplify representation of " Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 11/13] qapi2texi: De-duplicate code to add blank line before symbol Markus Armbruster
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20171002141341.24616-11-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 scripts/qapi.py | 52 ++++++++++++++++++++++++++--------------------------
 1 file changed, 26 insertions(+), 26 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index e338868a52..43a54bf40f 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -120,11 +120,11 @@ class QAPIDoc(object):
             self.member = member
 
     def __init__(self, parser, info):
-        # self.parser is used to report errors with QAPIParseError.  The
+        # self._parser is used to report errors with QAPIParseError.  The
         # resulting error position depends on the state of the parser.
         # It happens to be the beginning of the comment.  More or less
         # servicable, but action at a distance.
-        self.parser = parser
+        self._parser = parser
         self.info = info
         self.symbol = None
         self.body = QAPIDoc.Section()
@@ -133,7 +133,7 @@ class QAPIDoc(object):
         # a list of Section
         self.sections = []
         # the current section
-        self.section = self.body
+        self._section = self.body
 
     def has_section(self, name):
         """Return True if we have a section with this name."""
@@ -150,7 +150,7 @@ class QAPIDoc(object):
             return
 
         if line[0] != ' ':
-            raise QAPIParseError(self.parser, "Missing space after #")
+            raise QAPIParseError(self._parser, "Missing space after #")
         line = line[1:]
 
         # FIXME not nice: things like '#  @foo:' and '# @foo: ' aren't
@@ -159,11 +159,11 @@ class QAPIDoc(object):
             self._append_symbol_line(line)
         elif not self.body.text and line.startswith('@'):
             if not line.endswith(':'):
-                raise QAPIParseError(self.parser, "Line should end with :")
+                raise QAPIParseError(self._parser, "Line should end with :")
             self.symbol = line[1:-1]
             # FIXME invalid names other than the empty string aren't flagged
             if not self.symbol:
-                raise QAPIParseError(self.parser, "Invalid name")
+                raise QAPIParseError(self._parser, "Invalid name")
         else:
             self._append_freeform(line)
 
@@ -189,48 +189,48 @@ class QAPIDoc(object):
     def _start_args_section(self, name):
         # FIXME invalid names other than the empty string aren't flagged
         if not name:
-            raise QAPIParseError(self.parser, "Invalid parameter name")
+            raise QAPIParseError(self._parser, "Invalid parameter name")
         if name in self.args:
-            raise QAPIParseError(self.parser,
+            raise QAPIParseError(self._parser,
                                  "'%s' parameter name duplicated" % name)
         if self.sections:
-            raise QAPIParseError(self.parser,
+            raise QAPIParseError(self._parser,
                                  "'@%s:' can't follow '%s' section"
                                  % (name, self.sections[0].name))
         self._end_section()
-        self.section = QAPIDoc.ArgSection(name)
-        self.args[name] = self.section
+        self._section = QAPIDoc.ArgSection(name)
+        self.args[name] = self._section
 
     def _start_section(self, name=None):
         if name in ('Returns', 'Since') and self.has_section(name):
-            raise QAPIParseError(self.parser,
+            raise QAPIParseError(self._parser,
                                  "Duplicated '%s' section" % name)
         self._end_section()
-        self.section = QAPIDoc.Section(name)
-        self.sections.append(self.section)
+        self._section = QAPIDoc.Section(name)
+        self.sections.append(self._section)
 
     def _end_section(self):
-        if self.section:
-            text = self.section.text = self.section.text.strip()
-            if self.section.name and (not text or text.isspace()):
-                raise QAPIParseError(self.parser, "Empty doc section '%s'"
-                                     % self.section.name)
-            self.section = None
+        if self._section:
+            text = self._section.text = self._section.text.strip()
+            if self._section.name and (not text or text.isspace()):
+                raise QAPIParseError(self._parser, "Empty doc section '%s'"
+                                     % self._section.name)
+            self._section = None
 
     def _append_freeform(self, line):
-        in_arg = isinstance(self.section, QAPIDoc.ArgSection)
-        if (in_arg and self.section.text.endswith('\n\n')
+        in_arg = isinstance(self._section, QAPIDoc.ArgSection)
+        if (in_arg and self._section.text.endswith('\n\n')
                 and line and not line[0].isspace()):
             self._start_section()
-        if (in_arg or not self.section.name
-                or not self.section.name.startswith('Example')):
+        if (in_arg or not self._section.name
+                or not self._section.name.startswith('Example')):
             line = line.strip()
         match = re.match(r'(@\S+:)', line)
         if match:
-            raise QAPIParseError(self.parser,
+            raise QAPIParseError(self._parser,
                                  "'%s' not allowed in free-form documentation"
                                  % match.group(1))
-        self.section.append(line)
+        self._section.append(line)
 
     def connect_member(self, member):
         if member.name not in self.args:
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 11/13] qapi2texi: De-duplicate code to add blank line before symbol
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
                   ` (9 preceding siblings ...)
  2017-12-20 18:59 ` [Qemu-devel] [PULL 10/13] qapi: Rename QAPIDoc.parser, .section to ._parser, ._section Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 12/13] qapi-docs: fix a comment typo Markus Armbruster
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20171002141341.24616-12-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 scripts/qapi2texi.py | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/scripts/qapi2texi.py b/scripts/qapi2texi.py
index 58add26c11..92e2af2cd6 100755
--- a/scripts/qapi2texi.py
+++ b/scripts/qapi2texi.py
@@ -206,8 +206,6 @@ class QAPISchemaGenDocVisitor(qapi.QAPISchemaVisitor):
 
     def visit_enum_type(self, name, info, values, prefix):
         doc = self.cur_doc
-        if self.out:
-            self.out += '\n'
         self.out += TYPE_FMT(type='Enum',
                              name=doc.symbol,
                              body=texi_entity(doc, 'Values',
@@ -217,16 +215,12 @@ class QAPISchemaGenDocVisitor(qapi.QAPISchemaVisitor):
         doc = self.cur_doc
         if base and base.is_implicit():
             base = None
-        if self.out:
-            self.out += '\n'
         self.out += TYPE_FMT(type='Object',
                              name=doc.symbol,
                              body=texi_entity(doc, 'Members', base, variants))
 
     def visit_alternate_type(self, name, info, variants):
         doc = self.cur_doc
-        if self.out:
-            self.out += '\n'
         self.out += TYPE_FMT(type='Alternate',
                              name=doc.symbol,
                              body=texi_entity(doc, 'Members'))
@@ -234,8 +228,6 @@ class QAPISchemaGenDocVisitor(qapi.QAPISchemaVisitor):
     def visit_command(self, name, info, arg_type, ret_type,
                       gen, success_response, boxed):
         doc = self.cur_doc
-        if self.out:
-            self.out += '\n'
         if boxed:
             body = texi_body(doc)
             body += ('\n@b{Arguments:} the members of @code{%s}\n'
@@ -249,13 +241,13 @@ class QAPISchemaGenDocVisitor(qapi.QAPISchemaVisitor):
 
     def visit_event(self, name, info, arg_type, boxed):
         doc = self.cur_doc
-        if self.out:
-            self.out += '\n'
         self.out += MSG_FMT(type='Event',
                             name=doc.symbol,
                             body=texi_entity(doc, 'Arguments'))
 
     def symbol(self, doc, entity):
+        if self.out:
+            self.out += '\n'
         self.cur_doc = doc
         entity.visit(self)
         self.cur_doc = None
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 12/13] qapi-docs: fix a comment typo
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
                   ` (10 preceding siblings ...)
  2017-12-20 18:59 ` [Qemu-devel] [PULL 11/13] qapi2texi: De-duplicate code to add blank line before symbol Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 18:59 ` [Qemu-devel] [PULL 13/13] qmp: remove qmp_cpu Markus Armbruster
  2017-12-20 22:17 ` [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Peter Maydell
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel; +Cc: Chen Hanxiao

From: Chen Hanxiao <chenhanxiao@gmail.com>

  s/Subection/Subsection

Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com>
Message-Id: <20171012064448.20276-1-chen_han_xiao@126.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 docs/devel/qapi-code-gen.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/devel/qapi-code-gen.txt b/docs/devel/qapi-code-gen.txt
index f04c63fe82..06ab699066 100644
--- a/docs/devel/qapi-code-gen.txt
+++ b/docs/devel/qapi-code-gen.txt
@@ -63,7 +63,7 @@ Comment text starting with '=' is a section title:
 
 Double the '=' for a subsection title:
 
-    # == Subection title
+    # == Subsection title
 
 '|' denotes examples:
 
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 13/13] qmp: remove qmp_cpu
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
                   ` (11 preceding siblings ...)
  2017-12-20 18:59 ` [Qemu-devel] [PULL 12/13] qapi-docs: fix a comment typo Markus Armbruster
@ 2017-12-20 18:59 ` Markus Armbruster
  2017-12-20 22:17 ` [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Peter Maydell
  13 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2017-12-20 18:59 UTC (permalink / raw)
  To: qemu-devel; +Cc: Daniel Henrique Barboza, Eric Blake, Daniel P . Berrange

From: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>

'qmp_cpu' was implemented in commit 755f196898 ("qapi: Convert the cpu
command") as a functional no-op, a QMP call that does nothing and
return success. The idea, apparently, was to provide a counterpart
for the HMP 'hmp_cpu' command, introduced in the same commit.

After 6 years of its creation, qmp_cpu remains a functional no-op
that does nothing, having no value for any caller/user. A proposal
was sent to implement qmp_cpu like hmp_cpu works, but it was denied
[1]. The reason is that QMP must be as stateless as possible and a
function that changes its state (the current CPU monitor in the case
of qmp_cpu) goes against it. Any QMP command that needs a specific
monitor CPU setup must provide it in its arguments, instead of relying
in the current QMP monitor state.

After discussions that happened in [2] it was decided that a command
that does nothing since its birth, no one uses for anything and will
not be implemented, should be deprecated and erased. Given that we will
*not* provide any replacement for qmp_cpu and we believe that there
is no user relying on it, there is no point in adding a deprecation
delay for it.

So, this patch nukes qmp_cpu from QEMU code, removing both its blank
implementation in qmp.c and its doc in qapi-schema.json.

[1] https://lists.gnu.org/archive/html/qemu-devel/2017-12/msg02283.html
[2] https://lists.gnu.org/archive/html/qemu-devel/2017-12/msg03696.html

Signed-off-by: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
CC: Markus Armbruster <armbru@redhat.com>
CC: Eric Blake <eblake@redhat.com>
CC: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20171220102304.8288-1-danielhb@linux.vnet.ibm.com>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 qapi-schema.json | 11 -----------
 qmp.c            |  5 -----
 2 files changed, 16 deletions(-)

diff --git a/qapi-schema.json b/qapi-schema.json
index ea3723f903..5c06745c79 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -1046,17 +1046,6 @@
 { 'command': 'system_powerdown' }
 
 ##
-# @cpu:
-#
-# This command is a nop that is only provided for the purposes of compatibility.
-#
-# Since: 0.14.0
-#
-# Notes: Do not use this command.
-##
-{ 'command': 'cpu', 'data': {'index': 'int'} }
-
-##
 # @cpu-add:
 #
 # Adds CPU with specified ID
diff --git a/qmp.c b/qmp.c
index e8c303116a..52cfd2d81c 100644
--- a/qmp.c
+++ b/qmp.c
@@ -113,11 +113,6 @@ void qmp_system_powerdown(Error **erp)
     qemu_system_powerdown_request();
 }
 
-void qmp_cpu(int64_t index, Error **errp)
-{
-    /* Just do nothing */
-}
-
 void qmp_cpu_add(int64_t id, Error **errp)
 {
     MachineClass *mc;
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20
  2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
                   ` (12 preceding siblings ...)
  2017-12-20 18:59 ` [Qemu-devel] [PULL 13/13] qmp: remove qmp_cpu Markus Armbruster
@ 2017-12-20 22:17 ` Peter Maydell
  13 siblings, 0 replies; 15+ messages in thread
From: Peter Maydell @ 2017-12-20 22:17 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: QEMU Developers

On 20 December 2017 at 18:59, Markus Armbruster <armbru@redhat.com> wrote:
> The following changes since commit 200780a3a3ed067dfb2e0d2210b0ed09e748ba26:
>
>   Merge remote-tracking branch 'remotes/armbru/tags/pull-cmdline-2017-12-18-v2' into staging (2017-12-20 13:20:48 +0000)
>
> are available in the git repository at:
>
>   git://repo.or.cz/qemu/armbru.git tags/pull-qapi-2017-12-20
>
> for you to fetch changes up to 49ccefde303c84d291c70842922c37b6de6ef15a:
>
>   qmp: remove qmp_cpu (2017-12-20 19:18:33 +0100)
>
> ----------------------------------------------------------------
> QAPI patches for 2017-12-20
>

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2017-12-20 22:17 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-20 18:59 [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 01/13] qapi-schema: Fix query-vm-generation-id's doc comment markup Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 02/13] qapi: Stop rejecting #optional Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 03/13] qapi: Eliminate QAPISchemaParser.__init__()'s local fname Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 04/13] qapi: Make cur_doc local to QAPISchemaParser.__init__() Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 05/13] tests/qapi-schema/doc-bad-section: New, factored out of doc-good Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 06/13] qapi2texi: Clean up texi_sections() Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 07/13] qapi: Unify representation of doc section without name Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 08/13] qapi: Simplify representation of QAPIDoc section text Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 09/13] qapi2texi: Simplify representation of " Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 10/13] qapi: Rename QAPIDoc.parser, .section to ._parser, ._section Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 11/13] qapi2texi: De-duplicate code to add blank line before symbol Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 12/13] qapi-docs: fix a comment typo Markus Armbruster
2017-12-20 18:59 ` [Qemu-devel] [PULL 13/13] qmp: remove qmp_cpu Markus Armbruster
2017-12-20 22:17 ` [Qemu-devel] [PULL 00/13] QAPI patches for 2017-12-20 Peter Maydell

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).