[RFCv3 00/25] RFC: Generate parsexml/formatbuf functions based on directives

Shi Lei shi_lei at massclouds.com
Mon Jun 28 01:13:00 UTC 2021


Polite ping.

On 2021-04-22 at 15:25, Shi Lei wrote:
>V2 here: [https://listman.redhat.com/archives/libvir-list/2020-September/msg00204.html]
>
>Differ from V2:
>
>  * Add tests for xmlgen to illustrate all the different features we can use
>    and make sure its proper functions in the future.
>
>  * Add docs/xmlgen.rst to explain the usage of all directives and the tool
>    itself.
>
>  * Now xmlgen can check whether the first item of enum ends with _NONE, _DEFAULT
>    or _ABSENT and generate proper code. So we no longer need to add extra
>    'default' item for enum.
>
>  * Now xmlgen can provide extra [tips] when we execute its command-line to show
>    generated code for preview.
>
>  * Enable/disable hooks by macros rather than by special directives.
>
>  * Add virStrToBoolYesNo/virStrToBoolTrueFalse/virStrToBoolOnOff
>    and explicitly check both the true and false values.
>
>  * Stronger check for python3-clang and libclang.so to make sure it can work.
>
>  * Add python3-clang to the libvirt.spec.in and the mingw-libvirt.spec.in.
>
>  Thanks!
>
>
>Shi Lei (25):
>  scripts: Add a tool to generate xml parse/format functions
>  maint: Check python3-clang and libclang
>  maint: Call xmlgen automatically when c-head-files change
>  docs: Add xmlgen.rst to explain how to use it
>  build-aux: Only check *.[ch] for sc_prohibit_useless_translation
>  tests: Add tests for xmlgen
>  util: Add some xml-helper-functions to cooperate with xmlgen
>  util: Add helper aliases and functions for 'bool' and 'time_t' to cooperate with xmlgen
>  util: Add parsexml/formatbuf helper functions for virSocketAddr
>  util: Add virUUID type and parse/format functions
>  conf: Extract error-checking code from virNetworkDNSTxtDefParseXML
>  conf: Replace virNetworkDNSTxtDefParseXML(hardcoded) with namesake(generated)
>  conf: Generate virNetworkDNSTxtDefFormatBuf
>  conf: Extract error-checking code from virNetworkDNSSrvDefParseXML
>  conf: Replace virNetworkDNSSrvDefParseXML(hardcoded) with namesake(generated)
>  conf: Generate virNetworkDNSSrvDefFormatBuf
>  conf: Extract error-checking code from virNetworkDNSHostDefParseXML
>  conf: Replace virNetworkDNSHostDefParseXML(hardcoded) with namesake(generated)
>  conf: Generate virNetworkDNSHostDefFormatBuf
>  conf: Extract virNetworkDNSForwarderParseXML from virNetworkDNSParseXML
>  conf: Replace virNetworkDNSForwarderParseXML(hardcoded) with namesake(generated)
>  conf: Generate virNetworkDNSForwarderFormatBuf
>  conf: Extract error-checking code from virNetworkDNSDefParseXML
>  conf: Replace virNetworkDNSDefParseXML(hardcoded) with namesake(generated)
>  conf: Generate virNetworkDNSDefFormatBuf
>
> build-aux/syntax-check.mk                |    2 +-
> docs/meson.build                         |    1 +
> docs/xmlgen.rst                          |  684 +++++++++++++
> libvirt.spec.in                          |    1 +
> meson.build                              |   10 +
> mingw-libvirt.spec.in                    |    1 +
> po/POTFILES.in                           |    2 +
> scripts/meson.build                      |    8 +
> scripts/xmlgen/directive.py              | 1192 ++++++++++++++++++++++
> scripts/xmlgen/go                        |   29 +
> scripts/xmlgen/main.py                   |  534 ++++++++++
> scripts/xmlgen/utils.py                  |  121 +++
> src/conf/meson.build                     |   37 +
> src/conf/network_conf.c                  |  463 ++-------
> src/conf/network_conf.h                  |   59 +-
> src/internal.h                           |    8 +
> src/libvirt_private.syms                 |   13 +
> src/meson.build                          |    6 +
> src/util/meson.build                     |   36 +
> src/util/virbuffer.c                     |   44 +
> src/util/virbuffer.h                     |    8 +-
> src/util/virsocketaddr.c                 |   42 +
> src/util/virsocketaddr.h                 |   23 +-
> src/util/virstring.c                     |  102 ++
> src/util/virstring.h                     |   15 +
> src/util/viruuid.c                       |   31 +
> src/util/viruuid.h                       |   18 +
> src/util/virxml.c                        |  120 +++
> src/util/virxml.h                        |    6 +
> tests/meson.build                        |    3 +
> tests/xmlgenin/conf/array.h              |   17 +
> tests/xmlgenin/conf/empty.h              |    7 +
> tests/xmlgenin/conf/enum-first-item.h    |   12 +
> tests/xmlgenin/conf/external.h           |    9 +
> tests/xmlgenin/conf/genformat-separate.h |   11 +
> tests/xmlgenin/conf/genformat.h          |   11 +
> tests/xmlgenin/conf/genparse.h           |   11 +
> tests/xmlgenin/conf/namespace.h          |   12 +
> tests/xmlgenin/conf/required.h           |    9 +
> tests/xmlgenin/conf/skipparse.h          |   10 +
> tests/xmlgenin/conf/specify.h            |   13 +
> tests/xmlgenin/conf/xmlattr.h            |   10 +
> tests/xmlgenin/conf/xmlelem.h            |   10 +
> tests/xmlgenin/conf/xmlgroup.h           |    8 +
> tests/xmlgenin/conf/xmlswitch.h          |   17 +
> tests/xmlgenin/util/enums.h              |   58 ++
> tests/xmlgenin/util/structs.h            |   67 ++
> tests/xmlgenout/array.txt                |  364 +++++++
> tests/xmlgenout/empty.txt                |  181 ++++
> tests/xmlgenout/enum-first-item.txt      |  297 ++++++
> tests/xmlgenout/external.txt             |  205 ++++
> tests/xmlgenout/genformat-separate.txt   |  190 ++++
> tests/xmlgenout/genformat.txt            |  142 +++
> tests/xmlgenout/genparse.txt             |  154 +++
> tests/xmlgenout/namespace.txt            |  222 ++++
> tests/xmlgenout/required.txt             |  236 +++++
> tests/xmlgenout/skipparse.txt            |  223 ++++
> tests/xmlgenout/specify.txt              |  291 ++++++
> tests/xmlgenout/xmlattr.txt              |  252 +++++
> tests/xmlgenout/xmlelem.txt              |  243 +++++
> tests/xmlgenout/xmlgroup.txt             |  204 ++++
> tests/xmlgenout/xmlswitch.txt            |  470 +++++++++
> tests/xmlgentest.c                       |  107 ++
> tools/meson.build                        |    3 +
> 64 files changed, 7289 insertions(+), 406 deletions(-)
> create mode 100644 docs/xmlgen.rst
> create mode 100644 scripts/xmlgen/directive.py
> create mode 100755 scripts/xmlgen/go
> create mode 100755 scripts/xmlgen/main.py
> create mode 100644 scripts/xmlgen/utils.py
> create mode 100644 tests/xmlgenin/conf/array.h
> create mode 100644 tests/xmlgenin/conf/empty.h
> create mode 100644 tests/xmlgenin/conf/enum-first-item.h
> create mode 100644 tests/xmlgenin/conf/external.h
> create mode 100644 tests/xmlgenin/conf/genformat-separate.h
> create mode 100644 tests/xmlgenin/conf/genformat.h
> create mode 100644 tests/xmlgenin/conf/genparse.h
> create mode 100644 tests/xmlgenin/conf/namespace.h
> create mode 100644 tests/xmlgenin/conf/required.h
> create mode 100644 tests/xmlgenin/conf/skipparse.h
> create mode 100644 tests/xmlgenin/conf/specify.h
> create mode 100644 tests/xmlgenin/conf/xmlattr.h
> create mode 100644 tests/xmlgenin/conf/xmlelem.h
> create mode 100644 tests/xmlgenin/conf/xmlgroup.h
> create mode 100644 tests/xmlgenin/conf/xmlswitch.h
> create mode 100644 tests/xmlgenin/util/enums.h
> create mode 100644 tests/xmlgenin/util/structs.h
> create mode 100644 tests/xmlgenout/array.txt
> create mode 100644 tests/xmlgenout/empty.txt
> create mode 100644 tests/xmlgenout/enum-first-item.txt
> create mode 100644 tests/xmlgenout/external.txt
> create mode 100644 tests/xmlgenout/genformat-separate.txt
> create mode 100644 tests/xmlgenout/genformat.txt
> create mode 100644 tests/xmlgenout/genparse.txt
> create mode 100644 tests/xmlgenout/namespace.txt
> create mode 100644 tests/xmlgenout/required.txt
> create mode 100644 tests/xmlgenout/skipparse.txt
> create mode 100644 tests/xmlgenout/specify.txt
> create mode 100644 tests/xmlgenout/xmlattr.txt
> create mode 100644 tests/xmlgenout/xmlelem.txt
> create mode 100644 tests/xmlgenout/xmlgroup.txt
> create mode 100644 tests/xmlgenout/xmlswitch.txt
> create mode 100644 tests/xmlgentest.c
>
>--
>2.25.1
>




More information about the libvir-list mailing list