summaryrefslogtreecommitdiff
path: root/gnu/packages/ocaml.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ocaml.scm')
-rw-r--r--gnu/packages/ocaml.scm250
1 files changed, 147 insertions, 103 deletions
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 9a36185ecb..ccbc6dda2b 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -80,6 +80,7 @@
#:use-module (gnu packages texinfo)
#:use-module (gnu packages time)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages version-control)
#:use-module (gnu packages virtualization)
#:use-module (gnu packages web)
#:use-module (gnu packages web-browsers)
@@ -749,7 +750,7 @@ let () = String.split_on_char ':' (Sys.getenv \"OCAMLPATH\")
(define-public ocaml-opam-file-format
(package
(name "ocaml-opam-file-format")
- (version "2.0.0")
+ (version "2.1.3")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -758,7 +759,7 @@ let () = String.split_on_char ':' (Sys.getenv \"OCAMLPATH\")
(file-name (git-file-name name version))
(sha256
(base32
- "0fqb99asnair0043hhc8r158d6krv5nzvymd0xwycr5y72yrp0hv"))))
+ "1fxhppdmrysr2nb5z3c448h17np48f3ga9jih33acj78r4rdblcs"))))
(build-system ocaml-build-system)
(arguments
`(#:tests? #f; No tests
@@ -777,7 +778,7 @@ the opam file format.")
(define-public opam
(package
(name "opam")
- (version "2.0.8")
+ (version "2.1.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -786,77 +787,99 @@ the opam file format.")
(file-name (git-file-name name version))
(sha256
(base32
- "1z0ls6xxa4ws5xw0am5gxmh5apnmyhgkcphrncp53w34j8sfydsj"))))
- (build-system ocaml-build-system)
+ "12l7l4pbzy71k1yc7ym5aczajszvc9bqkdnfg8xhqc8ch8j1h1lj"))))
+ (build-system dune-build-system)
(arguments
- `(#:configure-flags
- (list (string-append "SHELL="
- (assoc-ref %build-inputs "bash")
- "/bin/sh"))
-
- ;; For some reason, 'ocp-build' needs $TERM to be set.
- #:make-flags
- (list "TERM=screen"
- (string-append "SHELL="
- (assoc-ref %build-inputs "bash")
- "/bin/sh"))
-
- #:test-target "tests"
-
- #:phases (modify-phases %standard-phases
- (add-before 'build 'pre-build
- (lambda* (#:key inputs make-flags #:allow-other-keys)
- (let ((bash (assoc-ref inputs "bash"))
- (bwrap (search-input-file inputs "/bin/bwrap")))
- (substitute* "src/core/opamSystem.ml"
- (("\"/bin/sh\"")
- (string-append "\"" bash "/bin/sh\""))
- (("getconf")
- (which "getconf")))
- ;; Use bwrap from the store directly.
- (substitute* "src/state/shellscripts/bwrap.sh"
- (("-v bwrap") (string-append "-v " bwrap))
- (("exec bwrap") (string-append "exec " bwrap))
- ;; Mount /gnu and /run/current-system in the
- ;; isolated environment when building with opam.
- ;; This is necessary for packages to find external
- ;; dependencies, such as a C compiler, make, etc...
- (("^add_sys_mounts /usr")
- "add_sys_mounts /gnu /run/current-system /usr"))
- (substitute* "src/client/opamInitDefaults.ml"
- (("\"bwrap\"") (string-append "\"" bwrap "\"")))
- ;; Generating the documentation needs write access
- (for-each
- (lambda (f) (chmod f #o644))
- (find-files "doc" "."))
- #t)))
- (add-before 'check 'pre-check
- (lambda _
- ;; The "repo" test attempts to open some of these files O_WRONLY
- ;; and fails with a bogus "OpamSystem.File_not_found" otherwise.
- (for-each
- (lambda (f) (chmod f #o644))
- (find-files "tests/packages" "\\.opam$"))
-
- (substitute* "tests/Makefile"
- (("/usr/bin/printf")
- (which "printf"))
- ;; By default tests run twice: once with a "local" repository
- ;; and once with a git repository: disable the git tests to
- ;; avoid the dependency.
- (("all: local git")
- "all: local"))
- #t)))))
+ `(#:test-target "."
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'pre-build
+ (lambda* (#:key inputs make-flags #:allow-other-keys)
+ (let ((bash (assoc-ref inputs "bash"))
+ (bwrap (search-input-file inputs "/bin/bwrap")))
+ (substitute* "src/core/opamSystem.ml"
+ (("\"/bin/sh\"")
+ (string-append "\"" bash "/bin/sh\""))
+ (("getconf")
+ (which "getconf")))
+ ;; Use bwrap from the store directly.
+ (substitute* "src/state/shellscripts/bwrap.sh"
+ (("-v bwrap") (string-append "-v " bwrap))
+ (("exec bwrap") (string-append "exec " bwrap))
+ ;; Mount /gnu and /run/current-system in the
+ ;; isolated environment when building with opam.
+ ;; This is necessary for packages to find external
+ ;; dependencies, such as a C compiler, make, etc...
+ (("^add_sys_mounts /usr")
+ (string-append "add_sys_mounts "
+ (%store-directory)
+ " /run/current-system /usr")))
+ (substitute* "src/client/opamInitDefaults.ml"
+ (("\"bwrap\"") (string-append "\"" bwrap "\""))))))
+ (add-before 'check 'prepare-checks
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Opam tests need to run an isolated environment from a writable
+ ;; home directory.
+ (mkdir-p "test-home")
+ (setenv "HOME" (string-append (getcwd) "/test-home"))
+
+ ;; Opam tests require data from opam-repository. Instead of
+ ;; downloading them with wget from the guix environment, copy the
+ ;; content to the expected directory.
+ (substitute* "tests/reftests/dune.inc"
+ (("tar -C.*opam-archive-([0-9a-f]*)[^)]*" _ commit)
+ (string-append "rmdir %{targets}) (run cp -r "
+ (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"))
+ (substitute* "tests/reftests/dune"
+ ;; Because of our changes to the previous file, we cannot check
+ ;; it can be regenerated
+ (("diff dune.inc dune.inc.gen") "run true"))
+ ;; Ensure we can run the generated build.sh (no /bin/sh)
+ (substitute* '("tests/reftests/legacy-local.test"
+ "tests/reftests/legacy-git.test")
+ (("#! ?/bin/sh")
+ (string-append "#!"
+ (search-input-file inputs "/bin/sh"))))
+ (substitute* "tests/reftests/testing-env"
+ (("OPAMSTRICT=1")
+ (string-append "OPAMSTRICT=1\nLIBRARY_PATH="
+ (assoc-ref inputs "libc") "/lib"))))))))
(native-inputs
- `(("dune" ,dune)
- ("ocaml-cppo" ,ocaml-cppo)
-
- ;; For tests.
- ("openssl" ,openssl)
- ("python" ,python-wrapper)
- ("rsync" ,rsync)
- ("unzip" ,unzip)
- ("which" ,which)))
+ (let ((opam-repo (lambda (commit hash)
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ocaml/opam-repository")
+ (commit commit)))
+ (file-name (git-file-name "opam-repo" commit))
+ (sha256 (base32 hash))))))
+ `(("dune" ,dune)
+ ("ocaml-cppo" ,ocaml-cppo)
+
+ ;; For tests.
+ ("git" ,git-minimal)
+ ("openssl" ,openssl)
+ ("python" ,python-wrapper)
+ ("rsync" ,rsync)
+ ("unzip" ,unzip)
+ ("which" ,which)
+
+ ;; Data for tests
+ ("opam-repo-009e00fa" ,(opam-repo "009e00fa86300d11c311309a2544e5c6c3eb8de2"
+ "1wwy0rwrsjf4q10j1rh1dazk32fbzhzy6f7zl6qmndidx9b1bq7w"))
+ ("opam-repo-ad4dd344" ,(opam-repo "ad4dd344fe5cd1cab49ced49d6758a9844549fb4"
+ "1a1qj47kj8xjdnc4zc50ijrix1kym1n7k20n3viki80a7518baw8"))
+ ("opam-repo-c1d23f0e" ,(opam-repo "c1d23f0e17ec83a036ebfbad1c78311b898a2ca0"
+ "0j9abisx3ifzm66ci3p45mngmz4f0fx7yd9jjxrz3f8w5jffc9ii"))
+ ("opam-repo-f372039d" ,(opam-repo "f372039db86a970ef3e662adbfe0d4f5cd980701"
+ "0ld7fcry6ss6fmrpswvr6bikgx299w97h0gwrjjh7kd7rydsjdws")))))
(inputs
`(("ocaml" ,ocaml)
("ncurses" ,ncurses)
@@ -1604,7 +1627,7 @@ full_split, cut, rcut, etc..")
(define dune-bootstrap
(package
(name "dune")
- (version "2.8.5")
+ (version "2.9.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1613,7 +1636,7 @@ full_split, cut, rcut, etc..")
(file-name (git-file-name name version))
(sha256
(base32
- "0a1jj6njzsfjgklsirs6a79079wg4jhy6n888vg3dgp44awwq5jn"))))
+ "01np4jy0f3czkpzkl38k9b4lsh41qk52ldaqxl98mgigyzhx4w0b"))))
(build-system ocaml-build-system)
(arguments
`(#:tests? #f; require odoc
@@ -2853,8 +2876,7 @@ without a complete in-memory representation of the data.")
"1dvcl108ir9nqkk4mjm9xhhj4p9dx9bmg8bnms54fizs1x3x8ar3"))))
(build-system dune-build-system)
(arguments
- `(#:test-target "tests"
- #:build-flags (list "--profile=release")))
+ `(#:test-target "tests"))
(propagated-inputs
`(("ocaml-cmdliner" ,ocaml-cmdliner)))
(home-page "https://www.typerex.org/ocp-indent.html")
@@ -3272,8 +3294,7 @@ build system and allows external tools to analyse your project easily.")
"1smcc0l6fh2n0y6bp96c69j5nw755jja99w0b206wx3yb2m4w2hs"))))
(build-system dune-build-system)
(arguments
- `(#:tests? #f
- #:build-flags (list "--profile" "release")))
+ `(#:tests? #f))
(native-inputs
`(("ocamlbuild" ,ocamlbuild)))
(home-page "https://github.com/mjambon/cppo")
@@ -3341,8 +3362,7 @@ standard iterator type starting from 4.07.")
(base32 "07ycb103mr4mrkxfd63cwlsn023xvcjp0ra0k7n2gwrg0mwxmfss"))))
(build-system dune-build-system)
(arguments
- `(#:tests? #f
- #:build-flags (list "--profile" "release")))
+ `(#:tests? #f))
(propagated-inputs
`(("ocaml-seq" ,ocaml-seq)))
(native-inputs
@@ -3820,9 +3840,8 @@ the plugins facilitate extensibility, and the frontends serve as entry points.")
"0chn7ldqb3wyf95yhmsxxq65cif56smgz1mhhc7m0dpwmyq1k97h"))))
(build-system dune-build-system)
(arguments
- `(#:build-flags (list "--profile" "release")
- #:test-target "camomile-test"
- #:tests? #f; Tests fail, see https://github.com/yoriyuki/Camomile/issues/82
+ `(#:test-target "camomile-test"
+ #:tests? #f ; Tests fail, see https://github.com/yoriyuki/Camomile/issues/82
#:phases
(modify-phases %standard-phases
(add-before 'build 'fix-usr-share
@@ -3913,8 +3932,7 @@ connect an engine to your inputs and rendering functions to get an editor.")
(base32 "0zcjy6fvf0d3i2ssz96asl889n3r6bplyzk7xvb2s3dkxbgcisyy"))))
(build-system dune-build-system)
(arguments
- `(#:build-flags (list "--profile" "release")
- #:tests? #f
+ `(#:tests? #f
#:ocaml ,ocaml-4.07
#:findlib ,ocaml4.07-findlib
#:dune ,ocaml4.07-dune))
@@ -4920,16 +4938,6 @@ provided by companion libraries such as
(sha256
(base32
"0j6xb4265jr41vw4fjzak6yr8s30qrnzapnc6rl1dxy8bjai0nir"))))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'build
- ;; make warnings non fatal (jbuilder behaviour)
- (lambda _
- (invoke "dune" "build" "@install" "--profile=release"))))
- #:ocaml ,ocaml-4.07
- #:findlib ,ocaml4.07-findlib
- #:dune ,ocaml4.07-dune))
(properties '()))))
(define-public ocaml-compiler-libs
@@ -5037,7 +5045,7 @@ as part of the same ocaml-migrate-parsetree driver.")
(define-public ocaml-ppxlib
(package
(name "ocaml-ppxlib")
- (version "0.22.1")
+ (version "0.23.0")
(home-page "https://github.com/ocaml-ppx/ppxlib")
(source
(origin
@@ -5048,7 +5056,7 @@ as part of the same ocaml-migrate-parsetree driver.")
(file-name (git-file-name name version))
(sha256
(base32
- "0cpfg634if1py1b2rljk3cagq9gj68dl2gk1kdg76f9rapvl2i4g"))))
+ "0jg5v4pssbl66hn5davpin1i57a0r3r54l96vpz5y99xk5w70xi1"))))
(build-system dune-build-system)
(propagated-inputs
`(("ocaml-base" ,ocaml-base)
@@ -5328,6 +5336,10 @@ definitions.")
(uri (git-reference
(url "https://github.com/janestreet/ppx_variants_conv")
(commit (string-append "v" version))))
+ (patches
+ (search-patches
+ ;; Fix build when building with ocaml-ppxlib@0.23.0.
+ "ocaml-ppx-variants-ppxlib-api-change.patch"))
(file-name (git-file-name name version))
(sha256
(base32
@@ -5774,7 +5786,7 @@ else expression.")
(define-public ocaml-ppx-optcomp
(package
(name "ocaml-ppx-optcomp")
- (version "0.14.1")
+ (version "0.14.3")
(home-page "https://github.com/janestreet/ppx_optcomp")
(source
(origin
@@ -5785,7 +5797,7 @@ else expression.")
(file-name (git-file-name name version))
(sha256
(base32
- "0j5smqa0hig1yn8wfrb4mv0y59kkwsalmqkm5asbd7kcc6589ap4"))))
+ "1iflgfzs23asw3k6098v84al5zqx59rx2qjw0mhvk56avlx71pkw"))))
(build-system dune-build-system)
(propagated-inputs
`(("ocaml-base" ,ocaml-base)
@@ -6427,7 +6439,7 @@ the full Core is not available, such as in Javascript.")
(define-public ocaml-markup
(package
(name "ocaml-markup")
- (version "1.0.0")
+ (version "1.0.2")
(home-page "https://github.com/aantron/markup.ml")
(source
(origin
@@ -6438,7 +6450,7 @@ the full Core is not available, such as in Javascript.")
(file-name (git-file-name name version))
(sha256
(base32
- "09hkrf9pw6hpb9j06p5bddklpnjwdjpqza3bx2179l970yl67an9"))))
+ "1kvqwrrcrys5d0kzdwxcj66jpi6sdhfas4pcg02pixx92q87vhqm"))))
(build-system dune-build-system)
(arguments
`(#:package "markup"))
@@ -6491,6 +6503,9 @@ stream, and convert everything to UTF-8.")
(sha256
(base32
"0aif4abvfmi9xc1pvw5n5rbm6rzkkpsxyvdn0lanr33rjpvkwdlm"))))
+ (native-inputs
+ `(("ocaml-ounit" ,ocaml-ounit)
+ ("pkg-config" ,pkg-config)))
(properties '())))
(define-public ocaml-tyxml
@@ -6601,6 +6616,34 @@ advantage over ocamldoc is an accurate cross-referencer, which handles the
complexity of the OCaml module system.")
(license license:isc)))
+(define-public ocaml-odoc-parser
+ (package
+ (name "ocaml-odoc-parser")
+ (version "0.9.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ocaml-doc/odoc-parser")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1jlc6dp3v90r1ra7r0jfw0xs8rylwdz9gymw4rd53h0p17cw1wnj"))))
+ (build-system dune-build-system)
+ (propagated-inputs
+ `(("ocaml-astring" ,ocaml-astring)
+ ("ocaml-result" ,ocaml-result)))
+ (native-inputs
+ `(("ocaml-ppx-expect" ,ocaml-ppx-expect)))
+ (home-page "https://github.com/ocaml-doc/odoc-parser")
+ (synopsis "Parser for ocaml documentation comments")
+ (description
+ "This package provides a library for parsing the contents of OCaml
+documentation comments, formatted using Odoc syntax, an extension of the
+language understood by ocamldoc.")
+ (license license:isc)))
+
;; version 1.5.2 requires ocaml-markdown 1.0.0 which does not compile
;; with old version of dune used in package-with-ocaml4.07
(define-public ocaml4.07-odoc
@@ -7102,7 +7145,7 @@ get an precise reference of when the executable was built.")))
(define-public ocamlformat
(package
(name "ocamlformat")
- (version "0.18.0")
+ (version "0.19.0")
(source
(origin
(method git-fetch)
@@ -7112,7 +7155,7 @@ get an precise reference of when the executable was built.")))
(file-name (git-file-name name version))
(sha256
(base32
- "0n6363km8xr81pvyk453n6h2mb0256c5yxw3p1li4dn83f3lwxr1"))))
+ "0dp4pkznz9yvqx9gxwbid1z2b8ajkr8i27zay9ghx69624hz3i4z"))))
(build-system dune-build-system)
(arguments
'(#:package "ocamlformat"
@@ -7130,6 +7173,7 @@ get an precise reference of when the executable was built.")))
("ocaml-odoc" ,ocaml-odoc)
("ocaml-ppxlib" ,ocaml-ppxlib)
("ocaml-re" ,ocaml-re)
+ ("ocaml-odoc-parser" ,ocaml-odoc-parser)
("ocaml-stdio" ,ocaml-stdio)
("ocaml-uuseg" ,ocaml-uuseg)
("ocaml-uutf" ,ocaml-uutf)))