[libvirt PATCH 00/20] Switch to json-c from yajl

Ján Tomko posted 20 patches 3 months, 1 week ago
There is a newer version of this series
ci/buildenv/almalinux-9.sh                    |   4 +-
ci/buildenv/alpine-319.sh                     |   4 +-
ci/buildenv/alpine-edge.sh                    |   4 +-
ci/buildenv/centos-stream-9.sh                |   4 +-
ci/buildenv/debian-11-cross-aarch64.sh        |   2 +-
ci/buildenv/debian-11-cross-armv6l.sh         |   2 +-
ci/buildenv/debian-11-cross-armv7l.sh         |   2 +-
ci/buildenv/debian-11-cross-i686.sh           |   2 +-
ci/buildenv/debian-11-cross-mips64el.sh       |   2 +-
ci/buildenv/debian-11-cross-mipsel.sh         |   2 +-
ci/buildenv/debian-11-cross-ppc64le.sh        |   2 +-
ci/buildenv/debian-11-cross-s390x.sh          |   2 +-
ci/buildenv/debian-11.sh                      |   2 +-
ci/buildenv/debian-12-cross-aarch64.sh        |   2 +-
ci/buildenv/debian-12-cross-armv6l.sh         |   2 +-
ci/buildenv/debian-12-cross-armv7l.sh         |   2 +-
ci/buildenv/debian-12-cross-i686.sh           |   2 +-
ci/buildenv/debian-12-cross-mips64el.sh       |   2 +-
ci/buildenv/debian-12-cross-mipsel.sh         |   2 +-
ci/buildenv/debian-12-cross-ppc64le.sh        |   2 +-
ci/buildenv/debian-12-cross-s390x.sh          |   2 +-
ci/buildenv/debian-12.sh                      |   2 +-
ci/buildenv/debian-sid-cross-aarch64.sh       |   2 +-
ci/buildenv/debian-sid-cross-armv6l.sh        |   2 +-
ci/buildenv/debian-sid-cross-armv7l.sh        |   2 +-
ci/buildenv/debian-sid-cross-i686.sh          |   2 +-
ci/buildenv/debian-sid-cross-mips64el.sh      |   2 +-
ci/buildenv/debian-sid-cross-ppc64le.sh       |   2 +-
ci/buildenv/debian-sid-cross-s390x.sh         |   2 +-
ci/buildenv/debian-sid.sh                     |   2 +-
ci/buildenv/fedora-39.sh                      |   4 +-
ci/buildenv/fedora-40.sh                      |   4 +-
ci/buildenv/fedora-rawhide.sh                 |   4 +-
ci/buildenv/opensuse-leap-15.sh               |   2 +-
ci/buildenv/opensuse-tumbleweed.sh            |   2 +-
ci/buildenv/ubuntu-2204.sh                    |   2 +-
ci/buildenv/ubuntu-2404.sh                    |   2 +-
ci/cirrus/freebsd-13.vars                     |   2 +-
ci/cirrus/freebsd-14.vars                     |   2 +-
ci/cirrus/macos-13.vars                       |   2 +-
ci/cirrus/macos-14.vars                       |   2 +-
ci/containers/almalinux-9.Dockerfile          |   4 +-
ci/containers/alpine-319.Dockerfile           |   4 +-
ci/containers/alpine-edge.Dockerfile          |   4 +-
ci/containers/centos-stream-9.Dockerfile      |   4 +-
.../debian-11-cross-aarch64.Dockerfile        |   2 +-
.../debian-11-cross-armv6l.Dockerfile         |   2 +-
.../debian-11-cross-armv7l.Dockerfile         |   2 +-
ci/containers/debian-11-cross-i686.Dockerfile |   2 +-
.../debian-11-cross-mips64el.Dockerfile       |   2 +-
.../debian-11-cross-mipsel.Dockerfile         |   2 +-
.../debian-11-cross-ppc64le.Dockerfile        |   2 +-
.../debian-11-cross-s390x.Dockerfile          |   2 +-
ci/containers/debian-11.Dockerfile            |   2 +-
.../debian-12-cross-aarch64.Dockerfile        |   2 +-
.../debian-12-cross-armv6l.Dockerfile         |   2 +-
.../debian-12-cross-armv7l.Dockerfile         |   2 +-
ci/containers/debian-12-cross-i686.Dockerfile |   2 +-
.../debian-12-cross-mips64el.Dockerfile       |   2 +-
.../debian-12-cross-mipsel.Dockerfile         |   2 +-
.../debian-12-cross-ppc64le.Dockerfile        |   2 +-
.../debian-12-cross-s390x.Dockerfile          |   2 +-
ci/containers/debian-12.Dockerfile            |   2 +-
.../debian-sid-cross-aarch64.Dockerfile       |   2 +-
.../debian-sid-cross-armv6l.Dockerfile        |   2 +-
.../debian-sid-cross-armv7l.Dockerfile        |   2 +-
.../debian-sid-cross-i686.Dockerfile          |   2 +-
.../debian-sid-cross-mips64el.Dockerfile      |   2 +-
.../debian-sid-cross-ppc64le.Dockerfile       |   2 +-
.../debian-sid-cross-s390x.Dockerfile         |   2 +-
ci/containers/debian-sid.Dockerfile           |   2 +-
ci/containers/fedora-39.Dockerfile            |   4 +-
ci/containers/fedora-40.Dockerfile            |   4 +-
ci/containers/fedora-rawhide.Dockerfile       |   4 +-
ci/containers/opensuse-leap-15.Dockerfile     |   4 +-
ci/containers/opensuse-tumbleweed.Dockerfile  |   2 +-
ci/containers/ubuntu-2204.Dockerfile          |   2 +-
ci/containers/ubuntu-2404.Dockerfile          |   2 +-
ci/gitlab/builds.yml                          |   2 +-
ci/lcitool/projects/libvirt.yml               |   2 +-
libvirt.spec.in                               |   6 +-
meson.build                                   |  61 +--
meson_options.txt                             |   8 +-
src/libvirt_private.syms                      |   1 +
src/meson.build                               |   2 +-
src/util/meson.build                          |   2 +-
src/util/virjson.c                            | 481 +++++-------------
src/util/virjson.h                            |   2 +
tests/meson.build                             |   8 +-
tests/qemublocktest.c                         |   5 +-
.../backupmerge/empty-out.json                |   4 +-
tests/qemumigparamsdata/empty.json            |   4 +-
tests/qemumigparamstest.c                     |   5 +-
tests/virjsontest.c                           |   9 +-
tests/virmacmaptest.c                         |   5 +-
tests/virmacmaptestdata/empty.json            |   4 +-
tests/virnetdaemontest.c                      |   2 +-
tests/virstoragetest.c                        |   4 +-
tools/nss/libvirt_nss_leases.c                | 339 ++++--------
tools/nss/libvirt_nss_macs.c                  | 263 +++-------
tools/nss/meson.build                         |   4 +-
101 files changed, 447 insertions(+), 962 deletions(-)
[libvirt PATCH 00/20] Switch to json-c from yajl
Posted by Ján Tomko 3 months, 1 week ago
As requested by:
https://gitlab.com/libvirt/libvirt/-/issues/581

