summary refs log tree commit diff
path: root/m4/guix.m4
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-09-07 23:12:27 +0200
committerLudovic Courtès <ludo@gnu.org>2020-09-08 00:47:35 +0200
commitb5eb901ab508e13a10d8c11fe0c9d0d06dddce96 (patch)
treee8555d5c52e27edf3dfa097c402964ccb24ffd0d /m4/guix.m4
parentd15c7974a2346ec0d379eba3fd60ef59012d9a80 (diff)
downloadguix-b5eb901ab508e13a10d8c11fe0c9d0d06dddce96.tar.gz
Remove (guix json) and require Guile-JSON 4.3.0+.
This is a followup to 4071879c86d059ee087c8986915ea72b8c742b72.

* guix/json.scm: Remove.
* Makefile.am (MODULES): Adjust accordingly.
* m4/guix.m4 (GUIX_CHECK_GUILE_JSON): Check for 'define-json-mapping'.
* doc/guix.texi (Requirements): Require Guile-JSON 4.3.0+.
* guix/ci.scm, guix/cve.scm, guix/import/cpan.scm,
guix/import/crate.scm, guix/swh.scm: Remove (guix json) import.
* guix/import/gem.scm, guix/import/pypi.scm: Likewise, and import (json).
* guix/self.scm (specification->package): Switch to GUILE-JSON-4.
* guix/git-download.scm (git-fetch): Likewise.
Diffstat (limited to 'm4/guix.m4')
-rw-r--r--m4/guix.m419
1 files changed, 14 insertions, 5 deletions
diff --git a/m4/guix.m4 b/m4/guix.m4
index 7256e792a5..2fcc65e039 100644
--- a/m4/guix.m4
+++ b/m4/guix.m4
@@ -161,14 +161,23 @@ dnl GUIX_CHECK_GUILE_JSON
 dnl
 dnl Check whether a recent-enough Guile-JSON is available.
 AC_DEFUN([GUIX_CHECK_GUILE_JSON], [
-  dnl Check whether we're using Guile-JSON 3.x, which uses a JSON-to-Scheme
-  dnl mapping different from that of earlier versions.
+  dnl Check whether we're using Guile-JSON 4.3+, which provides
+  dnl 'define-json-mapping'.
   AC_CACHE_CHECK([whether Guile-JSON is available and recent enough],
     [guix_cv_have_recent_guile_json],
     [GUILE_CHECK([retval],
-      [(use-modules (json) (ice-9 match))
-       (match (json-string->scm \"[[ { \\\"a\\\": 42 } ]]\")
-         (#((("a" . 42))) #t))])
+      [(use-modules (json))
+
+       (define-json-mapping <frob> make-frob
+         frob?
+	 json->frob
+	 (a frob-a)
+	 (b frob-b \"bee\"))
+
+       (exit
+        (equal? (json->frob
+                 (open-input-string \"{ \\\"a\\\": 1, \\\"bee\\\": 2 }\"))
+                (make-frob 1 2)))])
      if test "$retval" = 0; then
        guix_cv_have_recent_guile_json="yes"
      else