]> TLD Linux GIT Repositories - packages/libvirt.git/commitdiff
- updated to 4.7.0
authorMarcin Krol <hawk@tld-linux.org>
Mon, 3 Sep 2018 19:32:19 +0000 (19:32 +0000)
committerMarcin Krol <hawk@tld-linux.org>
Mon, 3 Sep 2018 19:32:19 +0000 (19:32 +0000)
libvirt.spec
yajl.patch [deleted file]

index 82516a7232f903a2d33f23f1482790cfe33333c8..88dc6899a0ffaf5f76adbddf83d087ebd966d1a2 100644 (file)
 Summary:       Toolkit to interact with virtualization capabilities
 Summary(pl.UTF-8):     Narzędzia współpracujące z funkcjami wirtualizacji
 Name:          libvirt
-Version:       4.6.0
-Release:       3
+Version:       4.7.0
+Release:       1
 License:       LGPL v2.1+
 Group:         Libraries
 Source0:       http://libvirt.org/sources/libvirt-%{version}.tar.xz
-# Source0-md5: 6ea17a8f004a4bcdfc4beaed91fcdddd
+# Source0-md5: 38da6c33250dcbc0a6d68de5c758262b
 Source1:       libvirtd.init
 Source2:       virtlockd.init
 Source3:       virtlogd.init
@@ -56,7 +56,6 @@ Patch2:               %{name}-udevadm-settle.patch
 Patch3:                bashisms.patch
 Patch4:                %{name}-guests.init.patch
 Patch5:                %{name}-sysctl-dir.patch
-Patch6:                yajl.patch
 URL:           http://www.libvirt.org/
 BuildRequires: acl-devel
 BuildRequires: attr-devel
@@ -450,7 +449,6 @@ Moduł sekcji Wiresharka do pakietów libvirt.
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
-%patch6 -p1
 
 %build
 %{__libtoolize}
@@ -740,7 +738,7 @@ fi
 %dir /var/run/libvirt/network
 %attr(755,root,root) %{_libexecdir}/libvirt_leaseshelper
 %dir %{_libdir}/libvirt/connection-driver
-%{_datadir}/libvirt/cpu_map.xml
+%{_datadir}/libvirt/cpu_map
 %{?with_netcf:%attr(755,root,root) %{_libdir}/libvirt/connection-driver/libvirt_driver_interface.so}
 %attr(755,root,root) %{_libdir}/libvirt/connection-driver/libvirt_driver_network.so
 %attr(755,root,root) %{_libdir}/libvirt/connection-driver/libvirt_driver_nodedev.so
