summary refs log tree commit diff
path: root/gnu/packages/cpp.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/cpp.scm')
-rw-r--r--gnu/packages/cpp.scm30
1 files changed, 17 insertions, 13 deletions
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 1c98e381ab..6aac60d284 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -206,7 +206,7 @@ as ordering relation.")
 (define-public json-modern-cxx
   (package
     (name "json-modern-cxx")
-    (version "3.1.2")
+    (version "3.7.0")
     (home-page "https://github.com/nlohmann/json")
     (source
      (origin
@@ -215,30 +215,34 @@ as ordering relation.")
                            (commit (string-append "v" version))))
        (sha256
         (base32
-         "1mpr781fb2dfbyscrr7nil75lkxsazg4wkm749168lcf2ksrrbfi"))
+         "0v7xih4zjixxxfvkfbs7a8j9qcvpwlsv4vrkbyns3hc7b44nb8ap"))
        (file-name (git-file-name name version))
        (modules '((guix build utils)))
        (snippet
         '(begin
-           (delete-file-recursively "./third_party")
-           (delete-file-recursively "./test/thirdparty")
-           (delete-file-recursively "./benchmarks/thirdparty")
-           ;; Splits catch and fifo_map
+           ;; Delete bundled software.  Preserve doctest_compatibility.h, which
+           ;; is a wrapper library added by this package.
+           (install-file "./test/thirdparty/doctest/doctest_compatibility.h" "/tmp")
+           (for-each delete-file-recursively
+                     '("./third_party" "./test/thirdparty" "./benchmarks/thirdparty"))
+           (install-file "/tmp/doctest_compatibility.h" "./test/thirdparty/doctest")
+
+           ;; Adjust for the unbundled fifo_map and doctest.
+           (substitute* "./test/thirdparty/doctest/doctest_compatibility.h"
+             (("#include \"doctest\\.h\"")
+              "#include <doctest/doctest.h>"))
            (with-directory-excursion "test/src"
-             (let ((files (find-files "." ".*\\.cpp")))
-               (substitute* files
-                 (("#include ?\"(catch.hpp)\"" all catch-hpp)
-                  (string-append "#include <catch/" catch-hpp ">")))
+             (let ((files (find-files "." "\\.cpp$")))
                (substitute* files
                  (("#include ?\"(fifo_map.hpp)\"" all fifo-map-hpp)
                   (string-append
                    "#include <fifo_map/" fifo-map-hpp ">")))))
            #t))))
     (native-inputs
-     `(("amalgamate" ,amalgamate)))
+     `(("amalgamate" ,amalgamate)
+       ("doctest" ,doctest)))
     (inputs
-     `(("catch2" ,catch-framework2)
-       ("fifo-map" ,fifo-map)))
+     `(("fifo-map" ,fifo-map)))
     (build-system cmake-build-system)
     (synopsis "JSON parser and printer library for C++")
     (description "JSON for Modern C++ is a C++ JSON library that provides