Quoting Markus Armbruster (2018-02-11 03:35:45) > The next commit will introduce a common driver program for all > generators. The generators need to be modules for that. qapi2texi.py > already is. Make the other generators follow suit. > > The changes are actually trivial. Obvious in the diffs once you view > them with whitespace changes ignored. > > Signed-off-by: Markus Armbruster <arm...@redhat.com> > Reviewed-by: Eric Blake <ebl...@redhat.com> > Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com>
Reviewed-by: Michael Roth <mdr...@linux.vnet.ibm.com> > --- > scripts/qapi-commands.py | 43 ++++++++++++++++++-------------- > scripts/qapi-event.py | 43 ++++++++++++++++++-------------- > scripts/qapi-introspect.py | 54 ++++++++++++++++++++++------------------ > scripts/qapi-types.py | 56 ++++++++++++++++++++++------------------- > scripts/qapi-visit.py | 62 > +++++++++++++++++++++++++--------------------- > 5 files changed, 143 insertions(+), 115 deletions(-) > > diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py > index e97e16e828..8584cb5873 100644 > --- a/scripts/qapi-commands.py > +++ b/scripts/qapi-commands.py > @@ -255,16 +255,17 @@ class QAPISchemaGenCommandVisitor(QAPISchemaVisitor): > self._regy += gen_register_command(name, success_response) > > > -(input_file, output_dir, do_c, do_h, prefix, opts) = parse_command_line() > +def main(argv): > + (input_file, output_dir, do_c, do_h, prefix, opts) = parse_command_line() > > -blurb = ''' > + blurb = ''' > * Schema-defined QAPI/QMP commands > ''' > > -genc = QAPIGenC(blurb, __doc__) > -genh = QAPIGenH(blurb, __doc__) > + genc = QAPIGenC(blurb, __doc__) > + genh = QAPIGenH(blurb, __doc__) > > -genc.add(mcgen(''' > + genc.add(mcgen(''' > #include "qemu/osdep.h" > #include "qemu-common.h" > #include "qemu/module.h" > @@ -279,23 +280,27 @@ genc.add(mcgen(''' > #include "%(prefix)sqmp-commands.h" > > ''', > - prefix=prefix)) > + prefix=prefix)) > > -genh.add(mcgen(''' > + genh.add(mcgen(''' > #include "%(prefix)sqapi-types.h" > #include "qapi/qmp/dispatch.h" > > void %(c_prefix)sqmp_init_marshal(QmpCommandList *cmds); > ''', > - prefix=prefix, c_prefix=c_name(prefix, protect=False))) > - > -schema = QAPISchema(input_file) > -vis = QAPISchemaGenCommandVisitor(prefix) > -schema.visit(vis) > -genc.add(vis.defn) > -genh.add(vis.decl) > - > -if do_c: > - genc.write(output_dir, prefix + 'qmp-marshal.c') > -if do_h: > - genh.write(output_dir, prefix + 'qmp-commands.h') > + prefix=prefix, c_prefix=c_name(prefix, protect=False))) > + > + schema = QAPISchema(input_file) > + vis = QAPISchemaGenCommandVisitor(prefix) > + schema.visit(vis) > + genc.add(vis.defn) > + genh.add(vis.decl) > + > + if do_c: > + genc.write(output_dir, prefix + 'qmp-marshal.c') > + if do_h: > + genh.write(output_dir, prefix + 'qmp-commands.h') > + > + > +if __name__ == '__main__': > + main(sys.argv) > diff --git a/scripts/qapi-event.py b/scripts/qapi-event.py > index 3f98e2491a..e7e07f0055 100644 > --- a/scripts/qapi-event.py > +++ b/scripts/qapi-event.py > @@ -171,16 +171,17 @@ class QAPISchemaGenEventVisitor(QAPISchemaVisitor): > self._event_names.append(name) > > > -(input_file, output_dir, do_c, do_h, prefix, dummy) = parse_command_line() > +def main(argv): > + (input_file, output_dir, do_c, do_h, prefix, dummy) = > parse_command_line() > > -blurb = ''' > + blurb = ''' > * Schema-defined QAPI/QMP events > ''' > > -genc = QAPIGenC(blurb, __doc__) > -genh = QAPIGenH(blurb, __doc__) > + genc = QAPIGenC(blurb, __doc__) > + genh = QAPIGenH(blurb, __doc__) > > -genc.add(mcgen(''' > + genc.add(mcgen(''' > #include "qemu/osdep.h" > #include "qemu-common.h" > #include "%(prefix)sqapi-event.h" > @@ -191,22 +192,26 @@ genc.add(mcgen(''' > #include "qapi/qmp-event.h" > > ''', > - prefix=prefix)) > + prefix=prefix)) > > -genh.add(mcgen(''' > + genh.add(mcgen(''' > #include "qapi/util.h" > #include "%(prefix)sqapi-types.h" > > ''', > - prefix=prefix)) > - > -schema = QAPISchema(input_file) > -vis = QAPISchemaGenEventVisitor(prefix) > -schema.visit(vis) > -genc.add(vis.defn) > -genh.add(vis.decl) > - > -if do_c: > - genc.write(output_dir, prefix + 'qapi-event.c') > -if do_h: > - genh.write(output_dir, prefix + 'qapi-event.h') > + prefix=prefix)) > + > + schema = QAPISchema(input_file) > + vis = QAPISchemaGenEventVisitor(prefix) > + schema.visit(vis) > + genc.add(vis.defn) > + genh.add(vis.decl) > + > + if do_c: > + genc.write(output_dir, prefix + 'qapi-event.c') > + if do_h: > + genh.write(output_dir, prefix + 'qapi-event.h') > + > + > +if __name__ == '__main__': > + main(sys.argv) > diff --git a/scripts/qapi-introspect.py b/scripts/qapi-introspect.py > index 2418b80a82..b098b95053 100644 > --- a/scripts/qapi-introspect.py > +++ b/scripts/qapi-introspect.py > @@ -167,38 +167,44 @@ const char %(c_name)s[] = %(c_string)s; > arg_type = arg_type or self._schema.the_empty_object_type > self._gen_json(name, 'event', {'arg-type': self._use_type(arg_type)}) > > -# Debugging aid: unmask QAPI schema's type names > -# We normally mask them, because they're not QMP wire ABI > -opt_unmask = False > > -(input_file, output_dir, do_c, do_h, prefix, opts) = \ > - parse_command_line('u', ['unmask-non-abi-names']) > +def main(argv): > + # Debugging aid: unmask QAPI schema's type names > + # We normally mask them, because they're not QMP wire ABI > + opt_unmask = False > > -for o, a in opts: > - if o in ('-u', '--unmask-non-abi-names'): > - opt_unmask = True > + (input_file, output_dir, do_c, do_h, prefix, opts) = \ > + parse_command_line('u', ['unmask-non-abi-names']) > > -blurb = ''' > + for o, a in opts: > + if o in ('-u', '--unmask-non-abi-names'): > + opt_unmask = True > + > + blurb = ''' > * QAPI/QMP schema introspection > ''' > > -genc = QAPIGenC(blurb, __doc__) > -genh = QAPIGenH(blurb, __doc__) > + genc = QAPIGenC(blurb, __doc__) > + genh = QAPIGenH(blurb, __doc__) > > -genc.add(mcgen(''' > + genc.add(mcgen(''' > #include "qemu/osdep.h" > #include "%(prefix)sqmp-introspect.h" > > ''', > - prefix=prefix)) > - > -schema = QAPISchema(input_file) > -vis = QAPISchemaGenIntrospectVisitor(prefix, opt_unmask) > -schema.visit(vis) > -genc.add(vis.defn) > -genh.add(vis.decl) > - > -if do_c: > - genc.write(output_dir, prefix + 'qmp-introspect.c') > -if do_h: > - genh.write(output_dir, prefix + 'qmp-introspect.h') > + prefix=prefix)) > + > + schema = QAPISchema(input_file) > + vis = QAPISchemaGenIntrospectVisitor(prefix, opt_unmask) > + schema.visit(vis) > + genc.add(vis.defn) > + genh.add(vis.decl) > + > + if do_c: > + genc.write(output_dir, prefix + 'qmp-introspect.c') > + if do_h: > + genh.write(output_dir, prefix + 'qmp-introspect.h') > + > + > +if __name__ == '__main__': > + main(sys.argv) > diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py > index 5ff2bfcf41..10955d1c01 100644 > --- a/scripts/qapi-types.py > +++ b/scripts/qapi-types.py > @@ -240,45 +240,51 @@ class QAPISchemaGenTypeVisitor(QAPISchemaVisitor): > self.decl += gen_object(name, None, [variants.tag_member], variants) > self._gen_type_cleanup(name) > > -# If you link code generated from multiple schemata, you want only one > -# instance of the code for built-in types. Generate it only when > -# opt_builtins, enabled by command line option -b. See also > -# QAPISchemaGenTypeVisitor.visit_end(). > -opt_builtins = False > > -(input_file, output_dir, do_c, do_h, prefix, opts) = \ > - parse_command_line('b', ['builtins']) > +def main(argv): > + # If you link code generated from multiple schemata, you want only one > + # instance of the code for built-in types. Generate it only when > + # opt_builtins, enabled by command line option -b. See also > + # QAPISchemaGenTypeVisitor.visit_end(). > + opt_builtins = False > > -for o, a in opts: > - if o in ('-b', '--builtins'): > - opt_builtins = True > + (input_file, output_dir, do_c, do_h, prefix, opts) = \ > + parse_command_line('b', ['builtins']) > > -blurb = ''' > + for o, a in opts: > + if o in ('-b', '--builtins'): > + opt_builtins = True > + > + blurb = ''' > * Schema-defined QAPI types > ''' > > -genc = QAPIGenC(blurb, __doc__) > -genh = QAPIGenH(blurb, __doc__) > + genc = QAPIGenC(blurb, __doc__) > + genh = QAPIGenH(blurb, __doc__) > > -genc.add(mcgen(''' > + genc.add(mcgen(''' > #include "qemu/osdep.h" > #include "qapi/dealloc-visitor.h" > #include "%(prefix)sqapi-types.h" > #include "%(prefix)sqapi-visit.h" > ''', > - prefix=prefix)) > + prefix=prefix)) > > -genh.add(mcgen(''' > + genh.add(mcgen(''' > #include "qapi/util.h" > ''')) > > -schema = QAPISchema(input_file) > -vis = QAPISchemaGenTypeVisitor(opt_builtins) > -schema.visit(vis) > -genc.add(vis.defn) > -genh.add(vis.decl) > + schema = QAPISchema(input_file) > + vis = QAPISchemaGenTypeVisitor(opt_builtins) > + schema.visit(vis) > + genc.add(vis.defn) > + genh.add(vis.decl) > > -if do_c: > - genc.write(output_dir, prefix + 'qapi-types.c') > -if do_h: > - genh.write(output_dir, prefix + 'qapi-types.h') > + if do_c: > + genc.write(output_dir, prefix + 'qapi-types.c') > + if do_h: > + genh.write(output_dir, prefix + 'qapi-types.h') > + > + > +if __name__ == '__main__': > + main(sys.argv) > diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py > index 0a1eff7736..6d829c4d1d 100644 > --- a/scripts/qapi-visit.py > +++ b/scripts/qapi-visit.py > @@ -323,49 +323,55 @@ class QAPISchemaGenVisitVisitor(QAPISchemaVisitor): > self.decl += gen_visit_decl(name) > self.defn += gen_visit_alternate(name, variants) > > -# If you link code generated from multiple schemata, you want only one > -# instance of the code for built-in types. Generate it only when > -# opt_builtins, enabled by command line option -b. See also > -# QAPISchemaGenVisitVisitor.visit_end(). > -opt_builtins = False > > -(input_file, output_dir, do_c, do_h, prefix, opts) = \ > - parse_command_line('b', ['builtins']) > +def main(argv): > + # If you link code generated from multiple schemata, you want only one > + # instance of the code for built-in types. Generate it only when > + # opt_builtins, enabled by command line option -b. See also > + # QAPISchemaGenVisitVisitor.visit_end(). > + opt_builtins = False > > -for o, a in opts: > - if o in ('-b', '--builtins'): > - opt_builtins = True > + (input_file, output_dir, do_c, do_h, prefix, opts) = \ > + parse_command_line('b', ['builtins']) > > -blurb = ''' > + for o, a in opts: > + if o in ('-b', '--builtins'): > + opt_builtins = True > + > + blurb = ''' > * Schema-defined QAPI visitors > ''' > > -genc = QAPIGenC(blurb, __doc__) > -genh = QAPIGenH(blurb, __doc__) > + genc = QAPIGenC(blurb, __doc__) > + genh = QAPIGenH(blurb, __doc__) > > -genc.add(mcgen(''' > + genc.add(mcgen(''' > #include "qemu/osdep.h" > #include "qemu-common.h" > #include "qapi/error.h" > #include "qapi/qmp/qerror.h" > #include "%(prefix)sqapi-visit.h" > ''', > - prefix=prefix)) > + prefix=prefix)) > > -genh.add(mcgen(''' > + genh.add(mcgen(''' > #include "qapi/visitor.h" > #include "%(prefix)sqapi-types.h" > > ''', > - prefix=prefix)) > - > -schema = QAPISchema(input_file) > -vis = QAPISchemaGenVisitVisitor(opt_builtins) > -schema.visit(vis) > -genc.add(vis.defn) > -genh.add(vis.decl) > - > -if do_c: > - genc.write(output_dir, prefix + 'qapi-visit.c') > -if do_h: > - genh.write(output_dir, prefix + 'qapi-visit.h') > + prefix=prefix)) > + > + schema = QAPISchema(input_file) > + vis = QAPISchemaGenVisitVisitor(opt_builtins) > + schema.visit(vis) > + genc.add(vis.defn) > + genh.add(vis.decl) > + > + if do_c: > + genc.write(output_dir, prefix + 'qapi-visit.c') > + if do_h: > + genh.write(output_dir, prefix + 'qapi-visit.h') > + > + > +if __name__ == '__main__': > + main(sys.argv) > -- > 2.13.6 >