diff --git a/yajl.patch b/yajl.patch
deleted file mode 100644 (file)
index 0f20679..0000000
+++ /dev/null
@@ -1,1848 +0,0 @@
-diff -urNpa libvirt-4.6.0.orig/config-post.h libvirt-4.6.0/config-post.h
---- libvirt-4.6.0.orig/config-post.h   2018-07-28 13:26:44.376463865 +0000
-+++ libvirt-4.6.0/config-post.h        2018-08-20 18:00:20.571398013 +0000
-@@ -36,7 +36,6 @@
- # undef WITH_DEVMAPPER
- # undef WITH_DTRACE_PROBES
- # undef WITH_GNUTLS
--# undef WITH_JANSSON
- # undef WITH_LIBSSH
- # undef WITH_MACVTAP
- # undef WITH_NUMACTL
-@@ -44,6 +43,8 @@
- # undef WITH_SSH2
- # undef WITH_SYSTEMD_DAEMON
- # undef WITH_VIRTUALPORT
-+# undef WITH_YAJL
-+# undef WITH_YAJL2
- #endif
- /*
-diff -urNpa libvirt-4.6.0.orig/configure.ac libvirt-4.6.0/configure.ac
---- libvirt-4.6.0.orig/configure.ac    2018-07-28 13:26:44.376463865 +0000
-+++ libvirt-4.6.0/configure.ac 2018-08-20 18:01:24.611397292 +0000
-@@ -250,7 +250,6 @@ LIBVIRT_ARG_FIREWALLD
- LIBVIRT_ARG_FUSE
- LIBVIRT_ARG_GLUSTER
- LIBVIRT_ARG_HAL
--LIBVIRT_ARG_JANSSON
- LIBVIRT_ARG_LIBPCAP
- LIBVIRT_ARG_LIBSSH
- LIBVIRT_ARG_LIBXML
-@@ -291,7 +290,6 @@ LIBVIRT_CHECK_FUSE
- LIBVIRT_CHECK_GLUSTER
- LIBVIRT_CHECK_GNUTLS
- LIBVIRT_CHECK_HAL
--LIBVIRT_CHECK_JANSSON
- LIBVIRT_CHECK_LIBNL
- LIBVIRT_CHECK_LIBPARTED
- LIBVIRT_CHECK_LIBPCAP
-@@ -972,7 +970,6 @@ LIBVIRT_RESULT_FUSE
- LIBVIRT_RESULT_GLUSTER
- LIBVIRT_RESULT_GNUTLS
- LIBVIRT_RESULT_HAL
--LIBVIRT_RESULT_JANSSON
- LIBVIRT_RESULT_LIBNL
- LIBVIRT_RESULT_LIBPCAP
- LIBVIRT_RESULT_LIBSSH
-diff -urNpa libvirt-4.6.0.orig/libvirt.spec.in libvirt-4.6.0/libvirt.spec.in
---- libvirt-4.6.0.orig/libvirt.spec.in 2018-08-02 03:58:35.025820949 +0000
-+++ libvirt-4.6.0/libvirt.spec.in      2018-08-20 18:00:20.572398013 +0000
-@@ -292,7 +292,7 @@ BuildRequires: libblkid-devel >= 2.17
- BuildRequires: augeas
- BuildRequires: systemd-devel >= 185
- BuildRequires: libpciaccess-devel >= 0.10.9
--BuildRequires: jansson-devel
-+BuildRequires: yajl-devel
- %if %{with_sanlock}
- BuildRequires: sanlock-devel >= 2.4
- %endif
-@@ -898,8 +898,6 @@ Requires: ncurses
- Requires: gettext
- # Needed by virt-pki-validate script.
- Requires: gnutls-utils
--# We dlopen(libjansson.so.4), so need an explicit dep
--Requires: jansson
- %if %{with_bash_completion}
- Requires: %{name}-bash-completion = %{version}-%{release}
- %endif
-@@ -1228,7 +1226,7 @@ rm -f po/stamp-po
-            --without-apparmor \
-            --without-hal \
-            --with-udev \
--           --with-jansson \
-+           --with-yajl \
-            %{?arg_sanlock} \
-            --with-libpcap \
-            --with-macvtap \
-diff -urNpa libvirt-4.6.0.orig/m4/virt-driver-qemu.m4 libvirt-4.6.0/m4/virt-driver-qemu.m4
---- libvirt-4.6.0.orig/m4/virt-driver-qemu.m4  2018-07-28 13:26:44.395463693 +0000
-+++ libvirt-4.6.0/m4/virt-driver-qemu.m4       2018-08-20 18:00:20.572398013 +0000
-@@ -18,7 +18,7 @@ dnl <http://www.gnu.org/licenses/>.
- dnl
- AC_DEFUN([LIBVIRT_DRIVER_ARG_QEMU], [
--  LIBVIRT_ARG_WITH_FEATURE([QEMU], [QEMU/KVM], [check])
-+  LIBVIRT_ARG_WITH_FEATURE([QEMU], [QEMU/KVM], [yes])
-   LIBVIRT_ARG_WITH([QEMU_USER], [username to run QEMU system instance as],
-                    ['platform dependent'])
-   LIBVIRT_ARG_WITH([QEMU_GROUP], [groupname to run QEMU system instance as],
-@@ -26,13 +26,6 @@ AC_DEFUN([LIBVIRT_DRIVER_ARG_QEMU], [
- ])
- AC_DEFUN([LIBVIRT_DRIVER_CHECK_QEMU], [
--  AC_REQUIRE([LIBVIRT_CHECK_JANSSON])
--  if test "$with_qemu:$with_jansson" = "yes:no"; then
--    AC_MSG_ERROR([Jansson >= 2.5 is required to build QEMU driver])
--  fi
--  if test "$with_qemu" = "check"; then
--    with_qemu=$with_jansson
--  fi
-   if test "$with_qemu" = "yes" ; then
-     AC_DEFINE_UNQUOTED([WITH_QEMU], 1, [whether QEMU driver is enabled])
-   fi
-diff -urNpa libvirt-4.6.0.orig/m4/virt-jansson.m4 libvirt-4.6.0/m4/virt-jansson.m4
---- libvirt-4.6.0.orig/m4/virt-jansson.m4      2018-07-28 13:26:44.395463693 +0000
-+++ libvirt-4.6.0/m4/virt-jansson.m4   1970-01-01 00:00:00.000000000 +0000
-@@ -1,32 +0,0 @@
--dnl The jansson library
--dnl
--dnl This library is free software; you can redistribute it and/or
--dnl modify it under the terms of the GNU Lesser General Public
--dnl License as published by the Free Software Foundation; either
--dnl version 2.1 of the License, or (at your option) any later version.
--dnl
--dnl This library is distributed in the hope that it will be useful,
--dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
--dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--dnl Lesser General Public License for more details.
--dnl
--dnl You should have received a copy of the GNU Lesser General Public
--dnl License along with this library.  If not, see
--dnl <http://www.gnu.org/licenses/>.
--dnl
--
--AC_DEFUN([LIBVIRT_ARG_JANSSON],[
--  LIBVIRT_ARG_WITH_FEATURE([JANSSON], [jansson], [check])
--])
--
--AC_DEFUN([LIBVIRT_CHECK_JANSSON],[
--  dnl Jansson http://www.digip.org/jansson/
--  LIBVIRT_CHECK_PKG([JANSSON], [jansson], [2.5])
--  dnl Older versions of Jansson did not preserve the order of object keys
--  dnl use this check to guard the tests that are sensitive to this
--  LIBVIRT_CHECK_PKG([STABLE_ORDERING_JANSSON], [jansson], [2.8], [true])
--])
--
--AC_DEFUN([LIBVIRT_RESULT_JANSSON],[
--  LIBVIRT_RESULT_LIB([JANSSON])
--])
-diff -urNpa libvirt-4.6.0.orig/m4/virt-nss.m4 libvirt-4.6.0/m4/virt-nss.m4
---- libvirt-4.6.0.orig/m4/virt-nss.m4  2018-07-28 13:26:44.396463684 +0000
-+++ libvirt-4.6.0/m4/virt-nss.m4       2018-08-20 18:00:20.572398013 +0000
-@@ -27,9 +27,9 @@ AC_DEFUN([LIBVIRT_CHECK_NSS],[
-   bsd_nss=no
-   fail=0
-   if test "x$with_nss_plugin" != "xno" ; then
--    if test "x$with_jansson" != "xyes" ; then
-+    if test "x$with_yajl" != "xyes" ; then
-       if test "x$with_nss_plugin" = "xyes" ; then
--        AC_MSG_ERROR([Can't build nss plugin without JSON support])
-+        AC_MSG_ERROR([Can't build nss plugin without yajl])
-       else
-         with_nss_plugin=no
-       fi
-diff -urNpa libvirt-4.6.0.orig/m4/virt-yajl.m4 libvirt-4.6.0/m4/virt-yajl.m4
---- libvirt-4.6.0.orig/m4/virt-yajl.m4 2018-07-28 13:26:44.396463684 +0000
-+++ libvirt-4.6.0/m4/virt-yajl.m4      2018-08-20 18:00:20.572398013 +0000
-@@ -23,10 +23,31 @@ AC_DEFUN([LIBVIRT_ARG_YAJL],[
- AC_DEFUN([LIBVIRT_CHECK_YAJL],[
-   dnl YAJL JSON library http://lloyd.github.com/yajl/
--  if test "$with_yajl" = yes; then
--    AC_MSG_ERROR([Compilation with YAJL is no longer supported])
-+  if test "$with_qemu:$with_yajl" = yes:check; then
-+    dnl Some versions of qemu require the use of yajl; try to detect them
-+    dnl here, although we do not require qemu to exist in order to compile.
-+    dnl This check mirrors src/qemu/qemu_capabilities.c
-+    AC_PATH_PROGS([QEMU], [qemu-kvm qemu kvm qemu-system-x86_64],
-+                  [], [$PATH:/usr/bin:/usr/libexec])
-+    if test -x "$QEMU"; then
-+      if $QEMU -help 2>/dev/null | grep -q libvirt; then
-+        with_yajl=yes
-+      else
-+        [qemu_version_sed='s/.*ersion \([0-9.,]*\).*/\1/']
-+        qemu_version=`$QEMU -version | sed "$qemu_version_sed"`
-+        case $qemu_version in
-+          [[1-9]].* | 0.15.* ) with_yajl=yes ;;
-+          0.* | '' ) ;;
-+          *) AC_MSG_ERROR([Unexpected qemu version string]) ;;
-+        esac
-+      fi
-+    fi
-   fi
--  with_yajl=no
-+
-+  LIBVIRT_CHECK_LIB_ALT([YAJL], [yajl],
-+                        [yajl_parse_complete], [yajl/yajl_common.h],
-+                        [YAJL2], [yajl],
-+                        [yajl_tree_parse], [yajl/yajl_common.h])
- ])
- AC_DEFUN([LIBVIRT_RESULT_YAJL],[
-diff -urNpa libvirt-4.6.0.orig/src/libvirt_private.syms libvirt-4.6.0/src/libvirt_private.syms
---- libvirt-4.6.0.orig/src/libvirt_private.syms        2018-08-02 03:58:35.114820107 +0000
-+++ libvirt-4.6.0/src/libvirt_private.syms     2018-08-20 18:00:20.572398013 +0000
-@@ -2098,6 +2098,7 @@ virJSONValueNewNumberUint;
- virJSONValueNewNumberUlong;
- virJSONValueNewObject;
- virJSONValueNewString;
-+virJSONValueNewStringLen;
- virJSONValueObjectAdd;
- virJSONValueObjectAddVArgs;
- virJSONValueObjectAppend;
-@@ -2135,10 +2136,6 @@ virJSONValueObjectStealObject;
- virJSONValueToString;
--# util/virjsoncompat.h
--virJSONInitialize;
--
--
- # util/virkeycode.h
- virKeycodeSetTypeFromString;
- virKeycodeSetTypeToString;
-diff -urNpa libvirt-4.6.0.orig/src/Makefile.am libvirt-4.6.0/src/Makefile.am
---- libvirt-4.6.0.orig/src/Makefile.am 2018-08-02 03:58:35.114820107 +0000
-+++ libvirt-4.6.0/src/Makefile.am      2018-08-20 18:04:33.691395163 +0000
-@@ -544,7 +544,7 @@ libvirt_admin_la_CFLAGS = \
- libvirt_admin_la_CFLAGS += \
-               $(XDR_CFLAGS) \
-               $(CAPNG_CFLAGS) \
--              $(JANSSON_CFLAGS) \
-+              $(YAJL_CFLAGS) \
-               $(SSH2_CFLAGS) \
-               $(SASL_CFLAGS) \
-               $(GNUTLS_CFLAGS) \
-@@ -552,6 +552,7 @@ libvirt_admin_la_CFLAGS += \
- libvirt_admin_la_LIBADD += \
-               $(CAPNG_LIBS) \
-+              $(YAJL_LIBS) \
-               $(DEVMAPPER_LIBS) \
-               $(LIBXML_LIBS) \
-               $(SSH2_LIBS) \
-@@ -689,7 +690,6 @@ libvirt_setuid_rpc_client_la_SOURCES = \
-               util/virhashcode.c \
-               util/virhostcpu.c \
-               util/virjson.c \
--              util/virjsoncompat.c \
-               util/virlog.c \
-               util/virobject.c \
-               util/virpidfile.c \
-@@ -961,8 +961,6 @@ libvirt_nss_la_SOURCES = \
-               util/virhashcode.h \
-               util/virjson.c \
-               util/virjson.h \
--              util/virjsoncompat.c \
--              util/virjsoncompat.h \
-               util/virkmod.c \
-               util/virkmod.h \
-               util/virlease.c \
-@@ -996,11 +994,15 @@ libvirt_nss_la_SOURCES = \
- libvirt_nss_la_CFLAGS = \
-               -DLIBVIRT_NSS \
-               $(AM_CFLAGS) \
--              $(JANSSON_CFLAGS) \
-+              $(YAJL_CFLAGS) \
-               $(NULL)
- libvirt_nss_la_LDFLAGS = \
-               $(AM_LDFLAGS) \
-               $(NULL)
-+
-+libvirt_nss_la_LIBADD = \
-+              $(YAJL_LIBS) \
-+              $(NULL)
- endif WITH_NSS
-diff -urNpa libvirt-4.6.0.orig/src/qemu/qemu_driver.c libvirt-4.6.0/src/qemu/qemu_driver.c
---- libvirt-4.6.0.orig/src/qemu/qemu_driver.c  2018-07-31 03:31:26.316391201 +0000
-+++ libvirt-4.6.0/src/qemu/qemu_driver.c       2018-08-20 18:00:20.575398013 +0000
-@@ -2092,7 +2092,7 @@ qemuDomainReboot(virDomainPtr dom, unsig
-      */
-     if ((!useAgent) ||
-         (ret < 0 && (acpiRequested || !flags))) {
--#if !WITH_JANSSON
-+#if !WITH_YAJL
-         virReportError(VIR_ERR_OPERATION_INVALID, "%s",
-                        _("ACPI reboot is not supported without the JSON monitor"));
-         goto endjob;
-diff -urNpa libvirt-4.6.0.orig/src/remote/remote_daemon.c libvirt-4.6.0/src/remote/remote_daemon.c
---- libvirt-4.6.0.orig/src/remote/remote_daemon.c      2018-08-02 03:58:35.116820088 +0000
-+++ libvirt-4.6.0/src/remote/remote_daemon.c   2018-08-20 18:00:20.575398013 +0000
-@@ -59,7 +59,6 @@
- #include "virutil.h"
- #include "virgettext.h"
- #include "util/virnetdevopenvswitch.h"
--#include "virjsoncompat.h"
- #include "driver.h"
-@@ -1184,9 +1183,6 @@ int main(int argc, char **argv) {
-         exit(EXIT_FAILURE);
-     }
--    if (virJSONInitialize() < 0)
--        exit(EXIT_FAILURE);
--
-     daemonSetupNetDevOpenvswitch(config);
-     if (daemonSetupAccessManager(config) < 0) {
-diff -urNpa libvirt-4.6.0.orig/src/util/Makefile.inc.am libvirt-4.6.0/src/util/Makefile.inc.am
---- libvirt-4.6.0.orig/src/util/Makefile.inc.am        2018-08-02 03:58:35.116820088 +0000
-+++ libvirt-4.6.0/src/util/Makefile.inc.am     2018-08-20 18:00:20.575398013 +0000
-@@ -86,8 +86,6 @@ UTIL_SOURCES = \
-       util/viriscsi.h \
-       util/virjson.c \
-       util/virjson.h \
--      util/virjsoncompat.c \
--      util/virjsoncompat.h \
-       util/virkeycode.c \
-       util/virkeycode.h \
-       util/virkeyfile.c \
-@@ -253,7 +251,7 @@ libvirt_util_la_SOURCES = \
-       $(NULL)
- libvirt_util_la_CFLAGS = \
-       $(CAPNG_CFLAGS) \
--      $(JANSSON_CFLAGS) \
-+      $(YAJL_CFLAGS) \
-       $(LIBNL_CFLAGS) \
-       $(AM_CFLAGS) \
-       $(AUDIT_CFLAGS) \
-@@ -266,6 +264,7 @@ libvirt_util_la_CFLAGS = \
-       $(NULL)
- libvirt_util_la_LIBADD = \
-       $(CAPNG_LIBS) \
-+      $(YAJL_LIBS) \
-       $(LIBNL_LIBS) \
-       $(THREAD_LIBS) \
-       $(AUDIT_LIBS) \
-diff -urNpa libvirt-4.6.0.orig/src/util/virjson.c libvirt-4.6.0/src/util/virjson.c
---- libvirt-4.6.0.orig/src/util/virjson.c      2018-08-02 03:58:35.117820079 +0000
-+++ libvirt-4.6.0/src/util/virjson.c   2018-08-20 18:00:20.576398013 +0000
-@@ -29,6 +29,22 @@
- #include "virstring.h"
- #include "virutil.h"
-+#if WITH_YAJL
-+# include <yajl/yajl_gen.h>
-+# include <yajl/yajl_parse.h>
-+
-+# ifdef WITH_YAJL2
-+#  define yajl_size_t size_t
-+#  define VIR_YAJL_STATUS_OK(status) ((status) == yajl_status_ok)
-+# else
-+#  define yajl_size_t unsigned int
-+#  define yajl_complete_parse yajl_parse_complete
-+#  define VIR_YAJL_STATUS_OK(status) \
-+    ((status) == yajl_status_ok || (status) == yajl_status_insufficient_data)
-+# endif
-+
-+#endif
-+
- /* XXX fixme */
- #define VIR_FROM_THIS VIR_FROM_NONE
-@@ -72,6 +88,23 @@ struct _virJSONValue {
- };
-+typedef struct _virJSONParserState virJSONParserState;
-+typedef virJSONParserState *virJSONParserStatePtr;
-+struct _virJSONParserState {
-+    virJSONValuePtr value;
-+    char *key;
-+};
-+
-+typedef struct _virJSONParser virJSONParser;
-+typedef virJSONParser *virJSONParserPtr;
-+struct _virJSONParser {
-+    virJSONValuePtr head;
-+    virJSONParserStatePtr state;
-+    size_t nstate;
-+    int wrap;
-+};
-+
-+
- virJSONType
- virJSONValueGetType(const virJSONValue *value)
- {
-@@ -420,6 +453,28 @@ virJSONValueNewString(const char *data)
- }
-+virJSONValuePtr
-+virJSONValueNewStringLen(const char *data,
-+                         size_t length)
-+{
-+    virJSONValuePtr val;
-+
-+    if (!data)
-+        return virJSONValueNewNull();
-+
-+    if (VIR_ALLOC(val) < 0)
-+        return NULL;
-+
-+    val->type = VIR_JSON_TYPE_STRING;
-+    if (VIR_STRNDUP(val->data.string, data, length) < 0) {
-+        VIR_FREE(val);
-+        return NULL;
-+    }
-+
-+    return val;
-+}
-+
-+
- static virJSONValuePtr
- virJSONValueNewNumber(const char *data)
- {
-@@ -1436,193 +1491,446 @@ virJSONValueCopy(const virJSONValue *in)
- }
--#if WITH_JANSSON
-+#if WITH_YAJL
-+static int
-+virJSONParserInsertValue(virJSONParserPtr parser,
-+                         virJSONValuePtr value)
-+{
-+    if (!parser->head) {
-+        parser->head = value;
-+    } else {
-+        virJSONParserStatePtr state;
-+        if (!parser->nstate) {
-+            VIR_DEBUG("got a value to insert without a container");
-+            return -1;
-+        }
--# include "virjsoncompat.h"
-+        state = &parser->state[parser->nstate-1];
--static virJSONValuePtr
--virJSONValueFromJansson(json_t *json)
--{
--    virJSONValuePtr ret = NULL;
--    const char *key;
--    json_t *cur;
--    size_t i;
-+        switch (state->value->type) {
-+        case VIR_JSON_TYPE_OBJECT: {
-+            if (!state->key) {
-+                VIR_DEBUG("missing key when inserting object value");
-+                return -1;
-+            }
--    switch (json_typeof(json)) {
--    case JSON_OBJECT:
--        ret = virJSONValueNewObject();
--        if (!ret)
--            goto error;
-+            if (virJSONValueObjectAppend(state->value,
-+                                         state->key,
-+                                         value) < 0)
-+                return -1;
--        json_object_foreach(json, key, cur) {
--            virJSONValuePtr val = virJSONValueFromJansson(cur);
--            if (!val)
--                goto error;
-+            VIR_FREE(state->key);
-+        }   break;
--            if (virJSONValueObjectAppend(ret, key, val) < 0) {
--                virJSONValueFree(val);
--                goto error;
-+        case VIR_JSON_TYPE_ARRAY: {
-+            if (state->key) {
-+                VIR_DEBUG("unexpected key when inserting array value");
-+                return -1;
-             }
-+
-+            if (virJSONValueArrayAppend(state->value,
-+                                        value) < 0)
-+                return -1;
-+        }   break;
-+
-+        default:
-+            VIR_DEBUG("unexpected value type, not a container");
-+            return -1;
-         }
-+    }
--        break;
-+    return 0;
-+}
--    case JSON_ARRAY:
--        ret = virJSONValueNewArray();
--        if (!ret)
--            goto error;
--        json_array_foreach(json, i, cur) {
--            virJSONValuePtr val = virJSONValueFromJansson(cur);
--            if (!val)
--                goto error;
-+static int
-+virJSONParserHandleNull(void *ctx)
-+{
-+    virJSONParserPtr parser = ctx;
-+    virJSONValuePtr value = virJSONValueNewNull();
--            if (virJSONValueArrayAppend(ret, val) < 0) {
--                virJSONValueFree(val);
--                goto error;
--            }
--        }
--        break;
-+    VIR_DEBUG("parser=%p", parser);
--    case JSON_STRING:
--        ret = virJSONValueNewString(json_string_value(json));
--        break;
-+    if (!value)
-+        return 0;
--    case JSON_INTEGER:
--        ret = virJSONValueNewNumberLong(json_integer_value(json));
--        break;
-+    if (virJSONParserInsertValue(parser, value) < 0) {
-+        virJSONValueFree(value);
-+        return 0;
-+    }
--    case JSON_REAL:
--        ret = virJSONValueNewNumberDouble(json_real_value(json));
--        break;
-+    return 1;
-+}
--    case JSON_TRUE:
--        ret = virJSONValueNewBoolean(true);
--        break;
--    case JSON_FALSE:
--        ret = virJSONValueNewBoolean(false);
--        break;
-+static int
-+virJSONParserHandleBoolean(void *ctx,
-+                           int boolean_)
-+{
-+    virJSONParserPtr parser = ctx;
-+    virJSONValuePtr value = virJSONValueNewBoolean(boolean_);
--    case JSON_NULL:
--        ret = virJSONValueNewNull();
--        break;
-+    VIR_DEBUG("parser=%p boolean=%d", parser, boolean_);
-+
-+    if (!value)
-+        return 0;
-+
-+    if (virJSONParserInsertValue(parser, value) < 0) {
-+        virJSONValueFree(value);
-+        return 0;
-     }
--    return ret;
-+    return 1;
-+}
-- error:
--    virJSONValueFree(ret);
--    return NULL;
-+
-+static int
-+virJSONParserHandleNumber(void *ctx,
-+                          const char *s,
-+                          yajl_size_t l)
-+{
-+    virJSONParserPtr parser = ctx;
-+    char *str;
-+    virJSONValuePtr value;
-+
-+    if (VIR_STRNDUP(str, s, l) < 0)
-+        return -1;
-+    value = virJSONValueNewNumber(str);
-+    VIR_FREE(str);
-+
-+    VIR_DEBUG("parser=%p str=%s", parser, str);
-+
-+    if (!value)
-+        return 0;
-+
-+    if (virJSONParserInsertValue(parser, value) < 0) {
-+        virJSONValueFree(value);
-+        return 0;
-+    }
-+
-+    return 1;
-+}
-+
-+
-+static int
-+virJSONParserHandleString(void *ctx,
-+                          const unsigned char *stringVal,
-+                          yajl_size_t stringLen)
-+{
-+    virJSONParserPtr parser = ctx;
-+    virJSONValuePtr value = virJSONValueNewStringLen((const char *)stringVal,
-+                                                     stringLen);
-+
-+    VIR_DEBUG("parser=%p str=%p", parser, (const char *)stringVal);
-+
-+    if (!value)
-+        return 0;
-+
-+    if (virJSONParserInsertValue(parser, value) < 0) {
-+        virJSONValueFree(value);
-+        return 0;
-+    }
-+
-+    return 1;
-+}
-+
-+
-+static int
-+virJSONParserHandleMapKey(void *ctx,
-+                          const unsigned char *stringVal,
-+                          yajl_size_t stringLen)
-+{
-+    virJSONParserPtr parser = ctx;
-+    virJSONParserStatePtr state;
-+
-+    VIR_DEBUG("parser=%p key=%p", parser, (const char *)stringVal);
-+
-+    if (!parser->nstate)
-+        return 0;
-+
-+    state = &parser->state[parser->nstate-1];
-+    if (state->key)
-+        return 0;
-+    if (VIR_STRNDUP(state->key, (const char *)stringVal, stringLen) < 0)
-+        return 0;
-+    return 1;
- }
-+
-+static int
-+virJSONParserHandleStartMap(void *ctx)
-+{
-+    virJSONParserPtr parser = ctx;
-+    virJSONValuePtr value = virJSONValueNewObject();
-+
-+    VIR_DEBUG("parser=%p", parser);
-+
-+    if (!value)
-+        return 0;
-+
-+    if (virJSONParserInsertValue(parser, value) < 0) {
-+        virJSONValueFree(value);
-+        return 0;
-+    }
-+
-+    if (VIR_REALLOC_N(parser->state,
-+                      parser->nstate + 1) < 0) {
-+        return 0;
-+    }
-+
-+    parser->state[parser->nstate].value = value;
-+    parser->state[parser->nstate].key = NULL;
-+    parser->nstate++;
-+
-+    return 1;
-+}
-+
-+
-+static int
-+virJSONParserHandleEndMap(void *ctx)
-+{
-+    virJSONParserPtr parser = ctx;
-+    virJSONParserStatePtr state;
-+
-+    VIR_DEBUG("parser=%p", parser);
-+
-+    if (!parser->nstate)
-+        return 0;
-+
-+    state = &(parser->state[parser->nstate-1]);
-+    if (state->key) {
-+        VIR_FREE(state->key);
-+        return 0;
-+    }
-+
-+    VIR_DELETE_ELEMENT(parser->state, parser->nstate - 1, parser->nstate);
-+
-+    return 1;
-+}
-+
-+
-+static int
-+virJSONParserHandleStartArray(void *ctx)
-+{
-+    virJSONParserPtr parser = ctx;
-+    virJSONValuePtr value = virJSONValueNewArray();
-+
-+    VIR_DEBUG("parser=%p", parser);
-+
-+    if (!value)
-+        return 0;
-+
-+    if (virJSONParserInsertValue(parser, value) < 0) {
-+        virJSONValueFree(value);
-+        return 0;
-+    }
-+
-+    if (VIR_REALLOC_N(parser->state,
-+                      parser->nstate + 1) < 0)
-+        return 0;
-+
-+    parser->state[parser->nstate].value = value;
-+    parser->state[parser->nstate].key = NULL;
-+    parser->nstate++;
-+
-+    return 1;
-+}
-+
-+
-+static int
-+virJSONParserHandleEndArray(void *ctx)
-+{
-+    virJSONParserPtr parser = ctx;
-+    virJSONParserStatePtr state;
-+
-+    VIR_DEBUG("parser=%p", parser);
-+
-+    if (!(parser->nstate - parser->wrap))
-+        return 0;
-+
-+    state = &(parser->state[parser->nstate-1]);
-+    if (state->key) {
-+        VIR_FREE(state->key);
-+        return 0;
-+    }
-+
-+    VIR_DELETE_ELEMENT(parser->state, parser->nstate - 1, parser->nstate);
-+
-+    return 1;
-+}
-+
-+
-+static const yajl_callbacks parserCallbacks = {
-+    virJSONParserHandleNull,
-+    virJSONParserHandleBoolean,
-+    NULL,
-+    NULL,
-+    virJSONParserHandleNumber,
-+    virJSONParserHandleString,
-+    virJSONParserHandleStartMap,
-+    virJSONParserHandleMapKey,
-+    virJSONParserHandleEndMap,
-+    virJSONParserHandleStartArray,
-+    virJSONParserHandleEndArray
-+};
-+
-+
-+/* XXX add an incremental streaming parser - yajl trivially supports it */
- virJSONValuePtr
- virJSONValueFromString(const char *jsonstring)
- {
-+    yajl_handle hand;
-+    virJSONParser parser = { NULL, NULL, 0, 0 };
-     virJSONValuePtr ret = NULL;
--    json_t *json;
--    json_error_t error;
--    size_t flags = JSON_REJECT_DUPLICATES |
--                   JSON_DECODE_ANY;
-+    int rc;
-+    size_t len = strlen(jsonstring);
-+# ifndef WITH_YAJL2
-+    yajl_parser_config cfg = { 0, 1 }; /* Match yajl 2 default behavior */
-+    VIR_AUTOPTR(virJSONValue) tmp = NULL;
-+# endif
-+
-+    VIR_DEBUG("string=%s", jsonstring);
-+
-+# ifdef WITH_YAJL2
-+    hand = yajl_alloc(&parserCallbacks, NULL, &parser);
-+# else
-+    hand = yajl_alloc(&parserCallbacks, &cfg, NULL, &parser);
-+# endif
-+    if (!hand) {
-+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-+                       _("Unable to create JSON parser"));
-+        goto cleanup;
-+    }
--    if (virJSONInitialize() < 0)
--        return NULL;
-+    /* Yajl 2 is nice enough to default to rejecting trailing garbage.
-+     * Yajl 1.0.12 has yajl_get_bytes_consumed to make that detection
-+     * simpler.  But we're stuck with yajl 1.0.7 on RHEL 6, which
-+     * happily quits parsing at the end of a valid JSON construct,
-+     * with no visibility into how much more input remains.  Wrapping
-+     * things in an array forces yajl to confess the truth.  */
-+# ifdef WITH_YAJL2
-+    rc = yajl_parse(hand, (const unsigned char *)jsonstring, len);
-+# else
-+    rc = yajl_parse(hand, (const unsigned char *)"[", 1);
-+    parser.wrap = 1;
-+    if (VIR_YAJL_STATUS_OK(rc))
-+        rc = yajl_parse(hand, (const unsigned char *)jsonstring, len);
-+    parser.wrap = 0;
-+    if (VIR_YAJL_STATUS_OK(rc))
-+        rc = yajl_parse(hand, (const unsigned char *)"]", 1);
-+# endif
-+    if (!VIR_YAJL_STATUS_OK(rc) ||
-+        yajl_complete_parse(hand) != yajl_status_ok) {
-+        unsigned char *errstr = yajl_get_error(hand, 1,
-+                                               (const unsigned char*)jsonstring,
-+                                               strlen(jsonstring));
--    if (!(json = json_loads(jsonstring, flags, &error))) {
-         virReportError(VIR_ERR_INTERNAL_ERROR,
--                       _("failed to parse JSON %d:%d: %s"),
--                       error.line, error.column, error.text);
--        return NULL;
-+                       _("cannot parse json %s: %s"),
-+                       jsonstring, (const char*) errstr);
-+        yajl_free_error(hand, errstr);
-+        virJSONValueFree(parser.head);
-+        goto cleanup;
-     }
--    ret = virJSONValueFromJansson(json);
--    json_decref(json);
-+    if (parser.nstate != 0) {
-+        virReportError(VIR_ERR_INTERNAL_ERROR,
-+                       _("cannot parse json %s: unterminated string/map/array"),
-+                       jsonstring);
-+        virJSONValueFree(parser.head);
-+    } else {
-+        ret = parser.head;
-+# ifndef WITH_YAJL2
-+        /* Undo the array wrapping above */
-+        tmp = ret;
-+        ret = NULL;
-+        if (virJSONValueArraySize(tmp) > 1)
-+            virReportError(VIR_ERR_INTERNAL_ERROR,
-+                           _("cannot parse json %s: too many items present"),
-+                           jsonstring);
-+        else
-+            ret = virJSONValueArraySteal(tmp, 0);
-+# endif
-+    }
-+
-+ cleanup:
-+    yajl_free(hand);
-+
-+    if (parser.nstate) {
-+        size_t i;
-+        for (i = 0; i < parser.nstate; i++)
-+            VIR_FREE(parser.state[i].key);
-+        VIR_FREE(parser.state);
-+    }
-+
-+    VIR_DEBUG("result=%p", ret);
-+
-     return ret;
- }
--static json_t *
--virJSONValueToJansson(virJSONValuePtr object)
-+static int
-+virJSONValueToStringOne(virJSONValuePtr object,
-+                        yajl_gen g)
- {
--    json_t *ret = NULL;
-     size_t i;
--    switch ((virJSONType)object->type) {
-+    VIR_DEBUG("object=%p type=%d gen=%p", object, object->type, g);
-+
-+    switch (object->type) {
-     case VIR_JSON_TYPE_OBJECT:
--        ret = json_object();
--        if (!ret)
--            goto no_memory;
-+        if (yajl_gen_map_open(g) != yajl_gen_status_ok)
-+            return -1;
-         for (i = 0; i < object->data.object.npairs; i++) {
--            virJSONObjectPairPtr cur = object->data.object.pairs + i;
--            json_t *val = virJSONValueToJansson(cur->value);
--
--            if (!val)
--                goto error;
--            if (json_object_set_new(ret, cur->key, val) < 0) {
--                json_decref(val);
--                goto no_memory;
--            }
-+            if (yajl_gen_string(g,
-+                                (unsigned char *)object->data.object.pairs[i].key,
-+                                strlen(object->data.object.pairs[i].key))
-+                                != yajl_gen_status_ok)
-+                return -1;
-+            if (virJSONValueToStringOne(object->data.object.pairs[i].value, g) < 0)
-+                return -1;
-         }
-+        if (yajl_gen_map_close(g) != yajl_gen_status_ok)
-+            return -1;
-         break;
--
-     case VIR_JSON_TYPE_ARRAY:
--        ret = json_array();
--        if (!ret)
--            goto no_memory;
-+        if (yajl_gen_array_open(g) != yajl_gen_status_ok)
-+            return -1;
-         for (i = 0; i < object->data.array.nvalues; i++) {
--            virJSONValuePtr cur = object->data.array.values[i];
--            json_t *val = virJSONValueToJansson(cur);
--
--            if (!val)
--                goto error;
--            if (json_array_append_new(ret, val) < 0) {
--                json_decref(val);
--                goto no_memory;
--            }
-+            if (virJSONValueToStringOne(object->data.array.values[i], g) < 0)
-+                return -1;
-         }
-+        if (yajl_gen_array_close(g) != yajl_gen_status_ok)
-+            return -1;
-         break;
-     case VIR_JSON_TYPE_STRING:
--        ret = json_string(object->data.string);
-+        if (yajl_gen_string(g, (unsigned char *)object->data.string,
-+                            strlen(object->data.string)) != yajl_gen_status_ok)
-+            return -1;
-         break;
--    case VIR_JSON_TYPE_NUMBER: {
--        long long ll_val;
--        double d_val;
--        if (virStrToLong_ll(object->data.number, NULL, 10, &ll_val) < 0) {
--            if (virStrToDouble(object->data.number, NULL, &d_val) < 0) {
--                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
--                               _("JSON value is not a number"));
--                return NULL;
--            }
--            ret = json_real(d_val);
--        } else {
--            ret = json_integer(ll_val);
--        }
--    }
-+    case VIR_JSON_TYPE_NUMBER:
-+        if (yajl_gen_number(g, object->data.number,
-+                            strlen(object->data.number)) != yajl_gen_status_ok)
-+            return -1;
-         break;
-     case VIR_JSON_TYPE_BOOLEAN:
--        ret = json_boolean(object->data.boolean);
-+        if (yajl_gen_bool(g, object->data.boolean) != yajl_gen_status_ok)
-+            return -1;
-         break;
-     case VIR_JSON_TYPE_NULL:
--        ret = json_null();
-+        if (yajl_gen_null(g) != yajl_gen_status_ok)
-+            return -1;
-         break;
-     default:
--        virReportEnumRangeError(virJSONType, object->type);
--        goto error;
-+        return -1;
-     }
--    if (!ret)
--        goto no_memory;
--    return ret;
-- no_memory:
--    virReportOOMError();
-- error:
--    json_decref(ret);
--    return NULL;
-+    return 0;
- }
-@@ -1630,27 +1938,50 @@ char *
- virJSONValueToString(virJSONValuePtr object,
-                      bool pretty)
- {
--    size_t flags = JSON_ENCODE_ANY;
--    json_t *json;
--    char *str = NULL;
-+    yajl_gen g;
-+    const unsigned char *str;
-+    char *ret = NULL;
-+    yajl_size_t len;
-+# ifndef WITH_YAJL2
-+    yajl_gen_config conf = { pretty ? 1 : 0, pretty ? "  " : " "};
-+# endif
-+
-+    VIR_DEBUG("object=%p", object);
-+
-+# ifdef WITH_YAJL2
-+    g = yajl_gen_alloc(NULL);
-+    if (g) {
-+        yajl_gen_config(g, yajl_gen_beautify, pretty ? 1 : 0);
-+        yajl_gen_config(g, yajl_gen_indent_string, pretty ? "  " : " ");
-+        yajl_gen_config(g, yajl_gen_validate_utf8, 1);
-+    }
-+# else
-+    g = yajl_gen_alloc(&conf, NULL);
-+# endif
-+    if (!g) {
-+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-+                       _("Unable to create JSON formatter"));
-+        goto cleanup;
-+    }
--    if (virJSONInitialize() < 0)
--        return NULL;
-+    if (virJSONValueToStringOne(object, g) < 0) {
-+        virReportOOMError();
-+        goto cleanup;
-+    }
--    if (pretty)
--        flags |= JSON_INDENT(2);
--    else
--        flags |= JSON_COMPACT;
-+    if (yajl_gen_get_buf(g, &str, &len) != yajl_gen_status_ok) {
-+        virReportOOMError();
-+        goto cleanup;
-+    }
--    json = virJSONValueToJansson(object);
--    if (!json)
--        return NULL;
-+    ignore_value(VIR_STRDUP(ret, (const char *)str));
--    str = json_dumps(json, flags);
--    if (!str)
--        virReportOOMError();
--    json_decref(json);
--    return str;
-+ cleanup:
-+    yajl_gen_free(g);
-+
-+    VIR_DEBUG("result=%s", NULLSTR(ret));
-+
-+    return ret;
- }
-diff -urNpa libvirt-4.6.0.orig/src/util/virjsoncompat.c libvirt-4.6.0/src/util/virjsoncompat.c
---- libvirt-4.6.0.orig/src/util/virjsoncompat.c        2018-08-02 03:58:35.117820079 +0000
-+++ libvirt-4.6.0/src/util/virjsoncompat.c     1970-01-01 00:00:00.000000000 +0000
-@@ -1,285 +0,0 @@
--/*
-- * virjsoncompat.c: JSON object parsing/formatting
-- *
-- * Copyright (C) 2018 Red Hat, Inc.
-- *
-- * This library is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU Lesser General Public
-- * License as published by the Free Software Foundation; either
-- * version 2.1 of the License, or (at your option) any later version.
-- *
-- * This library is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-- * Lesser General Public License for more details.
-- *
-- * You should have received a copy of the GNU Lesser General Public
-- * License along with this library.  If not, see
-- * <http://www.gnu.org/licenses/>.
-- *
-- */
--
--#include <config.h>
--
--#include "virthread.h"
--#include "virerror.h"
--#define VIR_JSON_COMPAT_IMPL
--#include "virjsoncompat.h"
--
--#define VIR_FROM_THIS VIR_FROM_NONE
--
--#if WITH_JANSSON
--
--# include <dlfcn.h>
--
--json_t *(*json_array_ptr)(void);
--int (*json_array_append_new_ptr)(json_t *array, json_t *value);
--json_t *(*json_array_get_ptr)(const json_t *array, size_t index);
--size_t (*json_array_size_ptr)(const json_t *array);
--void (*json_delete_ptr)(json_t *json);
--char *(*json_dumps_ptr)(const json_t *json, size_t flags);
--json_t *(*json_false_ptr)(void);
--json_t *(*json_integer_ptr)(json_int_t value);
--json_int_t (*json_integer_value_ptr)(const json_t *integer);
--json_t *(*json_loads_ptr)(const char *input, size_t flags, json_error_t *error);
--json_t *(*json_null_ptr)(void);
--json_t *(*json_object_ptr)(void);
--void *(*json_object_iter_ptr)(json_t *object);
--const char *(*json_object_iter_key_ptr)(void *iter);
--void *(*json_object_iter_next_ptr)(json_t *object, void *iter);
--json_t *(*json_object_iter_value_ptr)(void *iter);
--void *(*json_object_key_to_iter_ptr)(const char *key);
--int (*json_object_set_new_ptr)(json_t *object, const char *key, json_t *value);
--json_t *(*json_real_ptr)(double value);
--double (*json_real_value_ptr)(const json_t *real);
--json_t *(*json_string_ptr)(const char *value);
--const char *(*json_string_value_ptr)(const json_t *string);
--json_t *(*json_true_ptr)(void);
--
--
--static int
--virJSONJanssonOnceInit(void)
--{
--    void *handle = dlopen("libjansson.so.4", RTLD_LAZY|RTLD_LOCAL|RTLD_NODELETE);
--    if (!handle) {
--        virReportError(VIR_ERR_NO_SUPPORT,
--                       _("libjansson.so.4 JSON library not available: %s"), dlerror());
--        return -1;
--    }
--
--# define LOAD(name) \
--    do { \
--        if (!(name ## _ptr = dlsym(handle, #name))) { \
--            virReportError(VIR_ERR_NO_SUPPORT, \
--                           _("missing symbol '%s' in libjansson.so.4: %s"), #name, dlerror()); \
--            return -1; \
--        } \
--    } while (0)
--
--    LOAD(json_array);
--    LOAD(json_array_append_new);
--    LOAD(json_array_get);
--    LOAD(json_array_size);
--    LOAD(json_delete);
--    LOAD(json_dumps);
--    LOAD(json_false);
--    LOAD(json_integer);
--    LOAD(json_integer_value);
--    LOAD(json_loads);
--    LOAD(json_null);
--    LOAD(json_object);
--    LOAD(json_object_iter);
--    LOAD(json_object_iter_key);
--    LOAD(json_object_iter_next);
--    LOAD(json_object_iter_value);
--    LOAD(json_object_key_to_iter);
--    LOAD(json_object_set_new);
--    LOAD(json_real);
--    LOAD(json_real_value);
--    LOAD(json_string);
--    LOAD(json_string_value);
--    LOAD(json_true);
--
--    return 0;
--}
--
--VIR_ONCE_GLOBAL_INIT(virJSONJansson);
--
--int
--virJSONInitialize(void)
--{
--    return virJSONJanssonInitialize();
--}
--
--json_t *
--json_array_impl(void)
--{
--    return json_array_ptr();
--}
--
--
--int
--json_array_append_new_impl(json_t *array, json_t *value)
--{
--    return json_array_append_new_ptr(array, value);
--}
--
--
--json_t *
--json_array_get_impl(const json_t *array, size_t index)
--{
--    return json_array_get_ptr(array, index);
--}
--
--
--size_t
--json_array_size_impl(const json_t *array)
--{
--    return json_array_size_ptr(array);
--}
--
--
--void
--json_delete_impl(json_t *json)
--{
--    return json_delete_ptr(json);
--}
--
--
--char *
--json_dumps_impl(const json_t *json, size_t flags)
--{
--    return json_dumps_ptr(json, flags);
--}
--
--
--json_t *
--json_false_impl(void)
--{
--    return json_false_ptr();
--}
--
--
--json_t *
--json_integer_impl(json_int_t value)
--{
--    return json_integer_ptr(value);
--}
--
--
--json_int_t
--json_integer_value_impl(const json_t *integer)
--{
--    return json_integer_value_ptr(integer);
--}
--
--
--json_t *
--json_loads_impl(const char *input, size_t flags, json_error_t *error)
--{
--    return json_loads_ptr(input, flags, error);
--}
--
--
--json_t *
--json_null_impl(void)
--{
--    return json_null_ptr();
--}
--
--
--json_t *
--json_object_impl(void)
--{
--    return json_object_ptr();
--}
--
--
--void *
--json_object_iter_impl(json_t *object)
--{
--    return json_object_iter_ptr(object);
--}
--
--
--const char *
--json_object_iter_key_impl(void *iter)
--{
--    return json_object_iter_key_ptr(iter);
--}
--
--
--void *
--json_object_iter_next_impl(json_t *object, void *iter)
--{
--    return json_object_iter_next_ptr(object, iter);
--}
--
--
--json_t *
--json_object_iter_value_impl(void *iter)
--{
--    return json_object_iter_value_ptr(iter);
--}
--
--
--void *
--json_object_key_to_iter_impl(const char *key)
--{
--    return json_object_key_to_iter_ptr(key);
--}
--
--
--int
--json_object_set_new_impl(json_t *object, const char *key, json_t *value)
--{
--    return json_object_set_new_ptr(object, key, value);
--}
--
--
--json_t *
--json_real_impl(double value)
--{
--    return json_real_ptr(value);
--}
--
--
--double
--json_real_value_impl(const json_t *real)
--{
--    return json_real_value_ptr(real);
--}
--
--
--json_t *
--json_string_impl(const char *value)
--{
--    return json_string_ptr(value);
--}
--
--
--const char *
--json_string_value_impl(const json_t *string)
--{
--    return json_string_value_ptr(string);
--}
--
--
--json_t *
--json_true_impl(void)
--{
--    return json_true_ptr();
--}
--
--
--#else /* !WITH_JANSSON */
--
--
--int
--virJSONInitialize(void)
--{
--    return 0;
--}
--
--
--#endif /* !WITH_JANSSON */
-diff -urNpa libvirt-4.6.0.orig/src/util/virjsoncompat.h libvirt-4.6.0/src/util/virjsoncompat.h
---- libvirt-4.6.0.orig/src/util/virjsoncompat.h        2018-08-02 03:58:35.117820079 +0000
-+++ libvirt-4.6.0/src/util/virjsoncompat.h     1970-01-01 00:00:00.000000000 +0000
-@@ -1,88 +0,0 @@
--/*
-- * virjsoncompat.h: JSON object parsing/formatting
-- *
-- * Copyright (C) 2018 Red Hat, Inc.
-- *
-- * This library is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU Lesser General Public
-- * License as published by the Free Software Foundation; either
-- * version 2.1 of the License, or (at your option) any later version.
-- *
-- * This library is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-- * Lesser General Public License for more details.
-- *
-- * You should have received a copy of the GNU Lesser General Public
-- * License along with this library.  If not, see
-- * <http://www.gnu.org/licenses/>.
-- *
-- */
--
--
--#ifndef __VIR_JSON_COMPAT_H_
--# define __VIR_JSON_COMPAT_H_
--
--# if WITH_JANSSON
--#  ifndef VIR_JSON_COMPAT_IMPL
--
--#   define json_array json_array_impl
--#   define json_array_append_new json_array_append_new_impl
--#   define json_array_get json_array_get_impl
--#   define json_array_size json_array_size_impl
--#   define json_delete json_delete_impl
--#   define json_dumps json_dumps_impl
--#   define json_false json_false_impl
--#   define json_integer json_integer_impl
--#   define json_integer_value json_integer_value_impl
--#   define json_loads json_loads_impl
--#   define json_null json_null_impl
--#   define json_object json_object_impl
--#   define json_object_iter json_object_iter_impl
--#   define json_object_iter_key json_object_iter_key_impl
--#   define json_object_iter_next json_object_iter_next_impl
--#   define json_object_iter_value json_object_iter_value_impl
--#   define json_object_key_to_iter json_object_key_to_iter_impl
--#   define json_object_set_new json_object_set_new_impl
--#   define json_real json_real_impl
--#   define json_real_value json_real_value_impl
--#   define json_string json_string_impl
--#   define json_string_value json_string_value_impl
--#   define json_true json_true_impl
--
--#  endif /* ! VIR_JSON_COMPAT_IMPL */
--
--#  include <jansson.h>
--
--#  ifdef VIR_JSON_COMPAT_IMPL
--
--json_t *json_array_impl(void);
--int json_array_append_new_impl(json_t *array, json_t *value);
--json_t *json_array_get_impl(const json_t *array, size_t index);
--size_t json_array_size_impl(const json_t *array);
--void json_delete_impl(json_t *json);
--char *json_dumps_impl(const json_t *json, size_t flags);
--json_t *json_false_impl(void);
--json_t *json_integer_impl(json_int_t value);
--json_int_t json_integer_value_impl(const json_t *integer);
--json_t *json_loads_impl(const char *input, size_t flags, json_error_t *error);
--json_t *json_null_impl(void);
--json_t *json_object_impl(void);
--void *json_object_iter_impl(json_t *object);
--const char *json_object_iter_key_impl(void *iter);
--void *json_object_iter_next_impl(json_t *object, void *iter);
--json_t *json_object_iter_value_impl(void *iter);
--void *json_object_key_to_iter_impl(const char *key);
--int json_object_set_new_impl(json_t *object, const char *key, json_t *value);
--json_t *json_real_impl(double value);
--double json_real_value_impl(const json_t *real);
--json_t *json_string_impl(const char *value);
--const char *json_string_value_impl(const json_t *string);
--json_t *json_true_impl(void);
--
--#  endif /* VIR_JSON_COMPAT_IMPL */
--# endif /* WITH_JANSSON */
--
--int virJSONInitialize(void);
--
--#endif /* __VIR_JSON_COMPAT_H_ */
-diff -urNpa libvirt-4.6.0.orig/src/util/virjson.h libvirt-4.6.0/src/util/virjson.h
---- libvirt-4.6.0.orig/src/util/virjson.h      2018-07-28 13:26:44.464463065 +0000
-+++ libvirt-4.6.0/src/util/virjson.h   2018-08-20 18:00:20.576398013 +0000
-@@ -59,6 +59,7 @@ int virJSONValueObjectAddVArgs(virJSONVa
- virJSONValuePtr virJSONValueNewString(const char *data);
-+virJSONValuePtr virJSONValueNewStringLen(const char *data, size_t length);
- virJSONValuePtr virJSONValueNewNumberInt(int data);
- virJSONValuePtr virJSONValueNewNumberUint(unsigned int data);
- virJSONValuePtr virJSONValueNewNumberLong(long long data);
-diff -urNpa libvirt-4.6.0.orig/tests/cputest.c libvirt-4.6.0/tests/cputest.c
---- libvirt-4.6.0.orig/tests/cputest.c 2018-07-28 13:26:44.475462965 +0000
-+++ libvirt-4.6.0/tests/cputest.c      2018-08-20 18:00:20.576398013 +0000
-@@ -40,7 +40,7 @@
- #include "cpu/cpu_map.h"
- #include "virstring.h"
--#if WITH_QEMU && WITH_JANSSON
-+#if WITH_QEMU && WITH_YAJL
- # include "testutilsqemu.h"
- # include "qemumonitortestutils.h"
- # define __QEMU_CAPSPRIV_H_ALLOW__
-@@ -67,7 +67,7 @@ struct data {
-     int result;
- };
--#if WITH_QEMU && WITH_JANSSON
-+#if WITH_QEMU && WITH_YAJL
- static virQEMUDriver driver;
- #endif
-@@ -479,7 +479,7 @@ typedef enum {
-     JSON_MODELS_REQUIRED,
- } cpuTestCPUIDJson;
--#if WITH_QEMU && WITH_JANSSON
-+#if WITH_QEMU && WITH_YAJL
- static virQEMUCapsPtr
- cpuTestMakeQEMUCaps(const struct data *data)
- {
-@@ -554,7 +554,7 @@ cpuTestGetCPUModels(const struct data *d
-     return 0;
- }
--#else /* if WITH_QEMU && WITH_JANSSON */
-+#else /* if WITH_QEMU && WITH_YAJL */
- static int
- cpuTestGetCPUModels(const struct data *data,
-@@ -834,7 +834,7 @@ cpuTestUpdateLive(const void *arg)
- }
--#if WITH_QEMU && WITH_JANSSON
-+#if WITH_QEMU && WITH_YAJL
- static int
- cpuTestJSONCPUID(const void *arg)
- {
-@@ -911,7 +911,7 @@ mymain(void)
-     virDomainCapsCPUModelsPtr ppc_models = NULL;
-     int ret = 0;
--#if WITH_QEMU && WITH_JANSSON
-+#if WITH_QEMU && WITH_YAJL
-     if (qemuTestDriverInit(&driver) < 0)
-         return EXIT_FAILURE;
-@@ -1004,7 +1004,7 @@ mymain(void)
-             host "/" cpu " (" #models ")", \
-             host, cpu, models, 0, result)
--#if WITH_QEMU && WITH_JANSSON
-+#if WITH_QEMU && WITH_YAJL
- # define DO_TEST_JSON(arch, host, json) \
-     do { \
-         if (json == JSON_MODELS) { \
-@@ -1205,7 +1205,7 @@ mymain(void)
-     DO_TEST_CPUID(VIR_ARCH_X86_64, "Xeon-X5460", JSON_NONE);
-  cleanup:
--#if WITH_QEMU && WITH_JANSSON
-+#if WITH_QEMU && WITH_YAJL
-     qemuTestDriverFree(&driver);
- #endif
-diff -urNpa libvirt-4.6.0.orig/tests/libxlxml2domconfigtest.c libvirt-4.6.0/tests/libxlxml2domconfigtest.c
---- libvirt-4.6.0.orig/tests/libxlxml2domconfigtest.c  2018-08-06 09:22:16.558995687 +0000
-+++ libvirt-4.6.0/tests/libxlxml2domconfigtest.c       2018-08-20 18:00:20.576398013 +0000
-@@ -33,7 +33,7 @@
- #include "testutils.h"
--#if defined(WITH_LIBXL) && defined(WITH_JANSSON) && defined(HAVE_LIBXL_DOMAIN_CONFIG_FROM_JSON)
-+#if defined(WITH_LIBXL) && defined(WITH_YAJL) && defined(HAVE_LIBXL_DOMAIN_CONFIG_FROM_JSON)
- # include "internal.h"
- # include "viralloc.h"
-@@ -228,4 +228,4 @@ int main(void)
-     return EXIT_AM_SKIP;
- }
--#endif /* WITH_LIBXL && WITH_JANSSON && HAVE_LIBXL_DOMAIN_CONFIG_FROM_JSON */
-+#endif /* WITH_LIBXL && WITH_YAJL && HAVE_LIBXL_DOMAIN_CONFIG_FROM_JSON */
-diff -urNpa libvirt-4.6.0.orig/tests/Makefile.am libvirt-4.6.0/tests/Makefile.am
---- libvirt-4.6.0.orig/tests/Makefile.am       2018-07-28 13:26:44.475462965 +0000
-+++ libvirt-4.6.0/tests/Makefile.am    2018-08-20 18:00:20.576398013 +0000
-@@ -46,7 +46,7 @@ AM_CFLAGS = \
-       $(SASL_CFLAGS) \
-       $(SELINUX_CFLAGS) \
-       $(APPARMOR_CFLAGS) \
--      $(JANSSON_CFLAGS) \
-+      $(YAJL_CFLAGS) \
-       $(COVERAGE_CFLAGS) \
-       $(XDR_CFLAGS) \
-       $(WARN_CFLAGS)
-@@ -331,9 +331,9 @@ if WITH_CIL
- test_programs += objectlocking
- endif WITH_CIL
--if WITH_JANSSON
-+if WITH_YAJL
- test_programs += virjsontest
--endif WITH_JANSSON
-+endif WITH_YAJL
- test_programs += \
-               networkxml2xmltest \
-@@ -1219,15 +1219,15 @@ virdeterministichashmock_la_LIBADD = $(M
- test_libraries += virdeterministichashmock.la
--if WITH_JANSSON
-+if WITH_YAJL
- virmacmaptest_SOURCES = \
-       virmacmaptest.c testutils.h testutils.c
- virmacmaptest_LDADD = $(LDADDS)
- test_programs += virmacmaptest
--else ! WITH_JANSSON
-+else ! WITH_YAJL
- EXTRA_DIST +=  virmacmaptest.c
--endif ! WITH_JANSSON
-+endif ! WITH_YAJL
- virnetdevtest_SOURCES = \
-       virnetdevtest.c testutils.h testutils.c
-diff -urNpa libvirt-4.6.0.orig/tests/qemuagenttest.c libvirt-4.6.0/tests/qemuagenttest.c
---- libvirt-4.6.0.orig/tests/qemuagenttest.c   2018-07-28 13:26:44.477462947 +0000
-+++ libvirt-4.6.0/tests/qemuagenttest.c        2018-08-20 18:00:20.576398013 +0000
-@@ -907,8 +907,8 @@ mymain(void)
- {
-     int ret = 0;
--#if !WITH_STABLE_ORDERING_JANSSON
--    fputs("libvirt not compiled with recent enough Jansson, skipping this test\n", stderr);
-+#if !WITH_YAJL
-+    fputs("libvirt not compiled with JSON support, skipping this test\n", stderr);
-     return EXIT_AM_SKIP;
- #endif
-diff -urNpa libvirt-4.6.0.orig/tests/qemublocktest.c libvirt-4.6.0/tests/qemublocktest.c
---- libvirt-4.6.0.orig/tests/qemublocktest.c   2018-07-28 13:26:44.477462947 +0000
-+++ libvirt-4.6.0/tests/qemublocktest.c        2018-08-20 18:00:20.577398013 +0000
-@@ -309,7 +309,6 @@ testQemuDiskXMLToPropsValidateFile(const
-             goto cleanup;
-         virBufferAdd(&buf, jsonstr, -1);
--        virBufferAddLit(&buf, "\n");
-         VIR_FREE(jsonstr);
-     }
-@@ -337,11 +336,6 @@ mymain(void)
-     char *capslatest_x86_64 = NULL;
-     virQEMUCapsPtr caps_x86_64 = NULL;
--#if !WITH_STABLE_ORDERING_JANSSON
--    fputs("libvirt not compiled with recent enough Jansson, skipping this test\n", stderr);
--    return EXIT_AM_SKIP;
--#endif
--
-     if (qemuTestDriverInit(&driver) < 0)
-         return EXIT_FAILURE;
-diff -urNpa libvirt-4.6.0.orig/tests/qemucapabilitiestest.c libvirt-4.6.0/tests/qemucapabilitiestest.c
---- libvirt-4.6.0.orig/tests/qemucapabilitiestest.c    2018-07-28 13:26:44.484462883 +0000
-+++ libvirt-4.6.0/tests/qemucapabilitiestest.c 2018-08-20 18:00:20.577398013 +0000
-@@ -141,12 +141,7 @@ mymain(void)
-     int ret = 0;
-     testQemuData data;
--#if !WITH_STABLE_ORDERING_JANSSON
--    fputs("libvirt not compiled with recent enough Jansson, skipping this test\n", stderr);
--    return EXIT_AM_SKIP;
--#endif
--
--#if !WITH_JANSSON
-+#if !WITH_YAJL
-     fputs("libvirt not compiled with JSON support, skipping this test\n", stderr);
-     return EXIT_AM_SKIP;
- #endif
-diff -urNpa libvirt-4.6.0.orig/tests/qemucaps2xmltest.c libvirt-4.6.0/tests/qemucaps2xmltest.c
---- libvirt-4.6.0.orig/tests/qemucaps2xmltest.c        2018-07-28 13:26:44.484462883 +0000
-+++ libvirt-4.6.0/tests/qemucaps2xmltest.c     2018-08-20 18:00:20.577398013 +0000
-@@ -165,7 +165,7 @@ mymain(void)
-     testQemuData data;
--#if !WITH_JANSSON
-+#if !WITH_YAJL
-     fputs("libvirt not compiled with JSON support, skipping this test\n", stderr);
-     return EXIT_AM_SKIP;
- #endif
-diff -urNpa libvirt-4.6.0.orig/tests/qemucapsprobemock.c libvirt-4.6.0/tests/qemucapsprobemock.c
---- libvirt-4.6.0.orig/tests/qemucapsprobemock.c       2018-08-02 03:58:35.117820079 +0000
-+++ libvirt-4.6.0/tests/qemucapsprobemock.c    2018-08-20 18:00:20.577398013 +0000
-@@ -76,7 +76,6 @@ qemuMonitorSend(qemuMonitorPtr mon,
-         printLineSkipEmpty("\n", stdout);
-     printLineSkipEmpty(reformatted, stdout);
--    printLineSkipEmpty("\n", stdout);
-     VIR_FREE(reformatted);
-     return realQemuMonitorSend(mon, msg);
-@@ -117,7 +116,6 @@ qemuMonitorJSONIOProcessLine(qemuMonitor
-             printLineSkipEmpty("\n", stdout);
-         printLineSkipEmpty(json, stdout);
--        printLineSkipEmpty("\n", stdout);
-     }
-  cleanup:
-diff -urNpa libvirt-4.6.0.orig/tests/qemucommandutiltest.c libvirt-4.6.0/tests/qemucommandutiltest.c
---- libvirt-4.6.0.orig/tests/qemucommandutiltest.c     2018-07-28 13:26:44.484462883 +0000
-+++ libvirt-4.6.0/tests/qemucommandutiltest.c  2018-08-20 18:00:20.577398013 +0000
-@@ -76,12 +76,7 @@ mymain(void)
-     int ret = 0;
-     testQemuCommandBuildObjectFromJSONData data1;
--#if !WITH_STABLE_ORDERING_JANSSON
--    fputs("libvirt not compiled with recent enough Jansson, skipping this test\n", stderr);
--    return EXIT_AM_SKIP;
--#endif
--
--#if !WITH_JANSSON
-+#if !WITH_YAJL
-     fputs("libvirt not compiled with JSON support, skipping this test\n", stderr);
-     return EXIT_AM_SKIP;
- #endif
-diff -urNpa libvirt-4.6.0.orig/tests/qemuhotplugtest.c libvirt-4.6.0/tests/qemuhotplugtest.c
---- libvirt-4.6.0.orig/tests/qemuhotplugtest.c 2018-07-28 13:26:44.484462883 +0000
-+++ libvirt-4.6.0/tests/qemuhotplugtest.c      2018-08-20 18:00:20.577398013 +0000
-@@ -593,12 +593,7 @@ mymain(void)
-     struct qemuHotplugTestData data = {0};
-     struct testQemuHotplugCpuParams cpudata;
--#if !WITH_STABLE_ORDERING_JANSSON
--    fputs("libvirt not compiled with recent enough Jansson, skipping this test\n", stderr);
--    return EXIT_AM_SKIP;
--#endif
--
--#if !WITH_JANSSON
-+#if !WITH_YAJL
-     fputs("libvirt not compiled with JSON support, skipping this test\n", stderr);
-     return EXIT_AM_SKIP;
- #endif
-diff -urNpa libvirt-4.6.0.orig/tests/qemumigparamsdata/empty.json libvirt-4.6.0/tests/qemumigparamsdata/empty.json
---- libvirt-4.6.0.orig/tests/qemumigparamsdata/empty.json      2018-07-28 13:26:44.484462883 +0000
-+++ libvirt-4.6.0/tests/qemumigparamsdata/empty.json   2018-08-20 18:00:20.577398013 +0000
-@@ -1 +1,3 @@
--{}
-+{
-+
-+}
-diff -urNpa libvirt-4.6.0.orig/tests/qemumigparamsdata/unsupported.json libvirt-4.6.0/tests/qemumigparamsdata/unsupported.json
---- libvirt-4.6.0.orig/tests/qemumigparamsdata/unsupported.json        2018-07-28 13:26:44.485462874 +0000
-+++ libvirt-4.6.0/tests/qemumigparamsdata/unsupported.json     2018-08-20 18:00:20.577398013 +0000
-@@ -1 +1,3 @@
--{}
-+{
-+
-+}
-diff -urNpa libvirt-4.6.0.orig/tests/qemumigparamstest.c libvirt-4.6.0/tests/qemumigparamstest.c
---- libvirt-4.6.0.orig/tests/qemumigparamstest.c       2018-07-28 13:26:44.485462874 +0000
-+++ libvirt-4.6.0/tests/qemumigparamstest.c    2018-08-20 18:00:20.577398013 +0000
-@@ -203,12 +203,7 @@ mymain(void)
-     virQEMUDriver driver;
-     int ret = 0;
--#if !WITH_STABLE_ORDERING_JANSSON
--    fputs("libvirt not compiled with recent enough Jansson, skipping this test\n", stderr);
--    return EXIT_AM_SKIP;
--#endif
--
--#if !WITH_JANSSON
-+#if !WITH_YAJL
-     fputs("libvirt not compiled with JSON support, skipping this test\n", stderr);
-     return EXIT_AM_SKIP;
- #endif
-diff -urNpa libvirt-4.6.0.orig/tests/qemumonitorjsontest.c libvirt-4.6.0/tests/qemumonitorjsontest.c
---- libvirt-4.6.0.orig/tests/qemumonitorjsontest.c     2018-07-28 13:26:44.485462874 +0000
-+++ libvirt-4.6.0/tests/qemumonitorjsontest.c  2018-08-20 18:00:20.578398013 +0000
-@@ -2863,12 +2863,7 @@ mymain(void)
-     virJSONValuePtr metaschema = NULL;
-     char *metaschemastr = NULL;
--#if !WITH_STABLE_ORDERING_JANSSON
--    fputs("libvirt not compiled with recent enough Jansson, skipping this test\n", stderr);
--    return EXIT_AM_SKIP;
--#endif
--
--#if !WITH_JANSSON
-+#if !WITH_YAJL
-     fputs("libvirt not compiled with JSON support, skipping this test\n", stderr);
-     return EXIT_AM_SKIP;
- #endif
-diff -urNpa libvirt-4.6.0.orig/tests/virjsontest.c libvirt-4.6.0/tests/virjsontest.c
---- libvirt-4.6.0.orig/tests/virjsontest.c     2018-07-28 13:26:44.505462692 +0000
-+++ libvirt-4.6.0/tests/virjsontest.c  2018-08-20 18:00:20.578398013 +0000
-@@ -479,11 +479,6 @@ mymain(void)
- {
-     int ret = 0;
--#if !WITH_STABLE_ORDERING_JANSSON
--    fputs("libvirt not compiled with recent enough Jansson, skipping this test\n", stderr);
--    return EXIT_AM_SKIP;
--#endif
--
- #define DO_TEST_FULL(name, cmd, doc, expect, pass) \
-     do { \
-         struct testInfo info = { doc, expect, pass }; \
-diff -urNpa libvirt-4.6.0.orig/tests/virmacmaptest.c libvirt-4.6.0/tests/virmacmaptest.c
---- libvirt-4.6.0.orig/tests/virmacmaptest.c   2018-07-28 13:26:44.505462692 +0000
-+++ libvirt-4.6.0/tests/virmacmaptest.c        2018-08-20 18:00:20.578398013 +0000
-@@ -157,11 +157,6 @@ mymain(void)
-     int ret = 0;
-     virMacMapPtr mgr = NULL;
--#if !WITH_STABLE_ORDERING_JANSSON
--    fputs("libvirt not compiled with recent enough Jansson, skipping this test\n", stderr);
--    return EXIT_AM_SKIP;
--#endif
--
- #define DO_TEST_BASIC(f, d, ...) \
-     do { \
-         const char * const m[] = {__VA_ARGS__, NULL }; \
-diff -urNpa libvirt-4.6.0.orig/tests/virmacmaptestdata/empty.json libvirt-4.6.0/tests/virmacmaptestdata/empty.json
---- libvirt-4.6.0.orig/tests/virmacmaptestdata/empty.json      2018-07-28 13:26:44.505462692 +0000
-+++ libvirt-4.6.0/tests/virmacmaptestdata/empty.json   2018-08-20 18:00:20.578398013 +0000
-@@ -1 +1,3 @@
--[]
-+[
-+
-+]
-diff -urNpa libvirt-4.6.0.orig/tests/virmocklibxl.c libvirt-4.6.0/tests/virmocklibxl.c
---- libvirt-4.6.0.orig/tests/virmocklibxl.c    2018-07-28 13:26:44.505462692 +0000
-+++ libvirt-4.6.0/tests/virmocklibxl.c 2018-08-20 18:00:20.578398013 +0000
-@@ -22,7 +22,7 @@
- #include <config.h>
--#if defined(WITH_LIBXL) && defined(WITH_JANSSON)
-+#if defined(WITH_LIBXL) && defined(WITH_YAJL)
- # include "virmock.h"
- # include <sys/stat.h>
- # include <unistd.h>
-@@ -136,4 +136,4 @@ VIR_MOCK_IMPL_RET_ARGS(stat, int,
-     return real_stat(path, sb);
- }
--#endif /* WITH_LIBXL && WITH_JANSSON */
-+#endif /* WITH_LIBXL && WITH_YAJL */
-diff -urNpa libvirt-4.6.0.orig/tests/virnetdaemontest.c libvirt-4.6.0/tests/virnetdaemontest.c
---- libvirt-4.6.0.orig/tests/virnetdaemontest.c        2018-07-28 13:26:44.506462683 +0000
-+++ libvirt-4.6.0/tests/virnetdaemontest.c     2018-08-20 18:00:20.578398013 +0000
-@@ -26,7 +26,7 @@
- #define VIR_FROM_THIS VIR_FROM_RPC
--#if defined(HAVE_SOCKETPAIR) && defined(WITH_JANSSON)
-+#if defined(HAVE_SOCKETPAIR) && defined(WITH_YAJL)
- struct testClientPriv {
-     int magic;
- };
-@@ -375,11 +375,6 @@ mymain(void)
-     int ret = 0;
-     const char *server_names[] = { "testServer0", "testServer1" };
--# if !WITH_STABLE_ORDERING_JANSSON
--    fputs("libvirt not compiled with recent enough Jansson, skipping this test\n", stderr);
--    return EXIT_AM_SKIP;
--# endif
--
-     if (virInitialize() < 0 ||
-         virEventRegisterDefaultImpl() < 0) {
-         virDispatchError(NULL);
-diff -urNpa libvirt-4.6.0.orig/tests/virstoragetest.c libvirt-4.6.0/tests/virstoragetest.c
---- libvirt-4.6.0.orig/tests/virstoragetest.c  2018-07-28 13:26:44.506462683 +0000
-+++ libvirt-4.6.0/tests/virstoragetest.c       2018-08-20 18:00:20.578398013 +0000
-@@ -1317,7 +1317,7 @@ mymain(void)
-                        "  <host name='example.org' port='6000'/>\n"
-                        "</source>\n");
--#ifdef WITH_JANSSON
-+#ifdef WITH_YAJL
-     TEST_BACKING_PARSE("json:", NULL);
-     TEST_BACKING_PARSE("json:asdgsdfg", NULL);
-     TEST_BACKING_PARSE("json:{}", NULL);
-@@ -1581,7 +1581,7 @@ mymain(void)
-                        "<source protocol='vxhs' name='c6718f6b-0401-441d-a8c3-1f0064d75ee0'>\n"
-                        "  <host name='example.com' port='9999'/>\n"
-                        "</source>\n");
--#endif /* WITH_JANSSON */
-+#endif /* WITH_YAJL */
-  cleanup:
-     /* Final cleanup */