qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 07/29] qapi: Turn generators into modules


From: Michael Roth
Subject: Re: [Qemu-devel] [PATCH v2 07/29] qapi: Turn generators into modules
Date: Fri, 16 Feb 2018 19:29:37 -0600
User-agent: alot/0.6

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 <address@hidden>
> Reviewed-by: Eric Blake <address@hidden>
> Reviewed-by: Marc-André Lureau <address@hidden>

Reviewed-by: Michael Roth <address@hidden>

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]