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