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.scm128
1 files changed, 81 insertions, 47 deletions
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index deba67c4d7..a32cee44dc 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -10,8 +10,9 @@
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Peter Kreye <kreyepr@gmail.com>
-;;; Copyright © 2018 Gabriel Hondet <gabrielhondet@gmail.com>
+;;; Copyright © 2018, 2019 Gabriel Hondet <gabrielhondet@gmail.com>
 ;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -191,19 +192,18 @@ patch-/bin/sh-references: ~a: changing `\"/bin/sh\"' to `~a'~%"
                     (mandir (string-append out "/share/man")))
                ;; Custom configure script doesn't recognize
                ;; --prefix=<PREFIX> syntax (with equals sign).
-               (zero? (system* "./configure"
-                               "--prefix" out
-                               "--mandir" mandir)))))
+               (invoke "./configure"
+                       "--prefix" out
+                       "--mandir" mandir))))
          (replace 'build
            (lambda _
-             (zero? (system* "make" "-j" (number->string
-                                          (parallel-job-count))
-                             "world.opt"))))
+             (invoke "make" "-j" (number->string (parallel-job-count))
+                     "world.opt")))
          (delete 'check)
          (add-after 'install 'check
            (lambda _
              (with-directory-excursion "testsuite"
-               (zero? (system* "make" "all")))))
+               (invoke "make" "all"))))
          (add-before 'check 'prepare-socket-test
            (lambda _
              (format (current-error-port)
@@ -254,7 +254,7 @@ functional, imperative and object-oriented styles of programming.")
            (replace 'build
              (lambda _
                ;; Specifying '-j' at all causes the build to fail.
-               (zero? (system* "make" "world.opt"))))
+               (invoke "make" "world.opt")))
            ,@(if (string=? "aarch64-linux" (%current-system))
                ;; Custom configure script doesn't recongnize aarch64.
                '((replace 'configure
@@ -269,11 +269,9 @@ functional, imperative and object-oriented styles of programming.")
            (replace 'check
              (lambda _
                (with-directory-excursion "testsuite"
-                 (zero? (system*
-                         "make"
-                         "all"
+                 (invoke "make" "all"
                          (string-append
-                          "TOPDIR=" (getcwd) "/.."))))))))))))
+                          "TOPDIR=" (getcwd) "/..")))))))))))
 
 (define-public ocaml-4.07
   (package
@@ -449,26 +447,26 @@ Git-friendly development workflow.")
        ;; which  fails on the second attempt.
        #:parallel-build? #f
        #:make-flags '("all")
-       #:phases (modify-phases %standard-phases
-                  (replace
-                   'configure
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     ;; This is a home-made 'configure' script.
-                     (let ((out (assoc-ref outputs "out")))
-                       (zero? (system* "./configure"
-                                       (string-append "--libdir=" out
-                                                      "/lib/ocaml/site-lib")
-                                       (string-append "--bindir=" out "/bin")
-                                       (string-append "--pkgdir=" out
-                                                      "/lib/ocaml/site-lib"))))))
-                  (add-after 'install 'install-meta
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let ((out (assoc-ref outputs "out")))
-                        (substitute* "camlp4/META.in"
-                          (("directory = .*")
-                            (string-append "directory = \"" out
-                                           "/lib/ocaml/site-lib/camlp4\"\n")))
-                        (zero? (system* "make" "install-META"))))))))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; This is a home-made 'configure' script.
+             (let ((out (assoc-ref outputs "out")))
+               (invoke "./configure"
+                       (string-append "--libdir=" out
+                                      "/lib/ocaml/site-lib")
+                       (string-append "--bindir=" out "/bin")
+                       (string-append "--pkgdir=" out
+                                      "/lib/ocaml/site-lib")))))
+         (add-after 'install 'install-meta
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "camlp4/META.in"
+                 (("directory = .*")
+                  (string-append "directory = \"" out
+                                 "/lib/ocaml/site-lib/camlp4\"\n")))
+               (invoke "make" "install-META")))))))
     (home-page "https://github.com/ocaml/camlp4")
     (synopsis "Write parsers in OCaml")
     (description
@@ -1151,8 +1149,7 @@ files in these formats.")
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
-           (lambda* (#:key #:allow-other-keys)
-             (zero? (system* "./configure")))))))
+           (lambda _ (invoke "./configure"))))))
     (home-page "https://forge.ocamlcore.org/projects/zarith/")
     (synopsis "Implements arbitrary-precision integers")
     (description "Implements arithmetic and logical operations over
@@ -1768,15 +1765,17 @@ spans without being subject to operating system calendar time adjustments.")
 (define-public ocaml-cmdliner
   (package
     (name "ocaml-cmdliner")
-    (version "0.9.8")
+    (version "1.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://erratique.ch/software/cmdliner/releases/"
                                   "cmdliner-" version ".tbz"))
               (sha256
                (base32
-                "0hdxlkgiwjml9dpaa80282a8350if7mc1m6yz2mrd7gci3fszykx"))))
+                "18jqphjiifljlh9jg8zpl6310p3iwyaqphdkmf89acyaix0s4kj1"))))
     (build-system ocaml-build-system)
