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