The ci update depends on the following libvirt-ci MR:
https://gitlab.com/libvirt/libvirt-ci/-/merge_requests/497
targets: bump OpenSUSE Leap to 15.6

Pipeline:
https://gitlab.com/janotomko/libvirt/-/pipelines/1413887401/

Ján Tomko (20):
  tests: json: relax some test cases
  ci: update OpenSUSE Leap to 15.6
  util: json: introduce virJSONStringPrettifyBlanks
  tests: switch to compact empty JSON object formatting
  meson: add option for building with json-c
  meson: link libvirt with json_c if available
  util: json: write a json-c implementation
  ci: install json-c too
  meson: nss: link with json-c if available
  nss: convert findLeases to use json-c
  nss: convert findMACs to use json-c
  tests: depend on WITH_JSON_C instead of WITH_YAJL
  meson: switch checks to depend on json-c instead of yajl
  meson-options: switch to depend on json-c instead of yajl
  libvirt-spec: switch to building with json-c
  meson: do not link anything with yajl anymore
  meson: options: drop yajl
  meson: drop yajl detection
  util: drop dead code
  ci: drop yajl completely

 ci/buildenv/almalinux-9.sh                    |   4 +-
 ci/buildenv/alpine-319.sh                     |   4 +-
 ci/buildenv/alpine-edge.sh                    |   4 +-
 ci/buildenv/centos-stream-9.sh                |   4 +-
 ci/buildenv/debian-11-cross-aarch64.sh        |   2 +-
 ci/buildenv/debian-11-cross-armv6l.sh         |   2 +-
 ci/buildenv/debian-11-cross-armv7l.sh         |   2 +-
 ci/buildenv/debian-11-cross-i686.sh           |   2 +-
 ci/buildenv/debian-11-cross-mips64el.sh       |   2 +-
 ci/buildenv/debian-11-cross-mipsel.sh         |   2 +-
 ci/buildenv/debian-11-cross-ppc64le.sh        |   2 +-
 ci/buildenv/debian-11-cross-s390x.sh          |   2 +-
 ci/buildenv/debian-11.sh                      |   2 +-
 ci/buildenv/debian-12-cross-aarch64.sh        |   2 +-
 ci/buildenv/debian-12-cross-armv6l.sh         |   2 +-
 ci/buildenv/debian-12-cross-armv7l.sh         |   2 +-
 ci/buildenv/debian-12-cross-i686.sh           |   2 +-
 ci/buildenv/debian-12-cross-mips64el.sh       |   2 +-
 ci/buildenv/debian-12-cross-mipsel.sh         |   2 +-
 ci/buildenv/debian-12-cross-ppc64le.sh        |   2 +-
 ci/buildenv/debian-12-cross-s390x.sh          |   2 +-
 ci/buildenv/debian-12.sh                      |   2 +-
 ci/buildenv/debian-sid-cross-aarch64.sh       |   2 +-
 ci/buildenv/debian-sid-cross-armv6l.sh        |   2 +-
 ci/buildenv/debian-sid-cross-armv7l.sh        |   2 +-
 ci/buildenv/debian-sid-cross-i686.sh          |   2 +-
 ci/buildenv/debian-sid-cross-mips64el.sh      |   2 +-
 ci/buildenv/debian-sid-cross-ppc64le.sh       |   2 +-
 ci/buildenv/debian-sid-cross-s390x.sh         |   2 +-
 ci/buildenv/debian-sid.sh                     |   2 +-
 ci/buildenv/fedora-39.sh                      |   4 +-
 ci/buildenv/fedora-40.sh                      |   4 +-
 ci/buildenv/fedora-rawhide.sh                 |   4 +-
 ci/buildenv/opensuse-leap-15.sh               |   2 +-
 ci/buildenv/opensuse-tumbleweed.sh            |   2 +-
 ci/buildenv/ubuntu-2204.sh                    |   2 +-
 ci/buildenv/ubuntu-2404.sh                    |   2 +-
 ci/cirrus/freebsd-13.vars                     |   2 +-
 ci/cirrus/freebsd-14.vars                     |   2 +-
 ci/cirrus/macos-13.vars                       |   2 +-
 ci/cirrus/macos-14.vars                       |   2 +-
 ci/containers/almalinux-9.Dockerfile          |   4 +-
 ci/containers/alpine-319.Dockerfile           |   4 +-
 ci/containers/alpine-edge.Dockerfile          |   4 +-
 ci/containers/centos-stream-9.Dockerfile      |   4 +-
 .../debian-11-cross-aarch64.Dockerfile        |   2 +-
 .../debian-11-cross-armv6l.Dockerfile         |   2 +-
 .../debian-11-cross-armv7l.Dockerfile         |   2 +-
 ci/containers/debian-11-cross-i686.Dockerfile |   2 +-
 .../debian-11-cross-mips64el.Dockerfile       |   2 +-
 .../debian-11-cross-mipsel.Dockerfile         |   2 +-
 .../debian-11-cross-ppc64le.Dockerfile        |   2 +-
 .../debian-11-cross-s390x.Dockerfile          |   2 +-
 ci/containers/debian-11.Dockerfile            |   2 +-
 .../debian-12-cross-aarch64.Dockerfile        |   2 +-
 .../debian-12-cross-armv6l.Dockerfile         |   2 +-
 .../debian-12-cross-armv7l.Dockerfile         |   2 +-
 ci/containers/debian-12-cross-i686.Dockerfile |   2 +-
 .../debian-12-cross-mips64el.Dockerfile       |   2 +-
 .../debian-12-cross-mipsel.Dockerfile         |   2 +-
 .../debian-12-cross-ppc64le.Dockerfile        |   2 +-
 .../debian-12-cross-s390x.Dockerfile          |   2 +-
 ci/containers/debian-12.Dockerfile            |   2 +-
 .../debian-sid-cross-aarch64.Dockerfile       |   2 +-
 .../debian-sid-cross-armv6l.Dockerfile        |   2 +-
 .../debian-sid-cross-armv7l.Dockerfile        |   2 +-
 .../debian-sid-cross-i686.Dockerfile          |   2 +-
 .../debian-sid-cross-mips64el.Dockerfile      |   2 +-
 .../debian-sid-cross-ppc64le.Dockerfile       |   2 +-
 .../debian-sid-cross-s390x.Dockerfile         |   2 +-
 ci/containers/debian-sid.Dockerfile           |   2 +-
 ci/containers/fedora-39.Dockerfile            |   4 +-
 ci/containers/fedora-40.Dockerfile            |   4 +-
 ci/containers/fedora-rawhide.Dockerfile       |   4 +-
 ci/containers/opensuse-leap-15.Dockerfile     |   4 +-
 ci/containers/opensuse-tumbleweed.Dockerfile  |   2 +-
 ci/containers/ubuntu-2204.Dockerfile          |   2 +-
 ci/containers/ubuntu-2404.Dockerfile          |   2 +-
 ci/gitlab/builds.yml                          |   2 +-
 ci/lcitool/projects/libvirt.yml               |   2 +-
 libvirt.spec.in                               |   6 +-
 meson.build                                   |  61 +--
 meson_options.txt                             |   8 +-
 src/libvirt_private.syms                      |   1 +
 src/meson.build                               |   2 +-
 src/util/meson.build                          |   2 +-
 src/util/virjson.c                            | 481 +++++-------------
 src/util/virjson.h                            |   2 +
 tests/meson.build                             |   8 +-
 tests/qemublocktest.c                         |   5 +-
 .../backupmerge/empty-out.json                |   4 +-
 tests/qemumigparamsdata/empty.json            |   4 +-
 tests/qemumigparamstest.c                     |   5 +-
 tests/virjsontest.c                           |   9 +-
 tests/virmacmaptest.c                         |   5 +-
 tests/virmacmaptestdata/empty.json            |   4 +-
 tests/virnetdaemontest.c                      |   2 +-
 tests/virstoragetest.c                        |   4 +-
 tools/nss/libvirt_nss_leases.c                | 339 ++++--------
 tools/nss/libvirt_nss_macs.c                  | 263 +++-------
 tools/nss/meson.build                         |   4 +-
 101 files changed, 447 insertions(+), 962 deletions(-)