+    (inputs
+     `(("ocaml-result" ,ocaml-result)))
     (native-inputs
      `(("ocamlbuild" ,ocamlbuild)
        ("opam" ,opam)))
@@ -1785,6 +1784,12 @@ spans without being subject to operating system calendar time adjustments.")
        #:build-flags '("native=true" "native-dynlink=true")
        #:phases
        (modify-phases %standard-phases
+         (replace 'install
+           ;; The makefile says 'adjust on cli invocation'
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (invoke "make" "install" (string-append "PREFIX=" out))
+               #t)))
          (delete 'configure))))
     (home-page "http://erratique.ch/software/cmdliner")
     (synopsis "Declarative definition of command line interfaces for OCaml")
@@ -1802,14 +1807,14 @@ most of the POSIX and GNU conventions.")
 (define-public ocaml-fmt
   (package
     (name "ocaml-fmt")
-    (version "0.8.0")
+    (version "0.8.5")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "http://erratique.ch/software/fmt/releases/fmt-"
                             version ".tbz"))
         (sha256 (base32
-                  "16y7ibndnairb53j8a6qgipyqwjxncn4pl9jiw5bxjfjm59108px"))))
+                  "1zj9azcxcn6skmb69ykgmi9z8c50yskwg03wqgh87lypgjdcz060"))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("ocamlbuild" ,ocamlbuild)
@@ -1817,6 +1822,7 @@ most of the POSIX and GNU conventions.")
        ("topkg" ,ocaml-topkg)))
     (propagated-inputs
      `(("result" ,ocaml-result)
+       ("ocaml-uchar" ,ocaml-uchar)
        ("cmdliner" ,ocaml-cmdliner)))
     (arguments `(#:tests? #f
                  #:build-flags (list "build" "--with-base-unix" "true"
@@ -2269,14 +2275,14 @@ representation of the data.")
 (define-public ocaml-uchar
   (package
     (name "ocaml-uchar")
-    (version "0.0.1")
+    (version "0.0.2")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "https://github.com/ocaml/uchar/releases/download/v"
                             version "/uchar-" version ".tbz"))
         (sha256 (base32
-                  "0ficw1x7ymbd6m8hqw3w1aycwm1hbwd6bad3c5pspwnzh3qlikhi"))))
+                  "1w2saw7zanf9m9ffvz2lvcxvlm118pws2x1wym526xmydhqpyfa7"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:tests? #f
@@ -4342,13 +4348,12 @@ is provide a description of your project and Jbuilder will do the rest.")
        (modify-phases %standard-phases
          (delete 'configure)
          (replace 'build
-           (lambda* (#:key #:allow-other-keys)
-             (zero? (system* "jbuilder" "build"))))
+           (lambda _ (invoke "jbuilder" "build")))
          (delete 'check)
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
-               (zero? (system* "jbuilder" "install" "--prefix" out))))))))
+               (invoke "jbuilder" "install" "--prefix" out)))))))
     (native-inputs
      `(("jbuilder" ,ocaml-jbuilder)))
     (propagated-inputs
@@ -4420,9 +4425,9 @@ instead of bindings to a C library.")
              (let* ((out (assoc-ref outputs "out"))
                     (libdir (string-append out "/lib/ocaml/site-lib")))
                (mkdir-p libdir)
-               (zero? (system* "jbuilder" "install"
-                               "--prefix" out
-                               "--libdir" libdir))))))))
+               (invoke "jbuilder" "install"
+                       "--prefix" out
+                       "--libdir" libdir)))))))
     (native-inputs
      `(("ocaml" ,ocaml)
        ("cppo" ,ocaml-cppo)
@@ -4749,6 +4754,35 @@ speedup, polymorphic variants and optional syntax for tuples and variants.
 yojson package.  The program @code{atdgen} can be used to derive OCaml-JSON
 serializers and deserializers from type definitions.")
     (license license:bsd-3)))
+ 
+(define-public ocaml-craml
+  (package
+    (name "ocaml-craml")
+    (version "1.0.0")
+    (home-page "https://github.com/realworldocaml/craml")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url (string-append home-page ".git"))
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "197xjp4vmzdymf2ndinw271ihpf45h04mx8gqj8ypspxdr5fj1a5"))))
+    (build-system dune-build-system)
+    (inputs
+     `(("ocaml-fmt" ,ocaml-fmt)
+       ("ocaml-astring" ,ocaml-astring)
+       ("ocaml-logs" ,ocaml-logs)
+       ("ocaml-cmdliner" ,ocaml-cmdliner)))
+    (synopsis
+     "CRAM-testing framework for testing command line applications")
+    (description "CRAM is a is functional testing framework for command line
+applications.  @code{craml} is freely inspired by the
+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-merlin
   (package