summary refs log tree commit diff
path: root/gnu/packages/ocaml.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ocaml.scm')
-rw-r--r--gnu/packages/ocaml.scm394
1 files changed, 285 insertions, 109 deletions
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 6d4f8c8836..0e8e5b2adc 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -591,31 +591,26 @@ for day to day programming.")
 (define-public ocaml-cudf
   (package
     (name "ocaml-cudf")
-    (version "0.9")
-    (source
-      (origin
-        (method url-fetch)
-        (uri "https://gforge.inria.fr/frs/download.php/36602/cudf-0.9.tar.gz")
-        (sha256
-          (base32
-            "0771lwljqwwn3cryl0plny5a5dyyrj4z6bw66ha5n8yfbpcy8clr"))))
-    (build-system ocaml-build-system)
-    (propagated-inputs (list ocaml-extlib))
-    (native-inputs
-      (list perl ocamlbuild ocaml-ounit))
+    (version "0.10")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://gitlab.com/irill/cudf")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1lvrmpscbk1kjv5ag5bzlzv520xk5zw2haf6q7chvz98gcm9g0hk"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:make-flags
-       ,#~(list
-           "all" "opt"
-           (string-append "BINDIR=" #$output "/bin"))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure))))
+     '(#:test-target "."))
+    (propagated-inputs (list ocaml-extlib))
+    (native-inputs (list ocaml-ounit2))
     (home-page "https://www.mancoosi.org/cudf/")
     (synopsis "CUDF library (part of the Mancoosi tools)")
-    (description "CUDF (for Common Upgradeability Description Format) is a
-format for describing upgrade scenarios in package-based Free and Open Source
-Software distribution.")
+    (description
+     "@acronym{CUDF, Common Upgradeability Description Format} is a format for
+describing upgrade scenarios in package-based software distributions.")
     ;; With static-linking exception
     (license license:lgpl2.1+)))
 
@@ -783,7 +778,7 @@ the opam file format.")
 (define-public opam
   (package
     (name "opam")
-    (version "2.1.2")
+    (version "2.1.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -792,7 +787,7 @@ the opam file format.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0mdr32mg63yaw89p44zx8b9dxp1167ckmlxkp8svd6fwgb3z49yx"))))
+                "1mw535zsw7xlvpgwnk1dan76z3f7lh5imlg0s6kdyhfg0iqisjd7"))))
     (build-system dune-build-system)
     (arguments
      `(#:test-target "."
@@ -827,6 +822,12 @@ the opam file format.")
              ;; home directory.
              (mkdir-p "test-home")
              (setenv "HOME" (string-append (getcwd) "/test-home"))
+             (with-output-to-file (string-append (getcwd) "/test-home/.gitconfig")
+               (lambda _
+                 (display "[user]
+email = guix@localhost.none
+name = Guix Builder")
+                 (newline)))
 
              ;; Opam tests require data from opam-repository. Instead of
              ;; downloading them with wget from the guix environment, copy the
@@ -837,11 +838,17 @@ the opam file format.")
                                (assoc-ref inputs (string-append "opam-repo-" commit))
                                "/ %{targets}) (run chmod +w -R %{targets}"))
                (("wget[^)]*") "touch %{targets}")
-               ;; Disable a failing test because of different line wrapping
-               (("diff cli-versioning.test cli-versioning.out") "run true")
                ;; Disable a failing test because it tries to clone a git
                ;; repository from inside bwrap
-               (("diff upgrade-format.test upgrade-format.out") "run true"))
+               (("diff upgrade-format.test upgrade-format.out") "run true")
+               ;; Disable a failing test because it tries to figure out which
+               ;; distro this is, and it doesn't know Guix
+               (("diff pin.unix.test pin.unix.out") "run true")
+               ;; Disable a failing test because of a failed expansion
+               (("diff opamroot-versions.test opamroot-versions.out") "run true")
+               ;; Disable a failing test, probably because the repository we
+               ;; replaced is not as expected
+               (("diff opamrt-big-upgrade.test opamrt-big-upgrade.out") "run true"))
              (substitute* "tests/reftests/dune"
                ;; Because of our changes to the previous file, we cannot check
                ;; it can be regenerated
@@ -879,6 +886,10 @@ the opam file format.")
          ;; Data for tests
          ("opam-repo-009e00fa" ,(opam-repo "009e00fa86300d11c311309a2544e5c6c3eb8de2"
                                            "1wwy0rwrsjf4q10j1rh1dazk32fbzhzy6f7zl6qmndidx9b1bq7w"))
+         ("opam-repo-7090735c" ,(opam-repo "7090735c9d1dd2dc481c4128c5ef4d3667238f15"
+                                           "1bccsgjhlp64lmvfjfn6viywf3x73ji75myg9ssf1ij1fkmabn0z"))
+         ("opam-repo-a5d7cdc0" ,(opam-repo "a5d7cdc0c91452b0aef4fa71c331ee5237f6dddd"
+                                           "0z7kawqisy07088p5xjxwpvmvzlbj1d9cgdipsj90yx7nc5qh369"))
          ("opam-repo-ad4dd344" ,(opam-repo "ad4dd344fe5cd1cab49ced49d6758a9844549fb4"
                                            "1a1qj47kj8xjdnc4zc50ijrix1kym1n7k20n3viki80a7518baw8"))
          ("opam-repo-c1d23f0e" ,(opam-repo "c1d23f0e17ec83a036ebfbad1c78311b898a2ca0"
@@ -1705,7 +1716,7 @@ full_split, cut, rcut, etc..")
 (define dune-bootstrap
   (package
     (name "dune")
-    (version "3.3.1")
+    (version "3.4.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1714,7 +1725,7 @@ full_split, cut, rcut, etc..")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0wdja70l7y1cj1d0sijm0q0cbics8xd9wqka7zyb29y1cc57pasa"))))
+                "02zn79l7y7rvy7b6bimlf5qymrvzc43w8q7l4jx3k8wzn2g5326z"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:tests? #f; require odoc
@@ -2428,7 +2439,7 @@ immutability.")
 (define-public ocaml-alcotest
   (package
     (name "ocaml-alcotest")
-    (version "1.5.0")
+    (version "1.6.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2437,7 +2448,7 @@ immutability.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1lgadc7p56677fi5gwl7r9bml4z87rzh50khhqaij7bwp37zrmpi"))))
+                "195612n7p8y5ba6n19glql7qffl8n3aqkl9nrlln5lb9739gpv4w"))))
     (build-system dune-build-system)
     (arguments
      `(#:package "alcotest"
@@ -2449,7 +2460,6 @@ immutability.")
              ;; cmdliner changed the format and the tests fail
              (substitute* "test/e2e/alcotest/failing/unknown_option.expected"
                (("`") "'")
-               (("COMMAND") "[COMMAND]")
                (("\\.\\.\\.") "…")))))))
     (native-inputs
      (list ocamlbuild))