-- 
2.45.2
Re: [libvirt PATCH 00/20] Switch to json-c from yajl
Posted by Peter Krempa 3 months ago
On Wed, Aug 14, 2024 at 23:40:15 +0200, Ján Tomko wrote:
> As requested by:
> https://gitlab.com/libvirt/libvirt/-/issues/581
> 
> The ci update depends on the following libvirt-ci MR:
> https://gitlab.com/libvirt/libvirt-ci/-/merge_requests/497
> targets: bump OpenSUSE Leap to 15.6
> 
> Pipeline:
> https://gitlab.com/janotomko/libvirt/-/pipelines/1413887401/
> 
> Ján Tomko (20):
>   tests: json: relax some test cases
>   ci: update OpenSUSE Leap to 15.6
>   util: json: introduce virJSONStringPrettifyBlanks
>   tests: switch to compact empty JSON object formatting
>   meson: add option for building with json-c
>   meson: link libvirt with json_c if available
>   util: json: write a json-c implementation
>   ci: install json-c too
>   meson: nss: link with json-c if available
>   nss: convert findLeases to use json-c
>   nss: convert findMACs to use json-c
>   tests: depend on WITH_JSON_C instead of WITH_YAJL
>   meson: switch checks to depend on json-c instead of yajl
>   meson-options: switch to depend on json-c instead of yajl
>   libvirt-spec: switch to building with json-c
>   meson: do not link anything with yajl anymore
>   meson: options: drop yajl
>   meson: drop yajl detection
>   util: drop dead code
>   ci: drop yajl completely

Overall looks good to me but there are few loose ends in terms of
building with the NSS modules as they don't have another implementation
for the switchover but are rather rewritten at once, which could pose
problems if rebasing across this series.

I suggest you enforce, for the duration of the series that both yajl and
json-c are installed if either of them is selected.

Als some of the meson patches could really be squashed together.