[XEN PATCH for-4.21] tools: require at least json-c 0.15

Anthony PERARD posted 1 patch 6 days, 10 hours ago
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/20251023085730.36628-1-anthony@xenproject.org
tools/configure    | 16 ++++++++--------
tools/configure.ac |  2 +-
2 files changed, 9 insertions(+), 9 deletions(-)
[XEN PATCH for-4.21] tools: require at least json-c 0.15
Posted by Anthony PERARD 6 days, 10 hours ago
From: Anthony PERARD <anthony.perard@vates.tech>

If not available, fallback to using YAJL.

The code is using json_c_visit() which was introduced in 0.13.
json_object_new_null() and json_object_new_uint64() where added to
0.14. And the last one json_object_new_array_ext() was introduced in
0.15.

Signed-off-by: Anthony PERARD <anthony.perard@vates.tech>
---
 tools/configure    | 16 ++++++++--------
 tools/configure.ac |  2 +-
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/tools/configure b/tools/configure
index 0eb7a0ab6a..d460f25529 100755
--- a/tools/configure
+++ b/tools/configure
@@ -9642,12 +9642,12 @@ if test -n "$libjsonc_CFLAGS"; then
     pkg_cv_libjsonc_CFLAGS="$libjsonc_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "json-c") 2>&5
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c >= 0.15\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "json-c >= 0.15") 2>&5
   ac_status=$?
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_libjsonc_CFLAGS=`$PKG_CONFIG --cflags "json-c" 2>/dev/null`
+  pkg_cv_libjsonc_CFLAGS=`$PKG_CONFIG --cflags "json-c >= 0.15" 2>/dev/null`
 		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -9659,12 +9659,12 @@ if test -n "$libjsonc_LIBS"; then
     pkg_cv_libjsonc_LIBS="$libjsonc_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "json-c") 2>&5
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c >= 0.15\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "json-c >= 0.15") 2>&5
   ac_status=$?
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_libjsonc_LIBS=`$PKG_CONFIG --libs "json-c" 2>/dev/null`
+  pkg_cv_libjsonc_LIBS=`$PKG_CONFIG --libs "json-c >= 0.15" 2>/dev/null`
 		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -9685,9 +9685,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        libjsonc_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "json-c" 2>&1`
+	        libjsonc_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "json-c >= 0.15" 2>&1`
         else
