diff options
Diffstat (limited to 'gnu/packages/ocaml.scm')
-rw-r--r-- | gnu/packages/ocaml.scm | 408 |
1 files changed, 302 insertions, 106 deletions
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 1101227a9f..01c0bc3ba0 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2020 Marius Bakke <marius@gnu.org> -;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com> +;;; Copyright © 2020, 2021 Simon Tournier <zimon.toutoune@gmail.com> ;;; Copyright © 2020 divoplade <d@divoplade.fr> ;;; Copyright © 2020, 2021 pukkamustard <pukkamustard@posteo.net> ;;; Copyright © 2021 aecepoglu <aecepoglu@fastmail.fm> @@ -3176,53 +3176,62 @@ many additional enhancements, including: license:gpl2)))) ; OMake itself, with ocaml linking exception ; see LICENSE.OMake +(define-public ocaml-benchmark + (package + (name "ocaml-benchmark") + (version "1.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Chris00/ocaml-benchmark") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0d0vdfjgjzf1y6wkd714d8b0piv1z9qav5ahsapynqzk4b4ahhnp")))) + (build-system dune-build-system) + (arguments `(#:test-target "tests")) + (home-page "https://github.com/Chris00/ocaml-benchmark") + (synopsis "Benchmark running times of code") + (description + "This module provides a set of tools to measure the running times of +your functions and to easily compare the results. A statistical test +is used to determine whether the results truly differ.") + (license license:lgpl3+))) + (define-public ocaml-batteries (package (name "ocaml-batteries") - (version "2.10.0") + (version "3.3.0") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/ocaml-batteries-team/" - "batteries-included/releases/download/v" - version "/batteries-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/ocaml-batteries-team/batteries-included") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "08ghw87d56h1a6y1nnh3x2wy9xj25jqfk5sp6ma9nsyd37babb0h")))) + "1h03nkc3vajaijqhj1dy5hw85j2hwwxdkg8rvs2fc00qaf44ad1d")))) (build-system ocaml-build-system) + (propagated-inputs `(("ocaml-num" ,ocaml-num))) (native-inputs `(("ocamlbuild" ,ocamlbuild) - ("qtest" ,ocaml-qtest))) - (propagated-inputs - `(("ocaml-num" ,ocaml-num))) + ("ocaml-benchmark" ,ocaml-benchmark) + ("ocaml-qcheck" ,ocaml-qcheck) + ("ocaml-qtest" ,ocaml-qtest))) (arguments `(#:phases (modify-phases %standard-phases - (delete 'check) ; tests are run by the build phase + (add-after 'unpack 'make-writable + (lambda _ + (for-each make-file-writable (find-files "." ".")))) (add-before 'build 'fix-nondeterminism (lambda _ (substitute* "setup.ml" (("Sys.readdir dirname") "let a = Sys.readdir dirname in Array.sort String.compare a; a")) - #t)) - (replace 'build - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((files - (map (lambda (str) - (substring str 0 (- (string-length str) 1))) - (append - (find-files "src" ".*.mliv") - (find-files "src" ".*.mlv") - (find-files "src" ".*.mlp"))))) - (apply invoke "ocamlbuild" "-no-links" "-use-ocamlfind" "-I" "num" - "-lflag" "-dllpath-all" files) - (for-each (lambda (file) - (copy-file (string-append "_build/" file) file)) - files)) - (invoke "ocamlbuild" "-no-links" "-use-ocamlfind" "-I" "num" - "-lflag" "-dllpath-all" "build/mkconf.byte") - (copy-file "_build/build/mkconf.byte" "build/mkconf.byte") - (invoke "make" "all") #t))))) + (properties `((ocaml4.07-variant . ,(delay ocaml4.07-batteries)))) (home-page "http://batteries.forge.ocamlcore.org/") (synopsis "Development platform for the OCaml programming language") (description "Define a standard set of libraries which may be expected on @@ -3230,6 +3239,54 @@ every compliant installation of OCaml and organize these libraries into a hierarchy of modules.") (license license:lgpl2.1+))) +(define-public ocaml4.07-batteries + (package-with-ocaml4.07 + (package + (inherit ocaml-batteries) + (version "2.10.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ocaml-batteries-team/batteries-included") + (commit (string-append "v" version)))) + (file-name (git-file-name "ocaml-batteries" version)) + (sha256 + (base32 + "02fxa1nkp7rpiwfp04n0sagdp9lad4dh9bvljp95xfshm1cx7y4q")))) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'check) ; tests are run by the build phase + (add-before 'build 'fix-nondeterminism + (lambda _ + (substitute* "setup.ml" + (("Sys.readdir dirname") + "let a = Sys.readdir dirname in Array.sort String.compare a; a")) + #t)) + (replace 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((files + (map (lambda (str) + (substring str 0 (- (string-length str) 1))) + (append + (find-files "src" ".*.mliv") + (find-files "src" ".*.mlv") + (find-files "src" ".*.mlp"))))) + (apply invoke "ocamlbuild" "-no-links" "-use-ocamlfind" "-I" "num" + "-lflag" "-dllpath-all" files) + (for-each (lambda (file) + (copy-file (string-append "_build/" file) file)) + files)) + (invoke "ocamlbuild" "-no-links" "-use-ocamlfind" "-I" "num" + "-lflag" "-dllpath-all" "build/mkconf.byte") + (copy-file "_build/build/mkconf.byte" "build/mkconf.byte") + (invoke "make" "all") + #t))))) + (native-inputs + `(("ocamlbuild" ,ocamlbuild) + ("qtest" ,ocaml-qtest))) + (properties '())))) + (define-public ocaml-pcre (package (name "ocaml-pcre") @@ -3987,86 +4044,109 @@ library is currently designed for Unicode Standard 3.2.") (license license:lgpl2.0+))) (define-public ocaml-charinfo-width - (package - (name "ocaml-charinfo-width") - (version "1.1.0") - (source (origin - (method url-fetch) - (uri (string-append "https://bitbucket.org/zandoye/charinfo_width" - "/get/" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "00bv4p1yqs8y0z4z07wd9w9yyv669dikp9b04dcjbwpiy2wy0086")))) - (build-system dune-build-system) - (propagated-inputs - `(("ocaml-result" ,ocaml-result) - ("ocaml-camomile" ,ocaml-camomile))) - (native-inputs - `(("ocaml-ppx-expect" ,ocaml-ppx-expect))) - (properties - `((upstream-name . "charInfo_width"))) - (home-page "https://bitbucket.org/zandoye/charinfo_width/") - (synopsis "Determine column width for a character") - (description "This module is implements purely in OCaml a character width + ;; Add LICENSE file and Dune tests + (let ((commit "20aaaa6dca8f1e0b1ace55b6f2a8ba5e5910b620")) + (package + (name "ocaml-charinfo-width") + (version (git-version "1.1.0" "1" commit)) + (home-page "https://github.com/kandu/charinfo_width/") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "04gil5hxm2jax9paw3i24d8zyzhyl5cphzfyryvy2lcrm3c485q0")))) + (build-system dune-build-system) + (propagated-inputs + `(("ocaml-result" ,ocaml-result) + ("ocaml-camomile" ,ocaml-camomile))) + (native-inputs + `(("ocaml-ppx-expect" ,ocaml-ppx-expect))) + (properties + `((upstream-name . "charInfo_width"))) + (synopsis "Determine column width for a character") + (description "This module implements purely in OCaml a character width function that follows the prototype of POSIX's wcwidth.") - (license license:expat))) + (license license:expat)))) -(define-public ocaml4.07-zed +(define-public ocaml-zed (package - (name "ocaml4.07-zed") - (version "2.0.3") + (name "ocaml-zed") + (version "3.1.0") + (home-page "https://github.com/ocaml-community/zed") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/diml/zed") + (url home-page) (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0pa9awinqr0plp4b2az78dwpvh01pwaljnn5ydg8mc6hi7rmir55")))) + (base32 "04vr1a94imsghm98iigc35rhifsz0rh3qz2qm0wam2wvp6vmrx0p")))) (build-system dune-build-system) (arguments - `(#:test-target "." - #:ocaml ,ocaml-4.07 - #:findlib ,ocaml4.07-findlib - #:dune ,ocaml4.07-dune)) + `(#:test-target ".")) (propagated-inputs - `(("ocaml-camomile" ,(package-with-ocaml4.07 ocaml-camomile)) - ("ocaml-charinfo-width" ,(package-with-ocaml4.07 ocaml-charinfo-width)) - ("ocaml-react" ,(package-with-ocaml4.07 ocaml-react)))) - (home-page "https://github.com/diml/zed") - (synopsis "Abstract engine for text editing in OCaml") - (description "Zed is an abstract engine for text edition. It can be used -to write text editors, edition widgets, readlines, etc. You just have to -connect an engine to your inputs and rendering functions to get an editor.") + `(("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 + "This module provides an abstract engine for text edition. It can be +used to write text editors, edition widgets, readlines, and more. The module +Zed uses Camomile to fully support the Unicode specification, and implements +an UTF-8 encoded string type with validation, and a rope datastructure to +achieve efficient operations on large Unicode buffers. Zed also features a +regular expression search on ropes. To support efficient text edition +capabilities, Zed provides macro recording and cursor management facilities.") (license license:bsd-3))) -(define-public ocaml4.07-lambda-term +(define-public ocaml4.07-zed + (package-with-ocaml4.07 + (package + (inherit ocaml-zed) + (version "2.0.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ocaml-community/zed") + (commit version))) + (file-name (git-file-name "ocaml4.07-zed" version)) + (sha256 + (base32 + "0pa9awinqr0plp4b2az78dwpvh01pwaljnn5ydg8mc6hi7rmir55")))) + (properties '())))) + +(define-public ocaml-lambda-term (package - (name "ocaml4.07-lambda-term") - (version "2.0.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/diml/lambda-term") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0zcjy6fvf0d3i2ssz96asl889n3r6bplyzk7xvb2s3dkxbgcisyy")))) + (name "ocaml-lambda-term") + (version "3.1.0") + (home-page "https://github.com/ocaml-community/lambda-term") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1k0ykiz0vhpyyj9fkss29ajas4fh1xh449j702xkvayqipzj1mkg")))) (build-system dune-build-system) (arguments - `(#:tests? #f - #:ocaml ,ocaml-4.07 - #:findlib ,ocaml4.07-findlib - #:dune ,ocaml4.07-dune)) + `(#:test-target ".")) (propagated-inputs - `(("ocaml-lwt" ,(package-with-ocaml4.07 ocaml-lwt)) - ("ocaml-lwt-log" ,(package-with-ocaml4.07 ocaml-lwt-log)) - ("ocaml-lwt-react" ,(package-with-ocaml4.07 ocaml-lwt-react)) - ("ocaml-zed" ,ocaml4.07-zed))) - (home-page "https://github.com/diml/lambda-term") + `(("ocaml-lwt" ,ocaml-lwt) + ("ocaml-lwt-log" ,ocaml-lwt-log) + ("ocaml-react" ,ocaml-react) + ("ocaml-zed" ,ocaml-zed) + ("ocaml-camomile" ,ocaml-camomile) + ("ocaml-lwt-react" ,ocaml-lwt-react) + ("ocaml-mew-vi" ,ocaml-mew-vi))) + (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 terminal. It provides an abstraction for keys, mouse events, colors, as well as @@ -4076,10 +4156,31 @@ manipulation than, for example, ncurses, by providing a native OCaml interface instead of bindings to a C library.") (license license:bsd-3))) -(define-public ocaml4.07-utop +(define-public ocaml4.07-lambda-term + (package-with-ocaml4.07 + (package + (inherit ocaml-lambda-term) + (version "2.0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ocaml-community/lambda-term") + (commit version))) + (file-name (git-file-name "ocaml4.07-lambda-term" version)) + (sha256 + (base32 "0zcjy6fvf0d3i2ssz96asl889n3r6bplyzk7xvb2s3dkxbgcisyy")))) + (propagated-inputs + `(("ocaml-lwt" ,ocaml-lwt) + ("ocaml-lwt-log" ,ocaml-lwt-log) + ("ocaml-lwt-react" ,ocaml-lwt-react) + ("ocaml-zed" ,ocaml-zed))) + (properties '())))) + +(define-public ocaml-utop (package - (name "ocaml4.07-utop") - (version "2.4.3") + (name "ocaml-utop") + (version "2.8.0") (source (origin (method git-fetch) @@ -4088,21 +4189,19 @@ instead of bindings to a C library.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1bl4943qpi3qy152dbdm5glhx19zsiylmn4rcxi8l66g58hikyjp")))) + (base32 "1zf4hg33sblzh2f65vk0292jg4jlwa8702kfwpsg1kcg4w6nsfdp")))) (build-system dune-build-system) (arguments - `(#:test-target "." - #:ocaml ,ocaml-4.07 - #:findlib ,ocaml4.07-findlib - #:dune ,ocaml4.07-dune)) + `(#:test-target ".")) (native-inputs - `(("cppo" ,(package-with-ocaml4.07 ocaml-cppo)))) + `(("ocaml-cppo" ,ocaml-cppo))) (propagated-inputs - `(("lambda-term" ,ocaml4.07-lambda-term) - ("lwt" ,(package-with-ocaml4.07 ocaml-lwt)) - ("react" ,(package-with-ocaml4.07 ocaml-react)) - ("camomile" ,(package-with-ocaml4.07 ocaml-camomile)) - ("zed" ,ocaml4.07-zed))) + `(("ocaml-lambda-term" ,ocaml-lambda-term) + ("ocaml-lwt" ,ocaml-lwt) + ("ocaml-lwt-react" ,ocaml-lwt-react) + ("ocaml-camomile" ,ocaml-camomile) + ("ocaml-react" ,ocaml-react))) + (properties `((ocaml4.07-variant . ,(delay ocaml4.07-utop)))) (home-page "https://github.com/ocaml-community/utop") (synopsis "Improved interface to the OCaml toplevel") (description "UTop is an improved toplevel for OCaml. It can run in a @@ -4110,6 +4209,28 @@ terminal or in Emacs. It supports line editing, history, real-time and context sensitive completion, colors, and more.") (license license:bsd-3))) +(define-public ocaml4.07-utop + (package-with-ocaml4.07 + (package + (inherit ocaml-utop) + (version "2.4.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ocaml-community/utop") + (commit version))) + (file-name (git-file-name "ocaml4.07-utop" version)) + (sha256 + (base32 "1bl4943qpi3qy152dbdm5glhx19zsiylmn4rcxi8l66g58hikyjp")))) + (propagated-inputs + `(("ocaml-lambda-term" ,ocaml-lambda-term) + ("ocaml-lwt" ,ocaml-lwt) + ("ocaml-react" ,ocaml-react) + ("ocaml-camomile" ,ocaml-camomile) + ("ocaml-zed" ,ocaml-zed))) + (properties '())))) + (define-public ocaml-integers (package (name "ocaml-integers") @@ -5983,7 +6104,7 @@ match expressions, and if expressions.") (janestreet-origin "ppx_let" version "1wdfw6w4xbg97a35yg6bif9gggxniy9ddnrjfw1a0inkl2yamxkj")) - (properties `(upstream-name . "ppx_let"))))) + (properties `((upstream-name . "ppx_let")))))) (define-public ocaml4.07-ppx-fail (package @@ -7424,6 +7545,81 @@ between Bigstrings and other string-like types. @code{bigstringaf} provides these missing pieces.") (license license:bsd-3))) +(define-public ocaml-trie + (package + (name "ocaml-trie") + (version "1.0.0") + (home-page "https://github.com/kandu/trie/") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0s7p9swjqjsqddylmgid6cv263ggq7pmb734z4k84yfcrgb6kg4g")))) + (build-system dune-build-system) + (arguments + '(#:tests? #f)) ;no tests + (synopsis "Strict impure trie tree") + (description + "This module implements strict impure trie tree data structure for +OCaml.") + (license license:expat))) + +(define-public ocaml-mew + (package + (name "ocaml-mew") + (version "0.1.0") + (home-page "https://github.com/kandu/mew") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0417xsghj92v3xa5q4dk4nzf2r4mylrx2fd18i7cg3nzja65nia2")))) + (build-system dune-build-system) + (propagated-inputs + `(("ocaml-result" ,ocaml-result) + ("ocaml-trie" ,ocaml-trie))) + (native-inputs + `(("ocaml-ppx-expect" ,ocaml-ppx-expect))) + (synopsis "General modal editing engine generator") + (description + "This package provides the core modules of Modal Editing Witch, a general +modal editing engine generator.") + (license license:expat))) + +(define-public ocaml-mew-vi + (package + (name "ocaml-mew-vi") + (version "0.5.0") + (home-page "https://github.com/kandu/mew_vi") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0lihbf822k5zasl60w5mhwmdkljlq49c9saayrws7g4qc1j353r8")))) + (build-system dune-build-system) + (propagated-inputs + `(("ocaml-mew" ,ocaml-mew) + ("ocaml-react" ,ocaml-react))) + (native-inputs + `(("ocaml-ppx-expect" ,ocaml-ppx-expect))) + (properties `((upstream-name . "mew_vi"))) + (synopsis "Modal editing VI-like editing engine generator") + (description "This module provides a vi-like modal editing engine +generator.") + (license license:expat))) + (define-public ocaml-syntax-shims (package (name "ocaml-syntax-shims") |