@@ -2550,21 +2560,21 @@ lets the client choose the concrete timeline.")
 (define-public ocaml-ssl
   (package
     (name "ocaml-ssl")
-    (version "0.5.10")
+    (version "0.5.12")
     (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/savonet/ocaml-ssl")
-              (commit (string-append "v" version))))
+              (commit version)))
         (file-name (git-file-name name version))
         (sha256 (base32
-                  "1rszqiqayh67xlwd5411k8vib47x9kapdr037z1majd2c14z3kcb"))))
+                  "1dr7yghbv0wncvggd2105bj097msgrdzxd9wjkw1xxf2vvp0j1bi"))))
     (build-system dune-build-system)
     (arguments
      `(#:test-target "."))
     (native-inputs
-     (list autoconf automake which))
+     (list autoconf automake ocaml-alcotest which))
     (propagated-inputs (list openssl))
     (home-page "https://github.com/savonet/ocaml-ssl/")
     (synopsis "OCaml bindings for OpenSSL")
@@ -3753,7 +3763,7 @@ big- and little-endian, with their unsafe counter-parts.")
 (define-public ocaml-cstruct
   (package
     (name "ocaml-cstruct")
-    (version "6.1.0")
+    (version "6.1.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3762,7 +3772,7 @@ big- and little-endian, with their unsafe counter-parts.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1pwfkfs8zzr88slnvl5b28lx6w2k149ybgvrs6diay3qvwcmkhx5"))))
+                "0dpbirs6lzp0bclr3wcw407jjspll7iy66z18zks3mjccvlxd21w"))))
     (build-system dune-build-system)
     (arguments
      `(#:package "cstruct"
@@ -3946,7 +3956,7 @@ Format module of the OCaml standard library.")
 (define-public ocaml-piqilib
   (package
     (name "ocaml-piqilib")
-    (version "0.6.15")
+    (version "0.6.16")
     (source
      (origin
        (method git-fetch)
@@ -3955,7 +3965,7 @@ Format module of the OCaml standard library.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0v04hs85xv6d4ysqxyv1dik34dx49yab9shpi4x7iv19qlzl7csb"))))
+        (base32 "0mbhfrfrik3jlzx9zz680g0qdvv0b7cbjz28cgdlryp7nk4v4kx8"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:phases
@@ -4074,7 +4084,7 @@ and 4 (random based) according to RFC 4122.")
 (define-public ocaml-piqi
   (package
     (name "ocaml-piqi")
-    (version "0.7.7")
+    (version "0.7.8")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -4083,7 +4093,7 @@ and 4 (random based) according to RFC 4122.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1913jpsb8mvqi8609j4g4sm5jhg50dq0xqxgy8nmvknfryyc89nm"))))
+                "12m9vxir0cs2155nxs0a3m3npf3w79kyxf9a5lmf18qvvgismfz8"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:make-flags
@@ -4293,7 +4303,7 @@ function that follows the prototype of POSIX's wcwidth.")
 (define-public ocaml-zed
   (package
     (name "ocaml-zed")
-    (version "3.1.0")
+    (version "3.2.0")
     (home-page "https://github.com/ocaml-community/zed")
     (source
      (origin
@@ -4303,14 +4313,18 @@ function that follows the prototype of POSIX's wcwidth.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "04vr1a94imsghm98iigc35rhifsz0rh3qz2qm0wam2wvp6vmrx0p"))))
+        (base32 "1g171kk5wxnk66d4vwz2crh5i19vhqghp78iybl5am17gl9qf8pb"))))
     (build-system dune-build-system)
+    (propagated-inputs
+     (list ocaml-react
+           ocaml-result
+           ocaml-uchar
+           ocaml-uutf
+           ocaml-uucp
+           ocaml-uuseg
+           ocaml-odoc))
     (arguments
      `(#:test-target "."))
-    (propagated-inputs
-     `(("ocaml-charInfo-width" ,ocaml-charinfo-width)
-       ("ocaml-camomile" ,ocaml-camomile)
-       ("ocaml-react" ,ocaml-react)))
     (properties `((ocaml4.07-variant . ,(delay ocaml4.07-zed))))
     (synopsis "Abstract engine for text edition in OCaml")
     (description
@@ -4337,12 +4351,16 @@ capabilities, Zed provides macro recording and cursor management facilities.")
                (sha256
                 (base32
                  "0pa9awinqr0plp4b2az78dwpvh01pwaljnn5ydg8mc6hi7rmir55"))))
+    (propagated-inputs
+     `(("ocaml-charInfo-width" ,ocaml-charinfo-width)
+       ("ocaml-camomile" ,ocaml-camomile)
+       ("ocaml-react" ,ocaml-react)))
      (properties '()))))
 
 (define-public ocaml-lambda-term
   (package
     (name "ocaml-lambda-term")
-    (version "3.2.0")
+    (version "3.3.1")
     (home-page "https://github.com/ocaml-community/lambda-term")
     (source (origin
               (method git-fetch)
@@ -4352,18 +4370,18 @@ capabilities, Zed provides macro recording and cursor management facilities.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "048k26644wq5wlwk0j179dxrxyz9nxqqq4vvhyh6pqpgxdajd44i"))))
+                "1pkamblc6h0rsbk901cqn3xr9gqa3g8wrwyx5zryaqvb2xpbhp8b"))))
     (build-system dune-build-system)
     (arguments
      `(#:test-target "."))
     (propagated-inputs
-     (list ocaml-lwt
-           ocaml-lwt-log
-           ocaml-react
-           ocaml-zed
-           ocaml-camomile
+     (list ocaml-logs
+           ocaml-lwt
            ocaml-lwt-react
-           ocaml-mew-vi))
+           ocaml-mew-vi
+           ocaml-odoc
+           ocaml-react
+           ocaml-zed))
     (properties `((ocaml4.07-variant . ,(delay ocaml4.07-lambda-term))))
     (synopsis "Terminal manipulation library for OCaml")
     (description "Lambda-Term is a cross-platform library for manipulating the
@@ -4398,7 +4416,7 @@ instead of bindings to a C library.")
 (define-public ocaml-utop
   (package
     (name "ocaml-utop")
-    (version "2.9.2")
+    (version "2.10.0")
     (source
      (origin
        (method git-fetch)
@@ -4407,15 +4425,19 @@ instead of bindings to a C library.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0z5anakgbndhyzbi570pfs2fy69bnmgq9jflgfbly2rhbhwa7wgj"))))
+        (base32 "1pcix3h9f7is06581iax4i08zkd6sv8y5hy1vvxhqhcsd9z0qfl3"))))
     (build-system dune-build-system)
     (arguments
      `(#:test-target "."))
     (native-inputs
      (list ocaml-cppo))
     (propagated-inputs
-     (list ocaml-lambda-term ocaml-lwt ocaml-lwt-react ocaml-camomile
-           ocaml-react))
+     (list ocaml-lambda-term
+           ocaml-logs
+           ocaml-lwt
+           ocaml-lwt-react
+           ocaml-react
+           ocaml-zed))
     (properties `((ocaml4.07-variant . ,(delay ocaml4.07-utop))))
     (home-page "https://github.com/ocaml-community/utop")
     (synopsis "Improved interface to the OCaml toplevel")
@@ -4900,31 +4922,20 @@ is also support for writing OCaml syntax extensions in a camlp4 style.")
 (define-public ocaml-timed
   (package
     (name "ocaml-timed")
-    (version "1.0")
+    (version "1.1")
     (home-page "https://github.com/rlepigre/ocaml-timed")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url (string-append home-page ".git"))
-                    (commit (string-append name "_" version))))
+                    (commit version)))
               (sha256
                (base32
-                "0hfxz710faxy5yk97bkfnw87r732jcxxhmjppwrbfdb6pd0wks96"))
+                "1aqmkpjv5jk95lc2m3qyyrhw8ra7n9wj8pv3bfc83l737zv0hjn1"))
               (file-name (git-file-name name version))))
-    (build-system ocaml-build-system)
+    (build-system dune-build-system)
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (replace 'build
-           (lambda _
-             (invoke "make")))
-         (replace 'install
-           (lambda _
-             (invoke "make" "install")))
-         (replace 'check
-           (lambda _
-             (invoke "make" "tests"))))))
+     '(#:test-target "."))
     (synopsis "Timed references for imperative state")
     (description "Timed references for imperative state.  This module provides
 an alternative type for references (or mutable cells) supporting undo/redo
@@ -4941,7 +4952,7 @@ than the first one.")
 (define-public ocaml-biniou
  (package
    (name "ocaml-biniou")
-   (version "1.2.1")
+   (version "1.2.2")
    (home-page "https://github.com/mjambon/biniou")
     (source
      (origin
@@ -4952,7 +4963,7 @@ than the first one.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0x2kiy809n1j0yf32l7hj102y628jp5jdrkbi3z7ld8jq04h1790"))))
+         "1gd4nqffm9h7dzxyvpfpww24l61fqgazyh3p5f7k9jvgyv9y4vcn"))))
    (build-system dune-build-system)
    (arguments
     `(#:phases
@@ -4960,7 +4971,7 @@ than the first one.")
         (add-before 'build 'make-writable
           (lambda _ (for-each make-file-writable (find-files "." ".")))))))
    (inputs
-    (list ocaml-easy-format))
+    (list ocaml-easy-format ocaml-camlp-streams))
    (native-inputs
     (list which))
    (synopsis "Data format designed for speed, safety, ease of use and backward
@@ -4975,7 +4986,7 @@ than yojson), with 25-35% space savings.")
 (define-public ocaml-yojson
   (package
     (name "ocaml-yojson")
-    (version "1.7.0")
+    (version "2.0.2")
     (home-page "https://github.com/ocaml-community/yojson")
     (source
      (origin
@@ -4986,14 +4997,13 @@ than yojson), with 25-35% space savings.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0zncsw8bgbkh1pfvfc7nh628hfj84lgx6jwhp9ashj3z1z0w3xjn"))))
+         "1habsh00ihjhk1g1csxqg3hj8izk5zvgc7wm579wyjw35vzcmwr1"))))
     (build-system dune-build-system)
     (arguments
-     `(#:test-target "."))
-    (propagated-inputs
-     (list ocaml-biniou ocaml-easy-format))
-    (native-inputs
-     (list ocaml-alcotest ocaml-cppo))
+     `(#:test-target "."
+       #:package "yojson"))
+    (propagated-inputs (list ocaml-seq))
+    (native-inputs (list ocaml-alcotest ocaml-cppo))
     (synopsis "Low-level JSON library for OCaml")
     (description "Yojson is an optimized parsing and printing library for the
 JSON format.  It addresses a few shortcomings of json-wheel including 2x
@@ -5036,10 +5046,10 @@ Mercurial's @code{https://www.selenic.com/blog/?p=663, unified test
 format}.  @code{craml} is released as a single binary (called @code{craml}).")
     (license license:isc)))
 
-(define-public ocaml-dot-merlin-reader
+(define-public ocaml-merlin-lib
   (package
-    (name "ocaml-dot-merlin-reader")
-    (version "4.5-414")
+    (name "ocaml-merlin-lib")
+    (version "4.6-414")
     (source
      (origin
        (method git-fetch)
@@ -5049,17 +5059,27 @@ format}.  @code{craml} is released as a single binary (called @code{craml}).")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "125gyk63fg9plqkyrkl3wvpr3czjxgvshf4496fc4swldl7z587c"))))
+         "1cpa9x45w54l4mqqmc8z3s5gscggw37gb6z9i7wwss86fj1wgclh"))))
     (build-system dune-build-system)
-    (arguments '(#:package "dot-merlin-reader"
+    (arguments '(#:package "merlin-lib"
                  #:tests? #f))          ; no tests
-    (inputs
-     (list ocaml-yojson ocaml-csexp ocaml-result))
+    (propagated-inputs (list ocaml-csexp ocaml-menhir))
     (home-page "https://ocaml.github.io/merlin/")
+    (synopsis "Merlin libraries")
+    (description "These libraries provides access to low-level compiler
+interfaces and the standard higher-level merlin protocol.")
+    (license license:expat)))
+
+(define-public ocaml-dot-merlin-reader
+  (package
+    (inherit ocaml-merlin-lib)
+    (name "ocaml-dot-merlin-reader")
+    (arguments '(#:package "dot-merlin-reader"
+                 #:tests? #f))          ; no tests
+    (propagated-inputs (list ocaml-merlin-lib))
     (synopsis "Reads config files for @code{ocaml-merlin}")
     (description "@code{ocaml-dot-merlin-reader} is an external reader for
-@code{ocaml-merlin} configurations.")
-    (license license:expat)))
+@code{ocaml-merlin} configurations.")))
 
 (define-public ocaml-merlin
   (package
@@ -5073,8 +5093,7 @@ format}.  @code{craml} is released as a single binary (called @code{craml}).")
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                (invoke "dune" "runtest" "-p" "merlin,dot-merlin-reader")))))))
-    (inputs
-     (list ocaml-yojson ocaml-csexp ocaml-result))
+    (propagated-inputs (list ocaml-merlin-lib ocaml-yojson))
     (native-inputs
      (list ocaml-dot-merlin-reader ; required for tests
            ocaml-mdx jq))
@@ -5299,11 +5318,17 @@ parsexp_io.")
 (define-public ocaml-sexplib
   (package
     (name "ocaml-sexplib")
-    (version "0.15.0")
+    (version "0.15.1")
     (home-page "https://github.com/janestreet/sexplib")
-    (source
-     (janestreet-origin "sexplib" version
-                        "1xs55f11yhscnfrzpvy1vn05j6xi9kxy097465624l615j7k8qm5"))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url home-page)
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1gcvcc0jw6pb69wwfjnaqz1jk5simap2kdb7g43v7v7mksg8sh9f"))))
     (build-system dune-build-system)
     (propagated-inputs
      (list ocaml-base ocaml-num ocaml-parsexp ocaml-sexplib0))
@@ -7632,7 +7657,8 @@ then run the Bisect_ppx report tool on the generated visitation files.")
         (base32 "07zjkk455l51i29lcayzrc1q8j5bvbv97sscv8yhcj7x6h6q2nag"))))
     (build-system dune-build-system)
     (arguments
-     `(#:phases
+     `(#:tests? #f; not compatible with current version of ocaml-yojson
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-test
            (lambda _
@@ -7677,7 +7703,7 @@ complexity of the OCaml module system.")
 (define-public ocaml-odoc-parser
   (package
     (name "ocaml-odoc-parser")
-    (version "1.0.0")
+    (version "2.0.0")
     (source
       (origin
         (method git-fetch)
@@ -7687,10 +7713,10 @@ complexity of the OCaml module system.")
         (file-name (git-file-name name version))
         (sha256
           (base32
-           "0mvwbnla0wd29bc7ckwpb494qv7p616cx8hnm0zg36np7v3zwy4w"))))
+           "1x48kf051xs98rd6cri591bk1ccp9hyp93n1rlf6qnxic55jw683"))))
     (build-system dune-build-system)
     (propagated-inputs
-      (list ocaml-astring ocaml-result))
+      (list ocaml-astring ocaml-camlp-streams ocaml-result))
     (native-inputs
       (list ocaml-ppx-expect))
     (home-page "https://github.com/ocaml-doc/odoc-parser")
@@ -7831,7 +7857,7 @@ and SVG file output.")
 (define-public ocaml-version
   (package
     (name "ocaml-version")
-    (version "3.4.0")
+    (version "3.5.0")
     (source
      (origin
        (method git-fetch)
@@ -7841,7 +7867,7 @@ and SVG file output.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1c13zk1qna59m5z9jx7da3p7cxd48scpyk7zg7gi6gc6hx5hhjx8"))))
+         "1pnw2ym021j48zknhbi1kdiyfv9si8p2l04rdzbv4g51fclsqs92"))))
     (build-system dune-build-system)
     (arguments `(#:tests? #f))          ; no tests
     (properties '((upstream-name . "ocaml-version")))
@@ -8206,7 +8232,7 @@ defined in OCaml 4.12.0.")
 (define-public ocamlformat
   (package
     (name "ocamlformat")
-    (version "0.22.4")
+    (version "0.24.1")
     (source
       (origin
         (method git-fetch)
@@ -8216,7 +8242,7 @@ defined in OCaml 4.12.0.")
         (file-name (git-file-name name version))
         (sha256
           (base32
-            "171lq3vx4y8xj4by5zy93isx8nhg6ysxg1hxmkqkq16fdaiz8mnc"))))
+            "0y1j5mwwrliy6a78cmpi6j8gw425shghqg9ylyl3qw5fx4b088pp"))))
     (build-system dune-build-system)
     (arguments
      '(#:package "ocamlformat"
@@ -8535,6 +8561,156 @@ It makes it possible to run pure OCaml programs in JavaScript environment like
 browsers and Node.js.")
     (license license:lgpl2.1+)))
 
+(define-public ocaml-afl-persistent
+  (package
+    (name "ocaml-afl-persistent")
+    (version "1.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/stedolan/ocaml-afl-persistent")
+              (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32
+           "06yyds2vcwlfr2nd3gvyrazlijjcrd1abnvkfpkaadgwdw3qam1i"))))
+    (build-system ocaml-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+           (lambda _
+             (invoke "./build.sh")))
+         ;; XXX: The tests are already run in the build.sh script.
+         (delete 'check))))
+    (native-inputs
+     `(("opam" ,opam)))
+    (home-page "https://github.com/stedolan/ocaml-afl-persistent")
+    (synopsis "Use afl-fuzz in persistent mode")
+    (description
+      "afl-fuzz normally works by repeatedly forking the program being tested.
+Using this package, you can run afl-fuzz in ``persistent mode'', which avoids
+repeated forking and is much faster.")
+    (license license:expat)))
+
+(define-public ocaml-pprint
+  (package
+    (name "ocaml-pprint")
+    (version "20220103")
+    (home-page "https://github.com/fpottier/pprint")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "09y6nwnjldifm47406q1r9987njlk77g4ifqg6qs54dckhr64vax"))))
+    (build-system dune-build-system)
+    (synopsis "OCaml pretty-printing combinator library and rendering
+engine")
+    (description "This OCaml library offers a set of combinators for building
+so-called documents as well as an efficient engine for converting documents to
+a textual, fixed-width format.  The engine takes care of indentation and line
+breaks, while respecting the constraints imposed by the structure of the
+document and by the text width.")
+    (license license:lgpl2.0)))
+
+(define-public ocaml-crowbar
+  (package
+    (name "ocaml-crowbar")
+    (version "0.2.1")
+    (home-page "https://github.com/stedolan/crowbar")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "11f3kiw58g8njx15akx16xcplzvzdw9y6c4jpyfxylkxws4g0f6j"))))
+    (build-system dune-build-system)
+    (arguments
+     `(#:test-target "."))
+    (propagated-inputs
+     (list ocaml-ocplib-endian
+           ocaml-cmdliner
+           ocaml-afl-persistent))
+    (native-inputs
+     (list ocaml-calendar
+           ocaml-fpath
+           ocaml-uucp
+           ocaml-uunf
+           ocaml-uutf
+           ocaml-pprint))
+    (synopsis "Ocaml library for tests, let a fuzzer find failing cases")
+    (description "Crowbar is a library for testing code, combining
+QuickCheck-style property-based testing and the magical bug-finding powers of
+@uref{http://lcamtuf.coredump.cx/afl/, afl-fuzz}.")
+    (license license:expat)))
+
+(define-public ocaml-eqaf
+  (package
+    (name "ocaml-eqaf")
+    (version "0.9")
+    (home-page "https://github.com/mirage/eqaf")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "16ics56wiqyng70dy2hqikicm8ag1mv5w1h7hkiwvydw1x2j2rsl"))))
+    (build-system dune-build-system)
+    (propagated-inputs (list ocaml-cstruct))
+    (native-inputs (list ocaml-alcotest ocaml-crowbar))
+    (synopsis "OCaml library for constant-time equal function on string")
+    (description "This OCaml library provides an equal function on string in
+constant-time to avoid timing-attack with crypto stuff.")
+    (license license:expat)))
+
+(define-public ocaml-digestif
+  (package
+    (name "ocaml-digestif")
+    (version "1.1.2")
+    (home-page "https://github.com/mirage/digestif")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0mc233d63y04jznsn3bxncgv7fkvyngbv6hcka412iq0y3x4qsmq"))))
+    (build-system dune-build-system)
+    (propagated-inputs (list ocaml-eqaf))
+    (native-inputs
+     (list pkg-config
+           ocaml-fmt
+           ocaml-alcotest
+           ocaml-bos
+           ocaml-astring
+           ocaml-fpath
+           ocaml-rresult
+           ocaml-findlib))
+    (synopsis "Simple hash algorithms in OCaml")
+    (description
+     "Digestif is an OCaml library that provides implementations of hash
+algorithms.  Implemented hash algorithms include MD5, SHA1, SHA224, SHA256,
+SHA384, SHA512, Blake2b, Blake2s and RIPEMD160.")
+    (license license:expat)))
+
 (define-public ocaml-bibtex2html
   (package
     (name "ocaml-bibtex2html")