-	        libjsonc_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "json-c" 2>&1`
+	        libjsonc_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "json-c >= 0.15" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$libjsonc_PKG_ERRORS" >&5
diff --git a/tools/configure.ac b/tools/configure.ac
index 7267d02a04..285b4ea128 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -424,7 +424,7 @@ AC_SUBST([ZLIB_CFLAGS])
 AC_SUBST([ZLIB_LIBS])
 AX_CHECK_EXTFS
 AX_CHECK_PTHREAD
-PKG_CHECK_MODULES([libjsonc], [json-c],
+PKG_CHECK_MODULES([libjsonc], [json-c >= 0.15],
     [AC_DEFINE([HAVE_LIBJSONC], [1], [Use library json-c])],
     [AC_CHECK_LIB([yajl], [yajl_alloc],
         [AC_SUBST([YAJL_LIBS],[-lyajl])
-- 
Anthony PERARD
Re: [XEN PATCH for-4.21] tools: require at least json-c 0.15
Posted by Jason Andryuk 5 days ago
On 2025-10-23 04:57, Anthony PERARD wrote:
> From: Anthony PERARD <anthony.perard@vates.tech>
> 
> If not available, fallback to using YAJL.
> 
> The code is using json_c_visit() which was introduced in 0.13.
> json_object_new_null() and json_object_new_uint64() where added to
> 0.14. And the last one json_object_new_array_ext() was introduced in
> 0.15.
> 
> Signed-off-by: Anthony PERARD <anthony.perard@vates.tech>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
Re: [XEN PATCH for-4.21] tools: require at least json-c 0.15
Posted by Oleksii Kurochko 6 days, 4 hours ago
On 10/23/25 10:57 AM, Anthony PERARD wrote:
> From: Anthony PERARD<anthony.perard@vates.tech>
>
> If not available, fallback to using YAJL.
>
> The code is using json_c_visit() which was introduced in 0.13.
> json_object_new_null() and json_object_new_uint64() where added to
> 0.14. And the last one json_object_new_array_ext() was introduced in
> 0.15.
>
> Signed-off-by: Anthony PERARD<anthony.perard@vates.tech>

Release-Acked-by: Oleksii Kurochko<oleksii.kurochko@gmail.com>

Thanks.

~ Oleksii

> ---
>   tools/configure    | 16 ++++++++--------
>   tools/configure.ac |  2 +-
>   2 files changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/tools/configure b/tools/configure
> index 0eb7a0ab6a..d460f25529 100755
> --- a/tools/configure
> +++ b/tools/configure
> @@ -9642,12 +9642,12 @@ if test -n "$libjsonc_CFLAGS"; then
>       pkg_cv_libjsonc_CFLAGS="$libjsonc_CFLAGS"
>    elif test -n "$PKG_CONFIG"; then
>       if test -n "$PKG_CONFIG" && \
> -    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c\""; } >&5
> -  ($PKG_CONFIG --exists --print-errors "json-c") 2>&5
> +    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c >= 0.15\""; } >&5
> +  ($PKG_CONFIG --exists --print-errors "json-c >= 0.15") 2>&5
>     ac_status=$?
>     printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
>     test $ac_status = 0; }; then
> -  pkg_cv_libjsonc_CFLAGS=`$PKG_CONFIG --cflags "json-c" 2>/dev/null`
> +  pkg_cv_libjsonc_CFLAGS=`$PKG_CONFIG --cflags "json-c >= 0.15" 2>/dev/null`
>   		      test "x$?" != "x0" && pkg_failed=yes
>   else
>     pkg_failed=yes
> @@ -9659,12 +9659,12 @@ if test -n "$libjsonc_LIBS"; then
>       pkg_cv_libjsonc_LIBS="$libjsonc_LIBS"
>    elif test -n "$PKG_CONFIG"; then
>       if test -n "$PKG_CONFIG" && \
> -    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c\""; } >&5
> -  ($PKG_CONFIG --exists --print-errors "json-c") 2>&5
> +    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c >= 0.15\""; } >&5
> +  ($PKG_CONFIG --exists --print-errors "json-c >= 0.15") 2>&5
>     ac_status=$?
>     printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
>     test $ac_status = 0; }; then
> -  pkg_cv_libjsonc_LIBS=`$PKG_CONFIG --libs "json-c" 2>/dev/null`
> +  pkg_cv_libjsonc_LIBS=`$PKG_CONFIG --libs "json-c >= 0.15" 2>/dev/null`
>   		      test "x$?" != "x0" && pkg_failed=yes
>   else
>     pkg_failed=yes
> @@ -9685,9 +9685,9 @@ else
>           _pkg_short_errors_supported=no
>   fi
>           if test $_pkg_short_errors_supported = yes; then
> -	        libjsonc_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "json-c" 2>&1`
> +	        libjsonc_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "json-c >= 0.15" 2>&1`
>           else
> -	        libjsonc_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "json-c" 2>&1`
> +	        libjsonc_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "json-c >= 0.15" 2>&1`
>           fi
>   	# Put the nasty error message in config.log where it belongs
>   	echo "$libjsonc_PKG_ERRORS" >&5
> diff --git a/tools/configure.ac b/tools/configure.ac
> index 7267d02a04..285b4ea128 100644
> --- a/tools/configure.ac
> +++ b/tools/configure.ac
> @@ -424,7 +424,7 @@ AC_SUBST([ZLIB_CFLAGS])
>   AC_SUBST([ZLIB_LIBS])
>   AX_CHECK_EXTFS
>   AX_CHECK_PTHREAD
> -PKG_CHECK_MODULES([libjsonc], [json-c],
> +PKG_CHECK_MODULES([libjsonc], [json-c >= 0.15],
>       [AC_DEFINE([HAVE_LIBJSONC], [1], [Use library json-c])],
>       [AC_CHECK_LIB([yajl], [yajl_alloc],
>           [AC_SUBST([YAJL_LIBS],[-lyajl])
Re: [XEN PATCH for-4.21] tools: require at least json-c 0.15
Posted by Andrew Cooper 6 days, 4 hours ago
On 23/10/2025 9:57 am, Anthony PERARD wrote:
> From: Anthony PERARD <anthony.perard@vates.tech>
>
> If not available, fallback to using YAJL.
>
> The code is using json_c_visit() which was introduced in 0.13.
> json_object_new_null() and json_object_new_uint64() where added to
> 0.14. And the last one json_object_new_array_ext() was introduced in
> 0.15.
>
> Signed-off-by: Anthony PERARD <anthony.perard@vates.tech>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

However, you should adjust README and possibly Changelog.md to give this
new minimum version.
Re: [XEN PATCH for-4.21] tools: require at least json-c 0.15
Posted by Anthony PERARD 6 days, 4 hours ago
On Thu, Oct 23, 2025 at 03:45:55PM +0100, Andrew Cooper wrote:
> On 23/10/2025 9:57 am, Anthony PERARD wrote:
> > From: Anthony PERARD <anthony.perard@vates.tech>
> >
> > If not available, fallback to using YAJL.
> >
> > The code is using json_c_visit() which was introduced in 0.13.
> > json_object_new_null() and json_object_new_uint64() where added to
> > 0.14. And the last one json_object_new_array_ext() was introduced in
> > 0.15.
> >
> > Signed-off-by: Anthony PERARD <anthony.perard@vates.tech>
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> However, you should adjust README and possibly Changelog.md to give this
> new minimum version.


Will this do?

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0cf9ad2d95..fc4f6d7c8a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,8 +14,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
  - Debian Trixie added to CI.  Debian Bullseye retired from CI for RISC-V due
    to the baseline change.
  - Linux based device model stubdomains are now fully supported.
- - New dependency on library json-c, the toolstack will prefer it to `YAJL`
-   when available.
+ - New dependency on library json-c 0.15 or later, the toolstack will prefer it
+   to `YAJL` when available.

  - On x86:
    - Restrict the cache flushing done as a result of guest physical memory map
diff --git a/README b/README
index eaee78bd73..53a4d5c2ae 100644
--- a/README
+++ b/README
@@ -53,7 +53,8 @@ provided by your OS distributor:
     * Development install of Python 2.7 or later (e.g., python-dev)
     * Development install of curses (e.g., libncurses-dev)
     * Development install of uuid (e.g. uuid-dev)
-    * Development install of json-c (e.g. libjson-c-dev) or yajl (e.g. libyajl-dev)
+    * Development install of json-c 0.15 or later (e.g. libjson-c-dev)
+      or yajl (e.g. libyajl-dev)
     * Development install of libaio (e.g. libaio-dev) version 0.3.107 or
       greater.
     * Development install of GLib v2.0 (e.g. libglib2.0-dev)

Cheers,

-- 
Anthony PERARD
Re: [XEN PATCH for-4.21] tools: require at least json-c 0.15
Posted by Andrew Cooper 6 days, 4 hours ago
On 23/10/2025 4:04 pm, Anthony PERARD wrote:
> On Thu, Oct 23, 2025 at 03:45:55PM +0100, Andrew Cooper wrote:
>> On 23/10/2025 9:57 am, Anthony PERARD wrote:
>>> From: Anthony PERARD <anthony.perard@vates.tech>
>>>
>>> If not available, fallback to using YAJL.
>>>
>>> The code is using json_c_visit() which was introduced in 0.13.
>>> json_object_new_null() and json_object_new_uint64() where added to
>>> 0.14. And the last one json_object_new_array_ext() was introduced in
>>> 0.15.
>>>
>>> Signed-off-by: Anthony PERARD <anthony.perard@vates.tech>
>> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>
>> However, you should adjust README and possibly Changelog.md to give this
>> new minimum version.
>
> Will this do?
>
> diff --git a/CHANGELOG.md b/CHANGELOG.md
> index 0cf9ad2d95..fc4f6d7c8a 100644
> --- a/CHANGELOG.md
> +++ b/CHANGELOG.md
> @@ -14,8 +14,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
>   - Debian Trixie added to CI.  Debian Bullseye retired from CI for RISC-V due
>     to the baseline change.
>   - Linux based device model stubdomains are now fully supported.
> - - New dependency on library json-c, the toolstack will prefer it to `YAJL`
> -   when available.
> + - New dependency on library json-c 0.15 or later, the toolstack will prefer it
> +   to `YAJL` when available.
>
>   - On x86:
>     - Restrict the cache flushing done as a result of guest physical memory map
> diff --git a/README b/README
> index eaee78bd73..53a4d5c2ae 100644
> --- a/README
> +++ b/README
> @@ -53,7 +53,8 @@ provided by your OS distributor:
>      * Development install of Python 2.7 or later (e.g., python-dev)
>      * Development install of curses (e.g., libncurses-dev)
>      * Development install of uuid (e.g. uuid-dev)
> -    * Development install of json-c (e.g. libjson-c-dev) or yajl (e.g. libyajl-dev)
> +    * Development install of json-c 0.15 or later (e.g. libjson-c-dev)
> +      or yajl (e.g. libyajl-dev)
>      * Development install of libaio (e.g. libaio-dev) version 0.3.107 or
>        greater.
>      * Development install of GLib v2.0 (e.g. libglib2.0-dev)

Yup.  LGTM.

~Andrew

Re: [XEN PATCH for-4.21] tools: require at least json-c 0.15
Posted by Oleksii Kurochko 6 days, 4 hours ago
On 10/23/25 5:04 PM, Anthony PERARD wrote:
> On Thu, Oct 23, 2025 at 03:45:55PM +0100, Andrew Cooper wrote:
>> On 23/10/2025 9:57 am, Anthony PERARD wrote:
>>> From: Anthony PERARD<anthony.perard@vates.tech>
>>>
>>> If not available, fallback to using YAJL.
>>>
>>> The code is using json_c_visit() which was introduced in 0.13.
>>> json_object_new_null() and json_object_new_uint64() where added to
>>> 0.14. And the last one json_object_new_array_ext() was introduced in
>>> 0.15.
>>>
>>> Signed-off-by: Anthony PERARD<anthony.perard@vates.tech>
>> Acked-by: Andrew Cooper<andrew.cooper3@citrix.com>
>>
>> However, you should adjust README and possibly Changelog.md to give this
>> new minimum version.
>
> Will this do?
>
> diff --git a/CHANGELOG.md b/CHANGELOG.md
> index 0cf9ad2d95..fc4f6d7c8a 100644
> --- a/CHANGELOG.md
> +++ b/CHANGELOG.md
> @@ -14,8 +14,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
>    - Debian Trixie added to CI.  Debian Bullseye retired from CI for RISC-V due
>      to the baseline change.
>    - Linux based device model stubdomains are now fully supported.
> - - New dependency on library json-c, the toolstack will prefer it to `YAJL`
> -   when available.
> + - New dependency on library json-c 0.15 or later, the toolstack will prefer it
> +   to `YAJL` when available.
>
>    - On x86:
>      - Restrict the cache flushing done as a result of guest physical memory map
> diff --git a/README b/README
> index eaee78bd73..53a4d5c2ae 100644
> --- a/README
> +++ b/README
> @@ -53,7 +53,8 @@ provided by your OS distributor:
>       * Development install of Python 2.7 or later (e.g., python-dev)
>       * Development install of curses (e.g., libncurses-dev)
>       * Development install of uuid (e.g. uuid-dev)
> -    * Development install of json-c (e.g. libjson-c-dev) or yajl (e.g. libyajl-dev)
> +    * Development install of json-c 0.15 or later (e.g. libjson-c-dev)
> +      or yajl (e.g. libyajl-dev)
>       * Development install of libaio (e.g. libaio-dev) version 0.3.107 or
>         greater.
>       * Development install of GLib v2.0 (e.g. libglib2.0-dev)
>
> Cheers,

LGTM. Free to add my:

  Acked-by: Oleksii Kurochko<oleksii.kurochko@gmail.com>

~ Oleksii

>
Re: [XEN PATCH for-4.21] tools: require at least json-c 0.15
Posted by Jan Beulich 6 days, 9 hours ago
On 23.10.2025 10:57, Anthony PERARD wrote:
> From: Anthony PERARD <anthony.perard@vates.tech>
> 
> If not available, fallback to using YAJL.
> 
> The code is using json_c_visit() which was introduced in 0.13.
> json_object_new_null() and json_object_new_uint64() where added to
> 0.14. And the last one json_object_new_array_ext() was introduced in
> 0.15.
> 
> Signed-off-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks for sorting this. I can't really offer R-b on this, and A-b would
(at least formally) be meaningless. If you nevertheless want to apply the
A-b, feel free to do so.

Jan