gnu: gemma: Update to 0.98.3.
[jackhill/guix/guix.git] / gnu / packages / ocaml.scm
CommitLineData
d192efae
CR
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
69b8f08c 3;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
b9d8756b 4;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
c900f843 5;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
90907a22 6;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
a747baba 7;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
0f654e63 8;;; Copyright © 2016, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
efeda080 9;;; Copyright © 2016-2020 Julien Lepiller <julien@lepiller.eu>
ec436717 10;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
338ae8eb 11;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
2b4d2a4d 12;;; Copyright © 2018 Peter Kreye <kreyepr@gmail.com>
cdcbccd1 13;;; Copyright © 2018, 2019 Gabriel Hondet <gabrielhondet@gmail.com>
59a07504 14;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
fa5d6e4c 15;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
eb1ebabf 16;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
05b90a4a 17;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
87f31bf2 18;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
19018732 19;;; Copyright © 2020 divoplade <d@divoplade.fr>
77ca156a 20;;; Copyright © 2020 pukkamustard <pukkamustard@posteo.net>
b6529e18 21;;; Copyright © 2021 aecepoglu <aecepoglu@fastmail.fm>
d192efae
CR
22;;;
23;;; This file is part of GNU Guix.
24;;;
25;;; GNU Guix is free software; you can redistribute it and/or modify it
26;;; under the terms of the GNU General Public License as published by
27;;; the Free Software Foundation; either version 3 of the License, or (at
28;;; your option) any later version.
29;;;
30;;; GNU Guix is distributed in the hope that it will be useful, but
31;;; WITHOUT ANY WARRANTY; without even the implied warranty of
32;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33;;; GNU General Public License for more details.
34;;;
35;;; You should have received a copy of the GNU General Public License
36;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
37
38(define-module (gnu packages ocaml)
d192efae 39 #:use-module (gnu packages)
eb1ebabf 40 #:use-module (gnu packages algebra)
44c23cb8 41 #:use-module (gnu packages autotools)
0705f79c 42 #:use-module (gnu packages base)
88191ace
JL
43 #:use-module (gnu packages bison)
44 #:use-module (gnu packages boost)
69b8f08c 45 #:use-module (gnu packages compression)
1ff755d1
DC
46 #:use-module (gnu packages curl)
47 #:use-module (gnu packages emacs)
eeb883cb 48 #:use-module (gnu packages emacs-xyz)
88191ace 49 #:use-module (gnu packages flex)
1ff755d1 50 #:use-module (gnu packages gcc)
90907a22 51 #:use-module (gnu packages ghostscript)
1fdfbadf 52 #:use-module (gnu packages glib)
1ff755d1
DC
53 #:use-module (gnu packages gnome)
54 #:use-module (gnu packages gtk)
1fdfbadf 55 #:use-module (gnu packages libevent)
69d08bb1 56 #:use-module (gnu packages libffi)
cd1562ef 57 #:use-module (gnu packages llvm)
a747baba 58 #:use-module (gnu packages m4)
59a07504 59 #:use-module (gnu packages maths)
ddf2b503 60 #:use-module (gnu packages multiprecision)
a34cedc4 61 #:use-module (gnu packages ncurses)
f8a12de1 62 #:use-module (gnu packages pcre)
1ff755d1
DC
63 #:use-module (gnu packages perl)
64 #:use-module (gnu packages pkg-config)
fc3d70ae 65 #:use-module (gnu packages protobuf)
1ff755d1 66 #:use-module (gnu packages python)
ec9d9325 67 #:use-module (gnu packages python-xyz)
05b90a4a 68 #:use-module (gnu packages rsync)
a9e9fd15 69 #:use-module (gnu packages sdl)
cd0322a3 70 #:use-module (gnu packages sqlite)
1ff755d1
DC
71 #:use-module (gnu packages tex)
72 #:use-module (gnu packages texinfo)
44c23cb8 73 #:use-module (gnu packages time)
37f17e2a 74 #:use-module (gnu packages tls)
7a1d25c4 75 #:use-module (gnu packages virtualization)
9e02c4ac 76 #:use-module (gnu packages web)
c5196ac7 77 #:use-module (gnu packages web-browsers)
7a76b4af 78 #:use-module (gnu packages xml)
1ff755d1 79 #:use-module (gnu packages xorg)
effc8325 80 #:use-module (guix build-system dune)
db1eb632 81 #:use-module (guix build-system emacs)
1ff755d1 82 #:use-module (guix build-system gnu)
7a76b4af 83 #:use-module (guix build-system ocaml)
1ff755d1 84 #:use-module (guix download)
8ae540a2 85 #:use-module (guix git-download)
1ff755d1
DC
86 #:use-module ((guix licenses) #:prefix license:)
87 #:use-module (guix packages)
88 #:use-module (guix svn-download)
1345231c 89 #:use-module (guix utils)
0ad5f809 90 #:use-module ((srfi srfi-1) #:hide (zip)))
d192efae 91
56f73ead
JL
92;; A shortcut for files from ocaml forge. Downloaded files are computed from
93;; their number, not their name.
94(define (ocaml-forge-uri name version file-number)
95 (string-append "https://forge.ocamlcore.org/frs/download.php/"
96 (number->string file-number) "/" name "-" version
97 ".tar.gz"))
98
adb30e51 99(define (janestreet-origin name version hash)
100 (origin (method url-fetch)
101 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
102 (version-major+minor version) "/files/"
103 name "-v" (version-major+minor+point version)
104 ".tar.gz"))
105 (sha256 (base32 hash))))
106
0c837082 107(define-public ocaml-4.11
d192efae
CR
108 (package
109 (name "ocaml")
0c837082 110 (version "4.11.1")
d192efae 111 (source (origin
69b8f08c
MW
112 (method url-fetch)
113 (uri (string-append
114 "http://caml.inria.fr/pub/distrib/ocaml-"
115 (version-major+minor version)
116 "/ocaml-" version ".tar.xz"))
117 (sha256
118 (base32
0c837082 119 "0k4521c0p10c5ams6vjv5qkkjhmpkb0bfn04llcz46ah0f3r2jpa"))))
d192efae 120 (build-system gnu-build-system)
6372e336
JN
121 (native-search-paths
122 (list (search-path-specification
123 (variable "OCAMLPATH")
e6876cb9 124 (files (list "lib/ocaml" "lib/ocaml/site-lib")))
796a17ab
JL
125 (search-path-specification
126 (variable "CAML_LD_LIBRARY_PATH")
564cf93f
JL
127 (files (list "lib/ocaml/site-lib/stubslibs"
128 "lib/ocaml/site-lib/stublibs")))))
69b8f08c
MW
129 (native-inputs
130 `(("perl" ,perl)
131 ("pkg-config" ,pkg-config)))
132 (inputs
133 `(("libx11" ,libx11)
2f6d3e41 134 ;; For libiberty, needed for objdump support.
e1f32cf1 135 ("gcc:lib" ,(canonical-package gcc) "lib")
2f6d3e41 136 ("zlib" ,zlib))) ;also needed for objdump support
d192efae 137 (arguments
7b99aa04 138 `(#:phases
69b8f08c
MW
139 (modify-phases %standard-phases
140 (add-after 'unpack 'patch-/bin/sh-references
2b1f7b83
DC
141 (lambda* (#:key inputs #:allow-other-keys)
142 (let* ((sh (string-append (assoc-ref inputs "bash")
143 "/bin/sh"))
144 (quoted-sh (string-append "\"" sh "\"")))
145 (with-fluids ((%default-port-encoding #f))
146 (for-each
147 (lambda (file)
148 (substitute* file
149 (("\"/bin/sh\"")
150 (begin
151 (format (current-error-port) "\
69b8f08c 152patch-/bin/sh-references: ~a: changing `\"/bin/sh\"' to `~a'~%"
2b1f7b83
DC
153 file quoted-sh)
154 quoted-sh))))
155 (find-files "." "\\.ml$"))
156 #t))))
69b8f08c 157 (replace 'build
2b1f7b83 158 (lambda _
bb29e855
RW
159 (invoke "make" "-j" (number->string (parallel-job-count))
160 "world.opt")))
7b99aa04 161 (replace 'check
2b1f7b83
DC
162 (lambda _
163 (with-directory-excursion "testsuite"
c3634df2 164 (invoke "make" "all")))))))
69b8f08c 165 (home-page "https://ocaml.org/")
d192efae
CR
166 (synopsis "The OCaml programming language")
167 (description
168 "OCaml is a general purpose industrial-strength programming language with
35b9e423 169an emphasis on expressiveness and safety. Developed for more than 20 years at
d192efae
CR
170Inria it benefits from one of the most advanced type systems and supports
171functional, imperative and object-oriented styles of programming.")
69b8f08c
MW
172 ;; The compiler is distributed under qpl1.0 with a change to choice of
173 ;; law: the license is governed by the laws of France. The library is
174 ;; distributed under lgpl2.0.
d8e0a08c 175 (license (list license:qpl license:lgpl2.0))))
a34cedc4 176
0c837082
JL
177(define-public ocaml-4.09
178 (package
179 (inherit ocaml-4.11)
180 (version "4.09.0")
181 (source (origin
182 (method url-fetch)
183 (uri (string-append
184 "http://caml.inria.fr/pub/distrib/ocaml-"
185 (version-major+minor version)
186 "/ocaml-" version ".tar.xz"))
187 (sha256
188 (base32
189 "1v3z5ar326f3hzvpfljg4xj8b9lmbrl53fn57yih1bkbx3gr3yzj"))))))
190
7b99aa04
JL
191(define-public ocaml-4.07
192 (package
193 (inherit ocaml-4.09)
194 (version "4.07.1")
195 (source (origin
196 (method url-fetch)
197 (uri (string-append
198 "http://caml.inria.fr/pub/distrib/ocaml-"
199 (version-major+minor version)
200 "/ocaml-" version ".tar.xz"))
201 (sha256
202 (base32
203 "1f07hgj5k45cylj1q3k5mk8yi02cwzx849b1fwnwia8xlcfqpr6z"))))
204 (arguments
205 (substitute-keyword-arguments (package-arguments ocaml-4.09)
206 ((#:phases phases)
207 `(modify-phases ,phases
208 (replace 'configure
209 (lambda* (#:key outputs #:allow-other-keys)
210 (let* ((out (assoc-ref outputs "out"))
211 (mandir (string-append out "/share/man")))
212 ;; Custom configure script doesn't recognize
213 ;; --prefix=<PREFIX> syntax (with equals sign).
214 (invoke "./configure"
215 "--prefix" out
216 "--mandir" mandir))))))))))
217
0a173fe2 218(define-public ocaml ocaml-4.11)
564cf93f
JL
219
220(define-public ocamlbuild
912f4400
JL
221 (package
222 (name "ocamlbuild")
7a4780ce 223 (version "0.14.0")
8da3f78e
TGR
224 (source
225 (origin
226 (method git-fetch)
227 (uri (git-reference
b0e7b699 228 (url "https://github.com/ocaml/ocamlbuild")
8da3f78e
TGR
229 (commit version)))
230 (file-name (git-file-name name version))
231 (sha256
7a4780ce
JL
232 (base32 "1hb5mcdz4wv7sh1pj7dq9q4fgz5h3zg7frpiya6s8zd3ypwzq0kh"))))
233 (build-system ocaml-build-system)
912f4400 234 (arguments
7a4780ce 235 `(#:make-flags
912f4400
JL
236 (list (string-append "OCAMLBUILD_PREFIX=" (assoc-ref %outputs "out"))
237 (string-append "OCAMLBUILD_BINDIR=" (assoc-ref %outputs "out")
7a4780ce 238 "/bin")
912f4400 239 (string-append "OCAMLBUILD_LIBDIR=" (assoc-ref %outputs "out")
7a4780ce 240 "/lib/ocaml/site-lib")
912f4400 241 (string-append "OCAMLBUILD_MANDIR=" (assoc-ref %outputs "out")
7a4780ce 242 "/share/man"))
912f4400
JL
243 #:phases
244 (modify-phases %standard-phases
7a4780ce
JL
245 (delete 'configure))
246 ; some failures because of changes in OCaml's error message formating
247 #:tests? #f))
912f4400
JL
248 (home-page "https://github.com/ocaml/ocamlbuild")
249 (synopsis "OCaml build tool")
250 (description "OCamlbuild is a generic build tool, that has built-in rules
251for building OCaml library and programs.")
252 (license license:lgpl2.1+)))
564cf93f 253
bb338a7f
JL
254(define-public ocaml-extlib
255 (package
256 (name "ocaml-extlib")
bb79af86 257 (version "1.7.7")
bb338a7f
JL
258 (source (origin
259 (method url-fetch)
bb79af86 260 (uri (string-append "https://ygrek.org/p/release/ocaml-extlib/"
bb338a7f
JL
261 "extlib-" version ".tar.gz"))
262 (sha256
263 (base32
bb79af86 264 "1sxmzc1mx3kg62j8kbk0dxkx8mkf1rn70h542cjzrziflznap0s1"))))
bb338a7f
JL
265 (build-system ocaml-build-system)
266 (arguments
267 `(#:phases
268 (modify-phases %standard-phases
269 (delete 'configure))))
270 (native-inputs
271 `(("ocaml-cppo" ,ocaml-cppo)))
272 (home-page "https://github.com/ygrek/ocaml-extlib")
273 (synopsis "Complete and small extension for OCaml standard library")
274 (description "This library adds new functions to OCaml standard library
275modules, modifies some functions in order to get better performances or
276safety (tail-recursive) and also provides new modules which should be useful
277for day to day programming.")
278 ;; With static-linking exception
279 (license license:lgpl2.1+)))
280
718fadb8
JL
281(define-public ocaml-cudf
282 (package
283 (name "ocaml-cudf")
284 (version "0.9")
285 (source
286 (origin
287 (method url-fetch)
288 (uri "https://gforge.inria.fr/frs/download.php/36602/cudf-0.9.tar.gz")
289 (sha256
290 (base32
291 "0771lwljqwwn3cryl0plny5a5dyyrj4z6bw66ha5n8yfbpcy8clr"))))
292 (build-system ocaml-build-system)
293 (propagated-inputs `(("ocaml-extlib" ,ocaml-extlib)))
294 (native-inputs
295 `(("perl" ,perl)
296 ("ocamlbuild" ,ocamlbuild)
297 ("ocaml-ounit" ,ocaml-ounit)))
298 (arguments
299 `(#:make-flags
300 (list
301 "all" "opt"
302 (string-append "BINDIR=" (assoc-ref %outputs "out")
303 "/bin"))
304 #:phases
305 (modify-phases %standard-phases
306 (delete 'configure))))
307 (home-page "http://www.mancoosi.org/cudf/")
308 (synopsis "CUDF library (part of the Mancoosi tools)")
309 (description "CUDF (for Common Upgradeability Description Format) is a
310format for describing upgrade scenarios in package-based Free and Open Source
311Software distribution.")
312 ;; With static-linking exception
313 (license license:lgpl2.1+)))
314
c4262cc9
JL
315(define-public ocaml-mccs
316 (package
317 (name "ocaml-mccs")
7ae38a04 318 (version "1.1+11")
c4262cc9
JL
319 (source (origin
320 (method git-fetch)
321 (uri (git-reference
322 (url "https://github.com/AltGr/ocaml-mccs")
323 (commit version)))
324 (file-name (git-file-name name version))
325 (sha256
326 (base32
7ae38a04 327 "1gsad5cj03256i36wdjqk5pg51pyd48rpjazf0gfaakrn8lk438g"))))
c4262cc9
JL
328 (build-system dune-build-system)
329 (propagated-inputs `(("ocaml-cudf" ,ocaml-cudf)))
91c19e76 330 (home-page "https://www.i3s.unice.fr/~cpjm/misc/")
c4262cc9
JL
331 (synopsis "Upgrade path problem solver")
332 (description "Mccs (Multi Criteria CUDF Solver) is a CUDF problem solver.
333Mccs take as input a CUDF problem and computes the best solution according to
334a set of criteria. It relies on a Integer Programming solver or a
335Pseudo Boolean solver to achieve its task. Mccs can use a wide set of
336underlying solvers like Cplex, Gurobi, Lpsolver, Glpk, CbC, SCIP or WBO.")
337 (license (list
338 license:bsd-3
339 license:gpl3+
340 ;; With static-linking exception
341 license:lgpl2.1+))))
342
ec9d9325
JL
343(define-public ocaml-dose3
344 (package
345 (name "ocaml-dose3")
346 (version "5.0.1")
347 (source (origin
348 (method url-fetch)
349 (uri "https://gforge.inria.fr/frs/download.php/file/36063/dose3-5.0.1.tar.gz")
350 (sha256
351 (base32
352 "00yvyfm4j423zqndvgc1ycnmiffaa2l9ab40cyg23pf51qmzk2jm"))
353 (patches
354 (search-patches
30a6cd7c 355 "ocaml-dose3-add-unix-dependency.patch"
ec9d9325
JL
356 "ocaml-dose3-Fix-for-ocaml-4.06.patch"
357 "ocaml-dose3-dont-make-printconf.patch"
358 "ocaml-dose3-Install-mli-cmx-etc.patch"))))
359 (build-system ocaml-build-system)
360 (arguments
361 `(#:configure-flags
362 (list (string-append "SHELL="
363 (assoc-ref %build-inputs "bash")
364 "/bin/sh"))
365 #:make-flags
366 (list (string-append "LIBDIR="
367 (assoc-ref %outputs "out")
368 "/lib/ocaml/site-lib"))))
369 (propagated-inputs
370 `(("ocaml-graph" ,ocaml-graph)
371 ("ocaml-cudf" ,ocaml-cudf)
372 ("ocaml-extlib" ,ocaml-extlib)
373 ("ocaml-re" ,ocaml-re)))
374 (native-inputs
375 `(("perl" ,perl)
376 ("python" ,python-2) ; for a test script
377 ("python2-pyyaml" ,python2-pyyaml) ; for a test script
378 ("ocaml-extlib" ,ocaml-extlib)
379 ("ocamlbuild" ,ocamlbuild)
380 ("ocaml-cppo" ,ocaml-cppo)))
381 (home-page "http://www.mancoosi.org/software/")
382 (synopsis "Package distribution management framework")
383 (description "Dose3 is a framework made of several OCaml libraries for
384managing distribution packages and their dependencies. Though not tied to
385any particular distribution, dose3 constitutes a pool of libraries which
386enable analyzing packages coming from various distributions. Besides basic
387functionalities for querying and setting package properties, dose3 also
388implements algorithms for solving more complex problems such as monitoring
389package evolutions, correct and complete dependency resolution and
390repository-wide uninstallability checks.")
391 ;; with static-linking exception
392 (license license:lgpl2.1+)))
393
e3b71ee6 394(define-public ocaml-down
395 (package
396 (name "ocaml-down")
397 (version "0.0.3")
398 (source
399 (origin
400 (method url-fetch)
401 (uri (string-append "https://erratique.ch/software/down/releases/down-"
402 version ".tbz"))
403 (sha256
404 (base32
405 "1nz2f5j17frgr2vrslcz9klmi6w9sm2vqwwwpi33ngcm3rgmsrlg"))))
406 (build-system ocaml-build-system)
407 (arguments
408 `(#:tests? #f ;no tests
409 #:phases
410 (modify-phases %standard-phases
411 (delete 'configure))
412 #:build-flags
413 (list "build" "--lib-dir"
414 (string-append (assoc-ref %outputs "out") "/lib/ocaml/site-lib"))))
415 (native-inputs
416 `(("ocaml-findlib" ,ocaml-findlib)
417 ("ocamlbuild" ,ocamlbuild)
418 ("ocaml-topkg" ,ocaml-topkg)
419 ("opam" ,opam)))
420 (home-page "https://erratique.ch/software/down")
421 (synopsis "OCaml toplevel (REPL) upgrade")
422 (description "Down is an unintrusive user experience upgrade for the
423@command{ocaml} toplevel (REPL).
424
425Simply load the zero dependency @code{down} library in the @command{ocaml}
426toplevel and you get line edition, history, session support and identifier
427completion and documentation with @command{ocp-index}.
428
429Add this to your @file{~/.ocamlinit}:
430
431@example
432#use \"down.top\"
433@end example
434
435You may also need to add this to your @file{~/.ocamlinit} and declare
436the environment variable @code{OCAML_TOPLEVEL_PATH}:
437
438@example
439let () =
440 try Topdirs.dir_directory (Sys.getenv \"OCAML_TOPLEVEL_PATH\")
441 with Not_found -> ()
442@end example
443
444OR
445
446@example
447let () = String.split_on_char ':' (Sys.getenv \"OCAMLPATH\")
448 |> List.filter (fun x -> Filename.check_suffix x \"/site-lib\")
449 |> List.map (fun x -> x ^ \"/toplevel\")
450 (* remove the line below if you don't want to see the text
451 every time you start the toplevel *)
452 |> List.map (fun x -> Printf.printf \"adding directory %s\\n\" x; x)
453 |> List.iter Topdirs.dir_directory;;
454@end example")
455 (license license:isc)))
456
d1358ab6
JL
457(define-public ocaml-opam-file-format
458 (package
459 (name "ocaml-opam-file-format")
460 (version "2.0.0")
461 (source (origin
462 (method git-fetch)
463 (uri (git-reference
464 (url "https://github.com/ocaml/opam-file-format")
465 (commit version)))
b7a4cb52 466 (file-name (git-file-name name version))
d1358ab6
JL
467 (sha256
468 (base32
469 "0fqb99asnair0043hhc8r158d6krv5nzvymd0xwycr5y72yrp0hv"))))
470 (build-system ocaml-build-system)
471 (arguments
472 `(#:tests? #f; No tests
473 #:make-flags (list (string-append "LIBDIR=" (assoc-ref %outputs "out")
474 "/lib/ocaml/site-lib"))
475 #:phases
476 (modify-phases %standard-phases
477 (delete 'configure))))
478 (home-page "https://opam.ocaml.org")
479 (synopsis "Parser and printer for the opam file syntax")
480 (description "This package contains a parser and a pretty-printer for
7230f6d5 481the opam file format.")
d1358ab6
JL
482 ;; With static-linking exception
483 (license license:lgpl2.1+)))
484
a34cedc4
LC
485(define-public opam
486 (package
487 (name "opam")
ef841e96 488 (version "2.0.7")
a34cedc4 489 (source (origin
e9b86fa0
JL
490 (method git-fetch)
491 (uri (git-reference
492 (url "https://github.com/ocaml/opam")
493 (commit version)))
494 (file-name (git-file-name name version))
a34cedc4
LC
495 (sha256
496 (base32
ef841e96 497 "1p719ccn9wnzk6impsnwr809yh507h8f37dx9nn64b1hsyb5z8ax"))))
e9b86fa0 498 (build-system ocaml-build-system)
a34cedc4 499 (arguments
e9b86fa0
JL
500 `(#:configure-flags
501 (list (string-append "SHELL="
502 (assoc-ref %build-inputs "bash")
503 "/bin/sh"))
a34cedc4
LC
504
505 ;; For some reason, 'ocp-build' needs $TERM to be set.
e9b86fa0
JL
506 #:make-flags
507 (list "TERM=screen"
508 (string-append "SHELL="
509 (assoc-ref %build-inputs "bash")
510 "/bin/sh"))
511
a34cedc4
LC
512 #:test-target "tests"
513
2385cab1
EB
514 #:phases (modify-phases %standard-phases
515 (add-before 'build 'pre-build
516 (lambda* (#:key inputs make-flags #:allow-other-keys)
7a1d25c4
JL
517 (let ((bash (assoc-ref inputs "bash"))
518 (bwrap (string-append (assoc-ref inputs "bubblewrap")
519 "/bin/bwrap")))
2385cab1
EB
520 (substitute* "src/core/opamSystem.ml"
521 (("\"/bin/sh\"")
7a1d25c4
JL
522 (string-append "\"" bash "/bin/sh\""))
523 (("getconf")
524 (which "getconf")))
525 ;; Use bwrap from the store directly.
526 (substitute* "src/state/shellscripts/bwrap.sh"
527 (("-v bwrap") (string-append "-v " bwrap))
2a6ba9ff
JL
528 (("exec bwrap") (string-append "exec " bwrap))
529 ;; Mount /gnu and /run/current-system in the
530 ;; isolated environment when building with opam.
531 ;; This is necessary for packages to find external
532 ;; dependencies, such as a C compiler, make, etc...
e9b86fa0
JL
533 (("^add_sys_mounts /usr")
534 "add_sys_mounts /gnu /run/current-system /usr"))
7a1d25c4
JL
535 (substitute* "src/client/opamInitDefaults.ml"
536 (("\"bwrap\"") (string-append "\"" bwrap "\"")))
efeda080
JL
537 ;; Generating the documentation needs write access
538 (for-each
539 (lambda (f) (chmod f #o644))
540 (find-files "doc" "."))
7a1d25c4 541 #t)))
2385cab1
EB
542 (add-before 'check 'pre-check
543 (lambda _
05b90a4a
MB
544 ;; The "repo" test attempts to open some of these files O_WRONLY
545 ;; and fails with a bogus "OpamSystem.File_not_found" otherwise.
546 (for-each
547 (lambda (f) (chmod f #o644))
548 (find-files "tests/packages" "\\.opam$"))
549
550 (substitute* "tests/Makefile"
551 (("/usr/bin/printf")
552 (which "printf"))
553 ;; By default tests run twice: once with a "local" repository
554 ;; and once with a git repository: disable the git tests to
555 ;; avoid the dependency.
556 (("all: local git")
557 "all: local"))
7a1d25c4 558 #t)))))
a34cedc4 559 (native-inputs
e9b86fa0 560 `(("dune" ,dune)
e9b86fa0 561 ("ocaml-cppo" ,ocaml-cppo)
05b90a4a
MB
562
563 ;; For tests.
564 ("openssl" ,openssl)
565 ("python" ,python-wrapper)
566 ("rsync" ,rsync)
567 ("unzip" ,unzip)
568 ("which" ,which)))
a34cedc4
LC
569 (inputs
570 `(("ocaml" ,ocaml)
571 ("ncurses" ,ncurses)
7a1d25c4
JL
572 ("curl" ,curl)
573 ("bubblewrap" ,bubblewrap)))
e9b86fa0
JL
574 (propagated-inputs
575 `(("ocaml-cmdliner" ,ocaml-cmdliner)
576 ("ocaml-dose3" ,ocaml-dose3)
577 ("ocaml-mccs" ,ocaml-mccs)
578 ("ocaml-opam-file-format" ,ocaml-opam-file-format)
579 ("ocaml-re" ,ocaml-re)))
a34cedc4
LC
580 (home-page "http://opam.ocamlpro.com/")
581 (synopsis "Package manager for OCaml")
582 (description
583 "OPAM is a tool to manage OCaml packages. It supports multiple
584simultaneous compiler installations, flexible package constraints, and a
585Git-friendly development workflow.")
586
587 ;; The 'LICENSE' file waives some requirements compared to LGPLv3.
d8e0a08c 588 (license license:lgpl3)))
83f4dc36
MW
589
590(define-public camlp5
591 (package
592 (name "camlp5")
61949dbc 593 (version "7.13")
6aade739
TGR
594 (source
595 (origin
596 (method git-fetch)
597 (uri (git-reference
b0e7b699 598 (url "https://github.com/camlp5/camlp5")
6aade739
TGR
599 (commit (string-append "rel" (string-delete #\. version)))))
600 (file-name (git-file-name name version))
601 (sha256
61949dbc 602 (base32 "1d9spy3f5ahixm8nxxk086kpslzva669a5scn49am0s7vx4i71kp"))))
83f4dc36
MW
603 (build-system gnu-build-system)
604 (inputs
605 `(("ocaml" ,ocaml)))
606 (arguments
607 `(#:tests? #f ; XXX TODO figure out how to run the tests
608 #:phases
609 (modify-phases %standard-phases
610 (replace 'configure
611 (lambda* (#:key outputs #:allow-other-keys)
612 (let* ((out (assoc-ref outputs "out"))
613 (mandir (string-append out "/share/man")))
614 ;; Custom configure script doesn't recognize
615 ;; --prefix=<PREFIX> syntax (with equals sign).
402dedf8
MW
616 (invoke "./configure"
617 "--prefix" out
618 "--mandir" mandir))))
564cf93f
JL
619 (add-before 'build 'fix-/bin-references
620 (lambda _
621 (substitute* "config/Makefile"
622 (("/bin/rm") "rm"))
623 #t))
83f4dc36
MW
624 (replace 'build
625 (lambda _
402dedf8
MW
626 (invoke "make" "-j" (number->string
627 (parallel-job-count))
628 "world.opt")))
07b4cd3a
JL
629 ;; Required for findlib to find camlp5's libraries
630 (add-after 'install 'install-meta
631 (lambda* (#:key outputs #:allow-other-keys)
632 (install-file "etc/META" (string-append (assoc-ref outputs "out")
402dedf8
MW
633 "/lib/ocaml/camlp5/"))
634 #t)))))
619ffa02 635 (home-page "https://camlp5.github.io/")
83f4dc36
MW
636 (synopsis "Pre-processor Pretty Printer for OCaml")
637 (description
638 "Camlp5 is a Pre-Processor-Pretty-Printer for Objective Caml. It offers
639tools for syntax (Stream Parsers and Grammars) and the ability to modify the
640concrete syntax of the language (Quotations, Syntax Extensions).")
641 ;; Most files are distributed under bsd-3, but ocaml_stuff/* is under qpl.
d8e0a08c 642 (license (list license:bsd-3 license:qpl))))
d6b7b5ed
MW
643
644(define-public hevea
645 (package
646 (name "hevea")
2da5fcfd 647 (version "2.34")
d6b7b5ed
MW
648 (source (origin
649 (method url-fetch)
8f26f239 650 (uri (string-append "http://hevea.inria.fr/old/"
c917c23e 651 "hevea-" version ".tar.gz"))
d6b7b5ed
MW
652 (sha256
653 (base32
2da5fcfd 654 "1pzyszxw90klpcmhjqrjfc8cw6c0gm4w2blim8ydyxb6rq6qml1s"))))
d6b7b5ed
MW
655 (build-system gnu-build-system)
656 (inputs
657 `(("ocaml" ,ocaml)))
564cf93f
JL
658 (native-inputs
659 `(("ocamlbuild" ,ocamlbuild)))
d6b7b5ed 660 (arguments
c917c23e 661 `(#:tests? #f ; no test suite
d6b7b5ed
MW
662 #:make-flags (list (string-append "PREFIX=" %output))
663 #:phases (modify-phases %standard-phases
f5a8491b
EB
664 (delete 'configure)
665 (add-before 'build 'patch-/bin/sh
666 (lambda _
667 (substitute* "_tags"
668 (("/bin/sh") (which "sh")))
669 #t)))))
d6b7b5ed
MW
670 (home-page "http://hevea.inria.fr/")
671 (synopsis "LaTeX to HTML translator")
672 (description
673 "HeVeA is a LaTeX to HTML translator that generates modern HTML 5. It is
674written in Objective Caml.")
d8e0a08c 675 (license license:qpl)))
1973183b 676
564cf93f
JL
677(define-public ocaml-num
678 (package
679 (name "ocaml-num")
680 (version "1.1")
34f615a2
TGR
681 (source
682 (origin
683 (method git-fetch)
684 (uri (git-reference
b0e7b699 685 (url "https://github.com/ocaml/num")
34f615a2
TGR
686 (commit (string-append "v" version))))
687 (file-name (git-file-name name version))
688 (sha256
689 (base32 "0a4mhxgs5hi81d227aygjx35696314swas0vzy3ig809jb7zq4h0"))))
564cf93f
JL
690 (build-system ocaml-build-system)
691 (arguments
692 `(#:phases
693 (modify-phases %standard-phases
694 (delete 'configure)
695 (add-before 'build 'fix-makefile
696 (lambda* (#:key outputs #:allow-other-keys)
697 ;; This package supposes we install to the same directory as
698 ;; the ocaml package.
699 (substitute* "src/META"
700 (("\"\\^\"") (string-append "\"" (assoc-ref outputs "out")
701 "/lib/ocaml/site-lib\"")))
702 (substitute* "src/Makefile"
703 (("\\) \\$\\(STDLIBDIR\\)")
704 (string-append ") " (assoc-ref outputs "out")
705 "/lib/ocaml/site-lib")))
706 #t))
707 (add-after 'install 'fix-stubslib
708 (lambda* (#:key outputs #:allow-other-keys)
709 (format #t "~a~%" (find-files "." ".*.so"))
710 (let ((stubdir (string-append (assoc-ref outputs "out")
38f06188
JL
711 "/lib/ocaml/site-lib/stublibs")))
712 (delete-file stubdir)
564cf93f
JL
713 (mkdir-p stubdir)
714 (install-file "src/dllnums.so" stubdir))
715 #t)))))
716 (home-page "https://github.com/ocaml/num")
717 (synopsis "Arbitrary-precision integer and rational arithmetic")
718 (description "OCaml-Num contains the legacy Num library for
719arbitrary-precision integer and rational arithmetic that used to be part of
720the OCaml core distribution.")
721 (license license:lgpl2.1+))); with linking exception
722
833ade67 723(define-public emacs-tuareg
87f31bf2 724 ;; Last upstream release on Sept., 14th, 2018, since then "Package cl
725 ;; deprecated" or 'lexical-binding' and others had been fixed.
726 (let ((commit "ccde45bbc292123ec20617f1af7f7e19f7481545")
727 (revision "0"))
728 (package
729 (name "emacs-tuareg")
730 (version (git-version "2.2.0" revision commit))
731 (source
732 (origin
733 (method git-fetch)
734 (uri (git-reference
735 (url "https://github.com/ocaml/tuareg")
736 (commit commit)))
737 (file-name (git-file-name name version))
738 (sha256
739 (base32 "1yxv4bnqarilnpg5j7wywall8170hwvm0q4xx06yqjgcn8pq1lac"))))
740 (build-system gnu-build-system)
741 (native-inputs
742 `(("emacs" ,emacs-minimal)
743 ("opam" ,opam)))
744 (arguments
745 `(#:phases
746 (modify-phases %standard-phases
747 (add-after 'unpack 'make-git-checkout-writable
748 (lambda _
749 (for-each make-file-writable (find-files "."))
750 #t))
751 (delete 'configure)
752 (add-before 'install 'fix-install-path
753 (lambda* (#:key outputs #:allow-other-keys)
754 (substitute* "Makefile"
755 (("/emacs/site-lisp")
756 (string-append (assoc-ref %outputs "out")
757 "/share/emacs/site-lisp/")))
758 #t))
759 (add-after 'install 'post-install
760 (lambda* (#:key outputs #:allow-other-keys)
761 (symlink "tuareg.el"
762 (string-append (assoc-ref outputs "out")
763 "/share/emacs/site-lisp/"
764 "tuareg-autoloads.el"))
765 #t)))))
766 (home-page "https://github.com/ocaml/tuareg")
767 (synopsis "OCaml programming mode, REPL, debugger for Emacs")
768 (description "Tuareg helps editing OCaml code, to highlight important
833ade67
OP
769parts of the code, to run an OCaml REPL, and to run the OCaml debugger within
770Emacs.")
87f31bf2 771 (license license:gpl2+))))
833ade67 772
e31b75f2
DC
773(define-public ocaml-menhir
774 (package
775 (name "ocaml-menhir")
20e5658c 776 (version "20200211")
187f9636 777 (source
778 (origin
779 (method git-fetch)
780 (uri (git-reference
781 (url "https://gitlab.inria.fr/fpottier/menhir.git")
782 (commit version)))
783 (file-name (git-file-name name version))
784 (sha256
20e5658c
VL
785 (base32 "019izf51kdc7pzkw68zg8a2alc8lxw1gwdp7in970mr90n16b5zj"))))
786 (build-system dune-build-system)
e31b75f2
DC
787 (inputs
788 `(("ocaml" ,ocaml)))
789 (arguments
20e5658c 790 `(#:tests? #f)) ; No check target
187f9636 791 (home-page "http://gallium.inria.fr/~fpottier/menhir/")
e31b75f2
DC
792 (synopsis "Parser generator")
793 (description "Menhir is a parser generator. It turns high-level grammar
794specifications, decorated with semantic actions expressed in the OCaml
187f9636 795programming language into parsers, again expressed in OCaml. It is based on
e31b75f2
DC
796Knuth’s LR(1) parser construction technique.")
797 ;; The file src/standard.mly and all files listed in src/mnehirLib.mlpack
798 ;; that have an *.ml or *.mli extension are GPL licensed. All other files
799 ;; are QPL licensed.
d8e0a08c 800 (license (list license:gpl2+ license:qpl))))
e31b75f2 801
ce9a30e6
JL
802(define-public ocaml-bigarray-compat
803 (package
804 (name "ocaml-bigarray-compat")
805 (version "1.0.0")
806 (source (origin
807 (method git-fetch)
808 (uri (git-reference
809 (url "https://github.com/mirage/bigarray-compat")
810 (commit (string-append "v" version))))
811 (file-name (git-file-name name version))
812 (sha256
813 (base32
814 "06j1dwlpisxshdd0nab4n4x266gg1s1n8na16lpgw3fvcznwnimz"))))
815 (build-system dune-build-system)
816 (arguments
817 `(#:tests? #f)); no tests
818 (home-page "https://github.com/mirage/bigarray-compat")
819 (synopsis "OCaml compatibility library")
820 (description "This package contains a compatibility library for
821@code{Stdlib.Bigarray} in OCaml.")
822 (license license:isc)))
823
3573b634
AE
824(define-public lablgtk
825 (package
826 (name "lablgtk")
a79b7ab5 827 (version "2.18.10")
56f73ead 828 (source (origin
3a23b461
JL
829 (method git-fetch)
830 (uri (git-reference
831 (url "https://github.com/garrigue/lablgtk")
a79b7ab5 832 (commit version)))
bcda0779 833 (file-name (git-file-name name version))
56f73ead
JL
834 (sha256
835 (base32
a79b7ab5 836 "0w8cdfcv2wc19sd3qzj3qq77qc6rbnbynsz02gzbl15kgrvgrfxi"))))
3573b634
AE
837 (build-system gnu-build-system)
838 (native-inputs
3a23b461 839 `(("ocaml" ,ocaml)
8afd1958 840 ("findlib" ,ocaml-findlib)
3573b634
AE
841 ("pkg-config" ,pkg-config)))
842 ;; FIXME: Add inputs gtkgl-2.0, libpanelapplet-2.0, gtkspell-2.0,
843 ;; and gtk+-quartz-2.0 once available.
844 (inputs
845 `(("gtk+" ,gtk+-2)
c900f843 846 ("gtksourceview" ,gtksourceview-2)
3573b634
AE
847 ("libgnomecanvas" ,libgnomecanvas)
848 ("libgnomeui" ,libgnomeui)
849 ("libglade" ,libglade)
850 ("librsvg" ,librsvg)))
851 (arguments
852 `(#:tests? #f ; no check target
ef89cb42 853
8c1088bb 854 ;; opt: also install cmxa files
8afd1958
JL
855 #:make-flags (list "all" "opt"
856 (string-append "FINDLIBDIR="
857 (assoc-ref %outputs "out")
858 "/lib/ocaml"))
ef89cb42
LC
859 ;; Occasionally we would get "Error: Unbound module GtkThread" when
860 ;; compiling 'gtkThInit.ml', with 'make -j'. So build sequentially.
861 #:parallel-build? #f
862
3573b634
AE
863 #:phases
864 (modify-phases %standard-phases
8afd1958 865 (add-before 'install 'prepare-install
3573b634
AE
866 (lambda* (#:key inputs outputs #:allow-other-keys)
867 (let ((out (assoc-ref outputs "out"))
868 (ocaml (assoc-ref inputs "ocaml")))
869 ;; Install into the output and not the ocaml directory.
8afd1958 870 (mkdir-p (string-append out "/lib/ocaml"))
3573b634
AE
871 (substitute* "config.make"
872 ((ocaml) out))
3573b634 873 #t))))))
73c26d57 874 (properties `((ocaml4.07-variant . ,(delay ocaml4.07-lablgtk))))
3573b634
AE
875 (home-page "http://lablgtk.forge.ocamlcore.org/")
876 (synopsis "GTK+ bindings for OCaml")
877 (description
878 "LablGtk is an OCaml interface to GTK+ 1.2 and 2.x. It provides
879a strongly-typed object-oriented interface that is compatible with the
880dynamic typing of GTK+. Most widgets and methods are available. LablGtk
881also provides bindings to
882gdk-pixbuf, the GLArea widget (in combination with LablGL), gnomecanvas,
883gnomeui, gtksourceview, gtkspell,
884libglade (and it an generate OCaml code from .glade files),
885libpanel, librsvg and quartz.")
d8e0a08c 886 (license license:lgpl2.1)))
3573b634 887
73c26d57
JL
888(define-public ocaml4.07-lablgtk
889 (package
890 (inherit lablgtk)
891 (name "ocaml4.07-lablgtk")
892 (native-inputs
893 `(("ocaml" ,ocaml-4.07)
894 ("findlib" ,ocaml4.07-findlib)
895 ("pkg-config" ,pkg-config)))
896 (properties '())))
897
b9d8756b
AE
898(define-public unison
899 (package
900 (name "unison")
6c8666b4
AE
901 (version "2.51.2")
902 (source (origin
903 (method git-fetch)
904 (uri (git-reference
b0e7b699 905 (url "https://github.com/bcpierce00/unison")
6c8666b4
AE
906 (commit (string-append "v" version))))
907 (file-name (git-file-name name version))
908 (sha256
909 (base32
aea459a5
JL
910 "1bykiyc0dc5pkw8x370qkg2kygq9pq7yqzsgczd3y13b6ivm4sdq"))
911 (patches (search-patches "unison-fix-ocaml-4.08.patch"))))
b9d8756b 912 (build-system gnu-build-system)
90907a22
EB
913 (outputs '("out"
914 "doc")) ; 1.9 MiB of documentation
b9d8756b 915 (native-inputs
aea459a5 916 `(("ocaml" ,ocaml-4.09)
90907a22 917 ;; For documentation
2be896de 918 ("ghostscript" ,ghostscript)
68139bce 919 ("texlive" ,texlive-tiny)
90907a22 920 ("hevea" ,hevea)
564cf93f
JL
921 ("lynx" ,lynx)
922 ("which" ,which)))
b9d8756b
AE
923 (arguments
924 `(#:parallel-build? #f
925 #:parallel-tests? #f
926 #:test-target "selftest"
927 #:tests? #f ; Tests require writing to $HOME.
928 ; If some $HOME is provided, they fail with the message
929 ; "Fatal error: Skipping some tests -- remove me!"
930 #:phases
931 (modify-phases %standard-phases
932 (delete 'configure)
933 (add-before 'install 'prepare-install
934 (lambda* (#:key outputs #:allow-other-keys)
935 (let* ((out (assoc-ref outputs "out"))
936 (bin (string-append out "/bin")))
937 (mkdir-p bin)
938 (setenv "HOME" out) ; forces correct INSTALLDIR in Makefile
90907a22 939 #t)))
31d968fb
OD
940 (add-after 'install 'install-fsmonitor
941 (lambda* (#:key outputs #:allow-other-keys)
942 (let* ((out (assoc-ref outputs "out"))
943 (bin (string-append out "/bin")))
944 ;; 'unison-fsmonitor' is used in "unison -repeat watch" mode.
317e80ce
TGR
945 (install-file "src/unison-fsmonitor" bin)
946 #t)))
90907a22 947 (add-after 'install 'install-doc
31d968fb 948 (lambda* (#:key outputs #:allow-other-keys)
90907a22
EB
949 (let ((doc (string-append (assoc-ref outputs "doc")
950 "/share/doc/unison")))
951 (mkdir-p doc)
50ab554b
JL
952 ;; Remove an '\n' that prevents the doc to be generated
953 ;; correctly with newer hevea.
954 (substitute* "doc/local.tex"
955 (("----SNIP----.*") "----SNIP----"))
90907a22
EB
956 ;; This file needs write-permissions, because it's
957 ;; overwritten by 'docs' during documentation generation.
958 (chmod "src/strings.ml" #o600)
317e80ce
TGR
959 (invoke "make" "docs"
960 "TEXDIRECTIVES=\\\\draftfalse")
961 (for-each (lambda (f)
962 (install-file f doc))
963 (map (lambda (ext)
964 (string-append "doc/unison-manual." ext))
965 ;; Install only html documentation,
966 ;; since the build is currently
967 ;; non-reproducible with the ps, pdf,
968 ;; and dvi docs.
969 '(;; "ps" "pdf" "dvi"
970 "html")))
971 #t))))))
b9d8756b
AE
972 (home-page "https://www.cis.upenn.edu/~bcpierce/unison/")
973 (synopsis "File synchronizer")
974 (description
975 "Unison is a file-synchronization tool. It allows two replicas of
976a collection of files and directories to be stored on different hosts
977(or different disks on the same host), modified separately, and then
978brought up to date by propagating the changes in each replica
979to the other.")
d8e0a08c 980 (license license:gpl3+)))
a747baba
JN
981
982(define-public ocaml-findlib
983 (package
984 (name "ocaml-findlib")
a36074a8 985 (version "1.8.1")
a747baba
JN
986 (source (origin
987 (method url-fetch)
988 (uri (string-append "http://download.camlcity.org/download/"
989 "findlib" "-" version ".tar.gz"))
990 (sha256
991 (base32
a36074a8 992 "00s3sfb02pnjmkax25pcnljcnhcggiliccfz69a72ic7gsjwz1cf"))))
a747baba
JN
993 (build-system gnu-build-system)
994 (native-inputs
a36074a8 995 `(("m4" ,m4)
a747baba
JN
996 ("ocaml" ,ocaml)))
997 (arguments
998 `(#:tests? #f ; no test suite
999 #:parallel-build? #f
1000 #:make-flags (list "all" "opt")
1001 #:phases (modify-phases %standard-phases
1002 (replace
1003 'configure
1004 (lambda* (#:key inputs outputs #:allow-other-keys)
1005 (let ((out (assoc-ref outputs "out")))
4a810e75 1006 (invoke
a747baba
JN
1007 "./configure"
1008 "-bindir" (string-append out "/bin")
1009 "-config" (string-append out "/etc/ocamfind.conf")
1010 "-mandir" (string-append out "/share/man")
1011 "-sitelib" (string-append out "/lib/ocaml/site-lib")
ad3d730e 1012 "-with-toolbox"))))
bff6739d
PK
1013 (replace 'install
1014 (lambda* (#:key outputs #:allow-other-keys)
1015 (let ((out (assoc-ref outputs "out")))
4a810e75
MW
1016 (invoke "make" "install"
1017 (string-append "OCAML_CORE_STDLIB="
a36074a8 1018 out "/lib/ocaml/site-lib"))))))))
a747baba
JN
1019 (home-page "http://projects.camlcity.org/projects/findlib.html")
1020 (synopsis "Management tool for OCaml libraries")
1021 (description
1022 "The \"findlib\" library provides a scheme to manage reusable software
1023components (packages), and includes tools that support this scheme. Packages
1024are collections of OCaml modules for which metainformation can be stored. The
8f65585b 1025packages are kept in the file system hierarchy, but with strict directory
a747baba
JN
1026structure. The library contains functions to look the directory up that
1027stores a package, to query metainformation about a package, and to retrieve
1028dependency information about multiple packages. There is also a tool that
1029allows the user to enter queries on the command-line. In order to simplify
1030compilation and linkage, there are new frontends of the various OCaml
1031compilers that can directly deal with packages.")
d8e0a08c 1032 (license license:x11)))
7a76b4af 1033
e3388d63
JL
1034(define-public ocaml4.07-findlib
1035 (package
1036 (inherit ocaml-findlib)
1037 (name "ocaml4.07-findlib")
59fcf386 1038 (native-inputs
e3388d63
JL
1039 `(("m4" ,m4)
1040 ("ocaml" ,ocaml-4.07)))))
1041
35c02c55
JL
1042(define-public ocaml4.09-findlib
1043 (package
1044 (inherit ocaml-findlib)
1045 (name "ocaml4.09-findlib")
1046 (native-inputs
1047 `(("m4" ,m4)
1048 ("ocaml" ,ocaml-4.09)))))
1049
349699bb 1050(define-public ocaml-ounit2
1051 (package
1052 (name "ocaml-ounit2")
1053 (version "2.2.4")
1054 (source (origin
1055 (method git-fetch)
1056 (uri (git-reference
1057 (url "https://github.com/gildor478/ounit.git")
1058 (commit (string-append "v" version))))
1059 (file-name (git-file-name name version))
1060 (sha256
1061 (base32
1062 "0gxjw1bhmjcjzri6x6psqrkbbyq678b69bqfl9i1zswp7cj2lryg"))))
1063 (build-system dune-build-system)
1064 (inputs
1065 ;; XXX Should libev be a propagated-input of ocaml-lwt?
1066 `(("libev" ,libev)))
1067 (propagated-inputs
1068 `(("lwt" ,ocaml-lwt)
1069 ("ocaml-stdlib-shims" ,ocaml-stdlib-shims)))
1070 (home-page "https://github.com/gildor478/ounit")
1071 (synopsis "Unit testing framework for OCaml")
1072 (description "OUnit2 is a unit testing framework for OCaml. It is similar
1073to JUnit and other XUnit testing frameworks.")
1074 (license license:expat)))
1075
7a76b4af
JL
1076;; note that some tests may hang for no obvious reason.
1077(define-public ocaml-ounit
1078 (package
1079 (name "ocaml-ounit")
483be9bd 1080 (version "2.0.8")
7a76b4af
JL
1081 (source (origin
1082 (method url-fetch)
483be9bd 1083 (uri (ocaml-forge-uri "ounit" version 1749))
7a76b4af
JL
1084 (sha256
1085 (base32
483be9bd 1086 "03ifp9hjcxg4m5j190iy373jcn4039d3vy10kmd8p4lfciwzwc1f"))))
7a76b4af
JL
1087 (build-system ocaml-build-system)
1088 (native-inputs
564cf93f
JL
1089 `(("libxml2" ,libxml2) ; for xmllint
1090 ("ocamlbuild" ,ocamlbuild)))
7a76b4af 1091 (arguments
337273e4
DC
1092 `(#:phases
1093 (modify-phases %standard-phases
483be9bd 1094 (delete 'check)))) ; tests are run during build
7a76b4af
JL
1095 (home-page "http://ounit.forge.ocamlcore.org")
1096 (synopsis "Unit testing framework for OCaml")
1097 (description "Unit testing framework for OCaml. It is similar to JUnit and
1098other XUnit testing frameworks.")
1099 (license license:expat)))
bc2c3bc6
JL
1100
1101(define-public camlzip
1102 (package
1103 (name "camlzip")
1104 (version "1.0.6")
1105 (source (origin
1106 (method url-fetch)
1107 (uri (ocaml-forge-uri name version 1616))
1108 (sha256
1109 (base32
1110 "0m6gyjw46w3qnhxfsyqyag42znl5lwargks7w7rfchr9jzwpff68"))))
1111 (build-system ocaml-build-system)
1112 (inputs
1113 `(("zlib" ,zlib)))
1114 (arguments
1115 `(#:phases
1116 (modify-phases %standard-phases
1117 (delete 'configure)
8fe6b932
JL
1118 (add-after 'install 'install-camlzip
1119 (lambda* (#:key outputs #:allow-other-keys)
1120 (let* ((out (assoc-ref outputs "out"))
1121 (dir (string-append out "/lib/ocaml/site-lib/camlzip")))
1122 (mkdir-p dir)
1123 (call-with-output-file (string-append dir "/META")
1124 (lambda (port)
1125 (format port "version=\"1.06\"\n")
1126 (format port "requires=\"unix\"\n")
1127 (format port "archive(byte)=\"zip.cma\"\n")
1128 (format port "archive(native)=\"zip.cmxa\"\n")
1129 (format port "archive(native,plugin)=\"zip.cmxs\"\n")
1130 (format port "directory=\"../zip\"\n")))))))
bc2c3bc6
JL
1131 #:install-target "install-findlib"
1132 #:make-flags
1133 (list "all" "allopt"
1134 (string-append "INSTALLDIR=" (assoc-ref %outputs "out")
1135 "/lib/ocaml"))))
0c34b5e6 1136 (home-page "https://github.com/xavierleroy/camlzip")
bc2c3bc6
JL
1137 (synopsis "Provides easy access to compressed files")
1138 (description "Provides easy access to compressed files in ZIP, GZIP and
1139JAR format. It provides functions for reading from and writing to compressed
1140files in these formats.")
1141 (license license:lgpl2.1+)))
93eeadf0
JL
1142
1143(define-public ocamlmod
1144 (package
1145 (name "ocamlmod")
564cf93f 1146 (version "0.0.9")
93eeadf0
JL
1147 (source (origin
1148 (method url-fetch)
564cf93f 1149 (uri (ocaml-forge-uri name version 1702))
93eeadf0
JL
1150 (sha256
1151 (base32
564cf93f 1152 "0cgp9qqrq7ayyhddrmqmq1affvfqcn722qiakjq4dkywvp67h4aa"))))
93eeadf0
JL
1153 (build-system ocaml-build-system)
1154 (native-inputs
564cf93f
JL
1155 `(("ounit" ,ocaml-ounit)
1156 ("ocamlbuild" ,ocamlbuild)))
93eeadf0 1157 (arguments
3dcaa122
DC
1158 `(#:phases
1159 (modify-phases %standard-phases
1160 ;; Tests are done during build.
1161 (delete 'check))))
93eeadf0
JL
1162 (home-page "https://forge.ocamlcore.org/projects/ocamlmod")
1163 (synopsis "Generate modules from OCaml source files")
1164 (description "Generate modules from OCaml source files.")
1165 (license license:lgpl2.1+))) ; with an exception
ddf2b503
JL
1166
1167(define-public ocaml-zarith
1168 (package
1169 (name "ocaml-zarith")
3882f607 1170 (version "1.9.1")
ddf2b503 1171 (source (origin
09cd92a9
JL
1172 (method git-fetch)
1173 (uri (git-reference
1174 (url "https://github.com/ocaml/Zarith")
1175 (commit (string-append "release-" version))))
f1d4d79f 1176 (file-name (git-file-name name version))
ddf2b503
JL
1177 (sha256
1178 (base32
3882f607 1179 "0hv5ywz1q2cgn8apfz490clwk5hcynr937g2v8i13x2ax4bnv0lz"))))
ddf2b503
JL
1180 (build-system ocaml-build-system)
1181 (native-inputs
1182 `(("perl" ,perl)))
1183 (inputs
1184 `(("gmp" ,gmp)))
1185 (arguments
1186 `(#:tests? #f ; no test target
1187 #:phases
1188 (modify-phases %standard-phases
1189 (replace 'configure
04daa1ed 1190 (lambda _ (invoke "./configure"))))))
ddf2b503
JL
1191 (home-page "https://forge.ocamlcore.org/projects/zarith/")
1192 (synopsis "Implements arbitrary-precision integers")
1193 (description "Implements arithmetic and logical operations over
1194arbitrary-precision integers. It uses GMP to efficiently implement arithmetic
1195over big integers. Small integers are represented as Caml unboxed integers,
1196for speed and space economy.")
1197 (license license:lgpl2.1+))) ; with an exception
ff891f10
JL
1198
1199(define-public ocaml-frontc
1200 (package
1201 (name "ocaml-frontc")
e57dd201 1202 (version "3.4.2")
ff891f10 1203 (source (origin
bbe9915b
JL
1204 (method git-fetch)
1205 (uri (git-reference
1206 (url "https://github.com/BinaryAnalysisPlatform/FrontC")
1207 (commit (string-append
1208 "V_" (string-join (string-split version #\.) "_")))))
1209 (file-name (git-file-name name version))
ff891f10
JL
1210 (sha256
1211 (base32
e57dd201 1212 "0k7jk9hkglnkk27s62xl493jyqc017gyvwqb1lyc0ywbb001s102"))))
ff891f10
JL
1213 (build-system ocaml-build-system)
1214 (arguments
bbe9915b 1215 `(#:phases
ff891f10
JL
1216 (modify-phases %standard-phases
1217 (delete 'configure)
1218 (add-after 'install 'install-meta
1219 (lambda* (#:key outputs #:allow-other-keys)
1220 (let ((out (assoc-ref outputs "out")))
1221 (with-output-to-file
1222 (string-append out "/lib/ocaml/frontc/META")
1223 (lambda _
1224 (display
1225 (string-append
1226 "description = \"Parser for the C language\"
1227version = \"" ,version "\"
1228requires = \"unix\"
1229archive(byte) = \"frontc.cma\"
1230archive(native) = \"frontc.cmxa\""))))
1231 (symlink (string-append out "/lib/ocaml/frontc")
1232 (string-append out "/lib/ocaml/FrontC"))))))
1233 #:make-flags (list (string-append "PREFIX="
1234 (assoc-ref %outputs "out"))
1235 "OCAML_SITE=$(LIB_DIR)/ocaml/")))
ee33e415 1236 (properties `((upstream-name . "FrontC")))
ff891f10
JL
1237 (home-page "https://www.irit.fr/FrontC")
1238 (synopsis "C parser and lexer library")
1239 (description "FrontC is an OCAML library providing a C parser and lexer.
1240The result is a syntactic tree easy to process with usual OCAML tree management.
1241It provides support for ANSI C syntax, old-C K&R style syntax and the standard
1242GNU CC attributes. It provides also a C pretty printer as an example of use.")
1243 (license license:lgpl2.1)))
0472836f 1244
2c6ef0dd
JL
1245(define-public ocaml-qcheck
1246 (package
1247 (name "ocaml-qcheck")
795cf2a3 1248 (version "0.12")
b0133981
TGR
1249 (source
1250 (origin
1251 (method git-fetch)
1252 (uri (git-reference
b0e7b699 1253 (url "https://github.com/c-cube/qcheck")
b0133981
TGR
1254 (commit version)))
1255 (file-name (git-file-name name version))
1256 (sha256
795cf2a3 1257 (base32 "1llnfynhlndwyjig7wrayjnds2b3mggp5lw20dwxhn2i2lkkb22m"))))
3f59ecfc
JL
1258 (build-system dune-build-system)
1259 (arguments
795cf2a3
JL
1260 `(#:test-target "."
1261 #:phases
1262 (modify-phases %standard-phases
1263 (add-before 'build 'fix-deprecated
1264 (lambda _
1265 (substitute* "src/core/QCheck.ml"
1266 (("Pervasives.compare") "compare"))
1267 #t)))))
1268 (propagated-inputs
3f59ecfc 1269 `(("ocaml-alcotest" ,ocaml-alcotest)
795cf2a3
JL
1270 ("ocaml-ounit" ,ocaml-ounit)))
1271 (native-inputs
1272 `(("ocamlbuild" ,ocamlbuild)))
2c6ef0dd
JL
1273 (home-page "https://github.com/c-cube/qcheck")
1274 (synopsis "QuickCheck inspired property-based testing for OCaml")
1275 (description "QuickCheck inspired property-based testing for OCaml. This
bf052724 1276module checks invariants (properties of some types) over randomly
2c6ef0dd
JL
1277generated instances of the type. It provides combinators for generating
1278instances and printing them.")
1279 (license license:lgpl3+)))
1280
0472836f
JL
1281(define-public ocaml-qtest
1282 (package
1283 (name "ocaml-qtest")
73e01ae4 1284 (version "2.10.1")
0472836f 1285 (source (origin
e821a640
JL
1286 (method git-fetch)
1287 (uri (git-reference
1288 (url "https://github.com/vincent-hugot/qtest/")
1289 (commit (string-append "v" version))))
1290 (file-name (git-file-name name version))
0472836f
JL
1291 (sha256
1292 (base32
73e01ae4 1293 "0gddzan4vzs0vklsxhirdjrvx3rp7hhh2yr20vi13nq8rwkn9w29"))))
e821a640
JL
1294 (build-system dune-build-system)
1295 (arguments
a8a8547a 1296 `(#:test-target "tests"))
0472836f 1297 (propagated-inputs
e24d5271
JL
1298 `(("ounit" ,ocaml-ounit)
1299 ("qcheck" ,ocaml-qcheck)))
fdb3fba3 1300 (home-page "https://github.com/vincent-hugot/qtest")
0472836f
JL
1301 (synopsis "Inline (Unit) Tests for OCaml")
1302 (description "Qtest extracts inline unit tests written using a special
1303syntax in comments. Those tests are then run using the oUnit framework and the
1304qcheck library. The possibilities range from trivial tests -- extremely simple
1305to use -- to sophisticated random generation of test cases.")
1306 (license license:lgpl3+)))
3d598ebd
JL
1307
1308(define-public ocaml-stringext
1309 (package
1310 (name "ocaml-stringext")
69c83817 1311 (version "1.6.0")
3d598ebd 1312 (source (origin
acb98ad9
JL
1313 (method git-fetch)
1314 (uri (git-reference
1315 (url "https://github.com/rgrinberg/stringext")
1316 (commit version)))
1317 (file-name (git-file-name name version))
3d598ebd
JL
1318 (sha256
1319 (base32
69c83817 1320 "1m09cmn3vrk3gdm60fb730qsygcfyxsyv7gl9xfzck08q1x2x9qx"))))
acb98ad9
JL
1321 (build-system dune-build-system)
1322 (arguments
1323 `(#:test-target "."))
3d598ebd 1324 (native-inputs
564cf93f
JL
1325 `(("ocamlbuild" ,ocamlbuild)
1326 ("qtest" ,ocaml-qtest)))
3d598ebd
JL
1327 (home-page "https://github.com/rgrinberg/stringext")
1328 (synopsis "Extra string functions for OCaml")
1329 (description "Provides a single module named Stringext that provides a grab
1330bag of often used but missing string functions from the stdlib. E.g, split,
1331full_split, cut, rcut, etc..")
1332 ;; the only mention of a license in this project is in its `opam' file
1333 ;; where it says `mit'.
1334 (license license:expat)))
a5b5bd1d 1335
33917795 1336(define dune-bootstrap
564cf93f
JL
1337 (package
1338 (name "dune")
33917795 1339 (version "2.7.1")
564cf93f 1340 (source (origin
283ed30e
JL
1341 (method git-fetch)
1342 (uri (git-reference
1343 (url "https://github.com/ocaml/dune")
1344 (commit version)))
1345 (file-name (git-file-name name version))
564cf93f
JL
1346 (sha256
1347 (base32
33917795 1348 "10qgx83fq8b522y9mpllrp0l5cgmr2bs5s7aix5img21hlbm34in"))))
564cf93f
JL
1349 (build-system ocaml-build-system)
1350 (arguments
1351 `(#:tests? #f; require odoc
33917795
JL
1352 #:make-flags (list "release"
1353 (string-append "PREFIX=" (assoc-ref %outputs "out"))
8d135e37
JL
1354 (string-append "LIBDIR=" (assoc-ref %outputs "out")
1355 "/lib/ocaml/site-lib"))
564cf93f
JL
1356 #:phases
1357 (modify-phases %standard-phases
1358 (replace 'configure
1359 (lambda* (#:key outputs #:allow-other-keys)
33917795 1360 (mkdir-p "src/dune")
564cf93f
JL
1361 (invoke "./configure")
1362 #t)))))
1363 (home-page "https://github.com/ocaml/dune")
1364 (synopsis "OCaml build system")
1365 (description "Dune is a build system that was designed to simplify the
1366release of Jane Street packages. It reads metadata from @file{dune} files
1367following a very simple s-expression syntax.")
1368 (license license:expat)))
1369
6ed2741a
JL
1370(define ocaml4.09-dune-bootstrap
1371 (package-with-ocaml4.09 dune-bootstrap))
1372
33917795
JL
1373(define-public dune-configurator
1374 (package
1375 (inherit dune-bootstrap)
1376 (name "dune-configurator")
1377 (build-system dune-build-system)
1378 (arguments
1379 `(#:package "dune-configurator"
1380 #:dune ,dune-bootstrap
1381 ; require ppx_expect
1382 #:tests? #f))
1383 (propagated-inputs
1384 `(("ocaml-csexp" ,ocaml-csexp)))
6ed2741a 1385 (properties `((ocaml4.09-variant . ,(delay ocaml4.09-dune-configurator))))
de5659d7
JL
1386 (synopsis "Dune helper library for gathering system configuration")
1387 (description "Dune-configurator is a small library that helps writing
1388OCaml scripts that test features available on the system, in order to generate
1389config.h files for instance. Among other things, dune-configurator allows one to:
1390
1391@itemize
1392@item test if a C program compiles
1393@item query pkg-config
1394@item import #define from OCaml header files
1395@item generate config.h file
1396@end itemize")))
33917795 1397
6ed2741a
JL
1398(define-public ocaml4.09-dune-configurator
1399 (package
1400 (inherit dune-configurator)
1401 (name "ocaml4.09-dune-configurator")
1402 (arguments
1403 `(#:package "dune-configurator"
1404 #:tests? #f
1405 #:dune ,ocaml4.09-dune-bootstrap
1406 #:ocaml ,ocaml-4.09
1407 #:findlib ,ocaml4.09-findlib))
1408 (propagated-inputs
1409 `(("ocaml-csexp" ,ocaml4.09-csexp)))))
1410
33917795
JL
1411(define-public dune
1412 (package
1413 (inherit dune-bootstrap)
1414 (propagated-inputs
1415 `(("dune-configurator" ,dune-configurator)))
6ed2741a
JL
1416 (properties `((ocaml4.07-variant . ,(delay ocaml4.07-dune))
1417 (ocaml4.09-variant . ,(delay ocaml4.09-dune))))))
1418
1419(define-public ocaml4.09-dune
1420 (package
1421 (inherit ocaml4.09-dune-bootstrap)
1422 (propagated-inputs
1423 `(("dune-configurator" ,dune-configurator)))))
33917795 1424
0ccd9463 1425(define-public ocaml4.07-dune
33917795
JL
1426 (package
1427 (inherit (package-with-ocaml4.07 dune-bootstrap))
1428 (version "1.11.3")
1429 (source (origin
1430 (method git-fetch)
1431 (uri (git-reference
1432 (url "https://github.com/ocaml/dune")
1433 (commit version)))
1434 (file-name (git-file-name "dune" version))
1435 (sha256
1436 (base32
1437 "0l4x0x2fz135pljv88zj8y6w1ninsqw0gn1mdxzprd6wbxbyn8wr"))))))
0ccd9463 1438
171abdd8
JL
1439(define-public ocaml-csexp
1440 (package
1441 (name "ocaml-csexp")
1442 (version "1.3.2")
1443 (source (origin
1444 (method git-fetch)
1445 (uri (git-reference
1446 (url "https://github.com/ocaml-dune/csexp")
1447 (commit version)))
1448 (file-name (git-file-name name version))
1449 (sha256
1450 (base32
1451 "190zppgvdjgghmrnx67ayzzk86qdjy3yn5fcrcw08wsh93384pl0"))))
1452 (build-system dune-build-system)
1453 (arguments
1454 `(#:tests? #f; FIXME: needs ppx_expect, but which version?
33917795 1455 #:dune ,dune-bootstrap
171abdd8
JL
1456 #:phases
1457 (modify-phases %standard-phases
1458 (add-before 'build 'chmod
1459 (lambda _
1460 (for-each (lambda (file) (chmod file #o644)) (find-files "." ".*"))
1461 #t)))))
1462 (propagated-inputs
33917795 1463 `(("ocaml-result" ,ocaml-result)))
6ed2741a 1464 (properties `((ocaml4.09-variant . ,(delay ocaml4.09-csexp))))
171abdd8
JL
1465 (home-page "https://github.com/ocaml-dune/csexp")
1466 (synopsis "Parsing and printing of S-expressions in Canonical form")
1467 (description "This library provides minimal support for Canonical
1468S-expressions. Canonical S-expressions are a binary encoding of
1469S-expressions that is super simple and well suited for communication
1470between programs.
1471
1472This library only provides a few helpers for simple applications. If
1473you need more advanced support, such as parsing from more fancy input
1474sources, you should consider copying the code of this library given
1475how simple parsing S-expressions in canonical form is.
1476
1477To avoid a dependency on a particular S-expression library, the only
1478module of this library is parameterised by the type of S-expressions.")
1479 (license license:expat)))
1480
6ed2741a
JL
1481(define-public ocaml4.09-csexp
1482 (package
1483 (inherit ocaml-csexp)
1484 (name "ocaml4.09-csexp")
1485 (arguments
1486 `(#:ocaml ,ocaml-4.09
1487 #:findlib ,ocaml4.09-findlib
1488 ,@(substitute-keyword-arguments (package-arguments ocaml-csexp)
1489 ((#:dune _) ocaml4.09-dune-bootstrap))))
1490 (propagated-inputs
1491 `(("ocaml-result" ,ocaml4.09-result)))))
1492
564cf93f
JL
1493(define-public ocaml-migrate-parsetree
1494 (package
1495 (name "ocaml-migrate-parsetree")
bd8558a0 1496 (version "1.7.3")
b2c2c415
GH
1497 (home-page "https://github.com/ocaml-ppx/ocaml-migrate-parsetree")
1498 (source
1499 (origin
1500 (method git-fetch)
1501 (uri (git-reference
1502 (url (string-append home-page ".git"))
1503 (commit (string-append "v" version))))
8d2d68a5 1504 (file-name (git-file-name name version))
b2c2c415
GH
1505 (sha256
1506 (base32
bd8558a0 1507 "0336vz0galjnsazbmkxjwdv1qvdqsx2rgrvp778xgq2fzasz45cx"))))
effc8325 1508 (build-system dune-build-system)
564cf93f 1509 (arguments
b2c2c415 1510 `(#:tests? #f))
564cf93f 1511 (propagated-inputs
b2c2c415
GH
1512 `(("ocaml-ppx-derivers" ,ocaml-ppx-derivers)
1513 ("ocamlbuild" ,ocamlbuild)
564cf93f 1514 ("ocaml-result" ,ocaml-result)))
cf338cc3 1515 (properties `((upstream-name . "ocaml-migrate-parsetree")))
86912a67 1516 (synopsis "OCaml parsetree converter")
564cf93f
JL
1517 (description "This library converts between parsetrees of different OCaml
1518versions. For each version, there is a snapshot of the parsetree and conversion
1519functions to the next and/or previous version.")
1520 (license license:lgpl2.1+)))
1521
1522(define-public ocaml-ppx-tools-versioned
1523 (package
1524 (name "ocaml-ppx-tools-versioned")
f0c6fe31 1525 (version "5.4.0")
564cf93f 1526 (source (origin
8cc6a876
JL
1527 (method git-fetch)
1528 (uri (git-reference
1529 (url "https://github.com/ocaml-ppx/ppx_tools_versioned")
1530 (commit version)))
1531 (file-name (git-file-name name version))
564cf93f
JL
1532 (sha256
1533 (base32
f0c6fe31 1534 "07lnj4yzwvwyh5fhpp1dxrys4ddih15jhgqjn59pmgxinbnddi66"))))
59fa09e1 1535 (build-system dune-build-system)
564cf93f 1536 (arguments
b35b661b
JL
1537 `(#:test-target "."
1538 #:package "ppx_tools_versioned"))
564cf93f
JL
1539 (propagated-inputs
1540 `(("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)))
c949a4eb 1541 (properties `((upstream-name . "ppx_tools_versioned")))
564cf93f
JL
1542 (home-page "https://github.com/let-def/ppx_tools_versioned")
1543 (synopsis "Variant of ppx_tools")
1544 (description "This package is a variant of ppx_tools based on
1545ocaml-migrate-parsetree")
1546 (license license:expat)))
1547
44c23cb8
JL
1548(define-public ocaml-bitstring
1549 (package
1550 (name "ocaml-bitstring")
564cf93f 1551 (version "3.1.0")
44c23cb8
JL
1552 (source (origin
1553 (method url-fetch)
564cf93f
JL
1554 (uri (string-append "https://bitbucket.org/thanatonauts/bitstring/"
1555 "get/v" version ".tar.gz"))
0aee7fdc 1556 (file-name (string-append name "-" version ".tar.gz"))
44c23cb8
JL
1557 (sha256
1558 (base32
564cf93f 1559 "15jjk2pq1vx311gl49s5ag6x5y0654x35w75z07g7kr2q334hqps"))))
f93246a5 1560 (build-system dune-build-system)
44c23cb8 1561 (native-inputs
24b199fd 1562 `(("time" ,time)
44c23cb8 1563 ("autoconf" ,autoconf)
24b199fd 1564 ("automake" ,automake)))
44c23cb8 1565 (propagated-inputs
24b199fd 1566 `(("ocaml-ppx-tools-versioned" ,ocaml-ppx-tools-versioned)))
44c23cb8 1567 (arguments
93304a0c 1568 `(#:package "bitstring"
33917795
JL
1569 #:tests? #f; Tests fail to build
1570 #:phases
1571 (modify-phases %standard-phases
1572 (add-before 'build 'upgrade
1573 (lambda _
1574 (invoke "dune" "upgrade")
1575 #t)))))
564cf93f
JL
1576 (home-page "https://github.com/xguerin/bitstring")
1577 (synopsis "Bitstrings and bitstring matching for OCaml")
1578 (description "Adds Erlang-style bitstrings and matching over bitstrings as
1579a syntax extension and library for OCaml. You can use this module to both parse
1580and generate binary formats, files and protocols. Bitstring handling is added
1581as primitives to the language, making it exceptionally simple to use and very
1582powerful.")
1583 (license license:isc)))
1584
704b990c
JL
1585(define-public ocaml-result
1586 (package
1587 (name "ocaml-result")
bc92fd22 1588 (version "1.5")
704b990c 1589 (source (origin
22cd6a1d
JL
1590 (method git-fetch)
1591 (uri (git-reference
1592 (url "https://github.com/janestreet/result")
1593 (commit version)))
1594 (file-name (git-file-name name version))
704b990c
JL
1595 (sha256
1596 (base32
bc92fd22 1597 "166laj8qk7466sdl037c6cjs4ac571hglw4l5qpyll6df07h6a7q"))))
22cd6a1d 1598 (build-system dune-build-system)
704b990c 1599 (arguments
33917795
JL
1600 `(#:test-target "."
1601 #:dune ,dune-bootstrap))
6ed2741a 1602 (properties `((ocaml4.09-variant . ,(delay ocaml4.09-result))))
704b990c
JL
1603 (home-page "https://github.com/janestreet/result")
1604 (synopsis "Compatibility Result module")
1605 (description "Uses the new result type defined in OCaml >= 4.03 while
1606staying compatible with older version of OCaml should use the Result module
1607defined in this library.")
1608 (license license:bsd-3)))
6ed2741a
JL
1609
1610(define-public ocaml4.09-result
1611 (package
1612 (inherit ocaml-result)
1613 (name "ocaml4.09-result")
1614 (arguments
1615 `(#:test-target "."
1616 #:dune ,ocaml4.09-dune-bootstrap
1617 #:ocaml ,ocaml-4.09
1618 #:findlib ,ocaml4.09-findlib))))
564cf93f 1619
a359c727
JL
1620(define-public ocaml-topkg
1621 (package
1622 (name "ocaml-topkg")
eddfd11d 1623 (version "1.0.0")
a359c727
JL
1624 (source (origin
1625 (method url-fetch)
1626 (uri (string-append "http://erratique.ch/software/topkg/releases/"
1627 "topkg-" version ".tbz"))
1628 (sha256
1629 (base32
eddfd11d 1630 "1df61vw6v5bg2mys045682ggv058yqkqb67w7r2gz85crs04d5fw"))))
a359c727
JL
1631 (build-system ocaml-build-system)
1632 (native-inputs
564cf93f
JL
1633 `(("opam" ,opam)
1634 ("ocamlbuild" ,ocamlbuild)))
a359c727
JL
1635 (propagated-inputs
1636 `(("result" ,ocaml-result)))
1637 (arguments
1638 `(#:tests? #f
1639 #:build-flags '("build")
1640 #:phases
1641 (modify-phases %standard-phases
1642 (delete 'configure))))
1643 (home-page "http://erratique.ch/software/topkg")
1644 (synopsis "Transitory OCaml software packager")
1645 (description "Topkg is a packager for distributing OCaml software. It
1646provides an API to describe the files a package installs in a given build
1647configuration and to specify information about the package's distribution,
1648creation and publication procedures.")
1649 (license license:isc)))
564cf93f 1650
63147e5e
JL
1651(define-public ocaml-rresult
1652 (package
1653 (name "ocaml-rresult")
1654 (version "0.5.0")
1655 (source (origin
1656 (method url-fetch)
1657 (uri (string-append "http://erratique.ch/software/rresult/releases/"
1658 "rresult-" version ".tbz"))
1659 (sha256
1660 (base32
1661 "1xxycxhdhaq8p9vhwi93s2mlxjwgm44fcxybx5vghzgbankz9yhm"))))
1662 (build-system ocaml-build-system)
1663 (native-inputs
564cf93f
JL
1664 `(("opam" ,opam)
1665 ("ocamlbuild" ,ocamlbuild)))
63147e5e
JL
1666 (propagated-inputs
1667 `(("topkg" ,ocaml-topkg)))
1668 (arguments
1669 `(#:tests? #f
1670 #:build-flags '("build")
1671 #:phases
1672 (modify-phases %standard-phases
1673 (delete 'configure))))
1674 (home-page "http://erratique.ch/software/rresult")
1675 (synopsis "Result value combinators for OCaml")
1676 (description "Handle computation results and errors in an explicit and
1677declarative manner, without resorting to exceptions. It defines combinators
1678to operate on the result type available from OCaml 4.03 in the standard
1679library.")
1680 (license license:isc)))
eb1ba731 1681
87858bc5 1682(define-public ocaml4.07-sqlite3
0c4dbdc2 1683 (package
87858bc5 1684 (name "ocaml4.07-sqlite3")
fbf786bd 1685 (version "4.4.1")
0c4dbdc2
BW
1686 (source
1687 (origin
fbf786bd
JL
1688 (method git-fetch)
1689 (uri (git-reference
1690 (url "https://github.com/mmottl/sqlite3-ocaml")
1691 (commit version)))
1692 (file-name (git-file-name name version))
0c4dbdc2
BW
1693 (sha256
1694 (base32
fbf786bd
JL
1695 "1536agm5fgcqysszhpd3kmw7lkc5n5ni7gmlyglrbvmnmrwf3av2"))))
1696 (build-system dune-build-system)
87858bc5
JL
1697 (arguments
1698 `(#:ocaml ,ocaml-4.07
db194f71
JL
1699 #:findlib ,ocaml4.07-findlib
1700 #:dune ,ocaml4.07-dune))
0c4dbdc2 1701 (native-inputs
55c2851a 1702 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5 1703 ("ocaml-stdio" ,ocaml4.07-stdio)
564cf93f 1704 ("pkg-config" ,pkg-config)))
0c4dbdc2
BW
1705 (inputs
1706 `(("sqlite" ,sqlite)))
1707 (home-page "https://mmottl.github.io/sqlite3-ocaml")
1708 (synopsis "SQLite3 Bindings for OCaml")
1709 (description
1710 "SQLite3-OCaml is an OCaml library with bindings to the SQLite3 client
1711API. Sqlite3 is a self-contained, serverless, zero-configuration,
1712transactional SQL database engine with outstanding performance for many use
1713cases. These bindings are written in a way that enables a friendly
1714coexistence with the old (version 2) SQLite and its OCaml wrapper
1715@code{ocaml-sqlite}.")
1716 (license license:expat)))
1717
91df9eae
BW
1718(define-public ocaml-csv
1719 (package
1720 (name "ocaml-csv")
5696fbd9 1721 (version "2.3")
91df9eae
BW
1722 (source
1723 (origin
e58d05c3
JL
1724 (method git-fetch)
1725 (uri (git-reference
1726 (url "https://github.com/Chris00/ocaml-csv")
1727 (commit version)))
1728 (file-name (git-file-name name version))
91df9eae
BW
1729 (sha256
1730 (base32
5696fbd9 1731 "19k48517s8y1zb91a1312a0n94cbh5i5dixndcrqjmf87kkz61zx"))))
e58d05c3
JL
1732 (build-system dune-build-system)
1733 (arguments
1734 `(#:package "csv"
1735 #:test-target "."))
91df9eae
BW
1736 (home-page "https://github.com/Chris00/ocaml-csv")
1737 (synopsis "Pure OCaml functions to read and write CSV")
1738 (description
1739 "@dfn{Comma separated values} (CSV) is a simple tabular format supported
1740by all major spreadsheets. This library implements pure OCaml functions to
1741read and write files in this format as well as some convenience functions to
1742manipulate such data.")
5696fbd9
JL
1743 ;; This is LGPLv2.1 with an exception that allows packages statically-linked
1744 ;; against the library to be released under any terms.
1745 (license license:lgpl2.1)))
91df9eae 1746
eb1ba731
JL
1747(define-public ocaml-mtime
1748 (package
1749 (name "ocaml-mtime")
853af25e 1750 (version "1.1.0")
eb1ba731
JL
1751 (source (origin
1752 (method url-fetch)
1753 (uri (string-append "http://erratique.ch/software/mtime/releases/"
1754 "mtime-" version ".tbz"))
1755 (sha256
1756 (base32
853af25e 1757 "1qb4ljwirrc3g8brh97s76rjky2cpmy7zm87y7iqd6pxix52ydk3"))))
eb1ba731
JL
1758 (build-system ocaml-build-system)
1759 (native-inputs
564cf93f
JL
1760 `(("ocamlbuild" ,ocamlbuild)
1761 ("opam" ,opam)))
eb1ba731
JL
1762 (propagated-inputs
1763 `(("topkg" ,ocaml-topkg)))
1764 (arguments
1765 `(#:tests? #f
853af25e 1766 #:build-flags (list "build" "--with-js_of_ocaml" "false")
eb1ba731
JL
1767 #:phases
1768 (modify-phases %standard-phases
1769 (delete 'configure))))
1770 (home-page "http://erratique.ch/software/mtime")
1771 (synopsis "Monotonic wall-clock time for OCaml")
2bf52398 1772 (description "Access monotonic wall-clock time. It measures time
eb1ba731
JL
1773spans without being subject to operating system calendar time adjustments.")
1774 (license license:isc)))
6548e53f
JL
1775
1776(define-public ocaml-cmdliner
1777 (package
1778 (name "ocaml-cmdliner")
b6bba90e 1779 (version "1.0.3")
6548e53f
JL
1780 (source (origin
1781 (method url-fetch)
1782 (uri (string-append "http://erratique.ch/software/cmdliner/releases/"
1783 "cmdliner-" version ".tbz"))
1784 (sha256
1785 (base32
b6bba90e 1786 "0g3w4hvc1cx9x2yp5aqn6m2rl8lf9x1dn754hfq8m1sc1102lxna"))))
6548e53f 1787 (build-system ocaml-build-system)
ca53346d
GH
1788 (inputs
1789 `(("ocaml-result" ,ocaml-result)))
6548e53f 1790 (native-inputs
b6bba90e 1791 `(("ocamlbuild" ,ocamlbuild)))
6548e53f
JL
1792 (arguments
1793 `(#:tests? #f
b6bba90e
JL
1794 #:make-flags (list (string-append "LIBDIR=" (assoc-ref %outputs "out")
1795 "/lib/ocaml/site-lib/cmdliner"))
6548e53f
JL
1796 #:phases
1797 (modify-phases %standard-phases
6c79cee2
JL
1798 (delete 'configure)
1799 (add-before 'build 'fix-source-file-order
1800 (lambda _
1801 (substitute* "build.ml"
1802 (("Sys.readdir dir")
1803 "let a = Sys.readdir dir in Array.sort String.compare a; a"))
1804 #t)))))
6548e53f
JL
1805 (home-page "http://erratique.ch/software/cmdliner")
1806 (synopsis "Declarative definition of command line interfaces for OCaml")
1807 (description "Cmdliner is a module for the declarative definition of command
1808line interfaces. It provides a simple and compositional mechanism to convert
1809command line arguments to OCaml values and pass them to your functions. The
1810module automatically handles syntax errors, help messages and UNIX man page
1811generation. It supports programs with single or multiple commands and respects
1812most of the POSIX and GNU conventions.")
1813 (license license:bsd-3)))
beeb2d41
JL
1814
1815(define-public ocaml-fmt
1816 (package
1817 (name "ocaml-fmt")
0a86b93f 1818 (version "0.8.9")
beeb2d41
JL
1819 (source
1820 (origin
1821 (method url-fetch)
1822 (uri (string-append "http://erratique.ch/software/fmt/releases/fmt-"
1823 version ".tbz"))
1824 (sha256 (base32
0a86b93f 1825 "0gkkkj4x678vxdda4xaw2dd44qjacavsvn5nx8gydfwah6pjbkxk"))))
beeb2d41 1826 (build-system ocaml-build-system)
564cf93f
JL
1827 (native-inputs
1828 `(("ocamlbuild" ,ocamlbuild)
1829 ("opam" ,opam)
1830 ("topkg" ,ocaml-topkg)))
1831 (propagated-inputs
0a86b93f
JL
1832 `(("cmdliner" ,ocaml-cmdliner)
1833 ("ocaml-stdlib-shims" ,ocaml-stdlib-shims)
1834 ("ocaml-uchar" ,ocaml-uchar)))
beeb2d41
JL
1835 (arguments `(#:tests? #f
1836 #:build-flags (list "build" "--with-base-unix" "true"
1837 "--with-cmdliner" "true")
1838 #:phases
1839 (modify-phases %standard-phases
1840 (delete 'configure))))
1841 (home-page "http://erratique.ch/software/fmt")
1842 (synopsis "OCaml Format pretty-printer combinators")
1843 (description "Fmt exposes combinators to devise Format pretty-printing
1844functions.")
1845 (license license:isc)))
f46bceb6
JL
1846
1847(define-public ocaml-astring
1848 (package
1849 (name "ocaml-astring")
1850 (version "0.8.3")
1851 (source
1852 (origin
1853 (method url-fetch)
1854 (uri (string-append "http://erratique.ch/software/astring/releases/astring-"
1855 version ".tbz"))
1856 (sha256 (base32
1857 "0ixjwc3plrljvj24za3l9gy0w30lsbggp8yh02lwrzw61ls4cri0"))))
1858 (build-system ocaml-build-system)
564cf93f
JL
1859 (native-inputs
1860 `(("ocamlbuild" ,ocamlbuild)
1861 ("opam" ,opam)
1862 ("topkg" ,ocaml-topkg)))
1863 (arguments
1864 `(#:tests? #f
1865 #:build-flags (list "build")
1866 #:phases
1867 (modify-phases %standard-phases
1868 (delete 'configure))))
f46bceb6
JL
1869 (home-page "http://erratique.ch/software/astring")
1870 (synopsis "Alternative String module for OCaml")
1871 (description "Astring exposes an alternative String module for OCaml. This
1872module balances minimality and expressiveness for basic, index-free, string
1873processing and provides types and functions for substrings, string sets and
1874string maps. The String module exposed by Astring has exception safe functions,
1875removes deprecated and rarely used functions, alters some signatures and names,
1876adds a few missing functions and fully exploits OCaml's newfound string
1877immutability.")
1878 (license license:isc)))
69705efe
JL
1879
1880(define-public ocaml-alcotest
1881 (package
1882 (name "ocaml-alcotest")
01ec666e 1883 (version "1.0.0")
69705efe
JL
1884 (source (origin
1885 (method url-fetch)
1886 (uri (string-append "https://github.com/mirage/alcotest/releases/"
1887 "download/" version "/alcotest-" version ".tbz"))
1888 (sha256
1889 (base32
01ec666e 1890 "1a43ilhwnj58pq3bi78ni46l9wh6klmmgfc93i94mvyx48bzzayx"))))
23c8a97a 1891 (build-system dune-build-system)
564cf93f 1892 (arguments
23c8a97a
JL
1893 `(#:package "alcotest"
1894 #:test-target "."))
564cf93f 1895 (native-inputs
23c8a97a 1896 `(("ocamlbuild" ,ocamlbuild)))
564cf93f 1897 (propagated-inputs
23c8a97a
JL
1898 `(("ocaml-astring" ,ocaml-astring)
1899 ("ocaml-cmdliner" ,ocaml-cmdliner)
1900 ("ocaml-fmt" ,ocaml-fmt)
01ec666e
JL
1901 ("ocaml-re" ,ocaml-re)
1902 ("ocaml-stdlib-shims" ,ocaml-stdlib-shims)
1903 ("ocaml-uuidm" ,ocaml-uuidm)
1904 ("ocaml-uutf" ,ocaml-uutf)))
69705efe
JL
1905 (home-page "https://github.com/mirage/alcotest")
1906 (synopsis "Lightweight OCaml test framework")
1907 (description "Alcotest exposes simple interface to perform unit tests. It
1908exposes a simple TESTABLE module type, a check function to assert test
1909predicates and a run function to perform a list of unit -> unit test callbacks.
1910Alcotest provides a quiet and colorful output where only faulty runs are fully
1911displayed at the end of the run (with the full logs ready to inspect), with a
1912simple (yet expressive) query language to select the tests to run.")
1913 (license license:isc)))
0a7b43a8 1914
87858bc5 1915(define-public ocaml4.07-ppx-tools
0a7b43a8 1916 (package
87858bc5 1917 (name "ocaml4.07-ppx-tools")
564cf93f 1918 (version "5.1+4.06.0")
0a7b43a8 1919 (source
ef59cf9d
TGR
1920 (origin
1921 (method git-fetch)
1922 (uri (git-reference
b0e7b699 1923 (url "https://github.com/alainfrisch/ppx_tools")
ef59cf9d 1924 (commit version)))
9e6cce44 1925 (file-name (git-file-name name version))
ef59cf9d
TGR
1926 (sha256 (base32
1927 "1ww4cspdpgjjsgiv71s0im5yjkr3544x96wsq1vpdacq7dr7zwiw"))))
0a7b43a8 1928 (build-system ocaml-build-system)
564cf93f
JL
1929 (arguments
1930 `(#:phases (modify-phases %standard-phases (delete 'configure))
87858bc5
JL
1931 #:tests? #f
1932 #:ocaml ,ocaml-4.07
1933 #:findlib ,ocaml4.07-findlib))
d4857001 1934 (properties `((upstream-name . "ppx_tools")))
0a7b43a8
JL
1935 (home-page "https://github.com/alainfrisch/ppx_tools")
1936 (synopsis "Tools for authors of ppx rewriters and other syntactic tools")
1937 (description "Tools for authors of ppx rewriters and other syntactic tools.")
1938 (license license:expat)))
1342fce1
JL
1939
1940(define-public ocaml-react
1941 (package
1942 (name "ocaml-react")
d7d41026 1943 (version "1.2.1")
1342fce1
JL
1944 (source
1945 (origin
1946 (method url-fetch)
1947 (uri (string-append "http://erratique.ch/software/react/releases/react-"
1948 version ".tbz"))
1949 (sha256 (base32
d7d41026 1950 "1aj8w79gdd9xnrbz7s5p8glcb4pmimi8jp9f439dqnf6ih3mqb3v"))))
1342fce1 1951 (build-system ocaml-build-system)
564cf93f
JL
1952 (native-inputs
1953 `(("ocamlbuild" ,ocamlbuild)
d7d41026
JL
1954 ("opam" ,opam)
1955 ("ocaml-topkg" ,ocaml-topkg)))
564cf93f
JL
1956 (arguments
1957 `(#:tests? #f
d7d41026 1958 #:build-flags (list "build")
564cf93f
JL
1959 #:phases
1960 (modify-phases %standard-phases
1961 (delete 'configure))))
1342fce1
JL
1962 (home-page "http://erratique.ch/software/react")
1963 (synopsis "Declarative events and signals for OCaml")
1964 (description "React is an OCaml module for functional reactive programming
1965(FRP). It provides support to program with time varying values: declarative
1966events and signals. React doesn't define any primitive event or signal, it
1967lets the client choose the concrete timeline.")
1968 (license license:bsd-3)))
37f17e2a
JL
1969
1970(define-public ocaml-ssl
1971 (package
1972 (name "ocaml-ssl")
4a8a0d85 1973 (version "0.5.9")
37f17e2a
JL
1974 (source
1975 (origin
8ae540a2
TGR
1976 (method git-fetch)
1977 (uri (git-reference
b0e7b699 1978 (url "https://github.com/savonet/ocaml-ssl")
8ae540a2
TGR
1979 (commit version)))
1980 (file-name (git-file-name name version))
37f17e2a 1981 (sha256 (base32
4a8a0d85 1982 "04h02rvzrwp886n5hsx84rnc9b150iggy38g5v1x1rwz3pkdnmf0"))))
b858c5ac 1983 (build-system dune-build-system)
564cf93f 1984 (arguments
b858c5ac 1985 `(#:test-target "."))
564cf93f
JL
1986 (native-inputs
1987 `(("autoconf" ,autoconf)
1988 ("automake" ,automake)
1989 ("which" ,which)))
37f17e2a
JL
1990 (propagated-inputs `(("openssl" ,openssl)))
1991 (home-page "https://github.com/savonet/ocaml-ssl/")
1992 (synopsis "OCaml bindings for OpenSSL")
36dba63b
TGR
1993 (description
1994 "OCaml-SSL is a set of bindings for OpenSSL, a library for communicating
1995through Transport Layer Security (@dfn{TLS}) encrypted connections.")
37f17e2a 1996 (license license:lgpl2.1)))
1fdfbadf 1997
2624921a
JL
1998(define-public ocaml-mmap
1999 (package
2000 (name "ocaml-mmap")
2001 (version "1.1.0")
2002 (source (origin
2003 (method git-fetch)
2004 (uri (git-reference
2005 (url "https://github.com/mirage/mmap")
2006 (commit (string-append "v" version))))
0f654e63 2007 (file-name (git-file-name name version))
2624921a
JL
2008 (sha256
2009 (base32
2010 "1jaismy5d1bhbbanysmr2k79px0yv6ya265dri3949nha1l23i60"))))
2011 (build-system dune-build-system)
2012 (home-page "https://github.com/mirage/mmap")
2013 (synopsis "File mapping for OCaml")
2014 (description "This project provides a @command{Mmap.map_file} function
2015for mapping files in memory. This function is the same as the
a6d35eb4 2016@command{Unix.map_file} function added in OCaml >= 4.06.")
2624921a
JL
2017 (license (list license:qpl license:lgpl2.0))))
2018
1fdfbadf
JL
2019(define-public ocaml-lwt
2020 (package
2021 (name "ocaml-lwt")
16829d3b 2022 (version "5.1.1")
1fdfbadf
JL
2023 (source
2024 (origin
8684575a
EF
2025 (method git-fetch)
2026 (uri (git-reference
2027 (url "https://github.com/ocsigen/lwt")
2028 (commit version)))
2029 (file-name (git-file-name name version))
1fdfbadf 2030 (sha256 (base32
8684575a 2031 "1nl7rdnwfdhwcsm5zpay1nr9y5cbapd9x1qzily7zk9ab4v52m8g"))))
f880b03b 2032 (build-system dune-build-system)
1fdfbadf 2033 (arguments
16829d3b 2034 `(#:package "lwt"))
564cf93f 2035 (native-inputs
16829d3b
JL
2036 `(("ocaml-bisect-ppx" ,ocaml-bisect-ppx)
2037 ("ocaml-cppo" ,ocaml-cppo)
2038 ("pkg-config" ,pkg-config)))
564cf93f
JL
2039 (inputs
2040 `(("libev" ,libev)
2041 ("glib" ,glib)))
2042 (propagated-inputs
16829d3b
JL
2043 `(("ocaml-mmap" ,ocaml-mmap)
2044 ("ocaml-ocplib-endian" ,ocaml-ocplib-endian)
2045 ("ocaml-result" ,ocaml-result)
2046 ("ocaml-seq" ,ocaml-seq)))
1fdfbadf
JL
2047 (home-page "https://github.com/ocsigen/lwt")
2048 (synopsis "Cooperative threads and I/O in monadic style")
2049 (description "Lwt provides typed, composable cooperative threads. These
2050make it easy to run normally-blocking I/O operations concurrently in a single
2051process. Also, in many cases, Lwt threads can interact without the need for
2052locks or other synchronization primitives.")
2053 (license license:lgpl2.1)))
9dc7dcb2 2054
d77310cc
JL
2055(define-public ocaml-lwt-react
2056 (package
2057 (inherit ocaml-lwt)
2058 (name "ocaml-lwt-react")
2059 (version "1.1.3")
2060 (source (origin
2061 (method git-fetch)
2062 (uri (git-reference
2063 (url "https://github.com/ocsigen/lwt")
2064 ;; Version from opam
2065 (commit "4.3.0")))
2066 (file-name (git-file-name name version))
2067 (sha256
2068 (base32
2069 "0f7036srqz7zmnz0n164734smgkrqz78r1i35cg30x31kkr3pnn4"))))
2070 (arguments
2071 `(#:package "lwt_react"))
2072 (properties `((upstream-name . "lwt_react")))
2073 (propagated-inputs
2074 `(("ocaml-lwt" ,ocaml-lwt)
2075 ("ocaml-react" ,ocaml-react)))))
2076
564cf93f
JL
2077(define-public ocaml-lwt-log
2078 (package
2079 (name "ocaml-lwt-log")
72b2e2ea
JL
2080 (version "1.1.1")
2081 (source (origin
2082 (method git-fetch)
2083 (uri (git-reference
2084 (url "https://github.com/aantron/lwt_log")
2085 (commit version)))
2086 (file-name (git-file-name name version))
2087 (sha256
2088 (base32
2089 "1n12i1rmn9cjn6p8yr6qn5dwbrwvym7ckr7bla04a1xnq8qlcyj7"))))
5d071263 2090 (build-system dune-build-system)
564cf93f 2091 (arguments
2d00625f 2092 `(#:tests? #f)); require lwt_ppx
564cf93f
JL
2093 (propagated-inputs
2094 `(("lwt" ,ocaml-lwt)))
f08b235d 2095 (properties `((upstream-name . "lwt_log")))
564cf93f
JL
2096 (home-page "https://github.com/aantron/lwt_log")
2097 (synopsis "Logging library")
2098 (description "This package provides a deprecated logging component for
2099ocaml lwt.")
2100 (license license:lgpl2.1)))
2101
9dc7dcb2
JL
2102(define-public ocaml-logs
2103 (package
2104 (name "ocaml-logs")
276be8f2 2105 (version "0.7.0")
9dc7dcb2
JL
2106 (source (origin
2107 (method url-fetch)
2108 (uri (string-append "http://erratique.ch/software/logs/releases/"
2109 "logs-" version ".tbz"))
2110 (sha256
2111 (base32
276be8f2 2112 "1jnmd675wmsmdwyb5mx5b0ac66g4c6gpv5s4mrx2j6pb0wla1x46"))))
9dc7dcb2 2113 (build-system ocaml-build-system)
564cf93f
JL
2114 (arguments
2115 `(#:tests? #f
2116 #:build-flags (list "build" "--with-js_of_ocaml" "false")
2117 #:phases
2118 (modify-phases %standard-phases
2119 (delete 'configure))))
2120 (native-inputs
2121 `(("ocamlbuild" ,ocamlbuild)
2122 ("opam" ,opam)))
2123 (propagated-inputs
2124 `(("fmt" ,ocaml-fmt)
2125 ("lwt" ,ocaml-lwt)
2126 ("mtime" ,ocaml-mtime)
2127 ("result" ,ocaml-result)
2128 ("cmdliner" ,ocaml-cmdliner)
2129 ("topkg" ,ocaml-topkg)))
9dc7dcb2
JL
2130 (home-page "http://erratique.ch/software/logs")
2131 (synopsis "Logging infrastructure for OCaml")
2132 (description "Logs provides a logging infrastructure for OCaml. Logging is
2133performed on sources whose reporting level can be set independently. Log
2134message report is decoupled from logging and is handled by a reporter.")
2135 (license license:isc)))
fbf38b09
JL
2136
2137(define-public ocaml-fpath
2138 (package
2139 (name "ocaml-fpath")
7e495384 2140 (version "0.7.2")
fbf38b09
JL
2141 (source (origin
2142 (method url-fetch)
2143 (uri (string-append "http://erratique.ch/software/fpath/releases/"
2144 "fpath-" version ".tbz"))
2145 (sha256
2146 (base32
7e495384 2147 "1hr05d8bpqmqcfdavn4rjk9rxr7v2zl84866f5knjifrm60sxqic"))))
fbf38b09 2148 (build-system ocaml-build-system)
564cf93f
JL
2149 (arguments
2150 `(#:tests? #f
2151 #:build-flags (list "build")
2152 #:phases
2153 (modify-phases %standard-phases
2154 (delete 'configure))))
2155 (native-inputs
2156 `(("ocamlbuild" ,ocamlbuild)
2157 ("opam" ,opam)))
2158 (propagated-inputs
2159 `(("topkg" ,ocaml-topkg)
2160 ("astring" ,ocaml-astring)))
fbf38b09
JL
2161 (home-page "http://erratique.ch/software/fpath")
2162 (synopsis "File system paths for OCaml")
2163 (description "Fpath is an OCaml module for handling file system paths with
2164POSIX or Windows conventions. Fpath processes paths without accessing the
2165file system and is independent from any system library.")
2166 (license license:isc)))
33e0702d
JL
2167
2168(define-public ocaml-bos
2169 (package
2170 (name "ocaml-bos")
a1034ea0 2171 (version "0.2.0")
33e0702d
JL
2172 (source (origin
2173 (method url-fetch)
2174 (uri (string-append "http://erratique.ch/software/bos/releases/"
2175 "bos-" version ".tbz"))
2176 (sha256
2177 (base32
a1034ea0 2178 "1s10iqx8rgnxr5n93lf4blwirjf8nlm272yg5sipr7lsr35v49wc"))))
33e0702d 2179 (build-system ocaml-build-system)
564cf93f
JL
2180 (arguments
2181 `(#:tests? #f
2182 #:build-flags (list "build")
2183 #:phases
2184 (modify-phases %standard-phases
2185 (delete 'configure))))
2186 (native-inputs
2187 `(("ocamlbuild" ,ocamlbuild)
2188 ("opam" ,opam)))
2189 (propagated-inputs
2190 `(("topkg" ,ocaml-topkg)
2191 ("astring" ,ocaml-astring)
2192 ("fmt" ,ocaml-fmt)
2193 ("fpath" ,ocaml-fpath)
2194 ("logs" ,ocaml-logs)
2195 ("rresult" ,ocaml-rresult)))
33e0702d
JL
2196 (home-page "http://erratique.ch/software/bos")
2197 (synopsis "Basic OS interaction for OCaml")
2198 (description "Bos provides support for basic and robust interaction with
2199the operating system in OCaml. It has functions to access the process
2200environment, parse command line arguments, interact with the file system and
2201run command line programs.")
2202 (license license:isc)))
036b8579
JL
2203
2204(define-public ocaml-xmlm
2205 (package
2206 (name "ocaml-xmlm")
564cf93f 2207 (version "1.3.0")
036b8579
JL
2208 (source (origin
2209 (method url-fetch)
2210 (uri (string-append "http://erratique.ch/software/xmlm/releases/"
2211 "xmlm-" version ".tbz"))
2212 (sha256
2213 (base32
564cf93f 2214 "1rrdxg5kh9zaqmgapy9bhdqyxbbvxxib3bdfg1vhw4rrkp1z0x8n"))))
036b8579 2215 (build-system ocaml-build-system)
564cf93f
JL
2216 (arguments
2217 `(#:tests? #f
2218 #:build-flags (list "build")
2219 #:phases
2220 (modify-phases %standard-phases
2221 (delete 'configure))))
2222 (native-inputs
2223 `(("ocamlbuild" ,ocamlbuild)
2224 ("ocaml-topkg" ,ocaml-topkg)
2225 ("opam" ,opam)))
036b8579
JL
2226 (home-page "http://erratique.ch/software/xmlm")
2227 (synopsis "Streaming XML codec for OCaml")
2228 (description "Xmlm is a streaming codec to decode and encode the XML data
2229format. It can process XML documents without a complete in-memory
2230representation of the data.")
2231 (license license:isc)))
6e9b678e 2232
87858bc5 2233(define-public ocaml4.07-gen
5a4003f4 2234 (package
87858bc5 2235 (name "ocaml4.07-gen")
5a4003f4
JL
2236 (version "0.5.2")
2237 (source (origin
5045821e
EF
2238 (method git-fetch)
2239 (uri (git-reference
2240 (url "https://github.com/c-cube/gen")
2241 (commit version)))
2242 (file-name (git-file-name name version))
5a4003f4
JL
2243 (sha256
2244 (base32
5045821e 2245 "1h9g508rnj2j8va5nvhamzscp954vrkh0hdf4pn3d10pcfyslfg2"))))
5a4003f4
JL
2246 (build-system dune-build-system)
2247 (arguments
2248 `(#:tests? #f; no tests
87858bc5
JL
2249 #:package "gen"
2250 #:ocaml ,ocaml-4.07
339c752d
JL
2251 #:findlib ,ocaml4.07-findlib
2252 #:dune ,ocaml4.07-dune))
5a4003f4 2253 (propagated-inputs
9e02c4ac 2254 `(("ocaml-odoc" ,(package-with-ocaml4.07 ocaml4.07-odoc))))
5a4003f4 2255 (native-inputs
87858bc5
JL
2256 `(("ocaml-qtest" ,(package-with-ocaml4.07 ocaml-qtest))
2257 ("ocaml-qcheck" ,(package-with-ocaml4.07 ocaml-qcheck))))
5a4003f4
JL
2258 (home-page "https://github.com/c-cube/gen/")
2259 (synopsis "Iterators for OCaml, both restartable and consumable")
2260 (description "Gen implements iterators of OCaml, that are both restartable
2261and consumable.")
2262 (license license:bsd-2)))
2263
87858bc5 2264(define-public ocaml4.07-sedlex
98a468ff 2265 (package
87858bc5 2266 (name "ocaml4.07-sedlex")
98a468ff
JL
2267 (version "2.1")
2268 (source (origin
2269 (method git-fetch)
2270 (uri (git-reference
2271 (url "https://github.com/ocaml-community/sedlex")
2272 (commit (string-append "v" version))))
2273 (file-name (git-file-name name version))
2274 (sha256
2275 (base32
2276 "05f6qa8x3vhpdz1fcnpqk37fpnyyq13icqsk2gww5idjnh6kng26"))))
2277 (build-system dune-build-system)
2278 (arguments
2279 `(#:tests? #f; no tests
2280 #:package "sedlex"
2281 #:phases
2282 (modify-phases %standard-phases
2283 (add-before 'build 'copy-resources
2284 (lambda* (#:key inputs #:allow-other-keys)
2285 (with-directory-excursion "src/generator/data"
2286 (for-each
2287 (lambda (file)
2288 (copy-file (assoc-ref inputs file) file))
2289 '("DerivedCoreProperties.txt" "DerivedGeneralCategory.txt"
2290 "PropList.txt")))
2291 #t))
2292 (add-before 'build 'chmod
2293 (lambda _
2294 (for-each (lambda (file) (chmod file #o644)) (find-files "." ".*"))
87858bc5
JL
2295 #t)))
2296 #:ocaml ,ocaml-4.07
339c752d
JL
2297 #:findlib ,ocaml4.07-findlib
2298 #:dune ,ocaml4.07-dune))
98a468ff 2299 (native-inputs
87858bc5 2300 `(("ocamlbuild" ,(package-with-ocaml4.07 ocamlbuild))))
98a468ff 2301 (propagated-inputs
87858bc5
JL
2302 `(("ocaml-gen" ,ocaml4.07-gen)
2303 ("ocaml-ppx-tools-versioned"
2304 ,(package-with-ocaml4.07 ocaml-ppx-tools-versioned))
2305 ("ocaml-uchar" ,(package-with-ocaml4.07 ocaml-uchar))))
98a468ff
JL
2306 ;; These three files are needed by src/generator/data/dune, but would be
2307 ;; downloaded using curl at build time.
2308 (inputs
2309 `(("DerivedCoreProperties.txt"
2310 ,(origin
2311 (method url-fetch)
2312 (uri "https://www.unicode.org/Public/12.1.0/ucd/DerivedCoreProperties.txt")
2313 (sha256
2314 (base32
2315 "0s6sn1yr9qmb2i6gf8dir2zpsbjv1frdfzy3i2yjylzvf637msx6"))))
2316 ("DerivedGeneralCategory.txt"
2317 ,(origin
2318 (method url-fetch)
2319 (uri "https://www.unicode.org/Public/12.1.0/ucd/extracted/DerivedGeneralCategory.txt")
2320 (sha256
2321 (base32
2322 "1rifzq9ba6c58dn0lrmcb5l5k4ksx3zsdkira3m5p6h4i2wriy3q"))))
2323 ("PropList.txt"
2324 ,(origin
2325 (method url-fetch)
2326 (uri "https://www.unicode.org/Public/12.1.0/ucd/PropList.txt")
2327 (sha256
2328 (base32
2329 "0gsb1jpj3mnqbjgbavi4l95gl6g4agq58j82km22fdfg63j3w3fk"))))))
d8bf501e 2330 (home-page "https://www.cduce.org/download.html#side")
98a468ff
JL
2331 (synopsis "Lexer generator for Unicode and OCaml")
2332 (description "Lexer generator for Unicode and OCaml.")
2333 (license license:expat)))
2334
33f16b9a
JL
2335(define-public ocaml-uchar
2336 (package
2337 (name "ocaml-uchar")
f0dece30 2338 (version "0.0.2")
33f16b9a
JL
2339 (source
2340 (origin
2341 (method url-fetch)
2342 (uri (string-append "https://github.com/ocaml/uchar/releases/download/v"
2343 version "/uchar-" version ".tbz"))
2344 (sha256 (base32
f0dece30 2345 "1w2saw7zanf9m9ffvz2lvcxvlm118pws2x1wym526xmydhqpyfa7"))))
33f16b9a 2346 (build-system ocaml-build-system)
564cf93f
JL
2347 (arguments
2348 `(#:tests? #f
2349 #:build-flags (list "native=true" "native-dynlink=true")
2350 #:phases
2351 (modify-phases %standard-phases
2352 (delete 'configure))))
2353 (native-inputs
2354 `(("ocamlbuild" ,ocamlbuild)
2355 ("opam" ,opam)))
33f16b9a
JL
2356 (home-page "https://github.com/ocaml/uchar")
2357 (synopsis "Compatibility library for OCaml's Uchar module")
2358 (description "The uchar package provides a compatibility library for the
2359`Uchar` module introduced in OCaml 4.03.")
2360 (license license:lgpl2.1)))
84290923
JL
2361
2362(define-public ocaml-uutf
2363 (package
2364 (name "ocaml-uutf")
564cf93f 2365 (version "1.0.1")
84290923
JL
2366 (source (origin
2367 (method url-fetch)
2368 (uri (string-append "http://erratique.ch/software/uutf/releases/"
2369 "uutf-" version ".tbz"))
2370 (sha256
2371 (base32
564cf93f 2372 "1gp96dcggq7s84934vimxh89caaxa77lqiff1yywbwkilkkjcfqj"))))
84290923 2373 (build-system ocaml-build-system)
564cf93f
JL
2374 (arguments
2375 `(#:tests? #f
2376 #:build-flags (list "build")
2377 #:phases
2378 (modify-phases %standard-phases
2379 (delete 'configure))))
2380 (native-inputs
2381 `(("ocamlbuild" ,ocamlbuild)
2382 ("opam" ,opam)
2383 ("topkg" ,ocaml-topkg)))
2384 (propagated-inputs
2385 `(("uchar" ,ocaml-uchar)
2386 ("cmdliner" ,ocaml-cmdliner)))
84290923
JL
2387 (home-page "http://erratique.ch/software/uutf")
2388 (synopsis "Non-blocking streaming Unicode codec for OCaml")
2389 (description "Uutf is a non-blocking streaming codec to decode and encode
2390the UTF-8, UTF-16, UTF-16LE and UTF-16BE encoding schemes. It can efficiently
2391work character by character without blocking on IO. Decoders perform character
2392position tracking and support newline normalization.
2393
2394Functions are also provided to fold over the characters of UTF encoded OCaml
2395string values and to directly encode characters in OCaml Buffer.t values.")
2396 (license license:isc)))
800ab1fb
JL
2397
2398(define-public ocaml-jsonm
2399 (package
2400 (name "ocaml-jsonm")
564cf93f 2401 (version "1.0.1")
800ab1fb
JL
2402 (source (origin
2403 (method url-fetch)
2404 (uri (string-append "http://erratique.ch/software/jsonm/releases/"
2405 "jsonm-" version ".tbz"))
2406 (sha256
2407 (base32
564cf93f 2408 "1176dcmxb11fnw49b7yysvkjh0kpzx4s48lmdn5psq9vshp5c29w"))))
800ab1fb 2409 (build-system ocaml-build-system)
564cf93f
JL
2410 (arguments
2411 `(#:tests? #f
2412 #:build-flags (list "build")
2413 #:phases
2414 (modify-phases %standard-phases
2415 (delete 'configure))))
2416 (native-inputs
2417 `(("ocamlbuild" ,ocamlbuild)
2418 ("opam" ,opam)
2419 ("topkg" ,ocaml-topkg)))
2420 (propagated-inputs
2421 `(("uutf" ,ocaml-uutf)
2422 ("cmdliner" ,ocaml-cmdliner)))
800ab1fb
JL
2423 (home-page "http://erratique.ch/software/jsonm")
2424 (synopsis "Non-blocking streaming JSON codec for OCaml")
2425 (description "Jsonm is a non-blocking streaming codec to decode and encode
2426the JSON data format. It can process JSON text without blocking on IO and
2427without a complete in-memory representation of the data.")
2428 (license license:isc)))
b6529e18 2429
2430(define-public ocaml-ocp-indent
2431 (package
2432 (name "ocaml-ocp-indent")
2433 (version "1.8.2")
2434 (source
2435 (origin
2436 (method git-fetch)
2437 (uri (git-reference
2438 (url "https://github.com/OCamlPro/ocp-indent")
2439 (commit version)))
2440 (file-name (git-file-name name version))
2441 (sha256
2442 (base32
2443 "1dvcl108ir9nqkk4mjm9xhhj4p9dx9bmg8bnms54fizs1x3x8ar3"))))
2444 (build-system dune-build-system)
2445 (arguments
2446 `(#:test-target "tests"
2447 #:build-flags (list "--profile=release")))
2448 (propagated-inputs
2449 `(("ocaml-cmdliner" ,ocaml-cmdliner)))
2450 (home-page "https://www.typerex.org/ocp-indent.html")
2451 (synopsis "Tool to indent OCaml programs")
2452 (description
2453 "Ocp-indent is based on an approximate, tolerant OCaml parser
2454and a simple stack machine. Presets and configuration options are available,
2455with the possibility to set them project-wide. It supports the most common
2456syntax extensions, and it is extensible for others.
2457
2458This package includes:
2459
2460@itemize
2461@item An indentor program, callable from the command-line or from within editors,
2462@item Bindings for popular editors,
2463@item A library that can be directly used by editor writers, or just for
2464 fault-tolerant and approximate parsing.
2465@end itemize")
2466 (license license:lgpl2.1)))
564cbfd9 2467
2468(define-public ocaml-ocp-index
2469 (package
2470 (name "ocaml-ocp-index")
2471 (version "1.2.1")
2472 (source
2473 (origin
2474 (method git-fetch)
2475 (uri (git-reference
2476 (url "https://github.com/OCamlPro/ocp-index")
2477 (commit version)))
2478 (file-name (git-file-name name version))
2479 (sha256
2480 (base32
2481 "08r7mxdnxmhff37fw4hmrpjgckgi5kaiiiirwp4rmdl594z0h9c8"))))
2482 (build-system dune-build-system)
2483 (arguments
2484 `(#:package "ocp-index"))
2485 (propagated-inputs
2486 `(("ocaml-ocp-indent" ,ocaml-ocp-indent)
2487 ("ocaml-re" ,ocaml-re)
2488 ("ocaml-cmdliner" ,ocaml-cmdliner)))
2489 (native-inputs
2490 `(("ocaml-cppo" ,ocaml-cppo)))
2491 (home-page "https://www.typerex.org/ocp-index.html")
2492 (synopsis "Lightweight completion and documentation browsing for OCaml libraries")
2493 (description "This package includes only the @code{ocp-index} library
2494and command-line tool.")
2495 ;; All files in libs/ are GNU lgpl2.1
2496 ;; For static linking, clause 6 of LGPL is lifted
2497 ;; All other files under GNU gpl3
2498 (license (list license:gpl3+
2499 license:lgpl2.1+))))
fd6e260e
JL
2500
2501(define-public ocaml-ocurl
2502 (package
2503 (name "ocaml-ocurl")
1ac2bf05 2504 (version "0.9.1")
fd6e260e
JL
2505 (source (origin
2506 (method url-fetch)
2507 (uri (string-append "http://ygrek.org.ua/p/release/ocurl/ocurl-"
2508 version ".tar.gz"))
2509 (sha256
2510 (base32
1ac2bf05 2511 "0n621cxb9012pj280c7821qqsdhypj8qy9qgrah79dkh6a8h2py6"))))
fd6e260e 2512 (build-system ocaml-build-system)
564cf93f
JL
2513 (arguments
2514 `(#:phases
2515 (modify-phases %standard-phases
2516 (add-before 'configure 'fix-/bin/sh
2517 (lambda* (#:key inputs #:allow-other-keys)
2518 (substitute* "configure"
2519 (("-/bin/sh") (string-append "-" (which "bash")))))))))
2520 (native-inputs
2521 `(("pkg-config" ,pkg-config)))
fd6e260e
JL
2522 (inputs `(("curl" ,curl)))
2523 (home-page "http://ocurl.forge.ocamlcore.org/")
2524 (synopsis "OCaml bindings for libcurl")
2525 (description "Client-side URL transfer library, supporting HTTP and a
2526multitude of other network protocols (FTP/SMTP/RTSP/etc).")
2527 (license license:isc)))
5d08f98d
JL
2528
2529(define-public ocaml-base64
2530 (package
2531 (name "ocaml-base64")
bd2ad4a1 2532 (version "3.4.0")
5d08f98d 2533 (source (origin
3617d4f9
JL
2534 (method git-fetch)
2535 (uri (git-reference
2536 (url "https://github.com/mirage/ocaml-base64")
2537 (commit (string-append "v" version))))
2538 (file-name (git-file-name name version))
5d08f98d
JL
2539 (sha256
2540 (base32
bd2ad4a1 2541 "0aa1m1sr8p1hgc10p96mij7p22r3qcysvzy6fz2jqamfgswchgqc"))))
3617d4f9 2542 (build-system dune-build-system)
bd2ad4a1
JL
2543 (arguments
2544 `(#:phases
2545 (modify-phases %standard-phases
2546 (add-before 'build 'fix-dune
2547 (lambda _
2548 ;; This package expects dune 2, which unbundled its configurator
2549 ;; module. We still use dune 1, so we need to let it know we need
2550 ;; its internal module.
2551 (substitute* "config/dune"
2552 (("dune-configurator") "dune.configurator"))
2553 #t)))))
5d08f98d 2554 (native-inputs
3617d4f9
JL
2555 `(("ocaml-alcotest" ,ocaml-alcotest)
2556 ("ocaml-bos" ,ocaml-bos)
2557 ("ocaml-rresult" ,ocaml-rresult)))
5d08f98d
JL
2558 (home-page "https://github.com/mirage/ocaml-base64")
2559 (synopsis "Base64 encoding for OCaml")
2560 (description "Base64 is a group of similar binary-to-text encoding schemes
2561that represent binary data in an ASCII string format by translating it into a
2562radix-64 representation. It is specified in RFC 4648.")
2563 (license license:isc)))
c590f1ae
JL
2564
2565(define-public ocamlify
2566 (package
2567 (name "ocamlify")
2d3370c4 2568 (version "0.0.2")
4a7243fc
TGR
2569 (source
2570 (origin
2571 (method url-fetch)
2572 (uri (string-append "https://download.ocamlcore.org/ocamlify/ocamlify/"
2573 version "/ocamlify-" version ".tar.gz"))
2574 (sha256
2d3370c4 2575 (base32 "1f0fghvlbfryf5h3j4as7vcqrgfjb4c8abl5y0y5h069vs4kp5ii"))))
c590f1ae 2576 (build-system ocaml-build-system)
c590f1ae 2577 (arguments
83e8fceb
JL
2578 `(#:tests? #f; no tests
2579 #:phases
c590f1ae 2580 (modify-phases %standard-phases
83e8fceb
JL
2581 (delete 'configure)
2582 (replace 'build
2583 ;; This package uses pre-generated setup.ml by oasis, but is
2584 ;; a dependency of oasis. the pre-generated setup.ml is broken
2585 ;; with recent versions of OCaml, so we perform a bootstrap instead.
2d3370c4 2586 (lambda _
83e8fceb
JL
2587 (substitute* "src/OCamlifyConfig.ml.ab"
2588 (("$pkg_version") ,version))
2589 (rename-file "src/OCamlifyConfig.ml.ab" "src/OCamlifyConfig.ml")
2590 (with-directory-excursion "src"
2591 (invoke "ocamlc" "OCamlifyConfig.ml" "ocamlify.ml" "-o"
2592 "ocamlify"))
2d3370c4 2593 #t))
83e8fceb 2594 (replace 'install
6e494267 2595 (lambda* (#:key outputs #:allow-other-keys)
83e8fceb
JL
2596 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
2597 (mkdir-p bin)
2598 (install-file "src/ocamlify" bin)
2599 #t))))))
c590f1ae
JL
2600 (home-page "https://forge.ocamlcore.org/projects/ocamlify")
2601 (synopsis "Include files in OCaml code")
e49a6c82 2602 (description "OCamlify creates OCaml source code by including
c590f1ae
JL
2603whole files into OCaml string or string list. The code generated can be
2604compiled as a standard OCaml file. It allows embedding external resources as
2605OCaml code.")
2606 (license license:lgpl2.1+))); with the OCaml static compilation exception
41e8e079
JL
2607
2608(define-public omake
2609 (package
2610 (name "omake")
564cf93f 2611 (version "0.10.3")
41e8e079
JL
2612 (source (origin
2613 (method url-fetch)
2614 (uri (string-append "http://download.camlcity.org/download/"
2615 "omake-" version ".tar.gz"))
2616 (sha256
2617 (base32
564cf93f 2618 "07bdg1h5i7qnlv9xq81ad5hfypl10hxm771h4rjyl5cn8plhfcgz"))
41e8e079
JL
2619 (patches (search-patches "omake-fix-non-determinism.patch"))))
2620 (build-system ocaml-build-system)
2621 (arguments
2622 `(#:make-flags
2623 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
2624 #:tests? #f ; no test target
2625 #:phases
2626 (modify-phases %standard-phases
2627 (add-before 'configure 'fix-makefile
2628 (lambda* (#:key outputs #:allow-other-keys)
2629 (substitute* "mk/osconfig_unix.mk"
2630 (("CC = cc") "CC = gcc")))))))
2631 (native-inputs `(("hevea" ,hevea)))
2632 (home-page "http://projects.camlcity.org/projects/omake.html")
2633 (synopsis "Build system designed for scalability and portability")
2634 (description "Similar to make utilities you may have used, but it features
2635many additional enhancements, including:
2636
2637@enumerate
2638@item Support for projects spanning several directories or directory hierarchies.
2639@item Fast, reliable, automated, scriptable dependency analysis using MD5 digests,
2640 with full support for incremental builds.
2641@item Dependency analysis takes the command lines into account — whenever the
2642 command line used to build a target changes, the target is considered
2643 out-of-date.
2644@item Fully scriptable, includes a library that providing support for standard
2645 tasks in C, C++, OCaml, and LaTeX projects, or a mixture thereof.
2646@end enumerate")
2647 (license (list license:lgpl2.1 ; libmojave
2648 license:expat ; OMake scripts
2649 license:gpl2)))) ; OMake itself, with ocaml linking exception
2650 ; see LICENSE.OMake
0e9e94b7
JL
2651
2652(define-public ocaml-batteries
2653 (package
2654 (name "ocaml-batteries")
242e9f0d 2655 (version "2.10.0")
0e9e94b7
JL
2656 (source (origin
2657 (method url-fetch)
564cf93f
JL
2658 (uri (string-append "https://github.com/ocaml-batteries-team/"
2659 "batteries-included/releases/download/v"
2660 version "/batteries-" version ".tar.gz"))
0e9e94b7
JL
2661 (sha256
2662 (base32
242e9f0d 2663 "08ghw87d56h1a6y1nnh3x2wy9xj25jqfk5sp6ma9nsyd37babb0h"))))
0e9e94b7
JL
2664 (build-system ocaml-build-system)
2665 (native-inputs
564cf93f 2666 `(("ocamlbuild" ,ocamlbuild)
af76eeda 2667 ("qtest" ,ocaml-qtest)))
564cf93f
JL
2668 (propagated-inputs
2669 `(("ocaml-num" ,ocaml-num)))
0e9e94b7
JL
2670 (arguments
2671 `(#:phases
2672 (modify-phases %standard-phases
2673 (delete 'check) ; tests are run by the build phase
850f7873
JL
2674 (add-before 'build 'fix-nondeterminism
2675 (lambda _
2676 (substitute* "setup.ml"
2677 (("Sys.readdir dirname")
2678 "let a = Sys.readdir dirname in Array.sort String.compare a; a"))
2679 #t))
0e9e94b7 2680 (replace 'build
564cf93f
JL
2681 (lambda* (#:key inputs outputs #:allow-other-keys)
2682 (let ((files
2683 (map (lambda (str)
2684 (substring str 0 (- (string-length str) 1)))
2685 (append
2686 (find-files "src" ".*.mliv")
2687 (find-files "src" ".*.mlv")
2688 (find-files "src" ".*.mlp")))))
2689 (apply invoke "ocamlbuild" "-no-links" "-use-ocamlfind" "-I" "num"
2690 "-lflag" "-dllpath-all" files)
2691 (for-each (lambda (file)
2692 (copy-file (string-append "_build/" file) file))
2693 files))
2694 (invoke "ocamlbuild" "-no-links" "-use-ocamlfind" "-I" "num"
2695 "-lflag" "-dllpath-all" "build/mkconf.byte")
2696 (copy-file "_build/build/mkconf.byte" "build/mkconf.byte")
2697 (invoke "make" "all")
2698 #t)))))
0e9e94b7
JL
2699 (home-page "http://batteries.forge.ocamlcore.org/")
2700 (synopsis "Development platform for the OCaml programming language")
2701 (description "Define a standard set of libraries which may be expected on
2702every compliant installation of OCaml and organize these libraries into a
2703hierarchy of modules.")
2704 (license license:lgpl2.1+)))
f8a12de1 2705
87858bc5 2706(define-public ocaml4.07-pcre
f8a12de1 2707 (package
87858bc5 2708 (name "ocaml4.07-pcre")
1e8439de 2709 (version "7.4.1")
f8a12de1 2710 (source (origin
1e8439de
JL
2711 (method git-fetch)
2712 (uri (git-reference
2713 (url "https://github.com/mmottl/pcre-ocaml")
2714 (commit version)))
2715 (file-name (git-file-name name version))
f8a12de1
JL
2716 (sha256
2717 (base32
1e8439de
JL
2718 "11sd8g668h48790lamz0riw9jgnfkaif5qdfa0akcndwa6aj07jf"))))
2719 (build-system dune-build-system)
f8a12de1 2720 (arguments
87858bc5
JL
2721 `(#:test-target "."
2722 #:ocaml ,ocaml-4.07
2723 #:findlib ,ocaml4.07-findlib
2724 #:dune ,ocaml4.07-dune))
f8a12de1 2725 (native-inputs
55c2851a 2726 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
f8a12de1
JL
2727 ("pcre:bin" ,pcre "bin")))
2728 (propagated-inputs `(("pcre" ,pcre)))
2729 (home-page "https://mmottl.github.io/pcre-ocaml")
2730 (synopsis "Bindings to the Perl Compatibility Regular Expressions library")
2731 (description "Pcre-ocaml offers library functions for string pattern
2732matching and substitution, similar to the functionality offered by the Perl
2733language.")
2734 (license license:lgpl2.1+))); with the OCaml link exception
3763eea7 2735
87858bc5 2736(define-public ocaml4.07-expect
3763eea7 2737 (package
87858bc5 2738 (name "ocaml4.07-expect")
564cf93f 2739 (version "0.0.6")
3763eea7
JL
2740 (source (origin
2741 (method url-fetch)
564cf93f 2742 (uri (ocaml-forge-uri name version 1736))
3763eea7
JL
2743 (sha256
2744 (base32
564cf93f
JL
2745 "098qvg9d4yrqzr5ax291y3whrpax0m3sx4gi6is0mblc96r9yqk0"))))
2746 (arguments
87858bc5
JL
2747 `(#:tests? #f
2748 #:ocaml ,ocaml-4.07
2749 #:findlib ,ocaml4.07-findlib))
3763eea7
JL
2750 (build-system ocaml-build-system)
2751 (native-inputs
87858bc5
JL
2752 `(("ocamlbuild" ,(package-with-ocaml4.07 ocamlbuild))
2753 ("ocaml-num" ,(package-with-ocaml4.07 ocaml-num))
2754 ("ocaml-pcre" ,ocaml4.07-pcre)
2755 ("ounit" ,(package-with-ocaml4.07 ocaml-ounit))))
2756 (propagated-inputs
2757 `(("batteries" ,(package-with-ocaml4.07 ocaml-batteries))))
3763eea7
JL
2758 (home-page "https://forge.ocamlcore.org/projects/ocaml-expect/")
2759 (synopsis "Simple implementation of expect")
2760 (description "Help building unitary testing of interactive program. You
2761can match the question using a regular expression or a timeout.")
2762 (license license:lgpl2.1+))) ; with the OCaml static compilation exception
77a515e9 2763
a21ea76f
JL
2764(define-public ocaml-stdlib-shims
2765 (package
2766 (name "ocaml-stdlib-shims")
2767 (version "0.1.0")
2768 (source (origin
2769 (method git-fetch)
2770 (uri (git-reference
2771 (url "https://github.com/ocaml/stdlib-shims")
2772 (commit version)))
2773 (file-name (git-file-name name version))
2774 (sha256
2775 (base32
2776 "007dwywsr5285z0np6a9nr0h8iqmyzfrlx6s5xaqcwj69zabsrjm"))))
2777 (build-system dune-build-system)
2778 (home-page "https://github.com/ocaml/stdlib-shims")
2779 (synopsis "OCaml stdlib features backport to older OCaml compilers")
2780 (description "This package backports some of the new stdlib features to
2781older compilers, such as the Stdlib module. This allows projects that require
2782compatibility with older compiler to use these new features in their code.")
2783 ;; with ocaml-linking exception
2784 (license license:lgpl2.1+)))
2785
bbe9915b 2786(define-public ocaml-fileutils
77a515e9 2787 (package
bbe9915b 2788 (name "ocaml-fileutils")
bee8c8ac 2789 (version "0.6.2")
77a515e9 2790 (source (origin
1fe01b70
JL
2791 (method git-fetch)
2792 (uri (git-reference
2793 (url "https://github.com/gildor478/ocaml-fileutils")
2794 (commit (string-append "v" version))))
2795 (file-name (git-file-name name version))
77a515e9
JL
2796 (sha256
2797 (base32
bee8c8ac
JL
2798 "01qf51b8pb7vyfba7y0kb7ajwj1950im25d7f59821zwsibns3d9"))))
2799 (build-system dune-build-system)
1fe01b70
JL
2800 (propagated-inputs
2801 `(("ocaml-stdlib-shims" ,ocaml-stdlib-shims)))
564cf93f 2802 (native-inputs
bee8c8ac 2803 `(("ocaml-ounit" ,ocaml-ounit)))
77a515e9
JL
2804 (home-page "http://ocaml-fileutils.forge.ocamlcore.org")
2805 (synopsis "Pure OCaml functions to manipulate real file and filename")
2806 (description "Library to provide pure OCaml functions to manipulate real
2807file (POSIX like) and filename.")
2808 (license license:lgpl2.1+))) ; with the OCaml static compilation exception
5eed45a8
JL
2809
2810(define-public ocaml-oasis
2811 (package
2812 (name "ocaml-oasis")
564cf93f 2813 (version "0.4.11")
5eed45a8
JL
2814 (source (origin
2815 (method url-fetch)
564cf93f 2816 (uri (ocaml-forge-uri name version 1757))
5eed45a8
JL
2817 (sha256
2818 (base32
564cf93f 2819 "0bn13mzfa98dq3y0jwzzndl55mnywaxv693z6f1rlvpdykp3vdqq"))
5eed45a8
JL
2820 (modules '((guix build utils)))
2821 (snippet
6cbee49d
MW
2822 '(begin
2823 (substitute* "test/test-main/Test.ml"
2824 ;; most of these tests fail because ld cannot find crti.o, but according
2825 ;; to the log file, the environment variables {LD_,}LIBRARY_PATH
564cf93f 2826 ;; are set correctly when LD_LIBRARY_PATH is defined beforhand.
6cbee49d
MW
2827 (("TestBaseCompat.tests;") "")
2828 (("TestExamples.tests;") "")
2829 (("TestFull.tests;") "")
2830 (("TestPluginDevFiles.tests;") "")
2831 (("TestPluginInternal.tests;") "")
2832 (("TestPluginOCamlbuild.tests;") "")
2833 (("TestPluginOMake.tests;") ""))
2834 #t))))
5eed45a8 2835 (build-system ocaml-build-system)
564cf93f
JL
2836 (arguments
2837 `(#:tests? #f))
5eed45a8 2838 (native-inputs
564cf93f
JL
2839 `(("ocamlbuild" ,ocamlbuild)
2840 ("ocamlify" ,ocamlify)
2841 ("ocamlmod" ,ocamlmod)))
5eed45a8
JL
2842 (home-page "https://oasis.forge.ocamlcore.org")
2843 (synopsis "Integrates a configure, build, install system in OCaml projects")
2844 (description "OASIS is a tool to integrate a configure, build and install
2845system in your OCaml projects. It helps to create standard entry points in your
2846build system and allows external tools to analyse your project easily.")
2847 (license license:lgpl2.1+))) ; with ocaml static compilation exception
f95ebba5 2848
f6dde36a
JL
2849(define-public ocaml-cppo
2850 (package
2851 (name "ocaml-cppo")
f082c78c 2852 (version "1.6.6")
f6dde36a
JL
2853 (source
2854 (origin
f082c78c
JL
2855 (method git-fetch)
2856 (uri (git-reference
2857 (url "https://github.com/mjambon/cppo")
2858 (commit (string-append "v" version))))
2859 (file-name (git-file-name name version))
f6dde36a 2860 (sha256 (base32
f082c78c 2861 "1smcc0l6fh2n0y6bp96c69j5nw755jja99w0b206wx3yb2m4w2hs"))))
48b27902 2862 (build-system dune-build-system)
f6dde36a 2863 (arguments
48b27902
JL
2864 `(#:tests? #f
2865 #:build-flags (list "--profile" "release")))
564cf93f 2866 (native-inputs
48b27902 2867 `(("ocamlbuild" ,ocamlbuild)))
f6dde36a
JL
2868 (home-page "https://github.com/mjambon/cppo")
2869 (synopsis "Equivalent of the C preprocessor for OCaml programs")
2870 (description "Cppo is an equivalent of the C preprocessor for OCaml
7230f6d5 2871programs. It allows the definition of simple macros and file inclusion. Cppo is:
f6dde36a 2872@enumerate
7230f6d5 2873@item more OCaml-friendly than @command{cpp}
f6dde36a
JL
2874@item easy to learn without consulting a manual
2875@item reasonably fast
2876@item simple to install and to maintain.
2877@end enumerate")
2878 (license license:bsd-3)))
505394d1 2879
564cf93f
JL
2880(define-public ocaml-seq
2881 (package
2882 (name "ocaml-seq")
2883 (version "0.1")
f6a99fbf
TGR
2884 (source
2885 (origin
2886 (method git-fetch)
2887 (uri (git-reference
b0e7b699 2888 (url "https://github.com/c-cube/seq")
f6a99fbf
TGR
2889 (commit version)))
2890 (file-name (git-file-name name version))
2891 (sha256
2892 (base32 "1cjpsc7q76yfgq9iyvswxgic4kfq2vcqdlmxjdjgd4lx87zvcwrv"))))
564cf93f
JL
2893 (build-system ocaml-build-system)
2894 (arguments
2895 `(#:tests? #f
2896 #:phases
2897 (modify-phases %standard-phases
2898 (delete 'configure)
2899 (delete 'build)
2900 (replace 'install
2901 (lambda* (#:key outputs #:allow-other-keys)
2902 (let ((install-dir (string-append (assoc-ref outputs "out")
2903 "/lib/ocaml/site-lib/seq")))
2904 (mkdir-p install-dir)
2905 (with-output-to-file (string-append install-dir "/META")
2906 (lambda _
2907 (display "name=\"seq\"
2908version=\"[distributed with ocaml]\"
2909description=\"dummy package for compatibility\"
2910requires=\"\"")))
f6a99fbf 2911 #t))))))
564cf93f
JL
2912 (home-page "https://github.com/c-cube/seq")
2913 (synopsis "OCaml's standard iterator type")
2914 (description "This package is a compatibility package for OCaml's
2915standard iterator type starting from 4.07.")
2916 (license license:lgpl2.1+)))
2917
f27522d6
JL
2918(define-public ocaml-re
2919 (package
2920 (name "ocaml-re")
58c3118f 2921 (version "1.9.0")
07c3711d
TGR
2922 (source
2923 (origin
2924 (method git-fetch)
2925 (uri (git-reference
b0e7b699 2926 (url "https://github.com/ocaml/ocaml-re")
07c3711d
TGR
2927 (commit version)))
2928 (file-name (git-file-name name version))
2929 (sha256
58c3118f 2930 (base32 "07ycb103mr4mrkxfd63cwlsn023xvcjp0ra0k7n2gwrg0mwxmfss"))))
d6fa189e 2931 (build-system dune-build-system)
564cf93f
JL
2932 (arguments
2933 `(#:tests? #f
d6fa189e 2934 #:build-flags (list "--profile" "release")))
564cf93f
JL
2935 (propagated-inputs
2936 `(("ocaml-seq" ,ocaml-seq)))
2937 (native-inputs
d6fa189e 2938 `(("ounit" ,ocaml-ounit)))
f27522d6
JL
2939 (home-page "https://github.com/ocaml/ocaml-re/")
2940 (synopsis "Regular expression library for OCaml")
2941 (description "Pure OCaml regular expressions with:
2942@enumerate
2943@item Perl-style regular expressions (module Re_perl)
2944@item Posix extended regular expressions (module Re_posix)
2945@item Emacs-style regular expressions (module Re_emacs)
2946@item Shell-style file globbing (module Re_glob)
2947@item Compatibility layer for OCaml's built-in Str module (module Re_str)
2948@end enumerate")
2949 (license license:expat)))
5cd47fb0 2950
9059d856
JL
2951(define-public ocaml-ocplib-endian
2952 (package
2953 (name "ocaml-ocplib-endian")
2954 (version "1.0")
2955 (source (origin
4d85a7dd
EF
2956 (method git-fetch)
2957 (uri (git-reference
2958 (url "https://github.com/OCamlPro/ocplib-endian/")
2959 (commit version)))
9059d856
JL
2960 (sha256
2961 (base32
4d85a7dd
EF
2962 "0s1ld3kavz892b8awyxyg1mr98h2g61gy9ci5v6yb49bsii6wicw"))
2963 (file-name (git-file-name name version))))
9059d856 2964 (build-system ocaml-build-system)
564cf93f
JL
2965 (native-inputs
2966 `(("cppo" ,ocaml-cppo)
2967 ("ocamlbuild" ,ocamlbuild)))
9059d856
JL
2968 (home-page "https://github.com/OCamlPro/ocplib-endian")
2969 (synopsis "Optimised functions to read and write int16/32/64 from strings
2970and bigarrays")
2971 (description "Optimised functions to read and write int16/32/64 from strings
2972and bigarrays, based on new primitives added in version 4.01. It works on
2973strings, bytes and bigstring (Bigarrys of chars), and provides submodules for
2974big- and little-endian, with their unsafe counter-parts.")
2975 (license license:lgpl2.1)))
0090b895 2976
bbe9915b 2977(define-public ocaml-cstruct
0090b895 2978 (package
bbe9915b
JL
2979 (name "ocaml-cstruct")
2980 (version "4.0.0")
0090b895 2981 (source (origin
bbe9915b
JL
2982 (method git-fetch)
2983 (uri (git-reference
2984 (url "https://github.com/mirage/ocaml-cstruct")
2985 (commit (string-append "v" version))))
f1d4d79f 2986 (file-name (git-file-name name version))
0090b895
JL
2987 (sha256
2988 (base32
bbe9915b
JL
2989 "0m4bz0digcsc8l2msfikwcbi1y371kccx6xnkwrz212mf5mp98bv"))))
2990 (build-system dune-build-system)
0090b895 2991 (arguments
bbe9915b
JL
2992 `(#:package "cstruct"
2993 #:test-target "."))
0090b895 2994 (native-inputs
bbe9915b 2995 `(("ocaml-alcotest" ,ocaml-alcotest)))
0090b895
JL
2996 (home-page "https://github.com/mirage/ocaml-cstruct")
2997 (synopsis "Access C structures via a camlp4 extension")
2998 (description "Cstruct is a library and syntax extension to make it easier
2999to access C-like structures directly from OCaml. It supports both reading and
3000writing to these structures, and they are accessed via the Bigarray module.")
3001 (license license:isc)))
61bafd44 3002
bbe9915b 3003(define-public ocaml-hex
61bafd44 3004 (package
bbe9915b
JL
3005 (name "ocaml-hex")
3006 (version "1.4.0")
61bafd44 3007 (source (origin
bbe9915b
JL
3008 (method git-fetch)
3009 (uri (git-reference
3010 (url "https://github.com/mirage/ocaml-hex")
3011 (commit (string-append "v" version))))
3012 (file-name (git-file-name name version))
61bafd44
JL
3013 (sha256
3014 (base32
bbe9915b
JL
3015 "0c8nhibcwy0ykzca4jn3gqb8ylq21ff88y82gl60wyzijr64rn0q"))))
3016 (build-system dune-build-system)
564cf93f 3017 (arguments
bbe9915b 3018 `(#:test-target "."))
564cf93f 3019 (propagated-inputs
bbe9915b
JL
3020 `(("ocaml-bigarray-compat" ,ocaml-bigarray-compat)
3021 ("cstruct" ,ocaml-cstruct)))
61bafd44
JL
3022 (home-page "https://github.com/mirage/ocaml-hex/")
3023 (synopsis "Minimal library providing hexadecimal converters")
3024 (description "Hex is a minimal library providing hexadecimal converters.")
3025 (license license:isc)))
d163d97d 3026
87858bc5 3027(define-public ocaml4.07-ezjsonm
bf7bc0d6 3028 (package
87858bc5 3029 (name "ocaml4.07-ezjsonm")
bcc718be 3030 (version "1.1.0")
21b1845d
TGR
3031 (source
3032 (origin
3033 (method git-fetch)
3034 (uri (git-reference
b0e7b699 3035 (url "https://github.com/mirage/ezjsonm")
bcc718be 3036 (commit (string-append "v" version))))
21b1845d
TGR
3037 (file-name (git-file-name name version))
3038 (sha256
bcc718be 3039 (base32 "064j9pzy01p3dv947khqyn7fkjbs3jmrqsg8limb4abnlaqxxs2s"))))
bbe9915b
JL
3040 (build-system dune-build-system)
3041 (arguments
3042 `(#:package "ezjsonm"
87858bc5
JL
3043 #:test-target "."
3044 #:ocaml ,ocaml-4.07
339c752d
JL
3045 #:findlib ,ocaml4.07-findlib
3046 #:dune ,ocaml4.07-dune))
bf7bc0d6 3047 (native-inputs
87858bc5 3048 `(("ocaml-alcotest" ,(package-with-ocaml4.07 ocaml-alcotest))))
bf7bc0d6 3049 (propagated-inputs
87858bc5
JL
3050 `(("ocaml-hex" ,(package-with-ocaml4.07 ocaml-hex))
3051 ("ocaml-jsonm" ,(package-with-ocaml4.07 ocaml-jsonm))
5de771a4 3052 ("ocaml-sexplib" ,(package-with-ocaml4.07 ocaml-sexplib))))
bf7bc0d6
JL
3053 (home-page "https://github.com/mirage/ezjsonm/")
3054 (synopsis "Read and write JSON data")
3055 (description "Ezjsonm provides more convenient (but far less flexible) input
3056and output functions that go to and from [string] values than jsonm. This avoids
3057the need to write signal code, which is useful for quick scripts that manipulate
3058JSON.")
3059 (license license:isc)))
3060
87858bc5 3061(define-public ocaml4.07-uri
3dabefee 3062 (package
87858bc5 3063 (name "ocaml4.07-uri")
bbe9915b 3064 (version "2.2.0")
e4bb29dd
TGR
3065 (source
3066 (origin
3067 (method git-fetch)
3068 (uri (git-reference
b0e7b699 3069 (url "https://github.com/mirage/ocaml-uri")
e4bb29dd
TGR
3070 (commit (string-append "v" version))))
3071 (file-name (git-file-name name version))
3072 (sha256
bbe9915b
JL
3073 (base32 "1ppbav41mszpjcl0zi3fyg958cxyfs57i7kvha4ds9ydn89bjmrh"))))
3074 (build-system dune-build-system)
564cf93f 3075 (arguments
58c3118f
JL
3076 `(#:test-target "."
3077 #:phases
3078 (modify-phases %standard-phases
3079 (add-before 'build 'update-deprecated
3080 (lambda _
3081 (substitute* "lib/uri.ml"
87858bc5
JL
3082 (("Re.get") "Re.Group.get")))))
3083 #:ocaml ,ocaml-4.07
339c752d
JL
3084 #:findlib ,ocaml4.07-findlib
3085 #:dune ,ocaml4.07-dune))
3dabefee 3086 (native-inputs
87858bc5
JL
3087 `(("ocaml-ounit" ,(package-with-ocaml4.07 ocaml-ounit))
3088 ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)))
3dabefee 3089 (propagated-inputs
87858bc5 3090 `(("ocaml-re" ,(package-with-ocaml4.07 ocaml-re))
adb30e51 3091 ("ocaml-sexplib0" ,(package-with-ocaml4.07 ocaml-sexplib0))
87858bc5 3092 ("ocaml-stringext" ,(package-with-ocaml4.07 ocaml-stringext))))
3dabefee
JL
3093 (home-page "https://github.com/mirage/ocaml-uri")
3094 (synopsis "RFC3986 URI/URL parsing library")
3095 (description "OCaml-uri is a library for parsing URI/URL in the RFC3986 format.")
3096 (license license:isc)))
3097
6134aeb9
JL
3098(define-public ocaml-easy-format
3099 (package
3100 (name "ocaml-easy-format")
ce502774 3101 (version "1.3.2")
6134aeb9 3102 (source (origin
12c3f62a
JL
3103 (method git-fetch)
3104 (uri (git-reference
3105 (url "https://github.com/mjambon/easy-format")
ce502774 3106 (commit version)))
12c3f62a 3107 (file-name (git-file-name name version))
6134aeb9
JL
3108 (sha256
3109 (base32
ce502774 3110 "1fc95q2ypck6m6rv3kiawwilh5ac93v2hcp823mj608d5kj79xkb"))))
12c3f62a 3111 (build-system dune-build-system)
6134aeb9 3112 (arguments
8ff5f39a 3113 `(#:package "easy-format"
ce502774
JL
3114 #:phases
3115 (modify-phases %standard-phases
3116 (add-before 'build 'make-writable
3117 (lambda _
3118 (for-each
3119 (lambda (file)
3120 (chmod file #o644))
3121 (find-files "." "."))
3122 #t)))))
6134aeb9
JL
3123 (home-page "https://github.com/mjambon/easy-format")
3124 (synopsis "Interface to the Format module")
3125 (description "Easy-format is a high-level and functional interface to the
3126Format module of the OCaml standard library.")
3127 (license license:bsd-3)))
3128
87858bc5 3129(define-public ocaml4.07-piqilib
9c5dbbf0 3130 (package
87858bc5 3131 (name "ocaml4.07-piqilib")
05fe0a58 3132 (version "0.6.15")
677a88e0
TGR
3133 (source
3134 (origin
3135 (method git-fetch)
3136 (uri (git-reference
b0e7b699 3137 (url "https://github.com/alavrik/piqi")
677a88e0
TGR
3138 (commit (string-append "v" version))))
3139 (file-name (git-file-name name version))
3140 (sha256
05fe0a58 3141 (base32 "0v04hs85xv6d4ysqxyv1dik34dx49yab9shpi4x7iv19qlzl7csb"))))
9c5dbbf0
JL
3142 (build-system ocaml-build-system)
3143 (arguments
3144 `(#:phases
3145 (modify-phases %standard-phases
3146 (add-before 'configure 'fix-ocamlpath
3147 (lambda _
3148 (substitute* '("Makefile" "make/Makefile.ocaml")
3149 (("OCAMLPATH := ") "OCAMLPATH := $(OCAMLPATH):"))
3150 #t))
3151 (replace 'configure
3152 (lambda* (#:key outputs #:allow-other-keys)
3153 (let ((out (assoc-ref outputs "out")))
3154 (substitute* "make/OCamlMakefile"
3155 (("/bin/sh") (which "bash")))
564cf93f
JL
3156 (invoke "./configure" "--prefix" out "--ocaml-libdir"
3157 (string-append out "/lib/ocaml/site-lib")))
3158 #t))
9c5dbbf0
JL
3159 (add-after 'build 'build-ocaml
3160 (lambda* (#:key outputs #:allow-other-keys)
564cf93f
JL
3161 (invoke "make" "ocaml")
3162 #t))
9c5dbbf0
JL
3163 (add-after 'install 'install-ocaml
3164 (lambda* (#:key outputs #:allow-other-keys)
564cf93f
JL
3165 (invoke "make" "ocaml-install")
3166 #t))
9c5dbbf0
JL
3167 (add-after 'install-ocaml 'link-stubs
3168 (lambda* (#:key outputs #:allow-other-keys)
3169 (let* ((out (assoc-ref outputs "out"))
3170 (stubs (string-append out "/lib/ocaml/site-lib/stubslibs"))
3171 (lib (string-append out "/lib/ocaml/site-lib/piqilib")))
3172 (mkdir-p stubs)
3173 (symlink (string-append lib "/dllpiqilib_stubs.so")
3174 (string-append stubs "/dllpiqilib_stubs.so"))
87858bc5
JL
3175 #t))))
3176 #:ocaml ,ocaml-4.07
3177 #:findlib ,ocaml4.07-findlib))
9c5dbbf0 3178 (native-inputs
05fe0a58 3179 `(("which" ,which)))
9c5dbbf0 3180 (propagated-inputs
87858bc5
JL
3181 `(("ocaml-xmlm" ,(package-with-ocaml4.07 ocaml-xmlm))
3182 ("ocaml-sedlex" ,ocaml4.07-sedlex)
3183 ("ocaml-easy-format" ,(package-with-ocaml4.07 ocaml-easy-format))
3184 ("ocaml-base64" ,(package-with-ocaml4.07 ocaml-base64))))
9c5dbbf0
JL
3185 (home-page "http://piqi.org")
3186 (synopsis "Data serialization and conversion library")
3187 (description "Piqilib is the common library used by the piqi command-line
3188tool and piqi-ocaml.")
3189 (license license:asl2.0)))
3190
88b1533c
JL
3191(define-public ocaml-uuidm
3192 (package
3193 (name "ocaml-uuidm")
3194 (version "0.9.6")
3195 (source (origin
3196 (method url-fetch)
3197 (uri (string-append "http://erratique.ch/software/uuidm/"
3198 "releases/uuidm-" version ".tbz"))
3199 (sha256
3200 (base32
3201 "0hz4fdx0x16k0pw9995vkz5d1hmzz6b16wck9li399rcbfnv5jlc"))))
3202 (build-system ocaml-build-system)
3203 (arguments
3204 `(#:build-flags
3205 (list "build" "--tests" "true" "--with-cmdliner" "true")
3206 #:phases
3207 (modify-phases %standard-phases
3208 (delete 'configure))))
3209 (native-inputs
564cf93f
JL
3210 `(("ocamlbuild" ,ocamlbuild)
3211 ("opam" ,opam)))
88b1533c
JL
3212 (propagated-inputs
3213 `(("cmdliner" ,ocaml-cmdliner)
3214 ("topkg" ,ocaml-topkg)))
3215 (home-page "http://erratique.ch/software/uuidm")
3216 (synopsis "Universally unique identifiers for OCaml")
3217 (description "Uuidm is an OCaml module implementing 128 bits universally
3218unique identifiers (UUIDs) version 3, 5 (named based with MD5, SHA-1 hashing)
3219and 4 (random based) according to RFC 4122.")
3220 (license license:isc)))
3221
8a238180
JL
3222(define-public ocaml-graph
3223 (package
3224 (name "ocaml-graph")
564cf93f 3225 (version "1.8.8")
8a238180
JL
3226 (source (origin
3227 (method url-fetch)
3228 (uri (string-append "http://ocamlgraph.lri.fr/download/"
3229 "ocamlgraph-" version ".tar.gz"))
3230 (sha256
3231 (base32
564cf93f 3232 "0m9g16wrrr86gw4fz2fazrh8nkqms0n863w7ndcvrmyafgxvxsnr"))))
8a238180
JL
3233 (build-system ocaml-build-system)
3234 (arguments
3235 `(#:install-target "install-findlib"
564cf93f 3236 #:tests? #f
8a238180
JL
3237 #:phases
3238 (modify-phases %standard-phases
3239 (add-before 'configure 'set-shell
3240 (lambda* (#:key inputs #:allow-other-keys)
3241 (setenv "CONFIG_SHELL" (string-append (assoc-ref inputs "bash")
3242 "/bin/sh")))))))
3243 (inputs `(("lablgtk" ,lablgtk)))
8737666a 3244 (properties `((upstream-name . "ocamlgraph")))
8a238180
JL
3245 (home-page "http://ocamlgraph.lri.fr/")
3246 (synopsis "Graph library for OCaml")
3247 (description "OCamlgraph is a generic graph library for OCaml.")
3248 (license license:lgpl2.1)))
3249
87858bc5 3250(define-public ocaml4.07-piqi
fc3d70ae 3251 (package
87858bc5 3252 (name "ocaml4.07-piqi")
c8b309ec 3253 (version "0.7.7")
fc3d70ae 3254 (source (origin
2d84ef32
EF
3255 (method git-fetch)
3256 (uri (git-reference
3257 (url "https://github.com/alavrik/piqi-ocaml")
3258 (commit (string-append "v" version))))
3259 (file-name (git-file-name name version))
fc3d70ae
JL
3260 (sha256
3261 (base32
2d84ef32 3262 "1913jpsb8mvqi8609j4g4sm5jhg50dq0xqxgy8nmvknfryyc89nm"))))
fc3d70ae
JL
3263 (build-system ocaml-build-system)
3264 (arguments
3265 `(#:make-flags
3266 (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
3267 (string-append "SHELL=" (assoc-ref %build-inputs "bash")
3268 "/bin/sh"))
3269 #:phases
3270 (modify-phases %standard-phases
2d84ef32
EF
3271 (add-after 'unpack 'make-files-writable
3272 (lambda _
3273 (for-each make-file-writable (find-files "."))
3274 #t))
87858bc5
JL
3275 (delete 'configure))
3276 #:ocaml ,ocaml-4.07
3277 #:findlib ,ocaml4.07-findlib))
fc3d70ae
JL
3278 (native-inputs
3279 `(("which" ,which)
3280 ("protobuf" ,protobuf))) ; for tests
3281 (propagated-inputs
87858bc5
JL
3282 `(("ocaml-num" ,(package-with-ocaml4.07 ocaml-num))
3283 ("ocaml-piqilib" ,ocaml4.07-piqilib)
3284 ("ocaml-stdlib-shims" ,(package-with-ocaml4.07 ocaml-stdlib-shims))))
fc3d70ae
JL
3285 (home-page "https://github.com/alavrik/piqi-ocaml")
3286 (synopsis "Protocol serialization system for OCaml")
3287 (description "Piqi is a multi-format data serialization system for OCaml.
3288It provides a uniform interface for serializing OCaml data structures to JSON,
3289XML and Protocol Buffers formats.")
3290 (license license:asl2.0)))
3291
cd1562ef
JL
3292(define-public bap
3293 (package
3294 (name "bap")
523cbfbd 3295 (version "2.0.0")
cd1562ef
JL
3296 (home-page "https://github.com/BinaryAnalysisPlatform/bap")
3297 (source (origin
bbe9915b
JL
3298 (method git-fetch)
3299 (uri (git-reference
3300 (url home-page)
3301 (commit (string-append "v" version))))
3302 (file-name (git-file-name name version))
cd1562ef
JL
3303 (sha256
3304 (base32
523cbfbd 3305 "0lb9xkfp67wjjqr75p6krivmjra7l5673236v9ny4gp0xi0755bk"))))
cd1562ef
JL
3306 (build-system ocaml-build-system)
3307 (native-inputs
87858bc5 3308 `(("ocaml-oasis" ,(package-with-ocaml4.07 ocaml-oasis))
67b5785e 3309 ("clang" ,clang-3.8)
87858bc5 3310 ("ocaml-ounit" ,(package-with-ocaml4.07 ocaml-ounit))))
cd1562ef 3311 (propagated-inputs
87858bc5
JL
3312 `(("camlzip" ,(package-with-ocaml4.07 camlzip))
3313 ("ocaml-bitstring" ,(package-with-ocaml4.07 ocaml-bitstring))
3314 ("ocaml-cmdliner" ,(package-with-ocaml4.07 ocaml-cmdliner))
3315 ("ocaml-core-kernel" ,ocaml4.07-core-kernel)
3316 ("ocaml-ezjsonm" ,ocaml4.07-ezjsonm)
3317 ("ocaml-fileutils" ,(package-with-ocaml4.07 ocaml-fileutils))
3318 ("ocaml-frontc" ,(package-with-ocaml4.07 ocaml-frontc))
3319 ("ocaml-graph" ,(package-with-ocaml4.07 ocaml-graph))
3320 ("ocaml-ocurl" ,(package-with-ocaml4.07 ocaml-ocurl))
3321 ("ocaml-piqi" ,ocaml4.07-piqi)
3322 ("ocaml-ppx-jane" ,ocaml4.07-ppx-jane)
523cbfbd 3323 ("ocaml-utop" ,ocaml4.07-utop)
87858bc5
JL
3324 ("ocaml-uuidm" ,(package-with-ocaml4.07 ocaml-uuidm))
3325 ("ocaml-uri" ,ocaml4.07-uri)
3326 ("ocaml-zarith" ,(package-with-ocaml4.07 ocaml-zarith))))
bbe9915b 3327 (inputs
523cbfbd
JL
3328 `(("gmp" ,gmp)
3329 ("llvm" ,llvm-3.8)
3330 ("ncurses" ,ncurses)))
cd1562ef 3331 (arguments
bbe9915b 3332 `(#:use-make? #t
cd1562ef
JL
3333 #:phases
3334 (modify-phases %standard-phases
523cbfbd
JL
3335 (add-before 'configure 'fix-ncurses
3336 (lambda _
3337 (substitute* "oasis/llvm"
3338 (("-lcurses") "-lncurses"))
3339 #t))
cd1562ef 3340 (replace 'configure
564cf93f 3341 (lambda* (#:key outputs inputs #:allow-other-keys)
bbe9915b
JL
3342 ;; add write for user, to prevent a failure in the install phase
3343 (for-each
3344 (lambda (file)
3345 (let ((stat (stat file)))
3346 (chmod file (+ #o200 (stat:mode stat)))))
3347 (find-files "." "."))
564cf93f
JL
3348 (invoke "./configure" "--prefix"
3349 (assoc-ref outputs "out")
3350 "--libdir"
3351 (string-append
3352 (assoc-ref outputs "out")
3353 "/lib/ocaml/site-lib")
3354 "--with-llvm-version=3.8"
3355 "--with-llvm-config=llvm-config"
87858bc5
JL
3356 "--enable-everything"))))
3357 #:ocaml ,ocaml-4.07
3358 #:findlib ,ocaml4.07-findlib))
cd1562ef
JL
3359 (synopsis "Binary Analysis Platform")
3360 (description "Binary Analysis Platform is a framework for writing program
3361analysis tools, that target binary files. The framework consists of a plethora
3362of libraries, plugins, and frontends. The libraries provide code reusability,
3363the plugins facilitate extensibility, and the frontends serve as entry points.")
3364 (license license:expat)))
3365
408091d5
JL
3366(define-public ocaml-camomile
3367 (package
3368 (name "ocaml-camomile")
a468fc5e 3369 (version "1.0.2")
408091d5
JL
3370 (home-page "https://github.com/yoriyuki/Camomile")
3371 (source (origin
3372 (method url-fetch)
564cf93f
JL
3373 (uri (string-append home-page "/releases/download/" version
3374 "/camomile-" version ".tbz"))
408091d5
JL
3375 (sha256
3376 (base32
a468fc5e 3377 "0chn7ldqb3wyf95yhmsxxq65cif56smgz1mhhc7m0dpwmyq1k97h"))))
426e629e 3378 (build-system dune-build-system)
408091d5 3379 (arguments
a468fc5e 3380 `(#:build-flags (list "--profile" "release")
62151321 3381 #:test-target "camomile-test"
a468fc5e 3382 #:tests? #f; Tests fail, see https://github.com/yoriyuki/Camomile/issues/82
62151321
JL
3383 #:phases
3384 (modify-phases %standard-phases
3385 (add-before 'build 'fix-usr-share
3386 (lambda* (#:key outputs #:allow-other-keys)
a468fc5e 3387 (substitute* '("Camomile/dune" "configure.ml")
62151321
JL
3388 (("/usr/share") (string-append (assoc-ref outputs "out") "/share")))
3389 #t)))))
408091d5
JL
3390 (synopsis "Comprehensive Unicode library")
3391 (description "Camomile is a Unicode library for OCaml. Camomile provides
3392Unicode character type, UTF-8, UTF-16, UTF-32 strings, conversion to/from about
3393200 encodings, collation and locale-sensitive case mappings, and more. The
3394library is currently designed for Unicode Standard 3.2.")
3395 ;; with an exception for linked libraries to use a different license
3396 (license license:lgpl2.0+)))
3397
87858bc5 3398(define-public ocaml4.07-charinfo-width
e6033051 3399 (package
87858bc5 3400 (name "ocaml4.07-charinfo-width")
e6033051
JL
3401 (version "1.1.0")
3402 (source (origin
3403 (method url-fetch)
ca12352a
EF
3404 (uri (string-append "https://bitbucket.org/zandoye/charinfo_width"
3405 "/get/" version ".tar.gz"))
3406 (file-name (string-append name "-" version ".tar.gz"))
e6033051
JL
3407 (sha256
3408 (base32
3409 "00bv4p1yqs8y0z4z07wd9w9yyv669dikp9b04dcjbwpiy2wy0086"))))
3410 (build-system dune-build-system)
87858bc5
JL
3411 (arguments
3412 `(#:ocaml ,ocaml-4.07
339c752d
JL
3413 #:findlib ,ocaml4.07-findlib
3414 #:dune ,ocaml4.07-dune))
e6033051 3415 (propagated-inputs
87858bc5
JL
3416 `(("ocaml-result" ,(package-with-ocaml4.07 ocaml-result))
3417 ("ocaml-camomile" ,(package-with-ocaml4.07 ocaml-camomile))))
e6033051 3418 (native-inputs
87858bc5 3419 `(("ocaml-ppx-expect" ,ocaml4.07-ppx-expect)))
e6033051
JL
3420 (properties
3421 `((upstream-name . "charInfo_width")))
3422 (home-page "https://bitbucket.org/zandoye/charinfo_width/")
3423 (synopsis "Determine column width for a character")
3424 (description "This module is implements purely in OCaml a character width
3425function that follows the prototype of POSIX's wcwidth.")
3426 (license license:expat)))
3427
87858bc5 3428(define-public ocaml4.07-zed
cd4abd29 3429 (package
87858bc5 3430 (name "ocaml4.07-zed")
1a0d41b3 3431 (version "2.0.3")
f4f3e8ce
TGR
3432 (source
3433 (origin
3434 (method git-fetch)
3435 (uri (git-reference
b0e7b699 3436 (url "https://github.com/diml/zed")
f4f3e8ce
TGR
3437 (commit version)))
3438 (file-name (git-file-name name version))
3439 (sha256
1a0d41b3 3440 (base32 "0pa9awinqr0plp4b2az78dwpvh01pwaljnn5ydg8mc6hi7rmir55"))))
0705f389 3441 (build-system dune-build-system)
cd4abd29 3442 (arguments
0a8eb685 3443 `(#:test-target "."
87858bc5 3444 #:ocaml ,ocaml-4.07
339c752d
JL
3445 #:findlib ,ocaml4.07-findlib
3446 #:dune ,ocaml4.07-dune))
cd4abd29 3447 (propagated-inputs
87858bc5
JL
3448 `(("ocaml-camomile" ,(package-with-ocaml4.07 ocaml-camomile))
3449 ("ocaml-charinfo-width" ,ocaml4.07-charinfo-width)
3450 ("ocaml-react" ,(package-with-ocaml4.07 ocaml-react))))
cd4abd29
PK
3451 (home-page "https://github.com/diml/zed")
3452 (synopsis "Abstract engine for text editing in OCaml")
3453 (description "Zed is an abstract engine for text edition. It can be used
3454to write text editors, edition widgets, readlines, etc. You just have to
3455connect an engine to your inputs and rendering functions to get an editor.")
3456 (license license:bsd-3)))
3457
87858bc5 3458(define-public ocaml4.07-lambda-term
e88ff71c 3459 (package
87858bc5 3460 (name "ocaml4.07-lambda-term")
1a0d41b3 3461 (version "2.0.2")
e88ff71c
PK
3462 (source
3463 (origin
fd2582bd
TGR
3464 (method git-fetch)
3465 (uri (git-reference
b0e7b699 3466 (url "https://github.com/diml/lambda-term")
fd2582bd
TGR
3467 (commit version)))
3468 (file-name (git-file-name name version))
e88ff71c 3469 (sha256
1a0d41b3 3470 (base32 "0zcjy6fvf0d3i2ssz96asl889n3r6bplyzk7xvb2s3dkxbgcisyy"))))
34d5314e 3471 (build-system dune-build-system)
e88ff71c 3472 (arguments
34d5314e 3473 `(#:build-flags (list "--profile" "release")
87858bc5
JL
3474 #:tests? #f
3475 #:ocaml ,ocaml-4.07
339c752d
JL
3476 #:findlib ,ocaml4.07-findlib
3477 #:dune ,ocaml4.07-dune))
e88ff71c 3478 (propagated-inputs
87858bc5
JL
3479 `(("ocaml-lwt" ,(package-with-ocaml4.07 ocaml-lwt))
3480 ("ocaml-lwt-log" ,(package-with-ocaml4.07 ocaml-lwt-log))
3481 ("ocaml-lwt-react" ,(package-with-ocaml4.07 ocaml-lwt-react))
3482 ("ocaml-zed" ,ocaml4.07-zed)))
6c89e066
JL
3483 (inputs
3484 `(("libev" ,libev)))
e88ff71c
PK
3485 (home-page "https://github.com/diml/lambda-term")
3486 (synopsis "Terminal manipulation library for OCaml")
3487 (description "Lambda-Term is a cross-platform library for manipulating the
3488terminal. It provides an abstraction for keys, mouse events, colors, as well as
3489a set of widgets to write curses-like applications. The main objective of
3490Lambda-Term is to provide a higher level functional interface to terminal
3491manipulation than, for example, ncurses, by providing a native OCaml interface
3492instead of bindings to a C library.")
3493 (license license:bsd-3)))
3494
87858bc5 3495(define-public ocaml4.07-utop
90ab26fa 3496 (package
87858bc5 3497 (name "ocaml4.07-utop")
3bc6b9bb 3498 (version "2.4.3")
7848205b
TGR
3499 (source
3500 (origin
3501 (method git-fetch)
3502 (uri (git-reference
b0e7b699 3503 (url "https://github.com/ocaml-community/utop")
7848205b
TGR
3504 (commit version)))
3505 (file-name (git-file-name name version))
3506 (sha256
3bc6b9bb 3507 (base32 "1bl4943qpi3qy152dbdm5glhx19zsiylmn4rcxi8l66g58hikyjp"))))
0705f389 3508 (build-system dune-build-system)
90ab26fa 3509 (arguments
3b90075a 3510 `(#:test-target "."
87858bc5 3511 #:ocaml ,ocaml-4.07
339c752d
JL
3512 #:findlib ,ocaml4.07-findlib
3513 #:dune ,ocaml4.07-dune))
90ab26fa 3514 (native-inputs
87858bc5 3515 `(("cppo" ,(package-with-ocaml4.07 ocaml-cppo))))
90ab26fa 3516 (propagated-inputs
87858bc5
JL
3517 `(("lambda-term" ,ocaml4.07-lambda-term)
3518 ("lwt" ,(package-with-ocaml4.07 ocaml-lwt))
3519 ("react" ,(package-with-ocaml4.07 ocaml-react))
3520 ("camomile" ,(package-with-ocaml4.07 ocaml-camomile))
3521 ("zed" ,ocaml4.07-zed)))
1614c633 3522 (home-page "https://github.com/ocaml-community/utop")
90ab26fa
PK
3523 (synopsis "Improved interface to the OCaml toplevel")
3524 (description "UTop is an improved toplevel for OCaml. It can run in a
3525terminal or in Emacs. It supports line editing, history, real-time and context
3526sensitive completion, colors, and more.")
3527 (license license:bsd-3)))
3528
edac5354
PK
3529(define-public ocaml-integers
3530 (package
3531 (name "ocaml-integers")
273ba255 3532 (version "0.3.0")
edac5354
PK
3533 (home-page "https://github.com/ocamllabs/ocaml-integers")
3534 (source (origin
3535 (method url-fetch)
3536 (uri (string-append home-page
3537 "/releases/download/v0.2.2/integers-"
3538 version ".tbz"))
3539 (file-name (string-append name "-" version ".tbz"))
3540 (sha256
3541 (base32
3542 "08b1ljw88ny3l0mdq6xmffjk8anfc77igryva5jz1p6f4f746ywk"))))
3543 (build-system ocaml-build-system)
3544 (arguments
3545 `(#:tests? #f; no tests
3546 #:build-flags (list "build")
3547 #:phases
3548 (modify-phases %standard-phases
3549 (delete 'configure))))
564cf93f
JL
3550 (native-inputs
3551 `(("ocamlbuild" ,ocamlbuild)))
edac5354 3552 (inputs
bff6739d 3553 `(("topkg" ,ocaml-topkg)
c695fb76 3554 ("opam" ,opam)))
edac5354
PK
3555 (synopsis "Various signed and unsigned integer types for OCaml")
3556 (description "The ocaml-integers library provides a number of 8-, 16-, 32-
3557and 64-bit signed and unsigned integer types, together with aliases such as
3558long and size_t whose sizes depend on the host platform.")
3559 (license license:expat)))
3560
69d08bb1
PK
3561(define-public ocaml-ctypes
3562 (package
3563 (name "ocaml-ctypes")
564cf93f 3564 (version "0.14.0")
69d08bb1
PK
3565 (home-page "https://github.com/ocamllabs/ocaml-ctypes")
3566 (source (origin
c8f16c7f
EF
3567 (method git-fetch)
3568 (uri (git-reference
3569 (url home-page)
3570 (commit version)))
3571 (file-name (git-file-name name version))
69d08bb1
PK
3572 (sha256
3573 (base32
c8f16c7f 3574 "1b2q3h63ngf4x9qp65qwapf2dg9q0mcdah6qjm2q0c7v2p5vysv9"))))
69d08bb1
PK
3575 (build-system ocaml-build-system)
3576 (arguments
564cf93f
JL
3577 `(#:tests? #f; require an old lwt
3578 #:make-flags
69d08bb1
PK
3579 (list (string-append "INSTALL_HEADERS = $(wildcard $($(PROJECT).dir)/*.h)"))
3580 #:phases
3581 (modify-phases %standard-phases
c8f16c7f
EF
3582 (add-after 'unpack 'make-writable
3583 (lambda _
3584 (for-each
3585 (lambda (file)
3586 (let ((stat (stat file)))
3587 (chmod file (+ #o200 (stat:mode stat)))))
3588 (find-files "." "."))
3589 #t))
69d08bb1
PK
3590 (delete 'configure))))
3591 (native-inputs
3592 `(("pkg-config" ,pkg-config)))
3593 (inputs
3594 `(("libffi" ,libffi)
3595 ("ounit" ,ocaml-ounit)
3596 ("integers" ,ocaml-integers)
3597 ("lwt" ,ocaml-lwt)
3598 ("topkg" ,ocaml-topkg)
c695fb76 3599 ("opam" ,opam)))
69d08bb1
PK
3600 (synopsis "Library for binding to C libraries using pure OCaml")
3601 (description "Ctypes is a library for binding to C libraries using pure
3602OCaml. The primary aim is to make writing C extensions as straightforward as
3603possible. The core of ctypes is a set of combinators for describing the
3604structure of C types -- numeric types, arrays, pointers, structs, unions and
3605functions. You can use these combinators to describe the types of the
3606functions that you want to call, then bind directly to those functions -- all
3607without writing or generating any C!")
3608 (license license:expat)))
3609
c98c8237
PK
3610(define-public ocaml-ocb-stubblr
3611 (package
3612 (name "ocaml-ocb-stubblr")
3613 (version "0.1.1")
3614 (home-page "https://github.com/pqwy/ocb-stubblr")
3615 (source (origin
3616 (method url-fetch)
3617 (uri (string-append
3618 home-page "/releases/download/v0.1.1/ocb-stubblr-"
3619 version ".tbz"))
3620 (file-name (string-append name "-" version ".tbz"))
3621 (sha256
3622 (base32
3623 "167b7x1j21mkviq8dbaa0nmk4rps2ilvzwx02igsc2706784z72f"))))
3624 (build-system ocaml-build-system)
3625 (arguments
bff6739d 3626 `(#:build-flags (list "build" "--tests" "true")
c98c8237
PK
3627 #:phases
3628 (modify-phases %standard-phases
70a57011
JL
3629 (delete 'configure)
3630 (add-before 'build 'fix-for-guix
3631 (lambda _
3632 (substitute* "src/ocb_stubblr.ml"
3633 ;; Do not fail when opam is not present or initialized
3634 (("error_msgf \"error running opam\"") "\"\"")
3635 ;; Guix doesn't have cc, but it has gcc
3636 (("\"cc\"") "\"gcc\""))
3637 #t)))))
c98c8237
PK
3638 (inputs
3639 `(("topkg" ,ocaml-topkg)
c695fb76 3640 ("opam" ,opam)))
c98c8237 3641 (native-inputs
564cf93f
JL
3642 `(("astring" ,ocaml-astring)
3643 ("ocamlbuild" ,ocamlbuild)))
c98c8237
PK
3644 (synopsis "OCamlbuild plugin for C stubs")
3645 (description "Ocb-stubblr is about ten lines of code that you need to
3646repeat over, over, over and over again if you are using ocamlbuild to build
3647OCaml projects that contain C stubs.")
3648 (license license:isc)))
3649
a9e9fd15
PK
3650(define-public ocaml-tsdl
3651 (package
3652 (name "ocaml-tsdl")
786886d1 3653 (version "0.9.7")
2d1e0646 3654 (home-page "https://erratique.ch/software/tsdl")
a9e9fd15
PK
3655 (source (origin
3656 (method url-fetch)
3657 (uri (string-append home-page "/releases/tsdl-"
3658 version ".tbz"))
3659 (file-name (string-append name "-" version ".tar.gz"))
3660 (sha256
3661 (base32
786886d1 3662 "1zwv0ixkigh1gzk5n49rwvz2f2m62jdkkqg40j7dclg4gri7691f"))))
a9e9fd15
PK
3663 (build-system ocaml-build-system)
3664 (arguments
3665 `(#:build-flags '("build")
3666 #:tests? #f; tests require a display device
3667 #:phases
3668 (modify-phases %standard-phases
3669 (delete 'configure))))
3670 (native-inputs
564cf93f 3671 `(("ocamlbuild" ,ocamlbuild)
9f5a3ba6 3672 ("ocaml-astring" ,ocaml-astring)
564cf93f 3673 ("opam" ,opam)
a9e9fd15
PK
3674 ("pkg-config" ,pkg-config)))
3675 (inputs
bff6739d 3676 `(("topkg" ,ocaml-topkg)
a9e9fd15
PK
3677 ("sdl2" ,sdl2)
3678 ("integers" ,ocaml-integers)
3679 ("ctypes" ,ocaml-ctypes)))
3680 (synopsis "Thin bindings to SDL for OCaml")
3681 (description "Tsdl is an OCaml library providing thin bindings to the
3682cross-platform SDL C library.")
3683 (license license:isc)))
3684
5895696e
GH
3685(define-public dedukti
3686 (package
3687 (name "dedukti")
3688 (version "2.6.0")
3689 (home-page "https://deducteam.github.io/")
3690 (source
3691 (origin
3692 (method git-fetch)
3693 (uri (git-reference
b0e7b699 3694 (url "https://github.com/deducteam/dedukti")
5895696e
GH
3695 (commit (string-append "v" version))))
3696 (file-name (git-file-name name version))
3697 (sha256
3698 (base32
3699 "0frl3diff033i4fmq304b8wbsdnc9mvlhmwd7a3zd699ng2lzbxb"))))
3700 (inputs
3701 `(("menhir" ,ocaml-menhir)))
3702 (native-inputs
3703 `(("ocamlbuild" ,ocamlbuild)))
3704 (build-system ocaml-build-system)
3705 (arguments
3706 `(#:phases
3707 (modify-phases %standard-phases
3708 (delete 'configure)
3709 (replace 'build
3710 (lambda _
3711 (invoke "make")
912f4400 3712 #t))
5895696e
GH
3713 (replace 'check
3714 (lambda _
3715 (invoke "make" "tests")
912f4400 3716 #t))
5895696e
GH
3717 (add-before 'install 'set-binpath
3718 ;; Change binary path in the makefile
3719 (lambda _
3720 (let ((out (assoc-ref %outputs "out")))
3721 (substitute* "GNUmakefile"
3722 (("BINDIR = (.*)$")
3723 (string-append "BINDIR = " out "/bin"))))
912f4400
JL
3724 #t))
3725 (replace 'install
3726 (lambda _
3727 (invoke "make" "install")
3728 #t)))))
5895696e
GH
3729 (synopsis "Proof-checker for the λΠ-calculus modulo theory, an extension of
3730the λ-calculus")
3731 (description "Dedukti is a proof-checker for the λΠ-calculus modulo
3732theory. The λΠ-calculus is an extension of the simply typed λ-calculus with
3733dependent types. The λΠ-calculus modulo theory is itself an extension of the
3734λΠ-calculus where the context contains variable declaration as well as rewrite
3735rules. This system is not designed to develop proofs, but to check proofs
3736developed in other systems. In particular, it enjoys a minimalistic syntax.")
3737 (license license:cecill-c)))
2939fe7b 3738
db1eb632
LC
3739(define-public emacs-dedukti-mode
3740 (let ((commit "d7c3505a1046187de3c3aeb144455078d514594e"))
3741 (package
3742 (name "emacs-dedukti-mode")
3743 (version (git-version "0" "0" commit))
3744 (home-page "https://github.com/rafoo/dedukti-mode")
3745 (source (origin
3746 (method git-fetch)
3747 (uri (git-reference
3748 (url home-page)
3749 (commit commit)))
3750 (sha256
3751 (base32
3752 "1842wikq24c8rg0ac84vb1qby9ng1nssxswyyni4kq85lng5lcrp"))
3753 (file-name (git-file-name name version))))
3754 (inputs
3755 `(("dedukti" ,dedukti)))
3756 (build-system emacs-build-system)
3757 (arguments
3758 '(#:phases
3759 (modify-phases %standard-phases
3760 (add-before 'install 'patch-dkpath
3761 (lambda _
3762 (let ((dkcheck-path (which "dkcheck")))
3763 (substitute* "dedukti-mode.el"
3764 (("dedukti-path \"(.*)\"")
3765 (string-append "dedukti-path \"" dkcheck-path "\"")))))))))
3766 (synopsis "Emacs major mode for Dedukti files")
3767 (description "This package provides an Emacs major mode for editing
3768Dedukti files.")
3769 (license license:cecill-b))))
3770
3771(define-public emacs-flycheck-dedukti
3772 (let ((commit "3dbff5646355f39d57a3ec514f560a6b0082a1cd"))
3773 (package
3774 (name "emacs-flycheck-dedukti")
3775 (version (git-version "0" "0" commit))
3776 (home-page "https://github.com/rafoo/flycheck-dedukti")
3777 (source (origin
3778 (method git-fetch)
3779 (uri (git-reference
3780 (url home-page)
3781 (commit commit)))
3782 (sha256
3783 (base32
3784 "1ffpxnwl3wx244n44mbw81g00nhnykd0lnid29f4aw1av7w6nw8l"))
3785 (file-name (git-file-name name version))))
3786 (build-system emacs-build-system)
3787 (inputs
3788 `(("dedukti-mode" ,emacs-dedukti-mode)
3789 ("flycheck-mode" ,emacs-flycheck)))
3790 (synopsis "Flycheck integration for the dedukti language")
3791 (description "This package provides a frontend for Flycheck to perform
3792syntax checking on dedukti files.")
3793 (license license:cecill-b))))
3794
87858bc5 3795(define-public ocaml4.07-ppx-inline-test
308d72bf 3796 (package
87858bc5 3797 (name "ocaml4.07-ppx-inline-test")
b7ebcb04 3798 (version "0.12.0")
308d72bf
GH
3799 (home-page "https://github.com/janestreet/ppx_inline_test")
3800 (source
3801 (origin
3802 (method git-fetch)
3803 (uri (git-reference
3804 (url (string-append home-page ".git"))
3805 (commit (string-append "v" version))))
3806 (file-name (git-file-name name version))
3807 (sha256
3808 (base32
b7ebcb04 3809 "0nyz411zim94pzbxm2l2v2l9jishcxwvxhh142792g2s18r4vn50"))))
308d72bf
GH
3810 (build-system dune-build-system)
3811 (arguments
3812 ;see home page README for further information
87858bc5
JL
3813 `(#:tests? #f
3814 #:ocaml ,ocaml-4.07
339c752d
JL
3815 #:findlib ,ocaml4.07-findlib
3816 #:dune ,ocaml4.07-dune))
308d72bf 3817 (inputs
55c2851a 3818 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
3819 ("ocaml-migrate-parsetree"
3820 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
c49b94a5 3821 ("ocaml-compiler-libs" ,ocaml4.07-compiler-libs)
adb30e51 3822 ("ocaml-sexplib0" ,(package-with-ocaml4.07 ocaml-sexplib0))
87858bc5
JL
3823 ("ocaml-stdio" ,ocaml4.07-stdio)
3824 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
b7ebcb04 3825 (properties `((upstream-name . "ppx_inline_test")))
308d72bf
GH
3826 (synopsis "Syntax extension for writing in-line tests in ocaml code")
3827 (description "This package contains a syntax extension for writing
3828in-line tests in ocaml code. It is part of Jane Street's PPX rewriters
3829collection.")
3830 (license license:expat)))
3831
7195c4f2
GH
3832(define-public ocaml-bindlib
3833 (package
3834 (name "ocaml-bindlib")
3835 (version "5.0.1")
3836 (source
3837 (origin
3838 (method git-fetch)
3839 (uri (git-reference
b0e7b699 3840 (url "https://github.com/rlepigre/ocaml-bindlib")
7195c4f2
GH
3841 (commit (string-append "ocaml-bindlib_" version))))
3842 (file-name (git-file-name name version))
3843 (sha256
3844 (base32
3845 "1f8kr81w8vsi4gv61xn1qbc6zrzkjp8l9ix0942vjh4gjxc74v75"))))
3846 (build-system ocaml-build-system)
3847 (arguments
3848 `(#:tests? #f ;no tests
3849 #:use-make? #t
3850 #:phases
3851 (modify-phases %standard-phases
3852 (delete 'configure)
3853 (replace 'build
3854 (lambda _
3855 (invoke "make")))
3856 (replace 'install
3857 (lambda _
3858 (invoke "make" "install"))))))
3859 (native-inputs
3860 `(("ocamlbuild" ,ocamlbuild)
3861 ("ocaml-findlib" ,ocaml-findlib)))
3862 (home-page "https://rlepigre.github.io/ocaml-bindlib/")
3863 (synopsis "OCaml Bindlib library for bound variables")
3864 (description "Bindlib is a library allowing the manipulation of data
3865structures with bound variables. It is particularly useful when writing ASTs
3866for programming languages, but also for manipulating terms of the λ-calculus
3867or quantified formulas.")
3868 (license license:gpl3+)))
3869
87858bc5 3870(define-public ocaml4.07-earley
70c7d025 3871 (package
87858bc5 3872 (name "ocaml4.07-earley")
70c7d025
GH
3873 (version "2.0.0")
3874 (home-page "https://github.com/rlepigre/ocaml-earley")
3875 (source
3876 (origin
3877 (method git-fetch)
3878 (uri (git-reference
3879 (url (string-append home-page ".git"))
3880 (commit version)))
3881 (file-name (git-file-name name version))
3882 (sha256
3883 (base32
3884 "18k7bi7krc4bvqnhijz1q0pfr0nfahghfjifci8rh1q4i5zd0xz5"))))
3885 (build-system dune-build-system)
3886 (arguments
87858bc5
JL
3887 `(#:test-target "."
3888 #:ocaml ,ocaml-4.07
339c752d
JL
3889 #:findlib ,ocaml4.07-findlib
3890 #:dune ,ocaml4.07-dune))
70c7d025
GH
3891 (synopsis "Parsing library based on Earley Algorithm")
3892 (description "Earley is a parser combinator library base on Earley's
3893algorithm. It is intended to be used in conjunction with an OCaml syntax
3894extension which allows the definition of parsers inside the language. There
3895is also support for writing OCaml syntax extensions in a camlp4 style.")
3896 (license license:cecill-b)))
3897
8213db7c
GH
3898(define-public ocaml-timed
3899 (package
3900 (name "ocaml-timed")
3901 (version "1.0")
3902 (home-page "https://github.com/rlepigre/ocaml-timed")
3903 (source (origin
3904 (method git-fetch)
3905 (uri (git-reference
3906 (url (string-append home-page ".git"))
3907 (commit (string-append name "_" version))))
3908 (sha256
3909 (base32
3910 "0hfxz710faxy5yk97bkfnw87r732jcxxhmjppwrbfdb6pd0wks96"))
3911 (file-name (git-file-name name version))))
3912 (build-system ocaml-build-system)
3913 (arguments
3914 '(#:phases
3915 (modify-phases %standard-phases
3916 (delete 'configure)
3917 (replace 'build
3918 (lambda _
3919 (invoke "make")))
3920 (replace 'install
3921 (lambda _
3922 (invoke "make" "install")))
3923 (replace 'check
3924 (lambda _
3925 (invoke "make" "tests"))))))
3926 (synopsis "Timed references for imperative state")
3927 (description "Timed references for imperative state. This module provides
3928an alternative type for references (or mutable cells) supporting undo/redo
3929operations. In particular, an abstract notion of time is used to capture the
3930state of the references at any given point, so that it can be restored. Note
3931that usual reference operations only have a constant time / memory overhead
3932(compared to those of the standard library).
3933
3934Moreover, we provide an alternative implementation based on the references
3935of the standard library (Pervasives module). However, it is less efficient
3936than the first one.")
3937 (license license:expat)))
3938
2939fe7b
GH
3939(define-public ocaml-biniou
3940 (package
3941 (name "ocaml-biniou")
8dfe8fee 3942 (version "1.2.1")
2939fe7b
GH
3943 (home-page "https://github.com/mjambon/biniou")
3944 (source
3945 (origin
3946 (method git-fetch)
3947 (uri (git-reference
3948 (url (string-append home-page ".git"))
8dfe8fee 3949 (commit version)))
2939fe7b
GH
3950 (file-name (git-file-name name version))
3951 (sha256
3952 (base32
8dfe8fee 3953 "0x2kiy809n1j0yf32l7hj102y628jp5jdrkbi3z7ld8jq04h1790"))))
2939fe7b 3954 (build-system dune-build-system)
8dfe8fee
JL
3955 (arguments
3956 `(#:phases
3957 (modify-phases %standard-phases
3958 (add-before 'build 'make-writable
3959 (lambda _
3960 (for-each
3961 (lambda (file)
3962 (chmod file #o644))
3963 (find-files "." "."))
3964 #t)))))
2939fe7b
GH
3965 (inputs
3966 `(("ocaml-easy-format" ,ocaml-easy-format)))
3967 (native-inputs
3968 `(("which" ,which)))
3969 (synopsis "Data format designed for speed, safety, ease of use and backward
3970compatibility")
3971 (description "Biniou (pronounced \"be new\" is a binary data format
3972designed for speed, safety, ease of use and backward compatibility as
3973protocols evolve. Biniou is vastly equivalent to JSON in terms of
3974functionality but allows implementations several times faster (4 times faster
3975than yojson), with 25-35% space savings.")
3976 (license license:bsd-3)))
2e951707
GH
3977
3978(define-public ocaml-yojson
3979 (package
3980 (name "ocaml-yojson")
373a2a07 3981 (version "1.7.0")
2e951707
GH
3982 (home-page "https://github.com/ocaml-community/yojson")
3983 (source
3984 (origin
3985 (method git-fetch)
3986 (uri (git-reference
3987 (url (string-append home-page ".git"))
373a2a07 3988 (commit version)))
2e951707
GH
3989 (file-name (git-file-name name version))
3990 (sha256
3991 (base32
373a2a07 3992 "0zncsw8bgbkh1pfvfc7nh628hfj84lgx6jwhp9ashj3z1z0w3xjn"))))
2e951707 3993 (build-system dune-build-system)
912f4400
JL
3994 (arguments
3995 `(#:test-target "."))
f6979a7d 3996 (propagated-inputs
2e951707 3997 `(("ocaml-biniou" ,ocaml-biniou)
912f4400
JL
3998 ("ocaml-easy-format" ,ocaml-easy-format)))
3999 (native-inputs
373a2a07
JL
4000 `(("ocaml-alcotest" ,ocaml-alcotest)
4001 ("ocaml-cppo" ,ocaml-cppo)))
2e951707
GH
4002 (synopsis "Low-level JSON library for OCaml")
4003 (description "Yojson is an optimized parsing and printing library for the
4004JSON format. It addresses a few shortcomings of json-wheel including 2x
4005speedup, polymorphic variants and optional syntax for tuples and variants.
4006@code{ydump} is a pretty printing command-line program provided with the
4007yojson package. The program @code{atdgen} can be used to derive OCaml-JSON
4008serializers and deserializers from type definitions.")
4009 (license license:bsd-3)))
1d209d06
GH
4010
4011(define-public ocaml-craml
4012 (package
4013 (name "ocaml-craml")
4014 (version "1.0.0")
4015 (home-page "https://github.com/realworldocaml/craml")
4016 (source
4017 (origin
4018 (method git-fetch)
4019 (uri (git-reference
4020 (url (string-append home-page ".git"))
4021 (commit version)))
4022 (file-name (git-file-name name version))
4023 (sha256
4024 (base32
4025 "197xjp4vmzdymf2ndinw271ihpf45h04mx8gqj8ypspxdr5fj1a5"))))
4026 (build-system dune-build-system)
33917795
JL
4027 (arguments
4028 `(#:phases
4029 (modify-phases %standard-phases
4030 (add-before 'build 'upgrade
4031 (lambda _
4032 (invoke "dune" "upgrade")
4033 #t)))))
1d209d06
GH
4034 (inputs
4035 `(("ocaml-fmt" ,ocaml-fmt)
4036 ("ocaml-astring" ,ocaml-astring)
4037 ("ocaml-logs" ,ocaml-logs)
4038 ("ocaml-cmdliner" ,ocaml-cmdliner)))
4039 (synopsis
4040 "CRAM-testing framework for testing command line applications")
4041 (description "CRAM is a is functional testing framework for command line
4042applications. @code{craml} is freely inspired by the
4043Mercurial's @code{https://www.selenic.com/blog/?p=663, unified test
4044format}. @code{craml} is released as a single binary (called @code{craml}).")
4045 (license license:isc)))
59a07504 4046
99568573 4047(define-public ocaml-dot-merlin-reader
4048 (package
4049 (name "ocaml-dot-merlin-reader")
4050 (version "3.4.2")
4051 (source
4052 (origin
4053 (method git-fetch)
4054 (uri (git-reference
4055 (url "https://github.com/ocaml/merlin")
4056 (commit (string-append "v" version))))
4057 (file-name (git-file-name name version))
4058 (sha256
4059 (base32
4060 "0i2nwkdh6cfzmnsdsr8aw86vs8j1k5jkjzrs61b9384wnffdbbmj"))))
4061 (build-system dune-build-system)
4062 (arguments '(#:package "dot-merlin-reader"
4063 #:tests? #f)) ; no tests
4064 (inputs
4065 `(("ocaml-yojson" ,ocaml-yojson)
4066 ("ocaml-csexp" ,ocaml-csexp)
4067 ("ocaml-result" ,ocaml-result)))
4068 (home-page "https://ocaml.github.io/merlin/")
4069 (synopsis "Reads config files for @code{ocaml-merlin}")
4070 (description "@code{ocaml-dot-merlin-reader} is an external reader for
4071@code{ocaml-merlin} configurations.")
4072 (license license:expat)))
4073
8b036927 4074(define-public ocaml-merlin
64d25f0b 4075 (package
8b036927 4076 (name "ocaml-merlin")
4077 (version "3.4.2")
64d25f0b
GH
4078 (source
4079 (origin
4080 (method git-fetch)
4081 (uri (git-reference
b0e7b699 4082 (url "https://github.com/ocaml/merlin")
64d25f0b
GH
4083 (commit (string-append "v" version))))
4084 (file-name (git-file-name name version))
4085 (sha256
4086 (base32
8b036927 4087 "0i2nwkdh6cfzmnsdsr8aw86vs8j1k5jkjzrs61b9384wnffdbbmj"))))
64d25f0b 4088 (build-system dune-build-system)
8b036927 4089 (arguments '(#:package "merlin"
4090 #:test-target "tests"))
64d25f0b 4091 (inputs
8b036927 4092 `(("ocaml-yojson" ,ocaml-yojson)
4093 ("ocaml-csexp" ,ocaml-csexp)
4094 ("ocaml-result" ,ocaml-result)))
64d25f0b 4095 (native-inputs
8b036927 4096 `(("ocaml-dot-merlin-reader" ,ocaml-dot-merlin-reader) ; required for tests
4097 ("ocaml-mdx" ,ocaml-mdx)
4098 ("jq" ,jq)))
4099 (home-page "https://ocaml.github.io/merlin/")
64d25f0b
GH
4100 (synopsis "Context sensitive completion for OCaml in Vim and Emacs")
4101 (description "Merlin is an editor service that provides modern IDE
4102features for OCaml. Emacs and Vim support is provided out-of-the-box.
4103External contributors added support for Visual Studio Code, Sublime Text and
4104Atom.")
4105 (license license:expat)))
4106
8b036927 4107;; ocaml-merlin 3.4.2 can not be built with old version of dune used in
4108;; package-with-ocaml4.07
4109(define-public ocaml4.07-merlin
4110 (package-with-ocaml4.07
4111 (package
4112 (inherit ocaml-merlin)
4113 (name "ocaml-merlin")
4114 (version "3.2.2")
4115 (source
4116 (origin
4117 (method git-fetch)
4118 (uri (git-reference
4119 (url "https://github.com/ocaml/merlin")
4120 (commit (string-append "v" version))))
4121 (file-name (git-file-name name version))
4122 (sha256
4123 (base32
4124 "15ssgmwdxylbwhld9p1cq8x6kadxyhll5bfyf11dddj6cldna3hb"))))
4125 (build-system dune-build-system)
4126 (inputs
4127 `(("ocaml-yojson" ,ocaml-yojson)))
4128 (native-inputs
4129 `(("ocaml-findlib" ,ocaml-findlib)))
4130 (arguments
4131 `(#:package "merlin"
4132 ;; Errors in tests in version 3.2.2
4133 #:tests? #f)))))
4134
87858bc5 4135(define-public ocaml4.07-gsl
59a07504 4136 (package
87858bc5 4137 (name "ocaml4.07-gsl")
8fd89788 4138 (version "1.24.0")
59a07504
LC
4139 (source
4140 (origin
4141 (method url-fetch)
4142 (uri
4143 (string-append
4144 "https://github.com/mmottl/gsl-ocaml/releases/download/"
4145 version "/gsl-" version ".tbz"))
4146 (sha256
4147 (base32
8fd89788
JL
4148 "1l5zkkkg8sglsihrbf10ivq9s8xzl1y6ag89i4jqpnmi4m43fy34"))))
4149 (build-system dune-build-system)
4150 (arguments
4151 `(#:test-target "."
4152 #:phases
4153 (modify-phases %standard-phases
4154 (add-after 'unpack 'fix-gsl-directory
4155 (lambda* (#:key inputs #:allow-other-keys)
4156 (substitute* "src/config/discover.ml"
4157 (("/usr") (assoc-ref inputs "gsl")))
87858bc5
JL
4158 #t)))
4159 #:ocaml ,ocaml-4.07
4160 #:findlib ,ocaml4.07-findlib
4161 #:dune ,ocaml4.07-dune))
59a07504
LC
4162 (inputs
4163 `(("gsl" ,gsl)))
8fd89788 4164 (propagated-inputs
55c2851a 4165 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5 4166 ("ocaml-stdio" ,ocaml4.07-stdio)))
59a07504
LC
4167 (home-page "https://mmottl.github.io/gsl-ocaml")
4168 (synopsis "Bindings to the GNU Scientific Library")
4169 (description
4170 "GSL-OCaml is an interface to the @dfn{GNU scientific library} (GSL) for
4171the OCaml language.")
4172 (license license:gpl3+)))
4173
87858bc5 4174(define-public ocaml4.07-gsl-1
ddb5dc08 4175 (package
87858bc5 4176 (inherit ocaml4.07-gsl)
ddb5dc08
RW
4177 (version "1.19.3")
4178 (source (origin
4179 (method url-fetch)
4180 (uri (string-append "https://github.com/mmottl/gsl-ocaml"
4181 "/releases/download/v"
4182 version "/gsl-ocaml-" version ".tar.gz"))
4183 (sha256
4184 (base32
4185 "0nzp43hp8pbjqkrxnwp5lgjrabxayf61h18fjaydi0s5faq6f3xh"))))
4186 (build-system ocaml-build-system)
4187 (inputs
4188 `(("gsl" ,gsl)))
4189 (native-inputs
87858bc5
JL
4190 `(("ocamlbuild" ,(package-with-ocaml4.07 ocamlbuild))))
4191 (arguments
4192 `(#:ocaml ,ocaml-4.07
4193 #:findlib ,ocaml4.07-findlib))
ddb5dc08
RW
4194 (propagated-inputs '())))
4195
59a07504
LC
4196(define-public cubicle
4197 (package
4198 (name "cubicle")
4199 (version "1.1.2")
4200 (source (origin
4201 (method url-fetch)
4202 (uri (string-append "http://cubicle.lri.fr/cubicle-"
4203 version ".tar.gz"))
4204 (sha256
4205 (base32
4206 "10kk80jdmpdvql88sdjsh7vqzlpaphd8vip2lp47aarxjkwjlz1q"))))
4207 (build-system gnu-build-system)
4208 (native-inputs
4209 `(("automake" ,automake)
4210 ("ocaml" ,ocaml)
4211 ("which" ,(@@ (gnu packages base) which))))
4212 (propagated-inputs
4213 `(("ocaml-num" ,ocaml-num)
4214 ("z3" ,z3)))
4215 (arguments
4216 `(#:configure-flags (list "--with-z3")
4217 #:make-flags (list "QUIET=")
4218 #:tests? #f
4219 #:phases
4220 (modify-phases %standard-phases
4221 (add-before 'configure 'configure-for-release
4222 (lambda _
4223 (substitute* "Makefile.in"
4224 (("SVNREV=") "#SVNREV="))
4225 #t))
4226 (add-before 'configure 'fix-/bin/sh
4227 (lambda _
4228 (substitute* "configure"
4229 (("-/bin/sh") (string-append "-" (which "sh"))))
4230 #t))
4231 (add-before 'configure 'fix-smt-z3wrapper.ml
4232 (lambda _
4233 (substitute* "Makefile.in"
4234 (("\\\\n") ""))
4235 #t))
4236 (add-before 'configure 'fix-ocaml-num
4237 (lambda* (#:key inputs #:allow-other-keys)
4238 (substitute* "Makefile.in"
4239 (("= \\$\\(FUNCTORYLIB\\)")
4240 (string-append "= -I "
4241 (assoc-ref inputs "ocaml-num")
4242 "/lib/ocaml/site-lib"
4243 " $(FUNCTORYLIB)")))
4244 #t)))))
4245 (home-page "http://cubicle.lri.fr/")
4246 (synopsis "Model checker for array-based systems")
4247 (description "Cubicle is a model checker for verifying safety properties
4248of array-based systems. This is a syntactically restricted class of
4249parametrized transition systems with states represented as arrays indexed by
4250an arbitrary number of processes. Cache coherence protocols and mutual
4251exclusion algorithms are typical examples of such systems.")
4252 (license license:asl2.0)))
5fa01e8a 4253
adb30e51 4254(define-public ocaml-sexplib0
5fa01e8a 4255 (package
adb30e51 4256 (name "ocaml-sexplib0")
4257 (version "0.14.0")
5fa01e8a
GH
4258 (home-page "https://github.com/janestreet/sexplib0")
4259 (source
adb30e51 4260 (janestreet-origin "sexplib0" version
4261 "0adrc0r1vvvr41dcpj8jwkzh1dfgqf0mks9xlnnskqfm3a51iavg"))
5fa01e8a 4262 (build-system dune-build-system)
adb30e51 4263 (arguments `(#:tests? #f)) ;no tests
4264 (properties `((ocaml4.07-variant . ,(delay ocaml4.07-sexplib0))))
5fa01e8a
GH
4265 (synopsis "Library containing the definition of S-expressions and some
4266base converters")
4267 (description "Part of Jane Street's Core library The Core suite of
4268libraries is an industrial strength alternative to OCaml's standard library
4269that was developed by Jane Street, the largest industrial user of OCaml.")
adb30e51 4270 (license license:expat)))
4271
4272(define-public ocaml4.07-sexplib0
4273 (package-with-ocaml4.07
4274 (package
4275 (inherit ocaml-sexplib0)
4276 (name "ocaml-sexplib0")
4277 (version "0.11.0")
4278 (source
4279 (janestreet-origin "sexplib0" version
4280 "1p06p2s7p9xsjn0z9qicniv1ai54d8sj11k8j633di2mm7jzxpin"))
4281 (arguments `(#:tests? #f)) ; no tests
4282 (properties '()))))
7726124a 4283
662307c3 4284(define-public ocaml-parsexp
7726124a 4285 (package
662307c3 4286 (name "ocaml-parsexp")
4287 (version "0.14.0")
7726124a
GH
4288 (home-page "https://github.com/janestreet/parsexp")
4289 (source
662307c3 4290 (janestreet-origin "parsexp" version
4291 "158znj19dvfdcwsgzs3rdhxpj1g4aw0d4nkfr8c05bahf0lnshlb"))
7726124a
GH
4292 (build-system dune-build-system)
4293 (inputs
662307c3 4294 `(("ocaml-sexplib0" ,ocaml-sexplib0)
4295 ("ocaml-base" ,ocaml-base)))
4296 (properties `((ocaml4.07-variant . ,(delay ocaml4.07-parsexp))))
7726124a
GH
4297 (synopsis "S-expression parsing library")
4298 (description
4299 "This library provides generic parsers for parsing S-expressions from
4300strings or other medium.
4301
4302The library is focused on performances but still provide full generic
4303parsers that can be used with strings, bigstrings, lexing buffers,
4304character streams or any other sources effortlessly.
4305
4306It provides three different class of parsers:
4307@itemize
4308@item
4309the normal parsers, producing [Sexp.t] or [Sexp.t list] values
4310@item
4311the parsers with positions, building compact position sequences so
4312that one can recover original positions in order to report properly
4313located errors at little cost
4314@item
4315the Concrete Syntax Tree parsers, produce values of type
4316@code{Parsexp.Cst.t} which record the concrete layout of the s-expression
4317syntax, including comments
4318@end itemize
4319
4320This library is portable and doesn't provide IO functions. To read
4321s-expressions from files or other external sources, you should use
4322parsexp_io.")
4323 (license license:expat)))
7cca1fd4 4324
662307c3 4325(define-public ocaml4.07-parsexp
4326 (package-with-ocaml4.07
4327 (package
4328 (inherit ocaml-parsexp)
4329 (name "ocaml-parsexp")
4330 (version "0.11.0")
4331 (source
4332 (janestreet-origin "parsexp" version
4333 "11a30zkfgbi6pb4whq22k1zc8ghdp9bwxl5s5cdlmx1z8s4yxsf0"))
4334 (properties '()))))
4335
5de771a4 4336(define-public ocaml-sexplib
7cca1fd4 4337 (package
5de771a4 4338 (name "ocaml-sexplib")
4339 (version "0.14.0")
7cca1fd4
GH
4340 (home-page "https://github.com/janestreet/sexplib")
4341 (source
5de771a4 4342 (janestreet-origin "sexplib" version
4343 "12rlnc6fcrjfdn3gs2agi418sj54ighhs6dfll37zcv7mgywblm2"))
7cca1fd4 4344 (build-system dune-build-system)
7e12b4c2 4345 (propagated-inputs
5de771a4 4346 `(("ocaml-base" ,ocaml-base)
4347 ("ocaml-num" ,ocaml-num)
4348 ("ocaml-parsexp" ,ocaml-parsexp)
4349 ("ocaml-sexplib0" ,ocaml-sexplib0)))
4350 (properties `((ocaml4.07-variant . ,(delay ocaml4.07-sexplib))))
7cca1fd4
GH
4351 (synopsis
4352 "Library for serializing OCaml values to and from S-expressions")
4353 (description
5de771a4 4354 "This package is part of Jane Street's Core library. Sexplib contains
7cca1fd4
GH
4355functionality for parsing and pretty-printing s-expressions.")
4356 (license license:expat)))
22074259 4357
5de771a4 4358(define-public ocaml4.07-sexplib
4359 (package-with-ocaml4.07
4360 (package
4361 (inherit ocaml-sexplib)
4362 (version "0.11.0")
4363 (source
4364 (janestreet-origin "sexplib" version
4365 "0ksx62zsxhz8xmdrsn41n2hbc2qbyh3bxxc6946xisvgwh42h3q3"))
4366 (properties '()))))
4367
55c2851a 4368(define-public ocaml-base
22074259 4369 (package
55c2851a 4370 (name "ocaml-base")
4371 (version "0.14.0")
22074259
GH
4372 (home-page "https://github.com/janestreet/base")
4373 (source
55c2851a 4374 (janestreet-origin "base" version
4375 "1rkdhsgbcv0a8p29mwvpd2ldz8cjk97pixl43izm54wyin4lp778"))
22074259 4376 (build-system dune-build-system)
7e12b4c2 4377 (propagated-inputs
55c2851a 4378 `(("ocaml-sexplib0" ,ocaml-sexplib0)))
4379 (properties `((ocaml4.07-variant . ,(delay ocaml4.07-base))))
4380 (synopsis
4381 "Full standard library replacement for OCaml")
4382 (description
4383 "Base is a complete and portable alternative to the OCaml standard
22074259
GH
4384library. It provides all standard functionalities one would expect
4385from a language standard library. It uses consistent conventions
4386across all of its module.
4387
4388Base aims to be usable in any context. As a result system dependent
4389features such as I/O are not offered by Base. They are instead
4390provided by companion libraries such as
4391@url{https://github.com/janestreet/stdio, ocaml-stdio}.")
55c2851a 4392 (license license:expat)))
4393
4394(define-public ocaml4.07-base
4395 (package-with-ocaml4.07
4396 (package
4397 (inherit ocaml-base)
4398 (name "ocaml-base")
4399 (version "0.11.1")
4400 (source
4401 (origin
4402 ;; version 0.11.1 is not released on ocaml.janestreet.org.
4403 (method git-fetch)
4404 (uri (git-reference
4405 (url "https://github.com/janestreet/base.git")
4406 (commit (string-append "v" version))))
4407 (file-name (git-file-name name version))
4408 (sha256
4409 (base32
4410 "0j6xb4265jr41vw4fjzak6yr8s30qrnzapnc6rl1dxy8bjai0nir"))))
4411 (arguments
4412 `(#:phases
4413 (modify-phases %standard-phases
4414 (replace 'build
4415 ;; make warnings non fatal (jbuilder behaviour)
4416 (lambda _
4417 (invoke "dune" "build" "@install" "--profile=release"))))
4418 #:ocaml ,ocaml-4.07
4419 #:findlib ,ocaml4.07-findlib
4420 #:dune ,ocaml4.07-dune))
4421 (properties '()))))
ac06a773 4422
c49b94a5 4423(define-public ocaml4.07-compiler-libs
ac06a773 4424 (package
c49b94a5 4425 (name "ocaml4.07-compiler-libs")
ac06a773
GH
4426 (version "0.11.0")
4427 (home-page "https://github.com/janestreet/ocaml-compiler-libs")
4428 (source
4429 (origin
4430 (method git-fetch)
4431 (uri (git-reference
4432 (url (string-append home-page ".git"))
4433 (commit (string-append "v" version))))
4434 (file-name (git-file-name name version))
4435 (sha256
4436 (base32
4437 "03jds7bszh8wwpfwxb3dg0gyr1j1872wxwx1xqhry5ir0i84bg0s"))))
4438 (build-system dune-build-system)
4439 (arguments
c49b94a5
JL
4440 `(#:tests? #f ;no tests
4441 #:ocaml ,ocaml-4.07
4442 #:findlib ,ocaml4.07-findlib
4443 #:dune ,ocaml4.07-dune))
d9faae62 4444 (properties `((upstream-name . "ocaml-compiler-libs")))
ac06a773 4445 (synopsis "Compiler libraries repackaged")
37c5b197 4446 (description "This package simply repackages the OCaml compiler libraries
ac06a773
GH
4447so they don't expose everything at toplevel. For instance, @code{Ast_helper}
4448is now @code{Ocaml_common.Ast_helper}.")
4449 (license license:expat)))
b5bab81c 4450
87858bc5 4451(define-public ocaml4.07-stdio
b5bab81c 4452 (package
87858bc5 4453 (name "ocaml4.07-stdio")
b5bab81c
GH
4454 (version "0.11.0")
4455 (home-page "https://github.com/janestreet/stdio")
4456 (source
4457 (origin
4458 (method git-fetch)
4459 (uri (git-reference
4460 (url (string-append home-page ".git"))
4461 (commit (string-append "v" version))))
4462 (file-name (git-file-name name version))
4463 (sha256
4464 (base32
4465 "1facajqhvq34g2wrg368y0ajxd6lrj5b3lyzyj0jhdmraxajjcwn"))))
4466 (build-system dune-build-system)
7e12b4c2 4467 (propagated-inputs
55c2851a 4468 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
adb30e51 4469 ("ocaml-sexplib0" ,(package-with-ocaml4.07 ocaml-sexplib0))))
b5bab81c 4470 (arguments
87858bc5
JL
4471 `(#:tests? #f ;no tests
4472 #:ocaml ,ocaml-4.07
339c752d
JL
4473 #:findlib ,ocaml4.07-findlib
4474 #:dune ,ocaml4.07-dune))
b5bab81c
GH
4475 (synopsis "Standard IO library for OCaml")
4476 (description
4477 "Stdio implements simple input/output functionalities for OCaml. It
4478re-exports the input/output functions of the OCaml standard libraries using
4479a more consistent API.")
4480 (license license:expat)))
3f623d00
GH
4481
4482(define-public ocaml-ppx-derivers
4483 (package
4484 (name "ocaml-ppx-derivers")
1e5937c8 4485 (version "1.2.1")
3f623d00
GH
4486 (home-page
4487 "https://github.com/ocaml-ppx/ppx_derivers")
4488 (source
4489 (origin
4490 (method git-fetch)
4491 (uri (git-reference
4492 (url (string-append home-page ".git"))
4493 (commit version)))
4494 (file-name (git-file-name name version))
4495 (sha256
4496 (base32
1e5937c8 4497 "0yqvqw58hbx1a61wcpbnl9j30n495k23qmyy2xwczqs63mn2nkpn"))))
3f623d00
GH
4498 (build-system dune-build-system)
4499 (arguments
4500 '(#:tests? #f)) ;no tests
51e52f47 4501 (properties `((upstream-name . "ppx_derivers")))
3f623d00
GH
4502 (synopsis "Shared @code{@@deriving} plugin registry")
4503 (description
4504 "Ppx_derivers is a tiny package whose sole purpose is to allow
4505ppx_deriving and ppx_type_conv to inter-operate gracefully when linked
4506as part of the same ocaml-migrate-parsetree driver.")
4507 (license license:bsd-3)))
4d390cad 4508
87858bc5 4509(define-public ocaml4.07-ppxlib
4d390cad 4510 (package
87858bc5 4511 (name "ocaml4.07-ppxlib")
b0529038 4512 (version "0.6.0")
4d390cad
GH
4513 (home-page "https://github.com/ocaml-ppx/ppxlib")
4514 (source
4515 (origin
4516 (method git-fetch)
4517 (uri (git-reference
4518 (url (string-append home-page ".git"))
4519 (commit version)))
4520 (file-name (git-file-name name version))
4521 (sha256
4522 (base32
b0529038 4523 "0my9x7sxb329h0lzshppdaawiyfbaw6g5f41yiy7bhl071rnlvbv"))))
4d390cad 4524 (build-system dune-build-system)
7e12b4c2 4525 (propagated-inputs
55c2851a 4526 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
c49b94a5 4527 ("ocaml-compiler-libs" ,ocaml4.07-compiler-libs)
87858bc5
JL
4528 ("ocaml-migrate-parsetree"
4529 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4530 ("ocaml-ppx-derivers" ,(package-with-ocaml4.07 ocaml-ppx-derivers))
4531 ("ocaml-stdio" ,ocaml4.07-stdio)
4532 ("ocaml-result" ,(package-with-ocaml4.07 ocaml-result))
adb30e51 4533 ("ocaml-sexplib0" ,(package-with-ocaml4.07 ocaml-sexplib0))))
4d390cad 4534 (arguments
87858bc5 4535 `(#:phases
4d390cad
GH
4536 (modify-phases %standard-phases
4537 (add-before 'check 'set-topfind
4538 (lambda* (#:key inputs #:allow-other-keys)
4539 ;; add the line #directory ".." at the top of each file
4540 ;; using #use "topfind";; to be able to find topfind
7e12b4c2 4541 (let* ((findlib-path (assoc-ref inputs "findlib"))
4d390cad
GH
4542 (findlib-libdir
4543 (string-append findlib-path "/lib/ocaml/site-lib")))
4544 (substitute* '("test/base/test.ml"
b0529038 4545 "test/code_path/test.ml"
4d390cad
GH
4546 "test/deriving/test.ml"
4547 "test/driver/attributes/test.ml"
4548 "test/driver/non-compressible-suffix/test.ml"
4549 "test/driver/transformations/test.ml")
4550 (("#use \"topfind\";;" all)
4551 (string-append "#directory \"" findlib-libdir "\"\n"
4552 all))))
87858bc5
JL
4553 #t)))
4554 #:ocaml ,ocaml-4.07
339c752d
JL
4555 #:findlib ,ocaml4.07-findlib
4556 #:dune ,ocaml4.07-dune))
4d390cad
GH
4557 (synopsis
4558 "Base library and tools for ppx rewriters")
4559 (description
4560 "A comprehensive toolbox for ppx development. It features:
4561@itemize
4562@item an OCaml AST / parser / pretty-printer snapshot, to create a full frontend
4563independent of the version of OCaml;
4564@item a library for library for ppx rewriters in general, and type-driven code
4565generators in particular;
4566@item
4567a feature-full driver for OCaml AST transformers;
4568@item a quotation mechanism allowing to write values representing the
4569OCaml AST in the OCaml syntax;
4570@item a generator of open recursion classes from type definitions.
4571@end itemize")
4572 (license license:expat)))
c16c8bb6 4573
87858bc5 4574(define-public ocaml4.07-ppx-compare
c16c8bb6 4575 (package
87858bc5 4576 (name "ocaml4.07-ppx-compare")
c16c8bb6
JL
4577 (version "0.11.1")
4578 (source (origin
4579 (method git-fetch)
4580 (uri (git-reference
b0e7b699 4581 (url "https://github.com/janestreet/ppx_compare")
c16c8bb6
JL
4582 (commit (string-append "v" version))))
4583 (file-name (git-file-name name version))
4584 (sha256
4585 (base32
4586 "06bq4m1bsm4jlx4g7wh5m99qky7xm4c2g52kaz6pv25hdn5agi2m"))))
4587 (build-system dune-build-system)
4588 (propagated-inputs
55c2851a 4589 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
4590 ("ocaml-migrate-parsetree"
4591 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4592 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
4593 (arguments
4594 `(#:ocaml ,ocaml-4.07
339c752d
JL
4595 #:findlib ,ocaml4.07-findlib
4596 #:dune ,ocaml4.07-dune))
c16c8bb6
JL
4597 (properties `((upstream-name . "ppx_compare")))
4598 (home-page "https://github.com/janestreet/ppx_compare")
4599 (synopsis "Generation of comparison functions from types")
4600 (description "Generation of fast comparison functions from type expressions
4601and definitions. Ppx_compare is a ppx rewriter that derives comparison functions
4602from type representations. The scaffolded functions are usually much faster
4603than ocaml's Pervasives.compare. Scaffolding functions also gives you more
4604flexibility by allowing you to override them for a specific type and more safety
4605by making sure that you only compare comparable values.")
4606 (license license:asl2.0)))
143685fd 4607
87858bc5 4608(define-public ocaml4.07-fieldslib
143685fd 4609 (package
87858bc5 4610 (name "ocaml4.07-fieldslib")
143685fd
JL
4611 (version "0.11.0")
4612 (source (origin
4613 (method url-fetch)
4614 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
4615 (version-major+minor version) "/files/"
4616 "fieldslib-v" version ".tar.gz"))
4617 (sha256
4618 (base32
4619 "12948pzxrl360lybm9fzyvplgcl87zjbn4m3sk1aw75zk85p1388"))))
4620 (build-system dune-build-system)
4621 (arguments
4622 ;; No tests
87858bc5
JL
4623 `(#:tests? #f
4624 #:ocaml ,ocaml-4.07
339c752d
JL
4625 #:findlib ,ocaml4.07-findlib
4626 #:dune ,ocaml4.07-dune))
143685fd 4627 (propagated-inputs
55c2851a 4628 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
4629 ("ocaml-migrate-parsetree"
4630 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4631 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
143685fd
JL
4632 (properties `((upstream-name . "fieldslib")))
4633 (home-page "https://github.com/janestreet/fieldslib")
4634 (synopsis "Syntax extension to record fields")
4635 (description "Syntax extension to define first class values representing
4636record fields, to get and set record fields, iterate and fold over all fields
4637of a record and create new record values.")
4638 (license license:asl2.0)))
d9f8433e 4639
87858bc5 4640(define-public ocaml4.07-variantslib
d9f8433e 4641 (package
87858bc5 4642 (name "ocaml4.07-variantslib")
d9f8433e
JL
4643 (version "0.11.0")
4644 (source (origin
4645 (method url-fetch)
4646 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
4647 (version-major+minor version)
4648 "/files/variantslib-v" version ".tar.gz"))
4649 (sha256
4650 (base32
4651 "1hsdwmkslvk4cznqr4lyyiy7vvk5spil226k0z2in26fxq6y0hf3"))))
4652 (build-system dune-build-system)
4653 (arguments
4654 ;; No tests
87858bc5
JL
4655 `(#:tests? #f
4656 #:ocaml ,ocaml-4.07
339c752d
JL
4657 #:findlib ,ocaml4.07-findlib
4658 #:dune ,ocaml4.07-dune))
d9f8433e 4659 (propagated-inputs
55c2851a 4660 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
4661 ("ocaml-migrate-parsetree"
4662 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4663 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
d9f8433e
JL
4664 (properties `((upstream-name . "variantslib")))
4665 (home-page "https://github.com/janestreet/variantslib")
4666 (synopsis "OCaml variants as first class values")
4667 (description "The Core suite of libraries is an alternative to OCaml's
4668standard library.")
4669 (license license:asl2.0)))
7b685486 4670
87858bc5 4671(define-public ocaml4.07-ppx-fields-conv
7b685486 4672 (package
87858bc5 4673 (name "ocaml4.07-ppx-fields-conv")
7b685486
JL
4674 (version "0.11.0")
4675 (source (origin
4676 (method url-fetch)
4677 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
4678 (version-major+minor version)
4679 "/files/ppx_fields_conv-v" version ".tar.gz"))
4680 (sha256
4681 (base32
4682 "07zrd3qky2ppbfl55gpm90rvqa5860xgwcsvihrjmkrw6d0jirkc"))))
4683 (build-system dune-build-system)
4684 (propagated-inputs
55c2851a 4685 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
4686 ("ocaml-fieldslib" ,ocaml4.07-fieldslib)
4687 ("ocaml-migrate-parsetree"
4688 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4689 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
4690 (arguments
4691 `(#:ocaml ,ocaml-4.07
339c752d
JL
4692 #:findlib ,ocaml4.07-findlib
4693 #:dune ,ocaml4.07-dune))
7b685486
JL
4694 (properties `((upstream-name . "ppx_fields_conv")))
4695 (home-page "https://github.com/janestreet/ppx_fields_conv")
4696 (synopsis "Generation of accessor and iteration functions for ocaml records")
4697 (description "Ppx_fields_conv is a ppx rewriter that can be used to define
4698first class values representing record fields, and additional routines, to get
4699and set record fields, iterate and fold over all fields of a record and create
4700new record values.")
4701 (license license:asl2.0)))
c7cf165e 4702
87858bc5 4703(define-public ocaml4.07-ppx-sexp-conv
c7cf165e 4704 (package
87858bc5 4705 (name "ocaml4.07-ppx-sexp-conv")
c7cf165e
JL
4706 (version "0.11.2")
4707 (source (origin
4708 (method git-fetch)
4709 (uri (git-reference
b0e7b699 4710 (url "https://github.com/janestreet/ppx_sexp_conv")
c7cf165e
JL
4711 (commit (string-append "v" version))))
4712 (file-name (git-file-name name version))
4713 (sha256
4714 (base32
4715 "0pqwnqy1xp309wvdcaax4lg02yk64lq2w03mbgfvf6ps5ry4gis9"))))
4716 (build-system dune-build-system)
4717 (propagated-inputs
55c2851a 4718 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
4719 ("ocaml-migrate-parsetree"
4720 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4721 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
4722 (arguments
4723 `(#:ocaml ,ocaml-4.07
339c752d
JL
4724 #:findlib ,ocaml4.07-findlib
4725 #:dune ,ocaml4.07-dune))
c7cf165e
JL
4726 (properties `((upstream-name . "ppx_sexp_conv")))
4727 (home-page "https://github.com/janestreet/ppx_sexp_conv")
4728 (synopsis "Generation of S-expression conversion functions from type definitions")
4729 (description "This package generates S-expression conversion functions from type
4730definitions.")
4731 (license license:asl2.0)))
7523674c 4732
87858bc5 4733(define-public ocaml4.07-ppx-variants-conv
7523674c 4734 (package
87858bc5 4735 (name "ocaml4.07-ppx-variants-conv")
7523674c
JL
4736 (version "0.11.1")
4737 (source (origin
4738 (method git-fetch)
4739 (uri (git-reference
b0e7b699 4740 (url "https://github.com/janestreet/ppx_variants_conv")
7523674c
JL
4741 (commit (string-append "v" version))))
4742 (file-name (git-file-name name version))
4743 (sha256
4744 (base32
4745 "1yc0gsds5m2nv39zga8nnrca2n75rkqy5dz4xj1635ybz20hhbjd"))))
4746 (build-system dune-build-system)
4747 (propagated-inputs
55c2851a 4748 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
4749 ("ocaml-variantslib" ,ocaml4.07-variantslib)
4750 ("ocaml-migrate-parsetree"
4751 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4752 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
4753 (arguments
4754 `(#:ocaml ,ocaml-4.07
339c752d
JL
4755 #:findlib ,ocaml4.07-findlib
4756 #:dune ,ocaml4.07-dune))
7523674c
JL
4757 (properties
4758 `((upstream-name . "ppx_variants_conv")))
4759 (home-page
4760 "https://github.com/janestreet/ppx_variants_conv")
4761 (synopsis "Generation of accessor and iteration functions for OCaml variant types")
4762 (description
7230f6d5 4763 "This package generates accessors and iteration functions for OCaml
7523674c
JL
4764variant types.")
4765 (license license:asl2.0)))
e6f08ec9 4766
87858bc5 4767(define-public ocaml4.07-ppx-custom-printf
e6f08ec9 4768 (package
87858bc5 4769 (name "ocaml4.07-ppx-custom-printf")
e6f08ec9
JL
4770 (version "0.11.0")
4771 (source (origin
4772 (method url-fetch)
4773 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
4774 (version-major+minor version)
4775 "/files/ppx_custom_printf-v" version ".tar.gz"))
4776 (sha256
4777 (base32
4778 "11b73smf3g3bpd9lg014pr4rx285nk9mnk6g6464ph51jv0sqzhj"))))
4779 (build-system dune-build-system)
4780 (propagated-inputs
55c2851a 4781 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
4782 ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
4783 ("ocaml-migrate-parsetree"
4784 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4785 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
4786 (arguments
4787 `(#:ocaml ,ocaml-4.07
339c752d
JL
4788 #:findlib ,ocaml4.07-findlib
4789 #:dune ,ocaml4.07-dune))
e6f08ec9
JL
4790 (properties `((upstream-name . "ppx_custom_printf")))
4791 (home-page "https://github.com/janestreet/ppx_custom_printf")
4792 (synopsis "Printf-style format-strings for user-defined string conversion")
4793 (description "Extensions to printf-style format-strings for user-defined
4794string conversion.")
4795 (license license:asl2.0)))
a0584d6c 4796
87858bc5 4797(define-public ocaml4.07-bin-prot
a0584d6c 4798 (package
87858bc5 4799 (name "ocaml4.07-bin-prot")
a0584d6c
JL
4800 (version "0.11.0")
4801 (source (origin
4802 (method url-fetch)
4803 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
4804 (version-major+minor version)
4805 "/files/bin_prot-v" version ".tar.gz"))
4806 (sha256
4807 (base32
4808 "1rsd91gx36prj4whi76nsiz1bzpgal9nzyw3pxdz1alv4ilk2il6"))))
4809 (build-system dune-build-system)
4810 (inputs
55c2851a 4811 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
4812 ("ocaml-ppx-compare" ,ocaml4.07-ppx-compare)
4813 ("ocaml-ppx-custom-printf" ,ocaml4.07-ppx-custom-printf)
4814 ("ocaml-ppx-fields-conv" ,ocaml4.07-ppx-fields-conv)
4815 ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
4816 ("ocaml-ppx-variants-conv" ,ocaml4.07-ppx-variants-conv)
4817 ("ocaml-migrate-parsetree"
4818 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))))
4819 (arguments
4820 `(#:ocaml ,ocaml-4.07
339c752d
JL
4821 #:findlib ,ocaml4.07-findlib
4822 #:dune ,ocaml4.07-dune))
a0584d6c
JL
4823 (properties `((upstream-name . "bin_prot")))
4824 (home-page "https://github.com/janestreet/bin_prot")
4825 (synopsis "Binary protocol generator")
4826 (description "This library contains functionality for reading and writing
4827OCaml-values in a type-safe binary protocol. It is extremely efficient,
4828typically supporting type-safe marshalling and unmarshalling of even highly
4829structured values at speeds sufficient to saturate a gigabit connection. The
4830protocol is also heavily optimized for size, making it ideal for long-term
4831storage of large amounts of data.")
4832 (license (list
4833 license:asl2.0
4834 license:bsd-3))))
49b01fa3
JL
4835
4836(define-public ocaml-octavius
4837 (package
4838 (name "ocaml-octavius")
89651117 4839 (version "1.2.2")
49b01fa3
JL
4840 (source (origin
4841 (method git-fetch)
4842 (uri (git-reference
4843 (url "https://github.com/ocaml-doc/octavius")
4844 (commit (string-append "v" version))))
4845 (file-name (git-file-name name version))
4846 (sha256
4847 (base32
89651117 4848 "1c5m51xcn2jv42kjjpklr6g63sgx1k885wfdp1yr4wrmiaj9cbpx"))))
49b01fa3 4849 (build-system dune-build-system)
89651117
JL
4850 (arguments
4851 `(#:phases
4852 (modify-phases %standard-phases
4853 (add-before 'build 'make-writable
4854 (lambda _
4855 (for-each (lambda (file)
4856 (chmod file #o644))
4857 (find-files "." "."))
4858 #t)))))
49b01fa3
JL
4859 (properties `((upstream-name . "octavius")))
4860 (home-page "https://github.com/ocaml-doc/octavius")
4861 (synopsis "Ocamldoc comment syntax parser")
4862 (description "Octavius is a library to parse the `ocamldoc` comment syntax.")
4863 (license license:isc)))
6692f652 4864
87858bc5 4865(define-public ocaml4.07-ppx-hash
6692f652 4866 (package
87858bc5 4867 (name "ocaml4.07-ppx-hash")
6692f652
JL
4868 (version "0.11.1")
4869 (source (origin
4870 (method git-fetch)
4871 (uri (git-reference
b0e7b699 4872 (url "https://github.com/janestreet/ppx_hash")
6692f652 4873 (commit (string-append "v" version))))
3a75925e 4874 (file-name (git-file-name name version))
6692f652
JL
4875 (sha256
4876 (base32
4877 "1p0ic6aijxlrdggpmycj12q3cy9xksbq2vq727215maz4snvlf5p"))))
4878 (build-system dune-build-system)
4879 (propagated-inputs
55c2851a 4880 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
4881 ("ocaml-ppx-compare" ,ocaml4.07-ppx-compare)
4882 ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
4883 ("ocaml-migrate-parsetree"
4884 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4885 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
4886 (arguments
4887 `(#:ocaml ,ocaml-4.07
339c752d
JL
4888 #:findlib ,ocaml4.07-findlib
4889 #:dune ,ocaml4.07-dune))
6692f652
JL
4890 (properties `((upstream-name . "ppx_hash")))
4891 (home-page "https://github.com/janestreet/ppx_hash")
4892 (synopsis "Generation of hash functions from type expressions and definitions")
74ee98ee 4893 (description "This package is a collection of ppx rewriters that generate
6692f652
JL
4894hash functions from type exrpessions and definitions.")
4895 (license license:asl2.0)))
db67f569 4896
87858bc5 4897(define-public ocaml4.07-ppx-enumerate
db67f569 4898 (package
87858bc5 4899 (name "ocaml4.07-ppx-enumerate")
db67f569
JL
4900 (version "0.11.1")
4901 (source (origin
4902 (method git-fetch)
4903 (uri (git-reference
b0e7b699 4904 (url "https://github.com/janestreet/ppx_enumerate")
db67f569 4905 (commit (string-append "v" version))))
4a6de002 4906 (file-name (git-file-name name version))
db67f569
JL
4907 (sha256
4908 (base32
4909 "0spx9k1v7vjjb6sigbfs69yndgq76v114jhxvzjmffw7q989cyhr"))))
4910 (build-system dune-build-system)
4911 (arguments
87858bc5
JL
4912 `(#:tests? #f; no test suite
4913 #:ocaml ,ocaml-4.07
339c752d
JL
4914 #:findlib ,ocaml4.07-findlib
4915 #:dune ,ocaml4.07-dune))
db67f569 4916 (propagated-inputs
55c2851a 4917 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
4918 ("ocaml-migrate-parsetree"
4919 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4920 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
db67f569
JL
4921 (properties `((upstream-name . "ppx_enumerate")))
4922 (home-page "https://github.com/janestreet/ppx_enumerate")
4923 (synopsis "Generate a list containing all values of a finite type")
4924 (description "Ppx_enumerate is a ppx rewriter which generates a definition
4925for the list of all values of a type (for a type which only has finitely
4926many values).")
4927 (license license:asl2.0)))
b42afab2 4928
87858bc5 4929(define-public ocaml4.07-ppx-bench
b42afab2 4930 (package
87858bc5 4931 (name "ocaml4.07-ppx-bench")
b42afab2
JL
4932 (version "0.11.0")
4933 (source (origin
4934 (method url-fetch)
4935 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
4936 (version-major+minor version)
4937 "/files/ppx_bench-v" version ".tar.gz"))
4938 (sha256
4939 (base32
4940 "0ys4pblbcjbk9dn073rqiwm7r6rc7fah03j7riklkwnb5n44andl"))))
4941 (build-system dune-build-system)
4942 (arguments
4943 ;; No tests
87858bc5
JL
4944 `(#:tests? #f
4945 #:ocaml ,ocaml-4.07
339c752d
JL
4946 #:findlib ,ocaml4.07-findlib
4947 #:dune ,ocaml4.07-dune))
b42afab2 4948 (propagated-inputs
87858bc5
JL
4949 `(("ocaml-ppx-inline-test" ,ocaml4.07-ppx-inline-test)
4950 ("ocaml-migrate-parsetree"
4951 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4952 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
b42afab2
JL
4953 (properties `((upstream-name . "ppx_bench")))
4954 (home-page "https://github.com/janestreet/ppx_bench")
4955 (synopsis "Syntax extension for writing in-line benchmarks in ocaml code")
4956 (description "Syntax extension for writing in-line benchmarks in ocaml code.")
4957 (license license:asl2.0)))
164b06da 4958
87858bc5 4959(define-public ocaml4.07-ppx-here
164b06da 4960 (package
87858bc5 4961 (name "ocaml4.07-ppx-here")
164b06da
JL
4962 (version "0.11.0")
4963 (source (origin
4964 (method url-fetch)
4965 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
4966 (version-major+minor version)
4967 "/files/ppx_here-v" version ".tar.gz"))
4968 (sha256
4969 (base32
4970 "0wxcak3ay4jpigm3pfdcpr65qw4hxfa8whhkryhcd8gy71x056z5"))))
4971 (build-system dune-build-system)
4972 (arguments
4973 ;; broken tests
87858bc5
JL
4974 `(#:tests? #f
4975 #:ocaml ,ocaml-4.07
339c752d
JL
4976 #:findlib ,ocaml4.07-findlib
4977 #:dune ,ocaml4.07-dune))
164b06da 4978 (propagated-inputs
55c2851a 4979 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
4980 ("ocaml-migrate-parsetree"
4981 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
4982 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
164b06da
JL
4983 (properties `((upstream-name . "ppx_here")))
4984 (home-page "https://github.com/janestreet/ppx_here")
4985 (synopsis "Expands [%here] into its location")
4986 (description
4987 "Part of the Jane Street's PPX rewriters collection.")
4988 (license license:asl2.0)))
a58118ca 4989
87858bc5 4990(define-public ocaml4.07-typerep
a58118ca 4991 (package
87858bc5 4992 (name "ocaml4.07-typerep")
a58118ca
JL
4993 (version "0.11.0")
4994 (source (origin
4995 (method url-fetch)
4996 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
4997 (version-major+minor version)
4998 "/files/typerep-v" version ".tar.gz"))
4999 (sha256
5000 (base32
5001 "1zi7hy0prpgzqhr4lkacr04wvlvbp21jfbdfvffhrm6cd400rb5v"))))
5002 (build-system dune-build-system)
5003 (arguments
87858bc5
JL
5004 `(#:tests? #f
5005 #:ocaml ,ocaml-4.07
339c752d
JL
5006 #:findlib ,ocaml4.07-findlib
5007 #:dune ,ocaml4.07-dune))
55c2851a 5008 (propagated-inputs `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))))
a58118ca
JL
5009 (home-page "https://github.com/janestreet/typerep")
5010 (synopsis "Typerep is a library for runtime types")
5011 (description "Typerep is a library for runtime types.")
5012 (license license:asl2.0)))
e9328150 5013
87858bc5 5014(define-public ocaml4.07-ppx-sexp-value
e9328150 5015 (package
87858bc5 5016 (name "ocaml4.07-ppx-sexp-value")
e9328150
JL
5017 (version "0.11.0")
5018 (source (origin
5019 (method url-fetch)
5020 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5021 (version-major+minor version)
5022 "/files/ppx_sexp_value-v" version ".tar.gz"))
5023 (sha256
5024 (base32
5025 "1xnalfrln6k5khsyxvxkg6v32q8fpr4cqamsjqfih29jdv486xrs"))))
5026 (build-system dune-build-system)
87858bc5
JL
5027 (arguments
5028 `(#:ocaml ,ocaml-4.07
339c752d
JL
5029 #:findlib ,ocaml4.07-findlib
5030 #:dune ,ocaml4.07-dune))
e9328150 5031 (propagated-inputs
55c2851a 5032 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5033 ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
5034 ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
5035 ("ocaml-migrate-parsetree"
5036 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5037 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
e9328150
JL
5038 (properties `((upstream-name . "ppx_sexp_value")))
5039 (home-page "https://github.com/janestreet/ppx_sexp_value")
5040 (synopsis "Simplify building s-expressions from ocaml values")
5041 (description "A ppx rewriter that simplifies building s-expressions from
5042ocaml values.")
5043 (license license:asl2.0)))
44a2ceca 5044
87858bc5 5045(define-public ocaml4.07-ppx-sexp-message
44a2ceca 5046 (package
87858bc5 5047 (name "ocaml4.07-ppx-sexp-message")
44a2ceca
JL
5048 (version "0.11.0")
5049 (source (origin
5050 (method url-fetch)
5051 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5052 (version-major+minor version)
5053 "/files/ppx_sexp_message-v" version ".tar.gz"))
5054 (sha256
5055 (base32
5056 "1yh440za0w9cvrbxbmqacir8715kdaw6sw24ys9xj80av9nqpiw7"))))
5057 (build-system dune-build-system)
87858bc5
JL
5058 (arguments
5059 `(#:ocaml ,ocaml-4.07
339c752d
JL
5060 #:findlib ,ocaml4.07-findlib
5061 #:dune ,ocaml4.07-dune))
44a2ceca 5062 (propagated-inputs
55c2851a 5063 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5064 ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
5065 ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
5066 ("ocaml-migrate-parsetree"
5067 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5068 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
44a2ceca
JL
5069 (properties `((upstream-name . "ppx_sexp_message")))
5070 (home-page "https://github.com/janestreet/ppx_sexp_message")
5071 (synopsis "A ppx rewriter for easy construction of s-expressions")
5072 (description "Ppx_sexp_message aims to ease the creation of s-expressions
5073in OCaml. This is mainly motivated by writing error and debugging messages,
5074where one needs to construct a s-expression based on various element of the
5075context such as function arguments.")
5076 (license license:asl2.0)))
6a114001 5077
87858bc5 5078(define-public ocaml4.07-ppx-pipebang
6a114001 5079 (package
87858bc5 5080 (name "ocaml4.07-ppx-pipebang")
6a114001
JL
5081 (version "0.11.0")
5082 (source (origin
5083 (method url-fetch)
5084 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5085 (version-major+minor version)
5086 "/files/ppx_pipebang-v" version ".tar.gz"))
5087 (sha256
5088 (base32
5089 "1wrrzlb4kdvkkcmzi01fw25jar38r2jlnyn0i6pn4z0lq4gpm9m0"))))
5090 (build-system dune-build-system)
5091 (arguments
5092 ;; No tests
87858bc5
JL
5093 `(#:tests? #f
5094 #:ocaml ,ocaml-4.07
339c752d
JL
5095 #:findlib ,ocaml4.07-findlib
5096 #:dune ,ocaml4.07-dune))
6a114001 5097 (propagated-inputs
87858bc5
JL
5098 `(("ocaml-migrate-parsetree"
5099 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5100 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
6a114001
JL
5101 (properties `((upstream-name . "ppx_pipebang")))
5102 (home-page "https://github.com/janestreet/ppx_pipebang")
5103 (synopsis "Inline reverse application operators `|>` and `|!`")
5104 (description "A ppx rewriter that inlines reverse application operators
5105@code{|>} and @code{|!}.")
5106 (license license:asl2.0)))
3f4ecf66 5107
87858bc5 5108(define-public ocaml4.07-ppx-optional
3f4ecf66 5109 (package
87858bc5 5110 (name "ocaml4.07-ppx-optional")
3f4ecf66
JL
5111 (version "0.11.0")
5112 (source (origin
5113 (method url-fetch)
5114 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5115 (version-major+minor version)
5116 "/files/ppx_optional-v" version ".tar.gz"))
5117 (sha256
5118 (base32
5119 "1z8z2bga95k2vksljljfglg10vygkjd24kn1b37sk4z3nmp47x0h"))))
5120 (build-system dune-build-system)
5121 (arguments
5122 ;; No tests
87858bc5
JL
5123 `(#:tests? #f
5124 #:ocaml ,ocaml-4.07
339c752d
JL
5125 #:findlib ,ocaml4.07-findlib
5126 #:dune ,ocaml4.07-dune))
3f4ecf66 5127 (propagated-inputs
55c2851a 5128 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5129 ("ocaml-migrate-parsetree"
5130 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5131 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
3f4ecf66
JL
5132 (properties `((upstream-name . "ppx_optional")))
5133 (home-page "https://github.com/janestreet/ppx_optional")
5134 (synopsis "Pattern matching on flat options")
5135 (description
5136 "A ppx rewriter that rewrites simple match statements with an if then
5137else expression.")
5138 (license license:asl2.0)))
79967eea 5139
87858bc5 5140(define-public ocaml4.07-ppx-optcomp
79967eea 5141 (package
87858bc5 5142 (name "ocaml4.07-ppx-optcomp")
79967eea
JL
5143 (version "0.11.0")
5144 (source (origin
5145 (method url-fetch)
5146 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5147 (version-major+minor version)
5148 "/files/ppx_optcomp-v" version ".tar.gz"))
5149 (sha256
5150 (base32
5151 "1bb52p2j2h4s9f06vrcpla80rj93jinnzq6jzilapyx9q068929i"))))
5152 (build-system dune-build-system)
87858bc5
JL
5153 (arguments
5154 `(#:ocaml ,ocaml-4.07
339c752d
JL
5155 #:findlib ,ocaml4.07-findlib
5156 #:dune ,ocaml4.07-dune))
79967eea 5157 (propagated-inputs
55c2851a 5158 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5159 ("ocaml-stdio" ,ocaml4.07-stdio)
5160 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
79967eea
JL
5161 (properties `((upstream-name . "ppx_optcomp")))
5162 (home-page "https://github.com/janestreet/ppx_optcomp")
5163 (synopsis "Optional compilation for OCaml")
5164 (description "Ppx_optcomp stands for Optional Compilation. It is a tool
5165used to handle optional compilations of pieces of code depending of the word
5166size, the version of the compiler, ...")
5167 (license license:asl2.0)))
1365ae47 5168
87858bc5 5169(define-public ocaml4.07-ppx-let
1365ae47 5170 (package
87858bc5 5171 (name "ocaml4.07-ppx-let")
1365ae47
JL
5172 (version "0.11.0")
5173 (source (origin
5174 (method url-fetch)
5175 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5176 (version-major+minor version)
5177 "/files/ppx_let-v" version ".tar.gz"))
5178 (sha256
5179 (base32
5180 "1wdfw6w4xbg97a35yg6bif9gggxniy9ddnrjfw1a0inkl2yamxkj"))))
5181 (build-system dune-build-system)
87858bc5
JL
5182 (arguments
5183 `(#:ocaml ,ocaml-4.07
339c752d
JL
5184 #:findlib ,ocaml4.07-findlib
5185 #:dune ,ocaml4.07-dune))
1365ae47 5186 (propagated-inputs
55c2851a 5187 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5188 ("ocaml-migrate-parsetree"
5189 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5190 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
1365ae47
JL
5191 (properties `((upstream-name . "ppx_let")))
5192 (home-page "https://github.com/janestreet/ppx_let")
5193 (synopsis "Monadic let-bindings")
5194 (description "A ppx rewriter for monadic and applicative let bindings,
5195match expressions, and if expressions.")
5196 (license license:asl2.0)))
6018802d 5197
87858bc5 5198(define-public ocaml4.07-ppx-fail
6018802d 5199 (package
87858bc5 5200 (name "ocaml4.07-ppx-fail")
6018802d
JL
5201 (version "0.11.0")
5202 (source (origin
5203 (method url-fetch)
5204 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5205 (version-major+minor version)
5206 "/files/ppx_fail-v" version ".tar.gz"))
5207 (sha256
5208 (base32
5209 "07plqsvljiwvngggfypwq55g46s5my55y45mvlmalrxyppzr03s8"))))
5210 (build-system dune-build-system)
87858bc5
JL
5211 (arguments
5212 `(#:ocaml ,ocaml-4.07
339c752d
JL
5213 #:findlib ,ocaml4.07-findlib
5214 #:dune ,ocaml4.07-dune))
6018802d 5215 (propagated-inputs
55c2851a 5216 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5217 ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
5218 ("ocaml-migrate-parsetree"
5219 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5220 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
6018802d
JL
5221 (properties `((upstream-name . "ppx_fail")))
5222 (home-page "https://github.com/janestreet/ppx_fail")
5223 (synopsis "Add location to calls to failwiths")
5224 (description "Syntax extension that makes [failwiths] always include a
5225position.")
5226 (license license:asl2.0)))
7ec9a45d 5227
87858bc5 5228(define-public ocaml4.07-ppx-assert
7ec9a45d 5229 (package
87858bc5 5230 (name "ocaml4.07-ppx-assert")
7ec9a45d
JL
5231 (version "0.11.0")
5232 (source (origin
5233 (method url-fetch)
5234 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5235 (version-major+minor version)
5236 "/files/ppx_assert-v" version ".tar.gz"))
5237 (sha256
5238 (base32
5239 "17kd311n0l9f72gblf9kv8i5rghr106w37x4f0m5qwh6nlgl0j9k"))))
5240 (build-system dune-build-system)
87858bc5
JL
5241 (arguments
5242 `(#:ocaml ,ocaml-4.07
339c752d
JL
5243 #:findlib ,ocaml4.07-findlib
5244 #:dune ,ocaml4.07-dune))
7ec9a45d 5245 (propagated-inputs
55c2851a 5246 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5247 ("ocaml-ppx-compare" ,ocaml4.07-ppx-compare)
5248 ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
5249 ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
5250 ("ocaml-migrate-parsetree"
5251 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5252 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
7ec9a45d
JL
5253 (properties `((upstream-name . "ppx_assert")))
5254 (home-page "https://github.com/janestreet/ppx_assert")
5255 (synopsis "Assert-like extension nodes that raise useful errors on failure")
5256 (description "This package contains assert-like extension nodes that raise
5257useful errors on failure.")
5258 (license license:asl2.0)))
4e4e5fb1 5259
87858bc5 5260(define-public ocaml4.07-ppx-expect
4e4e5fb1 5261 (package
87858bc5 5262 (name "ocaml4.07-ppx-expect")
b7ebcb04 5263 (version "0.12.0")
4e4e5fb1
JL
5264 (source (origin
5265 (method git-fetch)
5266 (uri (git-reference
b0e7b699 5267 (url "https://github.com/janestreet/ppx_expect")
4e4e5fb1
JL
5268 (commit (string-append "v" version))))
5269 (file-name (git-file-name name version))
5270 (sha256
5271 (base32
b7ebcb04 5272 "1wawsbjfkri4sw52n8xqrzihxc3xfpdicv3ahz83a1rsn4lb8j5q"))))
4e4e5fb1
JL
5273 (build-system dune-build-system)
5274 (arguments
47ef85b5 5275 `(#:ocaml ,ocaml-4.07
339c752d
JL
5276 #:findlib ,ocaml4.07-findlib
5277 #:dune ,ocaml4.07-dune))
4e4e5fb1 5278 (propagated-inputs
55c2851a 5279 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5280 ("ocaml-ppx-assert" ,ocaml4.07-ppx-assert)
5281 ("ocaml-ppx-compare" ,ocaml4.07-ppx-compare)
5282 ("ocaml-ppx-custom-printf" ,ocaml4.07-ppx-custom-printf)
5283 ("ocaml-ppx-fields-conv" ,ocaml4.07-ppx-fields-conv)
5284 ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
5285 ("ocaml-ppx-inline-test" ,ocaml4.07-ppx-inline-test)
5286 ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
5287 ("ocaml-ppx-variants-conv" ,ocaml4.07-ppx-variants-conv)
5288 ("ocaml-stdio" ,ocaml4.07-stdio)
5289 ("ocaml-migrate-parsetree"
5290 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5291 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)
5292 ("ocaml-re" ,(package-with-ocaml4.07 ocaml-re))))
4e4e5fb1
JL
5293 (properties `((upstream-name . "ppx_expect")))
5294 (home-page "https://github.com/janestreet/ppx_expect")
5295 (synopsis "Cram like framework for OCaml")
5296 (description "Expect-test is a framework for writing tests in OCaml, similar
5297to Cram. Expect-tests mimics the existing inline tests framework with the
5298@code{let%expect_test} construct. The body of an expect-test can contain
5299output-generating code, interleaved with @code{%expect} extension expressions
5300to denote the expected output.")
5301 (license license:asl2.0)))
f4304c1d 5302
87858bc5 5303(define-public ocaml4.07-ppx-js-style
f4304c1d 5304 (package
87858bc5 5305 (name "ocaml4.07-ppx-js-style")
f4304c1d
JL
5306 (version "0.11.0")
5307 (source (origin
5308 (method url-fetch)
5309 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5310 (version-major+minor version)
5311 "/files/ppx_js_style-v" version ".tar.gz"))
5312 (sha256
5313 (base32
5314 "0z3fc55jdjhhsblla6z4fqc13kljpcz29q79rvs5h2vsraqrldr2"))))
5315 (build-system dune-build-system)
5316 (arguments
5317 ;; No tests
87858bc5
JL
5318 `(#:tests? #f
5319 #:ocaml ,ocaml-4.07
339c752d
JL
5320 #:findlib ,ocaml4.07-findlib
5321 #:dune ,ocaml4.07-dune))
f4304c1d 5322 (propagated-inputs
55c2851a 5323 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5324 ("ocaml-migrate-parsetree"
5325 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5326 ("ocaml-octavius" ,(package-with-ocaml4.07 ocaml-octavius))
5327 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
f4304c1d
JL
5328 (properties `((upstream-name . "ppx_js_style")))
5329 (home-page "https://github.com/janestreet/ppx_js_style")
5330 (synopsis "Code style checker for Jane Street Packages")
d38ccbb0 5331 (description "This package is a no-op ppx rewriter. It is used as a
f4304c1d
JL
5332@code{lint} tool to enforce some coding conventions across all Jane Street
5333packages.")
5334 (license license:asl2.0)))
48ad1181 5335
87858bc5 5336(define-public ocaml4.07-ppx-typerep-conv
48ad1181 5337 (package
87858bc5 5338 (name "ocaml4.07-ppx-typerep-conv")
48ad1181
JL
5339 (version "0.11.1")
5340 (source (origin
5341 (method git-fetch)
5342 (uri (git-reference
b0e7b699 5343 (url "https://github.com/janestreet/ppx_typerep_conv")
48ad1181 5344 (commit (string-append "v" version))))
7026f6b2 5345 (file-name (git-file-name name version))
48ad1181
JL
5346 (sha256
5347 (base32
5348 "0a13dpfrrg0rsm8qni1bh7pqcda30l70z8r6yzi5a64bmwk7g5ah"))))
5349 (build-system dune-build-system)
5350 (arguments
87858bc5
JL
5351 `(#:test-target "."
5352 #:ocaml ,ocaml-4.07
339c752d
JL
5353 #:findlib ,ocaml4.07-findlib
5354 #:dune ,ocaml4.07-dune))
48ad1181 5355 (propagated-inputs
55c2851a 5356 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5357 ("ocaml-typerep" ,ocaml4.07-typerep)
5358 ("ocaml-migrate-parsetree"
5359 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5360 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
48ad1181
JL
5361 (properties `((upstream-name . "ppx_typerep_conv")))
5362 (home-page "https://github.com/janestreet/ppx_typerep_conv")
5363 (synopsis "Generation of runtime types from type declarations")
5364 (description "This package can automatically generate runtime types
5365from type definitions.")
5366 (license license:asl2.0)))
d13b9c5f 5367
87858bc5 5368(define-public ocaml4.07-ppx-base
d13b9c5f 5369 (package
87858bc5 5370 (name "ocaml4.07-ppx-base")
d13b9c5f
JL
5371 (version "0.11.0")
5372 (source (origin
5373 (method url-fetch)
5374 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5375 (version-major+minor version)
5376 "/files/ppx_base-v" version ".tar.gz"))
5377 (sha256
5378 (base32
5379 "0aq206pg330jmj7lhcagiiwm3a0b3gsqm801m8ajd4ysyw7idkym"))))
5380 (build-system dune-build-system)
5381 (arguments
87858bc5
JL
5382 `(#:test-target "."
5383 #:ocaml ,ocaml-4.07
339c752d
JL
5384 #:findlib ,ocaml4.07-findlib
5385 #:dune ,ocaml4.07-dune))
d13b9c5f 5386 (propagated-inputs
87858bc5
JL
5387 `(("ocaml-ppx-compare" ,ocaml4.07-ppx-compare)
5388 ("ocaml-ppx-enumerate" ,ocaml4.07-ppx-enumerate)
5389 ("ocaml-ppx-hash" ,ocaml4.07-ppx-hash)
5390 ("ocaml-ppx-js-style" ,ocaml4.07-ppx-js-style)
5391 ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
5392 ("ocaml-migrate-parsetree"
5393 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5394 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
d13b9c5f
JL
5395 (properties `((upstream-name . "ppx_base")))
5396 (home-page "https://github.com/janestreet/ppx_base")
5397 (synopsis "Base set of ppx rewriters")
5398 (description "Ppx_base is the set of ppx rewriters used for Base.
5399
5400Note that Base doesn't need ppx to build, it is only used as a
5401verification tool.")
5402 (license license:asl2.0)))
7bd4b85e 5403
87858bc5 5404(define-public ocaml4.07-ppx-bin-prot
7bd4b85e 5405 (package
87858bc5 5406 (name "ocaml4.07-ppx-bin-prot")
7bd4b85e
JL
5407 (version "0.11.1")
5408 (source (origin
5409 (method git-fetch)
5410 (uri (git-reference
b0e7b699 5411 (url "https://github.com/janestreet/ppx_bin_prot")
7bd4b85e
JL
5412 (commit (string-append "v" version))))
5413 (file-name (git-file-name name version))
5414 (sha256
5415 (base32
5416 "1h60i75bzvhna1axyn662gyrzhh441l79vl142d235i5x31dmnkz"))))
5417 (build-system dune-build-system)
5418 (arguments
5419 ;; Cyclic dependency with ocaml-ppx-jane
87858bc5
JL
5420 `(#:tests? #f
5421 #:ocaml ,ocaml-4.07
339c752d
JL
5422 #:findlib ,ocaml4.07-findlib
5423 #:dune ,ocaml4.07-dune))
7bd4b85e 5424 (propagated-inputs
55c2851a 5425 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5426 ("ocaml-bin-prot" ,ocaml4.07-bin-prot)
5427 ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
5428 ("ocaml-migrate-parsetree"
5429 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5430 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
7bd4b85e
JL
5431 (properties `((upstream-name . "ppx_bin_prot")))
5432 (home-page "https://github.com/janestreet/ppx_bin_prot")
5433 (synopsis "Generation of bin_prot readers and writers from types")
5434 (description "Generation of binary serialization and deserialization
5435functions from type definitions.")
5436 (license license:asl2.0)))
255f1cae 5437
87858bc5 5438(define-public ocaml4.07-ppx-jane
255f1cae 5439 (package
87858bc5 5440 (name "ocaml4.07-ppx-jane")
255f1cae
JL
5441 (version "0.11.0")
5442 (source (origin
5443 (method url-fetch)
5444 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5445 (version-major+minor version)
5446 "/files/ppx_jane-v" version ".tar.gz"))
5447 (sha256
5448 (base32
5449 "0lgppkw3aixrfnixihrsz2ipafv8fpvkdpy3pw8n0r615gg8x8la"))))
5450 (build-system dune-build-system)
5451 (arguments
87858bc5
JL
5452 `(#:test-target "."
5453 #:ocaml ,ocaml-4.07
339c752d
JL
5454 #:findlib ,ocaml4.07-findlib
5455 #:dune ,ocaml4.07-dune))
255f1cae 5456 (propagated-inputs
87858bc5
JL
5457 `(("ocaml-ppx-assert" ,ocaml4.07-ppx-assert)
5458 ("ocaml-ppx-base" ,ocaml4.07-ppx-base)
5459 ("ocaml-ppx-bench" ,ocaml4.07-ppx-bench)
5460 ("ocaml-ppx-bin-prot" ,ocaml4.07-ppx-bin-prot)
5461 ("ocaml-ppx-custom-printf" ,ocaml4.07-ppx-custom-printf)
5462 ("ocaml-ppx-expect" ,ocaml4.07-ppx-expect)
5463 ("ocaml-ppx-fail" ,ocaml4.07-ppx-fail)
5464 ("ocaml-ppx-fields-conv" ,ocaml4.07-ppx-fields-conv)
5465 ("ocaml-ppx-here" ,ocaml4.07-ppx-here)
5466 ("ocaml-ppx-inline-test" ,ocaml4.07-ppx-inline-test)
5467 ("ocaml-ppx-let" ,ocaml4.07-ppx-let)
5468 ("ocaml-ppx-optcomp" ,ocaml4.07-ppx-optcomp)
5469 ("ocaml-ppx-optional" ,ocaml4.07-ppx-optional)
5470 ("ocaml-ppx-pipebang" ,ocaml4.07-ppx-pipebang)
5471 ("ocaml-ppx-sexp-message" ,ocaml4.07-ppx-sexp-message)
5472 ("ocaml-ppx-sexp-value" ,ocaml4.07-ppx-sexp-value)
5473 ("ocaml-ppx-typerep-conv" ,ocaml4.07-ppx-typerep-conv)
5474 ("ocaml-ppx-variants-conv" ,ocaml4.07-ppx-variants-conv)
5475 ("ocaml-migrate-parsetree"
5476 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5477 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
255f1cae
JL
5478 (properties `((upstream-name . "ppx_jane")))
5479 (home-page "https://github.com/janestreet/ppx_jane")
5480 (synopsis "Standard Jane Street ppx rewriters")
5481 (description "This package installs a ppx-jane executable, which is a ppx
5482driver including all standard Jane Street ppx rewriters.")
5483 (license license:asl2.0)))
5995e6d1 5484
87858bc5 5485(define-public ocaml4.07-splittable-random
5995e6d1 5486 (package
87858bc5 5487 (name "ocaml4.07-splittable-random")
5995e6d1
JL
5488 (version "0.11.0")
5489 (source (origin
5490 (method url-fetch)
5491 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5492 (version-major+minor version)
5493 "/files/splittable_random-v" version ".tar.gz"))
5494 (sha256
5495 (base32
5496 "0l1wbd881mymlnpzlq5q53mmdz3g5d7qjhyc7lfaq1x0iaccn5lc"))))
5497 (build-system dune-build-system)
87858bc5
JL
5498 (arguments
5499 `(#:ocaml ,ocaml-4.07
339c752d
JL
5500 #:findlib ,ocaml4.07-findlib
5501 #:dune ,ocaml4.07-dune))
5995e6d1 5502 (propagated-inputs
55c2851a 5503 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5504 ("ocaml-ppx-jane" ,ocaml4.07-ppx-jane)
5505 ("ocaml-migrate-parsetree"
5506 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))))
5995e6d1
JL
5507 (properties `((upstream-name . "splittable_random")))
5508 (home-page "https://github.com/janestreet/splittable_random")
5509 (synopsis "PRNG that can be split into independent streams")
e88fd8be
CB
5510 (description "This package provides a splittable
5511@acronym{PRNG,pseudo-random number generator} functions like a PRNG that can
5512be used as a stream of random values; it can also be split to produce a
5513second, independent stream of random values.
5995e6d1
JL
5514
5515This library implements a splittable pseudo-random number generator that sacrifices
5516cryptographic-quality randomness in favor of performance.")
5517 (license license:asl2.0)))
dc361a25 5518
f2df5a4b 5519(define-public ocaml4.07-jane-street-headers
dc361a25 5520 (package
f2df5a4b 5521 (name "ocaml4.07-jane-street-headers")
dc361a25
JL
5522 (version "0.11.0")
5523 (source (origin
5524 (method url-fetch)
5525 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5526 (version-major+minor version)
5527 "/files/jane-street-headers-v" version ".tar.gz"))
5528 (sha256
5529 (base32
5530 "0afhzm08l9v883fhpqqh2lmy7az609pxif40bp7x1sk8c0yszqsh"))))
5531 (build-system dune-build-system)
5532 (arguments
f2df5a4b
JL
5533 `(#:test-target "."
5534 #:ocaml ,ocaml-4.07
5535 #:findlib ,ocaml4.07-findlib
5536 #:dune ,ocaml4.07-dune))
dc361a25
JL
5537 (home-page "https://github.com/janestreet/jane-street-headers")
5538 (synopsis "Jane Street C header files")
5539 (description "This package provides C header files shared between the
5540various Jane Street packages.")
5541 (license license:asl2.0)))
3e3d5ffc 5542
87858bc5 5543(define-public ocaml4.07-configurator
3e3d5ffc 5544 (package
87858bc5 5545 (name "ocaml4.07-configurator")
3e3d5ffc
JL
5546 (version "0.11.0")
5547 (source (origin
5548 (method url-fetch)
5549 (uri (string-append "https://ocaml.janestreet.com/ocaml-core/v"
5550 (version-major+minor version)
5551 "/files/configurator-v" version ".tar.gz"))
5552 (sha256
5553 (base32
5554 "0kwgi3sh92v4n242dk5hgpwd85zzgnczgbkqi0q0kr6m93zgbf7p"))))
5555 (build-system dune-build-system)
5556 (arguments
5557 ;; No tests
87858bc5
JL
5558 `(#:tests? #f
5559 #:ocaml ,ocaml-4.07
339c752d
JL
5560 #:findlib ,ocaml4.07-findlib
5561 #:dune ,ocaml4.07-dune))
3e3d5ffc 5562 (propagated-inputs
55c2851a 5563 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5 5564 ("ocaml-stdio" ,ocaml4.07-stdio)))
3e3d5ffc
JL
5565 (home-page "https://github.com/janestreet/configurator")
5566 (synopsis "Helper library for gathering system configuration")
5567 (description "Configurator is a small library that helps writing OCaml
5568scripts that test features available on the system, in order to generate config.h
5569files for instance.
5570
5571Configurator allows one to:
5572@itemize
5573@item test if a C program compiles
5574@item query pkg-config
5575@item import #define from OCaml header files
5576@item generate config.h file
5577@end itemize")
5578 (license license:asl2.0)))
9e81db80 5579
87858bc5 5580(define-public ocaml4.07-spawn
9e81db80 5581 (package
87858bc5 5582 (name "ocaml4.07-spawn")
f9caa17b 5583 (version "0.13.0")
9e81db80
JL
5584 (source (origin
5585 (method git-fetch)
5586 (uri (git-reference
b0e7b699 5587 (url "https://github.com/janestreet/spawn")
9e81db80 5588 (commit (string-append "v" version))))
f9caa17b 5589 (file-name (git-file-name name version))
9e81db80
JL
5590 (sha256
5591 (base32
f9caa17b 5592 "1w003k1kw1lmyiqlk58gkxx8rac7dchiqlz6ah7aj7bh49b36ppf"))))
9e81db80
JL
5593 (build-system dune-build-system)
5594 (arguments
5595 `(#:phases
5596 (modify-phases %standard-phases
5597 (add-before 'check 'fix-tests
5598 (lambda _
5599 (substitute* "test/tests.ml"
5600 (("/bin/pwd") (which "pwd"))
5601 (("/bin/echo") (which "echo")))
87858bc5
JL
5602 #t)))
5603 #:ocaml ,ocaml-4.07
339c752d
JL
5604 #:findlib ,ocaml4.07-findlib
5605 #:dune ,ocaml4.07-dune))
9e81db80 5606 (native-inputs
87858bc5 5607 `(("ocaml-ppx-expect" ,ocaml4.07-ppx-expect)))
9e81db80
JL
5608 (home-page "https://github.com/janestreet/spawn")
5609 (synopsis "Spawning sub-processes")
5610 (description
5611 "Spawn is a small library exposing only one functionality: spawning sub-process.
5612
5613It has three main goals:
5614
5615@itemize
5616@item provide missing features of Unix.create_process such as providing a
5617working directory,
5618@item provide better errors when a system call fails in the
5619sub-process. For instance if a command is not found, you get a proper
5620@code{Unix.Unix_error} exception,
5621@item improve performances by using vfork when available. It is often
5622claimed that nowadays fork is as fast as vfork, however in practice
5623fork takes time proportional to the process memory while vfork is
5624constant time. In application using a lot of memory, vfork can be
1d5d0447
CB
5625thousands of times faster than fork.
5626@end itemize")
9e81db80 5627 (license license:asl2.0)))
514b5420 5628
87858bc5 5629(define-public ocaml4.07-core
514b5420 5630 (package
87858bc5 5631 (name "ocaml4.07-core")
514b5420
JL
5632 (version "0.11.3")
5633 (source (origin
5634 (method git-fetch)
5635 (uri (git-reference
b0e7b699 5636 (url "https://github.com/janestreet/core")
514b5420 5637 (commit (string-append "v" version))))
fbd08d42 5638 (file-name (git-file-name name version))
514b5420
JL
5639 (sha256
5640 (base32
5641 "0pzl8n09z4f3i7z2wq4cjxfqrr8mj6xcdp7rbg0nxap2zdhjgvrq"))))
5642 (build-system dune-build-system)
5643 (arguments
0f1362f0
JL
5644 `(#:package "core"
5645 #:tests? #f; Require a cyclic dependency: core_extended
87858bc5 5646 #:ocaml ,ocaml-4.07
339c752d
JL
5647 #:findlib ,ocaml4.07-findlib
5648 #:dune ,ocaml4.07-dune))
514b5420 5649 (propagated-inputs
55c2851a 5650 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5651 ("ocaml-configurator" ,ocaml4.07-configurator)
5652 ("ocaml-core-kernel" ,ocaml4.07-core-kernel)
5653 ("ocaml-ppx-assert" ,ocaml4.07-ppx-assert)
5654 ("ocaml-ppx-jane" ,ocaml4.07-ppx-jane)
5de771a4 5655 ("ocaml-sexplib" ,(package-with-ocaml4.07 ocaml-sexplib))
87858bc5
JL
5656 ("ocaml-spawn" ,ocaml4.07-spawn)
5657 ("ocaml-stdio" ,ocaml4.07-stdio)
5658 ("ocaml-migrate-parsetree"
5659 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))
5660 ("ocaml-ppxlib" ,ocaml4.07-ppxlib)))
514b5420
JL
5661 (home-page "https://github.com/janestreet/core")
5662 (synopsis "Alternative to OCaml's standard library")
5663 (description "The Core suite of libraries is an alternative to OCaml's
5664standard library that was developed by Jane Street.")
5665 ;; Also contains parts of OCaml, relicensed to asl2.0, as permitted
5666 ;; by OCaml's license for consortium members (see THIRD-PARTY.txt).
5667 (license license:asl2.0)))
8baa5c8b 5668
87858bc5 5669(define-public ocaml4.07-core-kernel
8baa5c8b 5670 (package
87858bc5 5671 (name "ocaml4.07-core-kernel")
8baa5c8b
JL
5672 (version "0.11.1")
5673 (source (origin
5674 (method git-fetch)
5675 (uri (git-reference
b0e7b699 5676 (url "https://github.com/janestreet/core_kernel")
8baa5c8b
JL
5677 (commit (string-append "v" version))))
5678 (file-name (git-file-name name version))
5679 (sha256
5680 (base32
5681 "1dg7ygy7i64c5gaakb1cp1b26p9ks81vbxmb8fd7jff2q60j2z2g"))))
5682 (build-system dune-build-system)
5683 (arguments
5684 ;; Cyclic dependency with ocaml-core
87858bc5
JL
5685 `(#:tests? #f
5686 #:ocaml ,ocaml-4.07
339c752d
JL
5687 #:findlib ,ocaml4.07-findlib
5688 #:dune ,ocaml4.07-dune))
8baa5c8b 5689 (propagated-inputs
55c2851a 5690 `(("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5
JL
5691 ("ocaml-bin-prot" ,ocaml4.07-bin-prot)
5692 ("ocaml-configurator" ,ocaml4.07-configurator)
5693 ("ocaml-fieldslib" ,ocaml4.07-fieldslib)
f2df5a4b 5694 ("ocaml-jane-street-headers" ,ocaml4.07-jane-street-headers)
87858bc5
JL
5695 ("ocaml-ppx-assert" ,ocaml4.07-ppx-assert)
5696 ("ocaml-ppx-base" ,ocaml4.07-ppx-base)
5697 ("ocaml-ppx-hash" ,ocaml4.07-ppx-hash)
5698 ("ocaml-ppx-inline-test" ,ocaml4.07-ppx-inline-test)
5699 ("ocaml-ppx-jane" ,ocaml4.07-ppx-jane)
5700 ("ocaml-ppx-sexp-conv" ,ocaml4.07-ppx-sexp-conv)
5701 ("ocaml-ppx-sexp-message" ,ocaml4.07-ppx-sexp-message)
5de771a4 5702 ("ocaml-sexplib" ,(package-with-ocaml4.07 ocaml-sexplib))
87858bc5
JL
5703 ("ocaml-splittable-random" ,ocaml4.07-splittable-random)
5704 ("ocaml-stdio" ,ocaml4.07-stdio)
5705 ("ocaml-typerep" ,ocaml4.07-typerep)
5706 ("ocaml-variantslib" ,ocaml4.07-variantslib)
5707 ("ocaml-migrate-parsetree"
5708 ,(package-with-ocaml4.07 ocaml-migrate-parsetree))))
8baa5c8b
JL
5709 (properties `((upstream-name . "core_kernel")))
5710 (home-page "https://github.com/janestreet/core_kernel")
5711 (synopsis "Portable standard library for OCaml")
5712 (description "Core is an alternative to the OCaml standard library.
5713
5714Core_kernel is the system-independent part of Core. It is aimed for cases when
5715the full Core is not available, such as in Javascript.")
5716 (license (list
5717 ;; this package and parts of OCaml, relicensed by janestreet
5718 license:asl2.0
5719 ;; MLton and sjs
5720 license:expat))))
38089b54 5721
5722(define-public ocaml-markup
5723 (package
5724 (name "ocaml-markup")
ad6a0577 5725 (version "1.0.0")
38089b54 5726 (home-page "https://github.com/aantron/markup.ml")
5727 (source
5728 (origin
5729 (method git-fetch)
5730 (uri (git-reference
5731 (url (string-append home-page ".git"))
5732 (commit version)))
5733 (file-name (git-file-name name version))
5734 (sha256
5735 (base32
ad6a0577 5736 "09hkrf9pw6hpb9j06p5bddklpnjwdjpqza3bx2179l970yl67an9"))))
38089b54 5737 (build-system dune-build-system)
5aa573d8
JL
5738 (arguments
5739 `(#:package "markup"))
5740 (inputs
5741 `(("libev" ,libev)))
b3419c40
JL
5742 (propagated-inputs
5743 `(("ocaml-bisect-ppx" ,ocaml-bisect-ppx)
5744 ("ocaml-uchar" ,ocaml-uchar)
38089b54 5745 ("ocaml-uutf" ,ocaml-uutf)
5746 ("ocaml-lwt" ,ocaml-lwt)))
5aa573d8 5747 (native-inputs
ad6a0577 5748 `(("ocaml-ounit2" ,ocaml-ounit2)
5aa573d8 5749 ("pkg-config" ,pkg-config)))
ad6a0577 5750 (properties
5751 `((ocaml4.07-variant . ,(delay (package-with-ocaml4.07 ocaml-markup0.8.0)))))
38089b54 5752 (synopsis "Error-recovering functional HTML5 and XML parsers and writers")
5753 (description "Markup.ml provides an HTML parser and an XML parser. The
5754parsers are wrapped in a simple interface: they are functions that transform
5755byte streams to parsing signal streams. Streams can be manipulated in various
5756ways, such as processing by fold, filter, and map, assembly into DOM tree
5757structures, or serialization back to HTML or XML.
5758
5759Both parsers are based on their respective standards. The HTML parser, in
5760particular, is based on the state machines defined in HTML5.
5761
5762The parsers are error-recovering by default, and accept fragments. This makes
5763it very easy to get a best-effort parse of some input. The parsers can,
5764however, be easily configured to be strict, and to accept only full documents.
5765
5766Apart from this, the parsers are streaming (do not build up a document in
5767memory), non-blocking (can be used with threading libraries), lazy (do not
5768consume input unless the signal stream is being read), and process the input in
5769a single pass. They automatically detect the character encoding of the input
5770stream, and convert everything to UTF-8.")
5771 (license license:bsd-3)))
e2506afc 5772
ad6a0577 5773;; ocaml-markup 1.0.0 can not be built with old version of dune used in
5774;; package-with-ocaml4.07
5775(define-public ocaml-markup0.8.0
5776 (package
5777 (inherit ocaml-markup)
5778 (name "ocaml-markup")
5779 (version "0.8.0")
5780 (home-page "https://github.com/aantron/markup.ml")
5781 (source
5782 (origin
5783 (method git-fetch)
5784 (uri (git-reference
5785 (url (string-append home-page ".git"))
5786 (commit version)))
5787 (file-name (git-file-name name version))
5788 (sha256
5789 (base32
5790 "0aif4abvfmi9xc1pvw5n5rbm6rzkkpsxyvdn0lanr33rjpvkwdlm"))))
5791 (properties '())))
5792
e2506afc 5793(define-public ocaml-tyxml
5794 (package
5795 (name "ocaml-tyxml")
1a5bca9b 5796 (version "4.4.0")
e2506afc 5797 (source
5798 (origin
5799 (method git-fetch)
5800 (uri (git-reference
b0e7b699 5801 (url "https://github.com/ocsigen/tyxml")
e2506afc 5802 (commit version)))
5803 (file-name (git-file-name name version))
5804 (sha256
5805 (base32
1a5bca9b 5806 "1hw4phyadcfgywgh5sj87i76gp56qwxzwlcpfdwjbf6ggag9clmd"))))
e2506afc 5807 (build-system dune-build-system)
5808 (inputs
5809 `(("ocaml-re" ,ocaml-re)
5810 ("ocaml-seq" ,ocaml-seq)
5811 ("ocaml-uutf" ,ocaml-uutf)
5812 ("ocaml-ppx-tools-versioned" ,ocaml-ppx-tools-versioned)
5813 ("ocaml-markup" ,ocaml-markup)))
5814 (native-inputs
5815 `(("ocaml-alcotest" ,ocaml-alcotest)))
32fd3e9c 5816 (arguments `(#:package "tyxml"))
e2506afc 5817 (home-page "https://github.com/ocsigen/tyxml/")
5818 (synopsis "TyXML is a library for building correct HTML and SVG documents")
5819 (description "TyXML provides a set of convenient combinators that uses the
5820OCaml type system to ensure the validity of the generated documents. TyXML can
5821be used with any representation of HTML and SVG: the textual one, provided
5822directly by this package, or DOM trees (@code{js_of_ocaml-tyxml}) virtual DOM
5823(@code{virtual-dom}) and reactive or replicated trees (@code{eliom}). You can
5824also create your own representation and use it to instantiate a new set of
5825combinators.")
5826 (license license:lgpl2.1)))
908a2ee0 5827
5828(define-public ocaml-bisect-ppx
5829 (package
5830 (name "ocaml-bisect-ppx")
2e038f36 5831 (version "1.4.2")
908a2ee0 5832 (source
5833 (origin
5834 (method git-fetch)
5835 (uri (git-reference
b0e7b699 5836 (url "https://github.com/aantron/bisect_ppx")
908a2ee0 5837 (commit version)))
5838 (file-name (git-file-name name version))
5839 (sha256
5840 (base32
2e038f36 5841 "0900vli5kw7s5kdam0n4cqsfsfqb7mdb3azn3i55595gilg1vyn8"))))
908a2ee0 5842 (build-system dune-build-system)
b3419c40 5843 (propagated-inputs
908a2ee0 5844 `(("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)
5845 ("ocaml-ppx-tools-versioned" ,ocaml-ppx-tools-versioned)
5846 ("ocaml-ounit" ,ocaml-ounit)))
8cc6a876
JL
5847 (arguments
5848 `(#:phases
5849 (modify-phases %standard-phases
5850 (add-before 'build 'fix-deprecated
5851 (lambda _
5852 ;; Fixed upstream in 22dd1ad9a0c9629f60599c22d82c6488394d6d32, but
5853 ;; not in a release yet.
5854 (substitute* "src/ppx/instrument.ml"
5855 (("module Ast = Ast_405")
5856 "module Ast = Migrate_parsetree.Ast_405
5857module Ast_405 = Ast"))
5858 #t)))))
908a2ee0 5859 (home-page "https://github.com/aantron/bisect_ppx")
5860 (synopsis "Code coverage for OCaml")
5861 (description "Bisect_ppx helps you test thoroughly. It is a small
5862preprocessor that inserts instrumentation at places in your code, such as
5863if-then-else and match expressions. After you run tests, Bisect_ppx gives a
5864nice HTML report showing which places were visited and which were missed.
5865
5866Usage is simple - add package bisect_ppx when building tests, run your tests,
5867then run the Bisect_ppx report tool on the generated visitation files.")
5868 (license license:mpl2.0)))
2f8e77be 5869
9e02c4ac 5870(define-public ocaml-odoc
2f8e77be 5871 (package
9e02c4ac 5872 (name "ocaml-odoc")
5873 (version "1.5.2")
2f8e77be 5874 (source
5875 (origin
5876 (method git-fetch)
5877 (uri (git-reference
5878 (url "https://github.com/ocaml/odoc")
5879 (commit version)))
5880 (file-name (git-file-name name version))
5881 (sha256
9e02c4ac 5882 (base32 "0fqfyz48q7ss5bc4c5phmp4s3ka3vc08b8gfk8fvyryvb4bq27jm"))))
2f8e77be 5883 (build-system dune-build-system)
5884 (inputs
9e02c4ac 5885 `(("ocaml-alcotest" ,ocaml-alcotest)
5886 ("ocaml-markup" ,ocaml-markup)
5887 ("ocaml-sexplib" ,ocaml-sexplib)
5888 ("ocaml-re" ,ocaml-re)
5889 ("ocaml-uutf" ,ocaml-uutf)))
2f8e77be 5890 (native-inputs
9e02c4ac 5891 `(("ocaml-astring" ,ocaml-astring)
5892 ("ocaml-cmdliner" ,ocaml-cmdliner)
5893 ("ocaml-cppo" ,ocaml-cppo)
5894 ("ocaml-fpath" ,ocaml-fpath)
5895 ("ocaml-result" ,ocaml-result)
5896 ("ocaml-tyxml" ,ocaml-tyxml)
5897 ("ocaml-bisect-ppx" ,ocaml-bisect-ppx)
5898 ("tidy-html" ,tidy-html)))
5899 (properties `((ocaml4.07-variant . ,(delay ocaml4.07-odoc))))
2f8e77be 5900 (home-page "https://github.com/ocaml/odoc")
5901 (synopsis "OCaml documentation generator")
5902 (description "Odoc is a documentation generator for OCaml. It reads
5903@emph{doc comments}, delimited with @code{(** ... *)}, and outputs
5904@acronym{HTML}.
5905
5906Text inside doc comments is marked up in ocamldoc syntax. Odoc's main
5907advantage over ocamldoc is an accurate cross-referencer, which handles the
5908complexity of the OCaml module system.")
5909 (license license:isc)))
eb1ebabf 5910
9e02c4ac 5911;; version 1.5.2 requires ocaml-markdown 1.0.0 which does not compile
5912;; with old version of dune used in package-with-ocaml4.07
5913(define-public ocaml4.07-odoc
5914 (package-with-ocaml4.07
5915 (package
5916 (inherit ocaml-odoc)
5917 (name "ocaml-odoc")
5918 (version "1.5.1")
5919 (source
5920 (origin
5921 (method git-fetch)
5922 (uri (git-reference
5923 (url "https://github.com/ocaml/odoc")
5924 (commit version)))
5925 (file-name (git-file-name name version))
5926 (sha256
5927 (base32 "0z2nisg1vb5xlk41hqw8drvj90v52wli7zvnih6a844cg6xsvvj2"))))
5928 (properties '()))))
5929
87858bc5 5930(define-public ocaml4.07-fftw3
2e26dd69 5931 (package
87858bc5 5932 (name "ocaml4.07-fftw3")
2e26dd69
BG
5933 (version "0.8.4")
5934 (source
5935 (origin
5936 (method git-fetch)
5937 (uri (git-reference
b0e7b699 5938 (url "https://github.com/Chris00/fftw-ocaml")
2e26dd69
BG
5939 (commit version)))
5940 (file-name (git-file-name name version))
5941 (sha256
5942 (base32
5943 "0l66yagjkwdcib6q55wd8wiap50vi23qiahkghlvm28z7nvbclfk"))))
5944 (build-system dune-build-system)
5945 (arguments
5946 `(#:tests? #t
87858bc5
JL
5947 #:test-target "tests"
5948 #:ocaml ,ocaml-4.07
5949 #:findlib ,ocaml4.07-findlib
5950 #:dune ,ocaml4.07-dune))
2e26dd69
BG
5951 (propagated-inputs
5952 `(("fftw" ,fftw)
5953 ("fftwf" ,fftwf)))
5954 (native-inputs
87858bc5
JL
5955 `(("ocaml-cppo" ,(package-with-ocaml4.07 ocaml-cppo))
5956 ("ocaml-lacaml" ,ocaml4.07-lacaml)))
2e26dd69
BG
5957 (home-page
5958 "https://github.com/Chris00/fftw-ocaml")
5959 (synopsis
5960 "Bindings to FFTW3")
5961 (description
5962 "Bindings providing OCaml support for the seminal Fast Fourier Transform
5963library FFTW.")
5964 (license license:lgpl2.1))) ; with static linking exception.
5965
87858bc5 5966(define-public ocaml4.07-lacaml
eb1ebabf 5967 (package
87858bc5 5968 (name "ocaml4.07-lacaml")
eb1ebabf
BG
5969 (version "11.0.5")
5970 (source
5971 (origin
5972 (method git-fetch)
5973 (uri (git-reference
b0e7b699 5974 (url "https://github.com/mmottl/lacaml")
eb1ebabf
BG
5975 (commit version)))
5976 (file-name (git-file-name name version))
5977 (sha256
5978 (base32
5979 "180yb79a3qgx067qcpm50q12hrimjygf06rgkzbish9d1zfm670c"))))
5980 (build-system dune-build-system)
5981 (arguments
87858bc5
JL
5982 `(#:tests? #f ; No test target.
5983 #:ocaml ,ocaml-4.07
5984 #:findlib ,ocaml4.07-findlib
5985 #:dune ,ocaml4.07-dune))
eb1ebabf
BG
5986 (native-inputs
5987 `(("openblas" ,openblas)
5988 ("lapack" ,lapack)
55c2851a 5989 ("ocaml-base" ,(package-with-ocaml4.07 ocaml-base))
87858bc5 5990 ("ocaml-stdio" ,ocaml4.07-stdio)))
eb1ebabf
BG
5991 (home-page "https://mmottl.github.io/lacaml/")
5992 (synopsis
5993 "OCaml-bindings to BLAS and LAPACK")
5994 (description
5995 "Lacaml interfaces the BLAS-library (Basic Linear Algebra Subroutines) and
5996LAPACK-library (Linear Algebra routines). It also contains many additional
5997convenience functions for vectors and matrices.")
5998 (license license:lgpl2.1)))
136919ba
BG
5999
6000(define-public ocaml-cairo2
6001 (package
6002 (name "ocaml-cairo2")
6003 (version "0.6.1")
6004 (source (origin
6005 (method git-fetch)
6006 (uri (git-reference
b0e7b699 6007 (url "https://github.com/Chris00/ocaml-cairo")
136919ba
BG
6008 (commit version)))
6009 (file-name (git-file-name name version))
0ada181a
BG
6010 (patches
6011 (search-patches
6012 ;; NOTE: This patch will be obsolete on the
6013 ;; next tagged release. Remove it at that
6014 ;; point.
6015 "ocaml-cairo2-caml_ba_array-fix.patch"))
136919ba
BG
6016 (sha256
6017 (base32
6018 "0wzysis9fa850s68qh8vrvqc6svgllhwra3kzll2ibv0wmdqrich"))))
6019 (build-system dune-build-system)
6020 (arguments
0ada181a 6021 `(#:test-target "tests"))
136919ba
BG
6022 (inputs
6023 `(("cairo" ,cairo)
6024 ("gtk+-2" ,gtk+-2)
6025 ("lablgtk" ,lablgtk)))
6026 (native-inputs
6027 `(("pkg-config" ,pkg-config)))
6028 (home-page "https://github.com/Chris00/ocaml-cairo")
6029 (synopsis "Binding to Cairo, a 2D Vector Graphics Library")
6030 (description "Ocaml-cairo2 is a binding to Cairo, a 2D graphics library
6031with support for multiple output devices. Currently supported output targets
6032include the X Window System, Quartz, Win32, image buffers, PostScript, PDF,
6033and SVG file output.")
6034 (license license:lgpl3+)))
d977e243 6035
c0bfff6a 6036(define-public ocaml-version
6037 (package
6038 (name "ocaml-version")
6039 (version "3.0.0")
6040 (source
6041 (origin
6042 (method git-fetch)
6043 (uri (git-reference
6044 (url "https://github.com/ocurrent/ocaml-version")
6045 (commit (string-append "v" version))))
6046 (file-name (git-file-name name version))
6047 (sha256
6048 (base32
6049 "13770mp6adjjbx63zsbh6506dqxz241chw8c3y403sxpw45hnaw6"))))
6050 (build-system dune-build-system)
6051 (arguments `(#:tests? #f)) ; no tests
6052 (home-page
6053 "https://github.com/ocurrent/ocaml-version")
6054 (synopsis
6055 "Manipulate, parse and generate OCaml compiler version strings")
6056 (description
6057 "This library provides facilities to parse version numbers of the OCaml
6058compiler, and enumerates the various official OCaml releases and configuration
6059variants.")
6060 (license license:isc)))
6061
b1354475 6062(define-public ocaml-mdx
6063 (package
6064 (name "ocaml-mdx")
6065 (version "1.7.0")
6066 (source (origin
6067 (method git-fetch)
6068 (uri (git-reference
6069 (url "https://github.com/realworldocaml/mdx")
6070 (commit version)))
6071 (file-name (git-file-name name version))
6072 (sha256
6073 (base32
6074 "10avyv99xkfqdq3gmq8gps770jpibbfslg97sbhgmp0dpwikz49d"))))
6075 (build-system dune-build-system)
6076 (inputs
6077 `(("ocaml-fmt" ,ocaml-fmt)
6078 ("ocaml-astring" ,ocaml-astring)
6079 ("ocaml-logs" ,ocaml-logs)
6080 ("ocaml-cmdliner" ,ocaml-cmdliner)
6081 ("ocaml-re" ,ocaml-re)
6082 ("ocaml-result" ,ocaml-result)
6083 ("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)
6084 ("ocaml-odoc" ,ocaml-odoc)
6085 ("ocaml-version" ,ocaml-version)))
6086 (native-inputs
6087 `(("ocaml-cppo" ,ocaml-cppo)
6088 ("ocaml-lwt" ,ocaml-lwt)
6089 ("ocaml-alcotest" ,ocaml-alcotest)))
6090 (home-page
6091 "https://github.com/realworldocaml/mdx")
6092 (synopsis
6093 "Executable code blocks inside markdown files")
6094 (description
6095 "@code{ocaml-mdx} allows to execute code blocks inside markdown files.
6096There are (currently) two sub-commands, corresponding
6097to two modes of operations: pre-processing (@code{ocaml-mdx pp})
6098and tests (@code{ocaml-mdx test}]).
6099
6100The pre-processor mode allows to mix documentation and code,
6101and to practice @dfn{literate programming} using markdown and OCaml.
6102
6103The test mode allows to ensure that shell scripts and OCaml fragments
6104in the documentation always stays up-to-date.
6105
6106@code{ocaml-mdx} is released as two binaries called @code{ocaml-mdx} and
6107@code{mdx} which are the same, mdx being the deprecated name, kept for now for
6108compatibility.")
6109 (license license:isc)))
6110
d977e243
BG
6111(define-public lablgtk3
6112 (package
6113 (name "lablgtk")
cab2ddb4 6114 (version "3.1.1")
d977e243
BG
6115 (source (origin
6116 (method git-fetch)
6117 (uri (git-reference
b0e7b699 6118 (url "https://github.com/garrigue/lablgtk")
d977e243
BG
6119 (commit version)))
6120 (file-name (git-file-name name version))
6121 (sha256
6122 (base32
cab2ddb4 6123 "11qfc39cmwfwfpwmjh6wh98zwdv6p73bv8hqwcsss869vs1r7gmn"))))
d977e243
BG
6124 (build-system dune-build-system)
6125 (arguments
6126 `(#:tests? #t
6127 #:test-target "."
6128 #:phases
6129 (modify-phases %standard-phases
6130 (add-before 'build 'make-writable
6131 (lambda _
6132 (for-each (lambda (file)
6133 (chmod file #o644))
6134 (find-files "." "."))
6135 #t)))))
6136 (propagated-inputs
6137 `(("ocaml-cairo2" ,ocaml-cairo2)))
6138 (inputs
6139 `(("camlp5" ,camlp5)
6140 ("gtk+" ,gtk+)
6141 ("gtksourceview-3" ,gtksourceview-3)
6142 ("gtkspell3" ,gtkspell3)))
6143 (native-inputs
6144 `(("pkg-config" ,pkg-config)))
6145 (home-page "https://github.com/garrigue/lablgtk")
6146 (synopsis "OCaml interface to GTK+3")
6147 (description "LablGtk is an OCaml interface to GTK+ 1.2, 2.x and 3.x. It
6148provides a strongly-typed object-oriented interface that is compatible with the
6149dynamic typing of GTK+. Most widgets and methods are available. LablGtk
6150also provides bindings to gdk-pixbuf, the GLArea widget (in combination with
6151LablGL), gnomecanvas, gnomeui, gtksourceview, gtkspell, libglade (and it can
6152generate OCaml code from .glade files), libpanel, librsvg and quartz.")
6153 ;; Version 2 only, with linking exception.
6154 (license license:lgpl2.0)))
19018732 6155
6156(define-public ocaml-reactivedata
6157 ;; Future releases will use dune.
6158 (package
6159 (name "ocaml-reactivedata")
6160 (version "0.2.2")
6161 (source (origin
6162 (method git-fetch)
6163 (uri (git-reference
6164 (url "https://github.com/ocsigen/reactiveData")
6165 (commit version)))
6166 (file-name (git-file-name name version))
6167 (sha256
6168 (base32
6169 "0l5z0fsckqkywjbn2nwy3s55h85yx8scc4hq9qzr9ig3hrq1mfb0"))))
6170 (arguments
6171 `(#:phases
6172 (modify-phases %standard-phases
6173 (delete 'configure)
6174 (add-before 'build 'fix-deprecated
6175 (lambda _
6176 (substitute*
6177 "src/reactiveData.ml"
6178 (("Pervasives.compare") "compare"))
6179 #t))
6180 (add-before 'install 'forget-makefile
6181 ;; Ensure we use opam to install files
6182 (lambda _
6183 (delete-file "Makefile")
6184 #t)))))
6185 (build-system ocaml-build-system)
6186 (properties `((upstream-name . "reactiveData")))
6187 (native-inputs
6188 `(("ocamlbuild" ,ocamlbuild)
6189 ("opam" ,opam)))
6190 (propagated-inputs
6191 `(("ocaml-react" ,ocaml-react)))
6192 (home-page "https://github.com/ocsigen/reactiveData")
6193 (synopsis "Declarative events and signals for OCaml")
6194 (description
6195 "React is an OCaml module for functional reactive programming (FRP). It
6196provides support to program with time varying values: declarative events and
6197 signals. React doesn't define any primitive event or signal, it lets the
6198client chooses the concrete timeline.")
6199 (license license:lgpl2.1+)))