gnu: igt-gpu-tools: Don't use NAME in source URI.
[jackhill/guix/guix.git] / gnu / packages / ocaml.scm
CommitLineData
d192efae
CR
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
69b8f08c 3;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
b9d8756b 4;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
c900f843 5;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
90907a22 6;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
a747baba 7;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
fdb3fba3 8;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
564cf93f 9;;; Copyright © 2016-2018 Julien Lepiller <julien@lepiller.eu>
ec436717 10;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
c959a774 11;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
2b4d2a4d 12;;; Copyright © 2018 Peter Kreye <kreyepr@gmail.com>
cdcbccd1 13;;; Copyright © 2018, 2019 Gabriel Hondet <gabrielhondet@gmail.com>
59a07504 14;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
fa5d6e4c 15;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
d192efae
CR
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)
d192efae 33 #:use-module (gnu packages)
44c23cb8 34 #:use-module (gnu packages autotools)
0705f79c 35 #:use-module (gnu packages base)
88191ace
JL
36 #:use-module (gnu packages bison)
37 #:use-module (gnu packages boost)
69b8f08c 38 #:use-module (gnu packages compression)
1ff755d1
DC
39 #:use-module (gnu packages curl)
40 #:use-module (gnu packages emacs)
eeb883cb 41 #:use-module (gnu packages emacs-xyz)
88191ace 42 #:use-module (gnu packages flex)
1ff755d1 43 #:use-module (gnu packages gcc)
90907a22 44 #:use-module (gnu packages ghostscript)
1fdfbadf 45 #:use-module (gnu packages glib)
1ff755d1
DC
46 #:use-module (gnu packages gnome)
47 #:use-module (gnu packages gtk)
1fdfbadf 48 #:use-module (gnu packages libevent)
69d08bb1 49 #:use-module (gnu packages libffi)
cd1562ef 50 #:use-module (gnu packages llvm)
a747baba 51 #:use-module (gnu packages m4)
59a07504 52 #:use-module (gnu packages maths)
ddf2b503 53 #:use-module (gnu packages multiprecision)
a34cedc4 54 #:use-module (gnu packages ncurses)
f8a12de1 55 #:use-module (gnu packages pcre)
1ff755d1
DC
56 #:use-module (gnu packages perl)
57 #:use-module (gnu packages pkg-config)
fc3d70ae 58 #:use-module (gnu packages protobuf)
1ff755d1 59 #:use-module (gnu packages python)
a9e9fd15 60 #:use-module (gnu packages sdl)
cd0322a3 61 #:use-module (gnu packages sqlite)
1ff755d1
DC
62 #:use-module (gnu packages tex)
63 #:use-module (gnu packages texinfo)
44c23cb8 64 #:use-module (gnu packages time)
37f17e2a 65 #:use-module (gnu packages tls)
a34cedc4 66 #:use-module (gnu packages version-control)
7a1d25c4 67 #:use-module (gnu packages virtualization)
c5196ac7 68 #:use-module (gnu packages web-browsers)
7a76b4af 69 #:use-module (gnu packages xml)
1ff755d1 70 #:use-module (gnu packages xorg)
effc8325 71 #:use-module (guix build-system dune)
db1eb632 72 #:use-module (guix build-system emacs)
1ff755d1 73 #:use-module (guix build-system gnu)
7a76b4af 74 #:use-module (guix build-system ocaml)
1ff755d1 75 #:use-module (guix download)
8ae540a2 76 #:use-module (guix git-download)
1ff755d1
DC
77 #:use-module ((guix licenses) #:prefix license:)
78 #:use-module (guix packages)
79 #:use-module (guix svn-download)
1345231c 80 #:use-module (guix utils)
0ad5f809 81 #:use-module ((srfi srfi-1) #:hide (zip)))
d192efae 82
56f73ead
JL
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
f95ebba5
JL
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")
6cbee49d
MW
112 "--libdir $(LIBDIR) --prefix"))
113 #t)))))
f95ebba5
JL
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
564cf93f 131(define-public ocaml-4.02
d192efae
CR
132 (package
133 (name "ocaml")
be78e52c 134 (version "4.02.3")
d192efae 135 (source (origin
69b8f08c
MW
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
3854f3d7 143 "1qwwvy8nzd87hk8rd9sm667nppakiapnx4ypdwcrlnav2dz6kil3"))
8bd10c10
JL
144 (patches
145 (search-patches
146 "ocaml-CVE-2015-8869.patch"
6a8d3381
JL
147 "ocaml-Add-a-.file-directive.patch"
148 "ocaml-enable-ocamldoc-reproducibility.patch"))))
d192efae 149 (build-system gnu-build-system)
6372e336
JN
150 (native-search-paths
151 (list (search-path-specification
152 (variable "OCAMLPATH")
e6876cb9 153 (files (list "lib/ocaml" "lib/ocaml/site-lib")))
796a17ab
JL
154 (search-path-specification
155 (variable "CAML_LD_LIBRARY_PATH")
564cf93f
JL
156 (files (list "lib/ocaml/site-lib/stubslibs"
157 "lib/ocaml/site-lib/stublibs")))))
69b8f08c
MW
158 (native-inputs
159 `(("perl" ,perl)
160 ("pkg-config" ,pkg-config)))
161 (inputs
162 `(("libx11" ,libx11)
2f6d3e41 163 ;; For libiberty, needed for objdump support.
e1f32cf1 164 ("gcc:lib" ,(canonical-package gcc) "lib")
2f6d3e41 165 ("zlib" ,zlib))) ;also needed for objdump support
d192efae 166 (arguments
69b8f08c
MW
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
2b1f7b83
DC
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) "\
69b8f08c 184patch-/bin/sh-references: ~a: changing `\"/bin/sh\"' to `~a'~%"
2b1f7b83
DC
185 file quoted-sh)
186 quoted-sh))))
187 (find-files "." "\\.ml$"))
188 #t))))
69b8f08c 189 (replace 'configure
2b1f7b83
DC
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).
bb29e855
RW
195 (invoke "./configure"
196 "--prefix" out
197 "--mandir" mandir))))
69b8f08c 198 (replace 'build
2b1f7b83 199 (lambda _
bb29e855
RW
200 (invoke "make" "-j" (number->string (parallel-job-count))
201 "world.opt")))
69b8f08c
MW
202 (delete 'check)
203 (add-after 'install 'check
2b1f7b83
DC
204 (lambda _
205 (with-directory-excursion "testsuite"
bb29e855 206 (invoke "make" "all"))))
69b8f08c 207 (add-before 'check 'prepare-socket-test
2b1f7b83
DC
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))))))
69b8f08c 225 (home-page "https://ocaml.org/")
d192efae
CR
226 (synopsis "The OCaml programming language")
227 (description
228 "OCaml is a general purpose industrial-strength programming language with
35b9e423 229an emphasis on expressiveness and safety. Developed for more than 20 years at
d192efae
CR
230Inria it benefits from one of the most advanced type systems and supports
231functional, imperative and object-oriented styles of programming.")
69b8f08c
MW
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.
d8e0a08c 235 (license (list license:qpl license:lgpl2.0))))
a34cedc4 236
ec436717
BW
237(define-public ocaml-4.01
238 (package
564cf93f 239 (inherit ocaml-4.02)
ec436717
BW
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
564cf93f 251 (substitute-keyword-arguments (package-arguments ocaml-4.02)
ec436717
BW
252 ((#:phases phases)
253 `(modify-phases ,phases
254 (replace 'build
255 (lambda _
256 ;; Specifying '-j' at all causes the build to fail.
fa5d6e4c 257 (invoke "make" "world.opt")))
c661f25a
EF
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 '())
ec436717
BW
269 (replace 'check
270 (lambda _
271 (with-directory-excursion "testsuite"
fa5d6e4c 272 (invoke "make" "all"
ec436717 273 (string-append
fa5d6e4c 274 "TOPDIR=" (getcwd) "/..")))))))))))
ec436717 275
564cf93f
JL
276(define-public ocaml-4.07
277 (package
278 (inherit ocaml-4.02)
6a3cf938 279 (version "4.07.1")
564cf93f
JL
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
6a3cf938 288 "1f07hgj5k45cylj1q3k5mk8yi02cwzx849b1fwnwia8xlcfqpr6z"))))
564cf93f
JL
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
912f4400
JL
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
341for building OCaml library and programs.")
342 (license license:lgpl2.1+)))
564cf93f 343
a34cedc4
LC
344(define-public opam
345 (package
346 (name "opam")
7a1d25c4 347 (version "2.0.1")
a34cedc4
LC
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
7a1d25c4 359 "0z6r9qr4awcdn7wyrl5y5jm34jsjlnzd00py893f1hd0c6vg3xw1"))))
a34cedc4
LC
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.
4533cd73
EB
367 #:make-flags `("TERM=screen"
368 ,(string-append "SHELL="
369 (assoc-ref %build-inputs "bash")
370 "/bin/sh"))
a34cedc4
LC
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
2385cab1
EB
377 #:phases (modify-phases %standard-phases
378 (add-before 'build 'pre-build
379 (lambda* (#:key inputs make-flags #:allow-other-keys)
7a1d25c4
JL
380 (let ((bash (assoc-ref inputs "bash"))
381 (bwrap (string-append (assoc-ref inputs "bubblewrap")
382 "/bin/bwrap")))
2385cab1
EB
383 (substitute* "src/core/opamSystem.ml"
384 (("\"/bin/sh\"")
7a1d25c4
JL
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))
2a6ba9ff
JL
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"))
7a1d25c4
JL
398 (substitute* "src/client/opamInitDefaults.ml"
399 (("\"bwrap\"") (string-append "\"" bwrap "\"")))
4533cd73 400 ;; Build dependencies
7a1d25c4
JL
401 (apply invoke "make" "lib-ext" make-flags)
402 #t)))
2385cab1
EB
403 (add-before 'check 'pre-check
404 (lambda _
405 (setenv "HOME" (getcwd))
7a1d25c4
JL
406 (invoke "git" "config" "--global" "user.email" "guix@gnu.org")
407 (invoke "git" "config" "--global" "user.name" "Guix")
408 #t)))))
a34cedc4
LC
409 (native-inputs
410 `(("git" ,git) ;for the tests
4533cd73
EB
411 ("python" ,python) ;for the tests
412 ("camlp4" ,camlp4)))
a34cedc4
LC
413 (inputs
414 `(("ocaml" ,ocaml)
415 ("ncurses" ,ncurses)
7a1d25c4
JL
416 ("curl" ,curl)
417 ("bubblewrap" ,bubblewrap)))
a34cedc4
LC
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
422simultaneous compiler installations, flexible package constraints, and a
423Git-friendly development workflow.")
424
425 ;; The 'LICENSE' file waives some requirements compared to LGPLv3.
d8e0a08c 426 (license license:lgpl3)))
83f4dc36 427
564cf93f 428(define-public camlp4-4.02
492ee988
LC
429 (package
430 (name "camlp4")
006faa35 431 (version "4.02+6")
492ee988
LC
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
006faa35 438 "0icdfzhsbgf89925gc8gl3fm8z2xzszzlib0v9dj5wyzkyv3a342"))
492ee988
LC
439 (file-name (string-append name "-" version ".tar.gz"))))
440 (build-system gnu-build-system)
564cf93f 441 (native-inputs `(("ocaml" ,ocaml-4.02)
0d1c0660 442 ("which" ,which)))
564cf93f 443 (inputs `(("ocaml" ,ocaml-4.02)))
492ee988
LC
444 (arguments
445 '(#:tests? #f ;no documented test target
e0ddaa8b
JL
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")
2c0234e7
RW
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")))))))
492ee988
LC
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
474programming languages. It provides a set of OCaml libraries that are used to
475define grammars as well as loadable syntax extensions of such grammars.
476Camlp4 stands for Caml Preprocessor and Pretty-Printer and one of its most
477important applications is the definition of domain-specific extensions of the
478syntax 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.
d8e0a08c 482 (license license:lgpl2.0)))
492ee988 483
564cf93f
JL
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
83f4dc36
MW
508(define-public camlp5
509 (package
510 (name "camlp5")
fa45b22d 511 (version "7.07")
83f4dc36
MW
512 (source (origin
513 (method url-fetch)
564cf93f
JL
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"))
83f4dc36
MW
517 (sha256
518 (base32
fa45b22d 519 "148r6p93xlxi6v7kbsqv8i70r6av04cyn0109pwss5xj6fw97i52"))))
83f4dc36
MW
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).
402dedf8
MW
533 (invoke "./configure"
534 "--prefix" out
535 "--mandir" mandir))))
564cf93f
JL
536 (add-before 'build 'fix-/bin-references
537 (lambda _
538 (substitute* "config/Makefile"
539 (("/bin/rm") "rm"))
540 #t))
83f4dc36
MW
541 (replace 'build
542 (lambda _
402dedf8
MW
543 (invoke "make" "-j" (number->string
544 (parallel-job-count))
545 "world.opt")))
07b4cd3a
JL
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")
402dedf8
MW
550 "/lib/ocaml/camlp5/"))
551 #t)))))
83f4dc36
MW
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
556tools for syntax (Stream Parsers and Grammars) and the ability to modify the
557concrete syntax of the language (Quotations, Syntax Extensions).")
558 ;; Most files are distributed under bsd-3, but ocaml_stuff/* is under qpl.
d8e0a08c 559 (license (list license:bsd-3 license:qpl))))
d6b7b5ed
MW
560
561(define-public hevea
562 (package
563 (name "hevea")
564cf93f 564 (version "2.32")
d6b7b5ed
MW
565 (source (origin
566 (method url-fetch)
8f26f239 567 (uri (string-append "http://hevea.inria.fr/old/"
d6b7b5ed
MW
568 name "-" version ".tar.gz"))
569 (sha256
570 (base32
564cf93f 571 "1s4yqphfcr1pf5mcj5c84mvmd107k525iiym5jdwsxz0ka0ccmfy"))))
d6b7b5ed
MW
572 (build-system gnu-build-system)
573 (inputs
574 `(("ocaml" ,ocaml)))
564cf93f
JL
575 (native-inputs
576 `(("ocamlbuild" ,ocamlbuild)))
d6b7b5ed
MW
577 (arguments
578 `(#:tests? #f ; no test suite
579 #:make-flags (list (string-append "PREFIX=" %output))
580 #:phases (modify-phases %standard-phases
f5a8491b
EB
581 (delete 'configure)
582 (add-before 'build 'patch-/bin/sh
583 (lambda _
584 (substitute* "_tags"
585 (("/bin/sh") (which "sh")))
586 #t)))))
d6b7b5ed
MW
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
591written in Objective Caml.")
d8e0a08c 592 (license license:qpl)))
1973183b 593
564cf93f
JL
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
634arbitrary-precision integer and rational arithmetic that used to be part of
635the OCaml core distribution.")
636 (license license:lgpl2.1+))); with linking exception
637
833ade67
OP
638(define-public emacs-tuareg
639 (package
640 (name "emacs-tuareg")
564cf93f 641 (version "2.2.0")
833ade67
OP
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
564cf93f 649 "1ynpfc170f9jqx49biji9npfkvfpflbm29xf24wc7fnxxayr49ig"))))
833ade67
OP
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
674parts of the code, to run an OCaml REPL, and to run the OCaml debugger within
675Emacs.")
676 (license license:gpl2+)))
677
e31b75f2
DC
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)))
564cf93f
JL
693 (native-inputs
694 `(("ocamlbuild" ,ocamlbuild)))
e31b75f2
DC
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)))))
564cf93f
JL
705 (properties
706 `((ocaml4.02-variant . ,(delay ocaml4.02-menhir))))
e31b75f2
DC
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
710specifications, decorated with semantic actions expressed in the OCaml
711programming language into parsers, again expressed in OCaml. It is based on
712Knuth’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.
d8e0a08c 716 (license (list license:gpl2+ license:qpl))))
e31b75f2 717
564cf93f
JL
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
3573b634
AE
725(define-public lablgtk
726 (package
727 (name "lablgtk")
564cf93f 728 (version "2.18.6")
56f73ead
JL
729 (source (origin
730 (method url-fetch)
564cf93f 731 (uri (ocaml-forge-uri name version 1726))
56f73ead
JL
732 (sha256
733 (base32
564cf93f 734 "1y38fdvswy6hmppm65qvgdk4pb3ghhnvz7n4ialf46340r1s5p2d"))))
3573b634 735 (build-system gnu-build-system)
564cf93f
JL
736 (properties
737 `((ocaml4.02-variant . ,(delay ocaml4.02-lablgtk))))
3573b634
AE
738 (native-inputs
739 `(("camlp4" ,camlp4)
740 ("ocaml" ,ocaml)
8afd1958 741 ("findlib" ,ocaml-findlib)
3573b634
AE
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)
c900f843 747 ("gtksourceview" ,gtksourceview-2)
3573b634
AE
748 ("libgnomecanvas" ,libgnomecanvas)
749 ("libgnomeui" ,libgnomeui)
750 ("libglade" ,libglade)
751 ("librsvg" ,librsvg)))
752 (arguments
753 `(#:tests? #f ; no check target
ef89cb42 754
8c1088bb 755 ;; opt: also install cmxa files
8afd1958
JL
756 #:make-flags (list "all" "opt"
757 (string-append "FINDLIBDIR="
758 (assoc-ref %outputs "out")
759 "/lib/ocaml"))
ef89cb42
LC
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
3573b634
AE
764 #:phases
765 (modify-phases %standard-phases
8afd1958 766 (add-before 'install 'prepare-install
3573b634
AE
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.
8afd1958 771 (mkdir-p (string-append out "/lib/ocaml"))
3573b634
AE
772 (substitute* "config.make"
773 ((ocaml) out))
3573b634
AE
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
779a strongly-typed object-oriented interface that is compatible with the
780dynamic typing of GTK+. Most widgets and methods are available. LablGtk
781also provides bindings to
782gdk-pixbuf, the GLArea widget (in combination with LablGL), gnomecanvas,
783gnomeui, gtksourceview, gtkspell,
784libglade (and it an generate OCaml code from .glade files),
785libpanel, librsvg and quartz.")
d8e0a08c 786 (license license:lgpl2.1)))
3573b634 787
564cf93f
JL
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
b9d8756b
AE
805(define-public unison
806 (package
807 (name "unison")
6c8666b4
AE
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"))))
b9d8756b 818 (build-system gnu-build-system)
90907a22
EB
819 (outputs '("out"
820 "doc")) ; 1.9 MiB of documentation
b9d8756b 821 (native-inputs
6c8666b4 822 `(("ocaml" ,ocaml)
90907a22 823 ;; For documentation
2be896de 824 ("ghostscript" ,ghostscript)
68139bce 825 ("texlive" ,texlive-tiny)
90907a22 826 ("hevea" ,hevea)
564cf93f
JL
827 ("lynx" ,lynx)
828 ("which" ,which)))
b9d8756b
AE
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
90907a22 845 #t)))
31d968fb
OD
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.
317e80ce
TGR
851 (install-file "src/unison-fsmonitor" bin)
852 #t)))
90907a22 853 (add-after 'install 'install-doc
31d968fb 854 (lambda* (#:key outputs #:allow-other-keys)
90907a22
EB
855 (let ((doc (string-append (assoc-ref outputs "doc")
856 "/share/doc/unison")))
857 (mkdir-p doc)
564cf93f
JL
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))
90907a22
EB
866 ;; This file needs write-permissions, because it's
867 ;; overwritten by 'docs' during documentation generation.
868 (chmod "src/strings.ml" #o600)
317e80ce
TGR
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))))))
b9d8756b
AE
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
886a collection of files and directories to be stored on different hosts
887(or different disks on the same host), modified separately, and then
888brought up to date by propagating the changes in each replica
889to the other.")
d8e0a08c 890 (license license:gpl3+)))
a747baba
JN
891
892(define-public ocaml-findlib
893 (package
894 (name "ocaml-findlib")
564cf93f 895 (version "1.8.0")
a747baba
JN
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
564cf93f 902 "1b97zqjdriqd2ikgh4rmqajgxwdwn013riji5j53y3xvcmnpsyrb"))))
a747baba
JN
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")))
4a810e75 917 (invoke
a747baba
JN
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")
ad3d730e 923 "-with-toolbox"))))
bff6739d
PK
924 (replace 'install
925 (lambda* (#:key outputs #:allow-other-keys)
926 (let ((out (assoc-ref outputs "out")))
4a810e75
MW
927 (invoke "make" "install"
928 (string-append "OCAML_CORE_STDLIB="
929 out "/lib/ocaml/site-lib")))))
ad3d730e
JL
930 (add-after 'install 'remove-camlp4
931 (lambda* (#:key outputs #:allow-other-keys)
932 (let ((out (assoc-ref outputs "out")))
933 (delete-file-recursively
4a810e75
MW
934 (string-append out "/lib/ocaml/site-lib/camlp4"))
935 #t))))))
a747baba
JN
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
940components (packages), and includes tools that support this scheme. Packages
941are collections of OCaml modules for which metainformation can be stored. The
8f65585b 942packages are kept in the file system hierarchy, but with strict directory
a747baba
JN
943structure. The library contains functions to look the directory up that
944stores a package, to query metainformation about a package, and to retrieve
945dependency information about multiple packages. There is also a tool that
946allows the user to enter queries on the command-line. In order to simplify
947compilation and linkage, there are new frontends of the various OCaml
948compilers that can directly deal with packages.")
d8e0a08c 949 (license license:x11)))
7a76b4af 950
564cf93f
JL
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
fa01cb52
BW
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
7a76b4af
JL
968;; note that some tests may hang for no obvious reason.
969(define-public ocaml-ounit
970 (package
971 (name "ocaml-ounit")
483be9bd 972 (version "2.0.8")
7a76b4af
JL
973 (source (origin
974 (method url-fetch)
483be9bd 975 (uri (ocaml-forge-uri "ounit" version 1749))
7a76b4af
JL
976 (sha256
977 (base32
483be9bd 978 "03ifp9hjcxg4m5j190iy373jcn4039d3vy10kmd8p4lfciwzwc1f"))))
7a76b4af
JL
979 (build-system ocaml-build-system)
980 (native-inputs
564cf93f
JL
981 `(("libxml2" ,libxml2) ; for xmllint
982 ("ocamlbuild" ,ocamlbuild)))
7a76b4af 983 (arguments
337273e4
DC
984 `(#:phases
985 (modify-phases %standard-phases
483be9bd 986 (delete 'check)))) ; tests are run during build
7a76b4af
JL
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
990other XUnit testing frameworks.")
991 (license license:expat)))
bc2c3bc6 992
abd593c7
BW
993(define-public ocaml4.01-ounit
994 (package-with-ocaml4.01 ocaml-ounit))
995
564cf93f
JL
996(define-public ocaml4.02-ounit
997 (package-with-ocaml4.02 ocaml-ounit))
998
bc2c3bc6
JL
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)
8fe6b932
JL
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")))))))
bc2c3bc6
JL
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
1037JAR format. It provides functions for reading from and writing to compressed
1038files in these formats.")
1039 (license license:lgpl2.1+)))
93eeadf0 1040
6824387a
BW
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
564cf93f
JL
1059(define-public ocaml4.02-camlzip
1060 (package-with-ocaml4.02 camlzip))
1061
93eeadf0
JL
1062(define-public ocamlmod
1063 (package
1064 (name "ocamlmod")
564cf93f 1065 (version "0.0.9")
93eeadf0
JL
1066 (source (origin
1067 (method url-fetch)
564cf93f 1068 (uri (ocaml-forge-uri name version 1702))
93eeadf0
JL
1069 (sha256
1070 (base32
564cf93f 1071 "0cgp9qqrq7ayyhddrmqmq1affvfqcn722qiakjq4dkywvp67h4aa"))))
93eeadf0
JL
1072 (build-system ocaml-build-system)
1073 (native-inputs
564cf93f
JL
1074 `(("ounit" ,ocaml-ounit)
1075 ("ocamlbuild" ,ocamlbuild)))
93eeadf0 1076 (arguments
3dcaa122
DC
1077 `(#:phases
1078 (modify-phases %standard-phases
1079 ;; Tests are done during build.
1080 (delete 'check))))
93eeadf0
JL
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
ddf2b503 1085
564cf93f
JL
1086(define-public ocaml4.02-ocamlmod
1087 (package-with-ocaml4.02 ocamlmod))
1088
ddf2b503
JL
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
04daa1ed 1109 (lambda _ (invoke "./configure"))))))
ddf2b503
JL
1110 (home-page "https://forge.ocamlcore.org/projects/zarith/")
1111 (synopsis "Implements arbitrary-precision integers")
1112 (description "Implements arithmetic and logical operations over
1113arbitrary-precision integers. It uses GMP to efficiently implement arithmetic
1114over big integers. Small integers are represented as Caml unboxed integers,
1115for speed and space economy.")
1116 (license license:lgpl2.1+))) ; with an exception
ff891f10 1117
564cf93f
JL
1118(define-public ocaml4.02-zarith
1119 (package-with-ocaml4.02 ocaml-zarith))
1120
ff891f10
JL
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
564cf93f
JL
1134 `(#:ocaml ,ocaml-4.02
1135 #:findlib ,ocaml4.02-findlib
1136 #:phases
ff891f10
JL
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\"
1148version = \"" ,version "\"
1149requires = \"unix\"
1150archive(byte) = \"frontc.cma\"
1151archive(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.
1160The result is a syntactic tree easy to process with usual OCAML tree management.
1161It provides support for ANSI C syntax, old-C K&R style syntax and the standard
1162GNU CC attributes. It provides also a C pretty printer as an example of use.")
1163 (license license:lgpl2.1)))
0472836f 1164
2c6ef0dd
JL
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
564cf93f
JL
1179 `(("ounit" ,ocaml-ounit)
1180 ("ocamlbuild" ,ocamlbuild)))
2c6ef0dd
JL
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
1184module allows to check invariants (properties of some types) over randomly
1185generated instances of the type. It provides combinators for generating
1186instances and printing them.")
1187 (license license:lgpl3+)))
1188
564cf93f
JL
1189(define-public ocaml4.02-qcheck
1190 (package-with-ocaml4.02 ocaml-qcheck))
1191
0472836f
JL
1192(define-public ocaml-qtest
1193 (package
1194 (name "ocaml-qtest")
fdb3fba3 1195 (version "2.8")
0472836f
JL
1196 (source (origin
1197 (method url-fetch)
fdb3fba3
EF
1198 (uri (string-append "https://github.com/vincent-hugot/qtest/"
1199 "archive/" version ".tar.gz"))
79234c0a 1200 (file-name (string-append name "-" version ".tar.gz"))
0472836f
JL
1201 (sha256
1202 (base32
fdb3fba3 1203 "1ff4if64mc9c7wmhjdgnlnh6k6a713piqzr4043zzj4s5pw7smxk"))))
0472836f
JL
1204 (build-system ocaml-build-system)
1205 (native-inputs
564cf93f 1206 `(("ocamlbuild" ,ocamlbuild)))
0472836f 1207 (propagated-inputs
e24d5271
JL
1208 `(("ounit" ,ocaml-ounit)
1209 ("qcheck" ,ocaml-qcheck)))
0472836f
JL
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))))
fdb3fba3 1217 (home-page "https://github.com/vincent-hugot/qtest")
0472836f
JL
1218 (synopsis "Inline (Unit) Tests for OCaml")
1219 (description "Qtest extracts inline unit tests written using a special
1220syntax in comments. Those tests are then run using the oUnit framework and the
1221qcheck library. The possibilities range from trivial tests -- extremely simple
1222to use -- to sophisticated random generation of test cases.")
1223 (license license:lgpl3+)))
3d598ebd 1224
0274521a
BW
1225(define-public ocaml4.01-qtest
1226 (package-with-ocaml4.01 ocaml-qtest))
1227
564cf93f
JL
1228(define-public ocaml4.02-qtest
1229 (package-with-ocaml4.02 ocaml-qtest))
1230
3d598ebd
JL
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"))
b965c1ca 1239 (file-name (string-append name "-" version ".tar.gz"))
3d598ebd
JL
1240 (sha256
1241 (base32
1242 "19g6lfn03iki9f8h91hi0yiqn0b3wkxyq08b3y23wgv6jw6mssfh"))))
1243 (build-system ocaml-build-system)
1244 (native-inputs
564cf93f
JL
1245 `(("ocamlbuild" ,ocamlbuild)
1246 ("qtest" ,ocaml-qtest)))
3d598ebd
JL
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
1250bag of often used but missing string functions from the stdlib. E.g, split,
1251full_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)))
a5b5bd1d 1255
564cf93f
JL
1256(define-public ocaml4.02-stringext
1257 (package-with-ocaml4.02 ocaml-stringext))
a5b5bd1d
JL
1258
1259(define-public ocaml-bisect
1260 (package
1261 (name "ocaml-bisect")
564cf93f 1262 (version "1.3.1")
a5b5bd1d
JL
1263 (source (origin
1264 (method url-fetch)
564cf93f
JL
1265 (uri (string-append "https://github.com/gasche/bisect/archive/"
1266 version ".tar.gz"))
1267 (file-name (string-append name "-" version ".tar.gz"))
a5b5bd1d
JL
1268 (sha256
1269 (base32
564cf93f 1270 "0p67fppk5ifb63b00kxwrb1xg75hrqhknng3bsdyw3gxxqyjlpmx"))
a5b5bd1d
JL
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)
564cf93f 1278 ("ocamlbuild" ,ocamlbuild)
a5b5bd1d
JL
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
564cf93f
JL
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)))))
a5b5bd1d
JL
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
1299a camlp4-based tool that allows to instrument your application before running
1300tests. After application execution, it is possible to generate a report in HTML
1301format that is the replica of the application source code annotated with code
1302coverage information.")
564cf93f
JL
1303 (properties
1304 `((ocaml4.01-variant . ,(delay ocaml4.01-bisect))
1305 (ocaml4.02-variant . ,(delay ocaml4.02-bisect))))
a5b5bd1d 1306 (license license:gpl3+)))
44c23cb8 1307
1345231c
BW
1308(define-public ocaml4.01-bisect
1309 (let ((base (package-with-ocaml4.01 (strip-ocaml4.01-variant ocaml-bisect))))
1310 (package
1311 (inherit base)
564cf93f
JL
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"))))
1345231c
BW
1321 (arguments
1322 `(#:ocaml ,ocaml-4.01
564cf93f
JL
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)))))))
1345231c
BW
1333 (native-inputs `(,@(alist-delete "camlp4" (package-native-inputs base))))
1334 (propagated-inputs
1335 `(,@(alist-delete "camlp4" (package-propagated-inputs base)))))))
1336
564cf93f
JL
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")
625a3daa 1351 (version "1.6.3")
564cf93f
JL
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
625a3daa 1358 "0dmf0wbfmgdy5plz1bjiisc2hjgblvxsnrqjmw2c8y45v1h23mdz"))))
564cf93f
JL
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
1372release of Jane Street packages. It reads metadata from @file{dune} files
1373following a very simple s-expression syntax.")
1374 (license license:expat)))
1375
1376(define-public ocaml-migrate-parsetree
1377 (package
1378 (name "ocaml-migrate-parsetree")
b2c2c415
GH
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"))))
effc8325 1390 (build-system dune-build-system)
564cf93f 1391 (arguments
b2c2c415 1392 `(#:tests? #f))
564cf93f 1393 (propagated-inputs
b2c2c415
GH
1394 `(("ocaml-ppx-derivers" ,ocaml-ppx-derivers)
1395 ("ocamlbuild" ,ocamlbuild)
564cf93f 1396 ("ocaml-result" ,ocaml-result)))
564cf93f
JL
1397 (synopsis "OCaml parsetree convertor")
1398 (description "This library converts between parsetrees of different OCaml
1399versions. For each version, there is a snapshot of the parsetree and conversion
1400functions 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"))))
59fa09e1 1416 (build-system dune-build-system)
564cf93f 1417 (arguments
59fa09e1 1418 `(#:test-target "."))
564cf93f
JL
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
1424ocaml-migrate-parsetree")
1425 (license license:expat)))
1426
44c23cb8
JL
1427(define-public ocaml-bitstring
1428 (package
1429 (name "ocaml-bitstring")
564cf93f 1430 (version "3.1.0")
44c23cb8
JL
1431 (source (origin
1432 (method url-fetch)
564cf93f
JL
1433 (uri (string-append "https://bitbucket.org/thanatonauts/bitstring/"
1434 "get/v" version ".tar.gz"))
0aee7fdc 1435 (file-name (string-append name "-" version ".tar.gz"))
44c23cb8
JL
1436 (sha256
1437 (base32
564cf93f 1438 "15jjk2pq1vx311gl49s5ag6x5y0654x35w75z07g7kr2q334hqps"))))
f93246a5 1439 (build-system dune-build-system)
44c23cb8
JL
1440 (native-inputs
1441 `(("camlp4" ,camlp4)
1442 ("time" ,time)
1443 ("autoconf" ,autoconf)
1444 ("automake" ,automake)
f93246a5 1445 ("bisect" ,ocaml-bisect)))
44c23cb8 1446 (propagated-inputs
564cf93f
JL
1447 `(("camlp4" ,camlp4)
1448 ("ocaml-ppx-tools-versioned" ,ocaml-ppx-tools-versioned)))
44c23cb8 1449 (arguments
564cf93f 1450 `(#:tests? #f; Tests fail to build
f93246a5 1451 #:jbuild? #t))
564cf93f
JL
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
1457a syntax extension and library for OCaml. You can use this module to both parse
1458and generate binary formats, files and protocols. Bitstring handling is added
1459as primitives to the language, making it exceptionally simple to use and very
1460powerful.")
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"))))
f93246a5
JL
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"))))))))
564cf93f
JL
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))))))
704b990c
JL
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"))
232557c1 1533 (file-name (string-append name "-" version ".tar.gz"))
704b990c
JL
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
1546staying compatible with older version of OCaml should use the Result module
1547defined in this library.")
1548 (license license:bsd-3)))
564cf93f
JL
1549
1550(define-public ocaml4.02-result
1551 (package-with-ocaml4.02 ocaml-result))
a359c727
JL
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
564cf93f
JL
1566 `(("opam" ,opam)
1567 ("ocamlbuild" ,ocamlbuild)))
a359c727
JL
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
1579provides an API to describe the files a package installs in a given build
1580configuration and to specify information about the package's distribution,
1581creation and publication procedures.")
1582 (license license:isc)))
564cf93f
JL
1583
1584(define-public ocaml4.02-topkg
1585 (package-with-ocaml4.02 ocaml-topkg))
63147e5e
JL
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
564cf93f
JL
1600 `(("opam" ,opam)
1601 ("ocamlbuild" ,ocamlbuild)))
63147e5e
JL
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
1613declarative manner, without resorting to exceptions. It defines combinators
1614to operate on the result type available from OCaml 4.03 in the standard
1615library.")
1616 (license license:isc)))
eb1ba731 1617
564cf93f
JL
1618(define-public ocaml4.02-rresult
1619 (package-with-ocaml4.02 ocaml-rresult))
1620
0c4dbdc2
BW
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
564cf93f
JL
1636 `(("ocamlbuild" ,ocamlbuild)
1637 ("pkg-config" ,pkg-config)))
0c4dbdc2
BW
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
1644API. Sqlite3 is a self-contained, serverless, zero-configuration,
1645transactional SQL database engine with outstanding performance for many use
1646cases. These bindings are written in a way that enables a friendly
1647coexistence with the old (version 2) SQLite and its OCaml wrapper
1648@code{ocaml-sqlite}.")
1649 (license license:expat)))
1650
17bd460f
BW
1651(define-public ocaml4.01-sqlite3
1652 (package-with-ocaml4.01 ocaml-sqlite3))
1653
564cf93f
JL
1654(define-public ocaml4.02-sqlite3
1655 (package-with-ocaml4.02 ocaml-sqlite3))
1656
91df9eae
BW
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
7bf837fd 1666 "https://github.com/Chris00/ocaml-csv/releases/download/"
91df9eae
BW
1667 version "/csv-" version ".tar.gz"))
1668 (sha256
1669 (base32
1670 "0rv7x843vn6scxj87hzl01yqrl26rc27lr8s7z6rp9vs745g05zj"))))
1671 (build-system ocaml-build-system)
564cf93f
JL
1672 (native-inputs
1673 `(("ocamlbuild" ,ocamlbuild)))
91df9eae
BW
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
1678by all major spreadsheets. This library implements pure OCaml functions to
1679read and write files in this format as well as some convenience functions to
1680manipulate such data.")
1681 (license (package-license camlp4))))
1682
3dc671e1
BW
1683(define-public ocaml4.01-csv
1684 (package-with-ocaml4.01 ocaml-csv))
1685
564cf93f
JL
1686(define-public ocaml4.02-csv
1687 (package-with-ocaml4.02 ocaml-csv))
1688
eb1ba731
JL
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
564cf93f
JL
1702 `(("ocamlbuild" ,ocamlbuild)
1703 ("opam" ,opam)))
eb1ba731
JL
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
1716spans without being subject to operating system calendar time adjustments.")
1717 (license license:isc)))
6548e53f 1718
564cf93f
JL
1719(define-public ocaml4.02-mtime
1720 (package-with-ocaml4.02 ocaml-mtime))
1721
6548e53f
JL
1722(define-public ocaml-cmdliner
1723 (package
1724 (name "ocaml-cmdliner")
ca53346d 1725 (version "1.0.2")
6548e53f
JL
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
ca53346d 1732 "18jqphjiifljlh9jg8zpl6310p3iwyaqphdkmf89acyaix0s4kj1"))))
6548e53f 1733 (build-system ocaml-build-system)
ca53346d
GH
1734 (inputs
1735 `(("ocaml-result" ,ocaml-result)))
6548e53f 1736 (native-inputs
564cf93f
JL
1737 `(("ocamlbuild" ,ocamlbuild)
1738 ("opam" ,opam)))
6548e53f
JL
1739 (arguments
1740 `(#:tests? #f
1741 #:build-flags '("native=true" "native-dynlink=true")
1742 #:phases
1743 (modify-phases %standard-phases
ca53346d
GH
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)))
6548e53f
JL
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
1754line interfaces. It provides a simple and compositional mechanism to convert
1755command line arguments to OCaml values and pass them to your functions. The
1756module automatically handles syntax errors, help messages and UNIX man page
1757generation. It supports programs with single or multiple commands and respects
1758most of the POSIX and GNU conventions.")
1759 (license license:bsd-3)))
beeb2d41 1760
564cf93f
JL
1761(define-public ocaml4.02-cmdliner
1762 (package-with-ocaml4.02 ocaml-cmdliner))
1763
beeb2d41
JL
1764(define-public ocaml-fmt
1765 (package
1766 (name "ocaml-fmt")
cdcbccd1 1767 (version "0.8.5")
beeb2d41
JL
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
cdcbccd1 1774 "1zj9azcxcn6skmb69ykgmi9z8c50yskwg03wqgh87lypgjdcz060"))))
beeb2d41 1775 (build-system ocaml-build-system)
564cf93f
JL
1776 (native-inputs
1777 `(("ocamlbuild" ,ocamlbuild)
1778 ("opam" ,opam)
1779 ("topkg" ,ocaml-topkg)))
1780 (propagated-inputs
1781 `(("result" ,ocaml-result)
cdcbccd1 1782 ("ocaml-uchar" ,ocaml-uchar)
564cf93f 1783 ("cmdliner" ,ocaml-cmdliner)))
beeb2d41
JL
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
1793functions.")
1794 (license license:isc)))
f46bceb6 1795
564cf93f
JL
1796(define-public ocaml4.02-fmt
1797 (package-with-ocaml4.02 ocaml-fmt))
1798
f46bceb6
JL
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)
564cf93f
JL
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))))
f46bceb6
JL
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
1824module balances minimality and expressiveness for basic, index-free, string
1825processing and provides types and functions for substrings, string sets and
1826string maps. The String module exposed by Astring has exception safe functions,
1827removes deprecated and rarely used functions, alters some signatures and names,
1828adds a few missing functions and fully exploits OCaml's newfound string
1829immutability.")
1830 (license license:isc)))
69705efe 1831
564cf93f
JL
1832(define-public ocaml4.02-astring
1833 (package-with-ocaml4.02 ocaml-astring))
1834
69705efe
JL
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)
564cf93f
JL
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)))
69705efe
JL
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
1863exposes a simple TESTABLE module type, a check function to assert test
1864predicates and a run function to perform a list of unit -> unit test callbacks.
1865Alcotest provides a quiet and colorful output where only faulty runs are fully
1866displayed at the end of the run (with the full logs ready to inspect), with a
1867simple (yet expressive) query language to select the tests to run.")
1868 (license license:isc)))
0a7b43a8 1869
564cf93f
JL
1870(define-public ocaml4.02-alcotest
1871 (package-with-ocaml4.02 ocaml-alcotest))
1872
0a7b43a8
JL
1873(define-public ocaml-ppx-tools
1874 (package
1875 (name "ocaml-ppx-tools")
564cf93f 1876 (version "5.1+4.06.0")
0a7b43a8
JL
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
564cf93f 1883 "0mncpy9v2mcjgnj7s2vqpp2b1ixv54djicfx66ic9wny9d202gj1"))))
0a7b43a8 1884 (build-system ocaml-build-system)
564cf93f
JL
1885 (arguments
1886 `(#:phases (modify-phases %standard-phases (delete 'configure))
1887 #:tests? #f))
1888 (properties
1889 `((ocaml4.02-variant . ,(delay ocaml4.02-ppx-tools))))
0a7b43a8
JL
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)))
1342fce1 1894
564cf93f
JL
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
1342fce1
JL
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)
564cf93f
JL
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))))
1342fce1
JL
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
1933events and signals. React doesn't define any primitive event or signal, it
1934lets the client choose the concrete timeline.")
1935 (license license:bsd-3)))
37f17e2a 1936
564cf93f
JL
1937(define-public ocaml4.02-react
1938 (package-with-ocaml4.02 ocaml-react))
1939
37f17e2a
JL
1940(define-public ocaml-ssl
1941 (package
1942 (name "ocaml-ssl")
26b438e0 1943 (version "0.5.5")
37f17e2a
JL
1944 (source
1945 (origin
8ae540a2
TGR
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))
37f17e2a 1951 (sha256 (base32
8ae540a2 1952 "0fviq8xhp3qk7pmkl7knchywsipxgb7p0z489hj8qnf2sx8xzdmy"))))
37f17e2a 1953 (build-system ocaml-build-system)
564cf93f
JL
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)))
37f17e2a
JL
1971 (propagated-inputs `(("openssl" ,openssl)))
1972 (home-page "https://github.com/savonet/ocaml-ssl/")
1973 (synopsis "OCaml bindings for OpenSSL")
36dba63b
TGR
1974 (description
1975 "OCaml-SSL is a set of bindings for OpenSSL, a library for communicating
1976through Transport Layer Security (@dfn{TLS}) encrypted connections.")
37f17e2a 1977 (license license:lgpl2.1)))
1fdfbadf 1978
564cf93f
JL
1979(define-public ocaml4.02-ssl
1980 (package-with-ocaml4.02 ocaml-ssl))
1981
1fdfbadf
JL
1982(define-public ocaml-lwt
1983 (package
1984 (name "ocaml-lwt")
564cf93f 1985 (version "4.1.0")
1fdfbadf
JL
1986 (source
1987 (origin
1988 (method url-fetch)
1989 (uri (string-append "https://github.com/ocsigen/lwt/archive/" version
1990 ".tar.gz"))
14ebf2fc 1991 (file-name (string-append name "-" version ".tar.gz"))
1fdfbadf 1992 (sha256 (base32
564cf93f 1993 "0mhh019bjkg5xfvpy1pxs4xdxb759fyydmgb6l4j0qww1qgr8klp"))))
f880b03b 1994 (build-system dune-build-system)
1fdfbadf 1995 (arguments
564cf93f 1996 `(#:tests? #f; require lwt_ppx
f880b03b 1997 #:jbuild? #t
1fdfbadf
JL
1998 #:phases
1999 (modify-phases %standard-phases
f880b03b 2000 (add-before 'build 'configure
564cf93f
JL
2001 (lambda _
2002 (invoke "ocaml" "src/util/configure.ml" "-use-libev" "true")
564cf93f
JL
2003 #t)))))
2004 (native-inputs
f880b03b 2005 `(("ocaml-cppo" ,ocaml-cppo)
564cf93f
JL
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)))
1fdfbadf
JL
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
2019make it easy to run normally-blocking I/O operations concurrently in a single
2020process. Also, in many cases, Lwt threads can interact without the need for
2021locks or other synchronization primitives.")
2022 (license license:lgpl2.1)))
9dc7dcb2 2023
564cf93f
JL
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"))))
5d071263 2039 (build-system dune-build-system)
564cf93f
JL
2040 (arguments
2041 `(#:tests? #f; require lwt_ppx
5d071263 2042 #:jbuild? #t))
564cf93f
JL
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
2048ocaml lwt.")
2049 (license license:lgpl2.1)))
2050
2051(define-public ocaml4.02-lwt-log
2052 (package-with-ocaml4.02 ocaml-lwt-log))
2053
9dc7dcb2
JL
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)
564cf93f
JL
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)))
9dc7dcb2
JL
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
2085performed on sources whose reporting level can be set independently. Log
2086message report is decoupled from logging and is handled by a reporter.")
2087 (license license:isc)))
fbf38b09 2088
564cf93f
JL
2089(define-public ocaml4.02-logs
2090 (package-with-ocaml4.02 ocaml-logs))
2091
fbf38b09
JL
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)
564cf93f
JL
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)))
fbf38b09
JL
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
2119POSIX or Windows conventions. Fpath processes paths without accessing the
2120file system and is independent from any system library.")
2121 (license license:isc)))
33e0702d 2122
564cf93f
JL
2123(define-public ocaml4.02-fpath
2124 (package-with-ocaml4.02 ocaml-fpath))
2125
33e0702d
JL
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)
564cf93f
JL
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)))
33e0702d
JL
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
2157the operating system in OCaml. It has functions to access the process
2158environment, parse command line arguments, interact with the file system and
2159run command line programs.")
2160 (license license:isc)))
036b8579 2161
564cf93f
JL
2162(define-public ocaml4.02-bos
2163 (package-with-ocaml4.02 ocaml-bos))
2164
036b8579
JL
2165(define-public ocaml-xmlm
2166 (package
2167 (name "ocaml-xmlm")
564cf93f 2168 (version "1.3.0")
036b8579
JL
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
564cf93f 2175 "1rrdxg5kh9zaqmgapy9bhdqyxbbvxxib3bdfg1vhw4rrkp1z0x8n"))))
036b8579 2176 (build-system ocaml-build-system)
564cf93f
JL
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)))
036b8579
JL
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
2190format. It can process XML documents without a complete in-memory
2191representation of the data.")
2192 (license license:isc)))
6e9b678e 2193
9bf9b3c0
BW
2194(define-public ocaml4.01-xmlm
2195 (package-with-ocaml4.01 ocaml-xmlm))
2196
564cf93f
JL
2197(define-public ocaml4.02-xmlm
2198 (package-with-ocaml4.02 ocaml-xmlm))
2199
6e9b678e
JL
2200(define-public ocaml-ulex
2201 (package
2202 (name "ocaml-ulex")
564cf93f 2203 (version "1.2")
6e9b678e
JL
2204 (source (origin
2205 (method url-fetch)
564cf93f 2206 (uri (string-append "https://github.com/whitequark/ulex/archive/v"
6e9b678e 2207 version ".tar.gz"))
564cf93f 2208 (file-name (string-append name "-" version ".tar.gz"))
6e9b678e
JL
2209 (sha256
2210 (base32
564cf93f
JL
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)))
6e9b678e
JL
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)))
33f16b9a 2228
564cf93f
JL
2229(define-public ocaml4.02-ulex
2230 (package-with-ocaml4.02 ocaml-ulex))
2231
33f16b9a
JL
2232(define-public ocaml-uchar
2233 (package
2234 (name "ocaml-uchar")
f0dece30 2235 (version "0.0.2")
33f16b9a
JL
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
f0dece30 2242 "1w2saw7zanf9m9ffvz2lvcxvlm118pws2x1wym526xmydhqpyfa7"))))
33f16b9a 2243 (build-system ocaml-build-system)
564cf93f
JL
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)))
33f16b9a
JL
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)))
84290923 2258
564cf93f
JL
2259(define-public ocaml4.02-uchar
2260 (package-with-ocaml4.02 ocaml-uchar))
2261
84290923
JL
2262(define-public ocaml-uutf
2263 (package
2264 (name "ocaml-uutf")
564cf93f 2265 (version "1.0.1")
84290923
JL
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
564cf93f 2272 "1gp96dcggq7s84934vimxh89caaxa77lqiff1yywbwkilkkjcfqj"))))
84290923 2273 (build-system ocaml-build-system)
564cf93f
JL
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)))
84290923
JL
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
2290the UTF-8, UTF-16, UTF-16LE and UTF-16BE encoding schemes. It can efficiently
2291work character by character without blocking on IO. Decoders perform character
2292position tracking and support newline normalization.
2293
2294Functions are also provided to fold over the characters of UTF encoded OCaml
2295string values and to directly encode characters in OCaml Buffer.t values.")
2296 (license license:isc)))
800ab1fb 2297
564cf93f
JL
2298(define-public ocaml4.02-uutf
2299 (package-with-ocaml4.02 ocaml-uutf))
2300
800ab1fb
JL
2301(define-public ocaml-jsonm
2302 (package
2303 (name "ocaml-jsonm")
564cf93f 2304 (version "1.0.1")
800ab1fb
JL
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
564cf93f 2311 "1176dcmxb11fnw49b7yysvkjh0kpzx4s48lmdn5psq9vshp5c29w"))))
800ab1fb 2312 (build-system ocaml-build-system)
564cf93f
JL
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)))
800ab1fb
JL
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
2329the JSON data format. It can process JSON text without blocking on IO and
2330without a complete in-memory representation of the data.")
2331 (license license:isc)))
fd6e260e 2332
564cf93f
JL
2333(define-public ocaml4.02-jsonm
2334 (package-with-ocaml4.02 ocaml-jsonm))
2335
fd6e260e
JL
2336(define-public ocaml-ocurl
2337 (package
2338 (name "ocaml-ocurl")
564cf93f 2339 (version "0.8.2")
fd6e260e
JL
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
564cf93f 2346 "1ax3xdlzgb1zg7d0wr9nwgmh6a45a764m0wk8p6mx07ad94hz0q9"))))
fd6e260e 2347 (build-system ocaml-build-system)
564cf93f
JL
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)))
fd6e260e
JL
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
2361multitude of other network protocols (FTP/SMTP/RTSP/etc).")
2362 (license license:isc)))
5d08f98d 2363
564cf93f
JL
2364(define-public ocaml4.02-ocurl
2365 (package-with-ocaml4.02 ocaml-ocurl))
2366
5d08f98d
JL
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)
564cf93f 2388 ("ocamlbuild" ,ocamlbuild)
5d08f98d
JL
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
2396that represent binary data in an ASCII string format by translating it into a
2397radix-64 representation. It is specified in RFC 4648.")
2398 (license license:isc)))
c590f1ae 2399
564cf93f
JL
2400(define-public ocaml4.02-base64
2401 (package-with-ocaml4.02 ocaml-base64))
2402
c590f1ae
JL
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
564cf93f
JL
2416 `(#:ocaml ,ocaml-4.02
2417 #:findlib ,ocaml4.02-findlib
2418 #:phases
c590f1ae
JL
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
2424whole files into OCaml string or string list. The code generated can be
2425compiled as a standard OCaml file. It allows embedding external resources as
2426OCaml code.")
2427 (license license:lgpl2.1+))); with the OCaml static compilation exception
41e8e079
JL
2428
2429(define-public omake
2430 (package
2431 (name "omake")
564cf93f 2432 (version "0.10.3")
41e8e079
JL
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
564cf93f 2439 "07bdg1h5i7qnlv9xq81ad5hfypl10hxm771h4rjyl5cn8plhfcgz"))
41e8e079
JL
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")))))))
564cf93f
JL
2452 (properties
2453 `((ocaml4.02-variant . ,(delay ocaml4.02-omake))))
41e8e079
JL
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
2458many 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
0e9e94b7 2474
564cf93f
JL
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
0e9e94b7
JL
2489(define-public ocaml-batteries
2490 (package
2491 (name "ocaml-batteries")
564cf93f 2492 (version "2.9.0")
0e9e94b7
JL
2493 (source (origin
2494 (method url-fetch)
564cf93f
JL
2495 (uri (string-append "https://github.com/ocaml-batteries-team/"
2496 "batteries-included/releases/download/v"
2497 version "/batteries-" version ".tar.gz"))
0e9e94b7
JL
2498 (sha256
2499 (base32
564cf93f 2500 "0lkdmv2my5hirkswmci2cch341n6wkkj2q8apjhs83sg6528caxi"))))
0e9e94b7
JL
2501 (build-system ocaml-build-system)
2502 (native-inputs
564cf93f
JL
2503 `(("ocamlbuild" ,ocamlbuild)
2504 ("qtest" ,ocaml-qtest)
0e9e94b7
JL
2505 ("bisect" ,ocaml-bisect)
2506 ("ounit" ,ocaml-ounit)))
564cf93f
JL
2507 (propagated-inputs
2508 `(("ocaml-num" ,ocaml-num)))
0e9e94b7
JL
2509 (arguments
2510 `(#:phases
2511 (modify-phases %standard-phases
2512 (delete 'check) ; tests are run by the build phase
2513 (replace 'build
564cf93f
JL
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))))
0e9e94b7
JL
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
2538every compliant installation of OCaml and organize these libraries into a
2539hierarchy of modules.")
2540 (license license:lgpl2.1+)))
f8a12de1 2541
564cf93f
JL
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
de59e24a 2555(define-public ocaml4.01-batteries
564cf93f
JL
2556 (let ((base (package-with-ocaml4.01 (strip-ocaml4.01-variant ocaml4.02-batteries))))
2557 (package
2558 (inherit base)
2559 (name "ocaml4.01-batteries"))))
de59e24a 2560
f8a12de1
JL
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")
564cf93f
JL
2584 (string-append stubs "/dllpcre_stubs.so")))
2585 #t)))))
f8a12de1
JL
2586 (native-inputs
2587 `(("batteries" ,ocaml-batteries)
564cf93f 2588 ("ocamlbuild" ,ocamlbuild)
f8a12de1
JL
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
2594matching and substitution, similar to the functionality offered by the Perl
2595language.")
2596 (license license:lgpl2.1+))); with the OCaml link exception
3763eea7 2597
564cf93f
JL
2598(define-public ocaml4.02-pcre
2599 (package-with-ocaml4.02 ocaml-pcre))
2600
3763eea7
JL
2601(define-public ocaml-expect
2602 (package
2603 (name "ocaml-expect")
564cf93f 2604 (version "0.0.6")
3763eea7
JL
2605 (source (origin
2606 (method url-fetch)
564cf93f 2607 (uri (ocaml-forge-uri name version 1736))
3763eea7
JL
2608 (sha256
2609 (base32
564cf93f
JL
2610 "098qvg9d4yrqzr5ax291y3whrpax0m3sx4gi6is0mblc96r9yqk0"))))
2611 (arguments
2612 `(#:tests? #f))
3763eea7
JL
2613 (build-system ocaml-build-system)
2614 (native-inputs
564cf93f
JL
2615 `(("ocamlbuild" ,ocamlbuild)
2616 ("ocaml-num" ,ocaml-num)
2617 ("ocaml-pcre" ,ocaml-pcre)
3763eea7
JL
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
2623can match the question using a regular expression or a timeout.")
2624 (license license:lgpl2.1+))) ; with the OCaml static compilation exception
77a515e9 2625
564cf93f 2626(define-public ocaml4.02-fileutils
77a515e9 2627 (package
564cf93f
JL
2628 (name "ocaml4.02-fileutils")
2629 (version "0.5.3")
77a515e9
JL
2630 (source (origin
2631 (method url-fetch)
564cf93f 2632 (uri (ocaml-forge-uri name version 1728))
77a515e9
JL
2633 (sha256
2634 (base32
564cf93f 2635 "1rc4cqlvdhbs55i85zfbfhz938fsy4fj6kwlkfm3ra7bpwn8bmpd"))))
77a515e9 2636 (build-system ocaml-build-system)
564cf93f
JL
2637 (arguments
2638 `(#:ocaml ,ocaml-4.02
2639 #:findlib ,ocaml4.02-findlib))
2640 (native-inputs
2641 `(("ounit" ,ocaml4.02-ounit)))
77a515e9
JL
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
2645file (POSIX like) and filename.")
2646 (license license:lgpl2.1+))) ; with the OCaml static compilation exception
5eed45a8
JL
2647
2648(define-public ocaml-oasis
2649 (package
2650 (name "ocaml-oasis")
564cf93f 2651 (version "0.4.11")
5eed45a8
JL
2652 (source (origin
2653 (method url-fetch)
564cf93f 2654 (uri (ocaml-forge-uri name version 1757))
5eed45a8
JL
2655 (sha256
2656 (base32
564cf93f 2657 "0bn13mzfa98dq3y0jwzzndl55mnywaxv693z6f1rlvpdykp3vdqq"))
5eed45a8
JL
2658 (modules '((guix build utils)))
2659 (snippet
6cbee49d
MW
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
564cf93f 2664 ;; are set correctly when LD_LIBRARY_PATH is defined beforhand.
6cbee49d
MW
2665 (("TestBaseCompat.tests;") "")
2666 (("TestExamples.tests;") "")
2667 (("TestFull.tests;") "")
2668 (("TestPluginDevFiles.tests;") "")
2669 (("TestPluginInternal.tests;") "")
2670 (("TestPluginOCamlbuild.tests;") "")
2671 (("TestPluginOMake.tests;") ""))
2672 #t))))
5eed45a8 2673 (build-system ocaml-build-system)
564cf93f
JL
2674 (arguments
2675 `(#:tests? #f))
5eed45a8 2676 (native-inputs
564cf93f
JL
2677 `(("ocamlbuild" ,ocamlbuild)
2678 ("ocamlify" ,ocamlify)
2679 ("ocamlmod" ,ocamlmod)))
5eed45a8
JL
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
2683system in your OCaml projects. It helps to create standard entry points in your
2684build system and allows external tools to analyse your project easily.")
2685 (license license:lgpl2.1+))) ; with ocaml static compilation exception
f95ebba5 2686
564cf93f
JL
2687(define-public ocaml4.02-oasis
2688 (package-with-ocaml4.02 ocaml-oasis))
2689
f95ebba5
JL
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)
564cf93f 2698 ("ocamlbuild" ,ocamlbuild)
f95ebba5
JL
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
2705packages, but can be used for other purposes. It contains:
2706@enumerate
2707@item an @command{oasis2opam-install} tool to produce a @file{.install} file
2708from the oasis build log
2709@item a @code{js_build_tools} ocamlbuild plugin with various goodies.
2710@end enumerate")
2711 (license license:asl2.0)))
f5c8cf3b 2712
564cf93f
JL
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
f5c8cf3b 2717 (package
564cf93f 2718 (name "ocaml4.02-bin-prot")
f5c8cf3b
JL
2719 (version "113.33.03")
2720 (source (janestreet-origin "bin_prot" version
2721 "1ws8c017z8nbj3vw92ndvjk9011f71rmp3llncbv8r5fc76wqv3l"))
564cf93f 2722 (build-system ocaml-build-system)
f5c8cf3b 2723 (native-inputs
564cf93f 2724 `(("js-build-tools" ,ocaml4.02-js-build-tools)
f5c8cf3b 2725 ("opam" ,opam)))
564cf93f
JL
2726 (arguments
2727 (ensure-keyword-arguments janestreet-arguments
2728 `(#:ocaml ,ocaml-4.02
2729 #:findlib ,ocaml4.02-findlib)))
f5c8cf3b
JL
2730 (home-page "https://github.com/janestreet/bin_prot/")
2731 (synopsis "Binary protocol generator")
2732 (description "This library contains functionality for reading and writing
2733OCaml-values in a type-safe binary protocol. It is extremely efficient,
2734typically supporting type-safe marshalling and unmarshalling of even highly
2735structured values at speeds sufficient to saturate a gigabit connection. The
2736protocol is also heavily optimized for size, making it ideal for long-term
2737storage of large amounts of data.")
2738 (license license:asl2.0)))
6bdf77a2 2739
564cf93f 2740(define-public ocaml4.02-fieldslib
6bdf77a2 2741 (package
564cf93f 2742 (name "ocaml4.02-fieldslib")
6bdf77a2
JL
2743 (version "113.33.03")
2744 (source (janestreet-origin "fieldslib" version
2745 "1rm3bn54bzk2hlq8f3w067ak8s772w4a8f78i3yh79vxfzq8ncvv"))
564cf93f 2746 (build-system ocaml-build-system)
6bdf77a2 2747 (native-inputs
564cf93f 2748 `(("js-build-tools" ,ocaml4.02-js-build-tools)
6bdf77a2 2749 ("opam" ,opam)))
564cf93f
JL
2750 (arguments
2751 (ensure-keyword-arguments janestreet-arguments
2752 `(#:ocaml ,ocaml-4.02
2753 #:findlib ,ocaml4.02-findlib)))
6bdf77a2
JL
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
2757record fields, to get and set record fields, iterate and fold over all fields
2758of a record and create new record values.")
2759 (license license:asl2.0)))
c3339950 2760
564cf93f 2761(define-public ocaml4.02-ppx-core
c3339950 2762 (package
564cf93f 2763 (name "ocaml4.02-ppx-core")
c3339950
JL
2764 (version "113.33.03")
2765 (source (janestreet-origin "ppx_core" version
2766 "0f69l4czhgssnhb5ds2j9dbqjyz8dp1y3i3x0i4h6pxnms20zbxa"))
2767 (build-system ocaml-build-system)
2768 (native-inputs
564cf93f 2769 `(("js-build-tools" ,ocaml4.02-js-build-tools)
c3339950 2770 ("opam" ,opam)))
564cf93f
JL
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)))
c3339950
JL
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.
2779It 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)))
567b4e02 2787
564cf93f 2788(define-public ocaml4.02-ppx-optcomp
567b4e02 2789 (package
564cf93f 2790 (name "ocaml4.02-ppx-optcomp")
567b4e02
JL
2791 (version "113.33.03")
2792 (source (janestreet-origin "ppx_optcomp" version
2793 "13an8p2r7sd0d5lv54mlzrxdni47408bwqi3bjcx4m6005170q30"))
2794 (build-system ocaml-build-system)
2795 (native-inputs
564cf93f 2796 `(("js-build-tools" ,ocaml4.02-js-build-tools)
567b4e02
JL
2797 ("opam" ,opam)))
2798 (propagated-inputs
564cf93f
JL
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)))
567b4e02
JL
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
2808used to handle optional compilations of pieces of code depending of the word
2809size, the version of the compiler, ...")
2810 (license license:asl2.0)))
9e568786 2811
564cf93f 2812(define-public ocaml4.02-ppx-driver
9e568786 2813 (package
564cf93f 2814 (name "ocaml4.02-ppx-driver")
9e568786
JL
2815 (version "113.33.03")
2816 (source (janestreet-origin "ppx_driver" version
2817 "011zzr45897j49b7iiybb29k7pspcx36mlnp7nh6pxb8b0ga76fh"))
2818 (build-system ocaml-build-system)
2819 (native-inputs
564cf93f 2820 `(("js-build-tools" ,ocaml4.02-js-build-tools)
9e568786 2821 ("opam" ,opam)
564cf93f 2822 ("ppx-optcomp" ,ocaml4.02-ppx-optcomp)))
9e568786 2823 (propagated-inputs
564cf93f
JL
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)))
9e568786
JL
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
2833transformers linked together with a command line frontend. The aim is to
2834provide 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)))
f6dde36a
JL
2843
2844(define-public ocaml-cppo
2845 (package
2846 (name "ocaml-cppo")
564cf93f 2847 (version "1.6.5")
f6dde36a
JL
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
564cf93f 2854 "1dkm3d5h6h56y937gcdk2wixlpzl59vv5pmiafglr89p20kf7gqf"))
f6dde36a 2855 (file-name (string-append name "-" version ".tar.gz"))))
48b27902 2856 (build-system dune-build-system)
f6dde36a 2857 (arguments
48b27902
JL
2858 `(#:tests? #f
2859 #:build-flags (list "--profile" "release")))
564cf93f 2860 (native-inputs
48b27902 2861 `(("ocamlbuild" ,ocamlbuild)))
f6dde36a
JL
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
2865programs. 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)))
505394d1 2873
564cf93f
JL
2874(define-public ocaml4.02-cppo
2875 (package-with-ocaml4.02 ocaml-cppo))
2876
505394d1
JL
2877;; this package is not reproducible. This is related to temporary filenames
2878;; such as findlib_initxxxxx where xxxxx is random.
564cf93f 2879(define-public ocaml4.02-ppx-deriving
505394d1 2880 (package
564cf93f 2881 (name "ocaml4.02-ppx-deriving")
505394d1
JL
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
564cf93f
JL
2893 `(("js-build-tools" ,ocaml4.02-js-build-tools)
2894 ("cppo" ,ocaml4.02-cppo)
2895 ("ounit" ,ocaml4.02-ounit)
505394d1
JL
2896 ("opam" ,opam)))
2897 (propagated-inputs
564cf93f
JL
2898 `(("result" ,ocaml4.02-result)
2899 ("ppx-tools" ,ocaml4.02-ppx-tools)))
505394d1 2900 (arguments
564cf93f
JL
2901 `(#:ocaml ,ocaml-4.02
2902 #:findlib ,ocaml4.02-findlib
2903 #:phases
505394d1
JL
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
2915code based on type definitions, and a set of useful plugins for common tasks.")
2916 (license license:expat)))
e6515b55 2917
564cf93f 2918(define-public ocaml4.02-ppx-type-conv
e6515b55 2919 (package
564cf93f 2920 (name "ocaml4.02-ppx-type-conv")
e6515b55
JL
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
564cf93f 2927 `(("js-build-tools" ,ocaml4.02-js-build-tools)
e6515b55
JL
2928 ("opam" ,opam)))
2929 (propagated-inputs
564cf93f
JL
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)))
e6515b55
JL
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
2940different preprocessors that generate code from type specifications.")
2941 (license license:asl2.0)))
be1e892d 2942
564cf93f 2943(define-public ocaml4.02-ppx-inline-test
be1e892d 2944 (package
564cf93f 2945 (name "ocaml4.02-ppx-inline-test")
be1e892d
JL
2946 (version "113.33.03")
2947 (source (janestreet-origin "ppx_inline_test" version
2948 "0859ni43fl39dd5g6cxfhq0prxmx59bd2bfq8jafp593ba4q0icq"))
2949 (build-system ocaml-build-system)
2950 (native-inputs
564cf93f 2951 `(("js-build-tools" ,ocaml4.02-js-build-tools)
be1e892d 2952 ("opam" ,opam)
564cf93f 2953 ("ppx-core" ,ocaml4.02-ppx-core)))
be1e892d 2954 (propagated-inputs
564cf93f
JL
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)))
be1e892d
JL
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)))
9a63fef9 2966
564cf93f 2967(define-public ocaml4.02-ppx-bench
9a63fef9 2968 (package
564cf93f 2969 (name "ocaml4.02-ppx-bench")
9a63fef9
JL
2970 (version "113.33.03")
2971 (source (janestreet-origin "ppx_bench" version
2972 "1hky3y17qpb925rymf97wv54di9gaqdmkix7wpkjw14qzl512b68"))
2973 (build-system ocaml-build-system)
2974 (native-inputs
564cf93f 2975 `(("js-build-tools" ,ocaml4.02-js-build-tools)
9a63fef9 2976 ("opam" ,opam)
564cf93f 2977 ("ppx-core" ,ocaml4.02-ppx-core)))
9a63fef9 2978 (propagated-inputs
564cf93f
JL
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)))
9a63fef9
JL
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)))
953ecc04 2991
564cf93f 2992(define-public ocaml4.02-ppx-compare
953ecc04 2993 (package
564cf93f 2994 (name "ocaml4.02-ppx-compare")
953ecc04
JL
2995 (version "113.33.03")
2996 (source (janestreet-origin "ppx_compare" version
2997 "0bfhi33kq9l4q6zzc6svki2csracz5j4731c3npcy6cs73jynn0z"))
2998 (build-system ocaml-build-system)
2999 (native-inputs
564cf93f 3000 `(("js-build-tools" ,ocaml4.02-js-build-tools)
953ecc04 3001 ("opam" ,opam)
564cf93f 3002 ("ppx-core" ,ocaml4.02-ppx-core)))
953ecc04 3003 (propagated-inputs
564cf93f
JL
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)))
953ecc04
JL
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
3015and definitions. Ppx_compare is a ppx rewriter that derives comparison functions
3016from type representations. The scaffolded functions are usually much faster
3017than ocaml's Pervasives.compare. Scaffolding functions also gives you more
3018flexibility by allowing you to override them for a specific type and more safety
3019by making sure that you only compare comparable values.")
3020 (license license:asl2.0)))
d19c1b41 3021
564cf93f 3022(define-public ocaml4.02-sexplib
d19c1b41 3023 (package
564cf93f 3024 (name "ocaml4.02-sexplib")
d19c1b41
JL
3025 (version "113.33.03")
3026 (source (janestreet-origin "sexplib" version
3027 "1ffjmj8if9lyv965cgn2ld1xv7g52qsr8mqflbm515ck1i8l2ima"))
3028 (build-system ocaml-build-system)
3029 (native-inputs
564cf93f 3030 `(("js-build-tools" ,ocaml4.02-js-build-tools)
d19c1b41 3031 ("opam" ,opam)))
564cf93f
JL
3032 (arguments
3033 (ensure-keyword-arguments janestreet-arguments
3034 `(#:ocaml ,ocaml-4.02
3035 #:findlib ,ocaml4.02-findlib)))
d19c1b41
JL
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
3039s-expressions.")
3040 (license license:asl2.0)))
ef0051b2 3041
564cf93f 3042(define-public ocaml4.02-typerep
ef0051b2 3043 (package
564cf93f 3044 (name "ocaml4.02-typerep")
ef0051b2
JL
3045 (version "113.33.03")
3046 (source (janestreet-origin "typerep" version
3047 "1b9v5bmi824a9d4sx0f40ixq0yfcbiqxafg4a1jx95xg9199zafy"))
564cf93f 3048 (build-system ocaml-build-system)
ef0051b2 3049 (native-inputs
564cf93f 3050 `(("js-build-tools" ,ocaml4.02-js-build-tools)
ef0051b2 3051 ("opam" ,opam)))
564cf93f
JL
3052 (arguments
3053 (ensure-keyword-arguments janestreet-arguments
3054 `(#:ocaml ,ocaml-4.02
3055 #:findlib ,ocaml4.02-findlib)))
ef0051b2
JL
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)))
d1d90df6 3060
564cf93f 3061(define-public ocaml4.02-variantslib
d1d90df6 3062 (package
564cf93f 3063 (name "ocaml4.02-variantslib")
d1d90df6
JL
3064 (version "113.33.03")
3065 (source (janestreet-origin "variantslib" version
3066 "05vp799vl38fvl98ga5miwbzh09cnnpapi6q6gdvwyqi6w7s919n"))
564cf93f 3067 (build-system ocaml-build-system)
d1d90df6 3068 (native-inputs
564cf93f 3069 `(("js-build-tools" ,ocaml4.02-js-build-tools)
d1d90df6 3070 ("opam" ,opam)))
564cf93f
JL
3071 (arguments
3072 (ensure-keyword-arguments janestreet-arguments
3073 `(#:ocaml ,ocaml-4.02
3074 #:findlib ,ocaml4.02-findlib)))
d1d90df6
JL
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)))
334436f0 3079
564cf93f 3080(define-public ocaml4.02-ppx-sexp-conv
334436f0 3081 (package
564cf93f 3082 (name "ocaml4.02-ppx-sexp-conv")
334436f0
JL
3083 (version "113.33.03")
3084 (source (janestreet-origin "ppx_sexp_conv" version
3085 "1rbj6d5dl625gdxih34xcrdvikci6h8i2dl9x3wraa4qrgishiw7"))
3086 (build-system ocaml-build-system)
3087 (native-inputs
564cf93f 3088 `(("js-build-tools" ,ocaml4.02-js-build-tools)
334436f0 3089 ("opam" ,opam)
564cf93f 3090 ("ppx-core" ,ocaml4.02-ppx-core)))
334436f0 3091 (propagated-inputs
564cf93f
JL
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)))
334436f0
JL
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
3103definitions.")
3104 (license license:asl2.0)))
14af90cf 3105
564cf93f 3106(define-public ocaml4.02-ppx-variants-conv
14af90cf 3107 (package
564cf93f 3108 (name "ocaml4.02-ppx-variants-conv")
14af90cf
JL
3109 (version "113.33.03")
3110 (source (janestreet-origin "ppx_variants_conv" version
3111 "0vnn2l1118cj72413d3f7frlw6yc09l8f64jlzkzbgb9bxpalx34"))
3112 (build-system ocaml-build-system)
3113 (native-inputs
564cf93f 3114 `(("js-build-tools" ,ocaml4.02-js-build-tools)
14af90cf
JL
3115 ("opam" ,opam)))
3116 (propagated-inputs
564cf93f
JL
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)))
14af90cf
JL
3125 (home-page "https://github.com/janestreet/ppx_variants_conv")
3126 (synopsis "Generation of accessor and iteration functions for ocaml variant
3127types")
3128 (description "Generation of accessor and iteration functions for ocaml
3129variant types.")
3130 (license license:asl2.0)))
651563bd 3131
564cf93f 3132(define-public ocaml4.02-ppx-here
651563bd 3133 (package
564cf93f 3134 (name "ocaml4.02-ppx-here")
651563bd
JL
3135 (version "113.33.03")
3136 (source (janestreet-origin "ppx_here" version
3137 "1ay8lfxi0qg3ib2zkwh4h0vqk3gjmxaz572gzab0bbxyqn3z86v7"))
3138 (build-system ocaml-build-system)
3139 (native-inputs
564cf93f 3140 `(("js-build-tools" ,ocaml4.02-js-build-tools)
651563bd
JL
3141 ("opam" ,opam)))
3142 (propagated-inputs
564cf93f
JL
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)))
651563bd
JL
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)))
a43160ee 3153
564cf93f 3154(define-public ocaml4.02-ppx-assert
a43160ee 3155 (package
564cf93f 3156 (name "ocaml4.02-ppx-assert")
a43160ee
JL
3157 (version "113.33.03")
3158 (source (janestreet-origin "ppx_assert" version
3159 "1k5kxmqkibp5fk25pgz81f3c1r4mgvb5byzf6bnmxd24y60wn46p"))
3160 (build-system ocaml-build-system)
3161 (native-inputs
564cf93f 3162 `(("js-build-tools" ,ocaml4.02-js-build-tools)
a43160ee
JL
3163 ("opam" ,opam)))
3164 (propagated-inputs
564cf93f
JL
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)))
a43160ee
JL
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)))
250ac438 3181
564cf93f 3182(define-public ocaml4.02-ppx-enumerate
250ac438 3183 (package
564cf93f 3184 (name "ocaml4.02-ppx-enumerate")
250ac438
JL
3185 (version "113.33.03")
3186 (source (janestreet-origin "ppx_enumerate" version
3187 "15g7yfv9wg2h9r6k6q1zrhygmsl4xrfn25mrb0i4czjjivzmxjh4"))
3188 (build-system ocaml-build-system)
3189 (native-inputs
564cf93f 3190 `(("js-build-tools" ,ocaml4.02-js-build-tools)
250ac438
JL
3191 ("opam" ,opam)))
3192 (propagated-inputs
564cf93f
JL
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)))
250ac438
JL
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
3203for the list of all values of a type (for a type which only has finitely
3204many values).")
3205 (license license:asl2.0)))
d2203187 3206
564cf93f 3207(define-public ocaml4.02-ppx-let
d2203187 3208 (package
564cf93f 3209 (name "ocaml4.02-ppx-let")
d2203187
JL
3210 (version "113.33.03")
3211 (source (janestreet-origin "ppx_let" version
3212 "0gd6d3gdaqfwjcs7gaw1qxc30i584q6a86ndaj1bx1q63xqd6yx9"))
3213 (build-system ocaml-build-system)
3214 (native-inputs
564cf93f 3215 `(("js-build-tools" ,ocaml4.02-js-build-tools)
d2203187
JL
3216 ("opam" ,opam)))
3217 (propagated-inputs
564cf93f
JL
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)))
d2203187
JL
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,
3227match expressions, and if expressions.")
3228 (license license:asl2.0)))
edda7ebe 3229
564cf93f 3230(define-public ocaml4.02-ppx-typerep-conv
edda7ebe 3231 (package
564cf93f 3232 (name "ocaml4.02-ppx-typerep-conv")
edda7ebe
JL
3233 (version "113.33.03")
3234 (source (janestreet-origin "ppx_typerep_conv" version
3235 "0g0xqm9s1b2jjvxb8yp69281q2s3bwz6sibn10fvgcdawpa0rmrg"))
3236 (build-system ocaml-build-system)
3237 (native-inputs
564cf93f 3238 `(("js-build-tools" ,ocaml4.02-js-build-tools)
edda7ebe
JL
3239 ("opam" ,opam)))
3240 (propagated-inputs
564cf93f
JL
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)))
edda7ebe
JL
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)))
25941ca1 3253
564cf93f 3254(define-public ocaml4.02-ppx-sexp-value
25941ca1 3255 (package
564cf93f 3256 (name "ocaml4.02-ppx-sexp-value")
25941ca1
JL
3257 (version "113.33.03")
3258 (source (janestreet-origin "ppx_sexp_value" version
3259 "0m3ag23mbqm0i2pv1dzilfks15ipa5q60mf57a0cd3p0pvarq10g"))
3260 (build-system ocaml-build-system)
3261 (native-inputs
564cf93f 3262 `(("js-build-tools" ,ocaml4.02-js-build-tools)
25941ca1
JL
3263 ("opam" ,opam)))
3264 (propagated-inputs
564cf93f
JL
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)))
25941ca1
JL
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
3277ocaml values.")
3278 (license license:asl2.0)))
3674d7df 3279
564cf93f 3280(define-public ocaml4.02-ppx-pipebang
3674d7df 3281 (package
564cf93f 3282 (name "ocaml4.02-ppx-pipebang")
3674d7df
JL
3283 (version "113.33.03")
3284 (source (janestreet-origin "ppx_pipebang" version
3285 "1965c7hymp26ncmjs0pfxi2s5jlj60z2c9b194lgcwxqiav56pcw"))
3286 (build-system ocaml-build-system)
3287 (native-inputs
564cf93f 3288 `(("js-build-tools" ,ocaml4.02-js-build-tools)
3674d7df
JL
3289 ("opam" ,opam)))
3290 (propagated-inputs
564cf93f
JL
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)))
3674d7df
JL
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)))
5d6d7ab0 3303
564cf93f 3304(define-public ocaml4.02-ppx-bin-prot
5d6d7ab0 3305 (package
564cf93f 3306 (name "ocaml4.02-ppx-bin-prot")
5d6d7ab0
JL
3307 (version "113.33.03")
3308 (source (janestreet-origin "ppx_bin_prot" version
3309 "173kjv36giik11zgfvsbzwfbpr66dm2pcha9vf990jgzh8hqz39h"))
3310 (build-system ocaml-build-system)
3311 (native-inputs
564cf93f 3312 `(("js-build-tools" ,ocaml4.02-js-build-tools)
5d6d7ab0
JL
3313 ("opam" ,opam)))
3314 (propagated-inputs
564cf93f
JL
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)))
5d6d7ab0
JL
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
3326functions from type definitions.")
3327 (license license:asl2.0)))
7ea5acc6 3328
564cf93f 3329(define-public ocaml4.02-ppx-fail
7ea5acc6 3330 (package
564cf93f 3331 (name "ocaml4.02-ppx-fail")
7ea5acc6
JL
3332 (version "113.33.03")
3333 (source (janestreet-origin "ppx_fail" version
3334 "1dwgad0f05gqp5rnwf9dcasidpfi7q3mrpazsw3a2vijjblbhjgn"))
3335 (build-system ocaml-build-system)
3336 (native-inputs
564cf93f 3337 `(("js-build-tools" ,ocaml4.02-js-build-tools)
7ea5acc6
JL
3338 ("opam" ,opam)))
3339 (propagated-inputs
564cf93f
JL
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)))
7ea5acc6
JL
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
3351position.")
3352 (license license:asl2.0)))
c64fecc2 3353
564cf93f 3354(define-public ocaml4.02-ppx-custom-printf
c64fecc2 3355 (package
564cf93f 3356 (name "ocaml4.02-ppx-custom-printf")
c64fecc2
JL
3357 (version "113.33.03")
3358 (source (janestreet-origin "ppx_custom_printf" version
3359 "11jlx0n87g2j1vyyp343dibx7lvvwig5j5q0nq0b80kbsq0k6yr8"))
3360 (build-system ocaml-build-system)
3361 (native-inputs
564cf93f 3362 `(("js-build-tools" ,ocaml4.02-js-build-tools)
c64fecc2
JL
3363 ("opam" ,opam)))
3364 (propagated-inputs
564cf93f
JL
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)))
c64fecc2
JL
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
3376string conversion.")
3377 (license license:asl2.0)))
9b8bc957 3378
564cf93f 3379(define-public ocaml4.02-ppx-sexp-message
9b8bc957 3380 (package
564cf93f 3381 (name "ocaml4.02-ppx-sexp-message")
9b8bc957
JL
3382 (version "113.33.03")
3383 (source (janestreet-origin "ppx_sexp_message" version
3384 "084w1l3gnyw4ri9vbn7bv9b2xkw1520qczfxpxdarfivdrz8xr68"))
3385 (build-system ocaml-build-system)
3386 (native-inputs
564cf93f 3387 `(("js-build-tools" ,ocaml4.02-js-build-tools)
9b8bc957
JL
3388 ("opam" ,opam)))
3389 (propagated-inputs
564cf93f
JL
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)))
9b8bc957
JL
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
3402in OCaml. This is mainly motivated by writing error and debugging messages,
3403where one needs to construct a s-expression based on various element of the
3404context such as function arguments.")
3405 (license license:asl2.0)))
38cb1ec6 3406
564cf93f 3407(define-public ocaml4.02-ppx-fields-conv
38cb1ec6 3408 (package
564cf93f 3409 (name "ocaml4.02-ppx-fields-conv")
38cb1ec6
JL
3410 (version "113.33.03")
3411 (source (janestreet-origin "ppx_fields_conv" version
3412 "1vzbdz27g5qhhfs7wx6rjf979q4xyssxqbmp6sc1sxknbghslbdv"))
3413 (build-system ocaml-build-system)
3414 (native-inputs
564cf93f 3415 `(("js-build-tools" ,ocaml4.02-js-build-tools)
38cb1ec6 3416 ("opam" ,opam)
564cf93f 3417 ("ppx-core" ,ocaml4.02-ppx-core)))
38cb1ec6 3418 (propagated-inputs
564cf93f
JL
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)))
38cb1ec6
JL
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
3430first class values representing record fields, and additional routines, to get
3431and set record fields, iterate and fold over all fields of a record and create
3432new record values.")
3433 (license license:asl2.0)))
f27522d6 3434
564cf93f
JL
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\"
3462version=\"[distributed with ocaml]\"
3463description=\"dummy package for compatibility\"
3464requires=\"\"")))
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
3471standard 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
f27522d6
JL
3484(define-public ocaml-re
3485 (package
3486 (name "ocaml-re")
564cf93f 3487 (version "1.8.0")
f27522d6
JL
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
564cf93f 3495 "1pdb0mr6z5ax6szblr3f5lbdnqq9grm97cmsfjmdma60yrx2rqhd"))))
d6fa189e 3496 (build-system dune-build-system)
564cf93f
JL
3497 (arguments
3498 `(#:tests? #f
d6fa189e 3499 #:build-flags (list "--profile" "release")))
564cf93f
JL
3500 (propagated-inputs
3501 `(("ocaml-seq" ,ocaml-seq)))
3502 (native-inputs
d6fa189e 3503 `(("ounit" ,ocaml-ounit)))
f27522d6
JL
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)))
5cd47fb0 3515
564cf93f
JL
3516(define-public ocaml4.02-re
3517 (package-with-ocaml4.02 ocaml-re))
3518
3519(define-public ocaml4.02-ppx-expect
5cd47fb0 3520 (package
564cf93f 3521 (name "ocaml4.02-ppx-expect")
5cd47fb0
JL
3522 (version "113.33.03")
3523 (source (janestreet-origin "ppx_expect" version
3524 "03sbs4s5i8l9syr45v25f5hzy7msd2b47k2a9wsq9m43d4imgkrc"))
3525 (build-system ocaml-build-system)
3526 (native-inputs
564cf93f 3527 `(("js-build-tools" ,ocaml4.02-js-build-tools)
5cd47fb0
JL
3528 ("opam" ,opam)))
3529 (propagated-inputs
564cf93f
JL
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)))
5cd47fb0
JL
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
3551to Cram. Expect-tests mimic the existing inline tests framework with the
3552let%expect_test construct. The body of an expect-test can contain
3553output-generating code, interleaved with %expect extension expressions to denote
3554the expected output.")
3555 (license license:asl2.0)))
2f4c2df1 3556
564cf93f 3557(define-public ocaml4.02-ppx-jane
2f4c2df1 3558 (package
564cf93f 3559 (name "ocaml4.02-ppx-jane")
2f4c2df1
JL
3560 (version "113.33.03")
3561 (source (janestreet-origin "ppx_jane" version
3562 "0bjxkhmzgm6x9dcvjwybbccn34khbvyyjimcbaja30fp6qcqk5yl"))
3563 (build-system ocaml-build-system)
3564 (native-inputs
564cf93f 3565 `(("js-build-tools" ,ocaml4.02-js-build-tools)
2f4c2df1
JL
3566 ("opam" ,opam)))
3567 (propagated-inputs
564cf93f
JL
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)))
2f4c2df1
JL
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)))
52485163 3595
564cf93f 3596(define-public ocaml4.02-core-kernel
52485163 3597 (package
564cf93f 3598 (name "ocaml4.02-core-kernel")
52485163
JL
3599 (version "113.33.03")
3600 (source (janestreet-origin "core_kernel" version
3601 "0fl23jrwivixawhxinbwaw9cabqnzn7fini7dxpxjjvkxdc8ip5y"))
3602 (native-inputs
564cf93f
JL
3603 `(("js-build-tools" ,ocaml4.02-js-build-tools)
3604 ("ppx-jane" ,ocaml4.02-ppx-jane)
52485163
JL
3605 ("opam" ,opam)))
3606 (propagated-inputs
564cf93f
JL
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)))
52485163 3618 (build-system ocaml-build-system)
564cf93f
JL
3619 (arguments
3620 (ensure-keyword-arguments janestreet-arguments
3621 `(#:ocaml ,ocaml-4.02
3622 #:findlib ,ocaml4.02-findlib)))
52485163
JL
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
3627Core_kernel is the system-independent part of Core. It is aimed for cases when
3628the full Core is not available, such as in Javascript.")
3629 (license license:asl2.0)))
e31ee74d 3630
564cf93f 3631(define-public ocaml4.02-async-kernel
e31ee74d 3632 (package
564cf93f 3633 (name "ocaml4.02-async-kernel")
e31ee74d
JL
3634 (version "113.33.03")
3635 (source (janestreet-origin "async_kernel" version
3636 "04bjsaa23j831r09r38x6xx9nhryvp0z5ihickvhxqa4fb2snyvd"))
3637 (native-inputs
3638 `(("oasis" ,ocaml-oasis)
564cf93f
JL
3639 ("js-build-tools" ,ocaml4.02-js-build-tools)
3640 ("ppx-jane" ,ocaml4.02-ppx-jane)
e31ee74d
JL
3641 ("opam" ,opam)))
3642 (propagated-inputs
564cf93f 3643 `(("core-kernel" ,ocaml4.02-core-kernel)))
e31ee74d 3644 (build-system ocaml-build-system)
564cf93f
JL
3645 (arguments
3646 (ensure-keyword-arguments janestreet-arguments
3647 `(#:ocaml ,ocaml-4.02
3648 #:findlib ,ocaml4.02-findlib)))
e31ee74d
JL
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)))
cf28a731 3653
564cf93f 3654(define-public ocaml4.02-async-rpc-kernel
cf28a731 3655 (package
564cf93f 3656 (name "ocaml4.02-async-rpc-kernel")
cf28a731
JL
3657 (version "113.33.03")
3658 (source (janestreet-origin "async_rpc_kernel" version
3659 "0y97h9pkb00v7jpf87m8cbb0ffkclj9g26ph6sq97q8dpisnkjwh"))
3660 (native-inputs
3661 `(("oasis" ,ocaml-oasis)
564cf93f
JL
3662 ("js-build-tools" ,ocaml4.02-js-build-tools)
3663 ("ppx-jane" ,ocaml4.02-ppx-jane)
cf28a731
JL
3664 ("opam" ,opam)))
3665 (propagated-inputs
564cf93f 3666 `(("async-kernel" ,ocaml4.02-async-kernel)))
cf28a731 3667 (build-system ocaml-build-system)
564cf93f
JL
3668 (arguments
3669 (ensure-keyword-arguments janestreet-arguments
3670 `(#:ocaml ,ocaml-4.02
3671 #:findlib ,ocaml4.02-findlib)))
cf28a731
JL
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
3675the Async RPC library.")
3676 (license license:asl2.0)))
4a5fd872 3677
564cf93f 3678(define-public ocaml4.02-core
4a5fd872 3679 (package
564cf93f 3680 (name "ocaml4.02-core")
4a5fd872
JL
3681 (version "113.33.03")
3682 (source (janestreet-origin "core" version
3683 "1znll157qg56g9d3247fjibv1hxv3r9wxgr4nhy19j2vzdh6a268"))
3684 (native-inputs
3685 `(("oasis" ,ocaml-oasis)
564cf93f
JL
3686 ("js-build-tools" ,ocaml4.02-js-build-tools)
3687 ("ppx-jane" ,ocaml4.02-ppx-jane)
4a5fd872
JL
3688 ("opam" ,opam)))
3689 (propagated-inputs
564cf93f 3690 `(("core-kernel" ,ocaml4.02-core-kernel)))
4a5fd872 3691 (build-system ocaml-build-system)
564cf93f
JL
3692 (arguments
3693 (ensure-keyword-arguments janestreet-arguments
3694 `(#:ocaml ,ocaml-4.02
3695 #:findlib ,ocaml4.02-findlib)))
4a5fd872
JL
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
3699standard library that was developed by Jane Street.")
3700 (license license:asl2.0)))
7f1620df 3701
564cf93f 3702(define-public ocaml4.02-async-unix
7f1620df 3703 (package
564cf93f 3704 (name "ocaml4.02-async-unix")
7f1620df
JL
3705 (version "113.33.03")
3706 (source (janestreet-origin "async_unix" version
3707 "1fwl0lfrizllcfjk8hk8m7lsz9ha2jg6qgk4gssfyz377qvpcq4h"))
3708 (native-inputs
3709 `(("oasis" ,ocaml-oasis)
564cf93f
JL
3710 ("js-build-tools" ,ocaml4.02-js-build-tools)
3711 ("ppx-jane" ,ocaml4.02-ppx-jane)
7f1620df
JL
3712 ("opam" ,opam)))
3713 (propagated-inputs
564cf93f
JL
3714 `(("async-kernel" ,ocaml4.02-async-kernel)
3715 ("core" ,ocaml4.02-core)))
7f1620df 3716 (build-system ocaml-build-system)
564cf93f
JL
3717 (arguments
3718 (ensure-keyword-arguments janestreet-arguments
3719 `(#:ocaml ,ocaml-4.02
3720 #:findlib ,ocaml4.02-findlib)))
7f1620df
JL
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)))
d7f6d048 3725
564cf93f 3726(define-public ocaml4.02-async-extra
d7f6d048 3727 (package
564cf93f 3728 (name "ocaml4.02-async-extra")
d7f6d048
JL
3729 (version "113.33.03")
3730 (source (janestreet-origin "async_extra" version
3731 "1si8jgiq5xh5sl9f2b7f9p17p7zx5h1pg557x2cxywi2x7pxqg4f"))
3732 (native-inputs
3733 `(("oasis" ,ocaml-oasis)
564cf93f
JL
3734 ("js-build-tools" ,ocaml4.02-js-build-tools)
3735 ("ppx-jane" ,ocaml4.02-ppx-jane)
d7f6d048
JL
3736 ("opam" ,opam)))
3737 (propagated-inputs
564cf93f
JL
3738 `(("async-rpc-kernel" ,ocaml4.02-async-rpc-kernel)
3739 ("async-unix" ,ocaml4.02-async-unix)
3740 ("core" ,ocaml4.02-core)))
d7f6d048 3741 (build-system ocaml-build-system)
564cf93f
JL
3742 (arguments
3743 (ensure-keyword-arguments janestreet-arguments
3744 `(#:ocaml ,ocaml-4.02
3745 #:findlib ,ocaml4.02-findlib)))
d7f6d048
JL
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
3749async library.")
3750 (license license:asl2.0)))
84470902 3751
564cf93f 3752(define-public ocaml4.02-async
84470902 3753 (package
564cf93f 3754 (name "ocaml4.02-async")
84470902
JL
3755 (version "113.33.03")
3756 (source (janestreet-origin "async" version
3757 "0210fyhcs12kpmmd26015bgivkfd2wqkyn3c5wd7688d0f872y25"))
3758 (native-inputs
3759 `(("oasis" ,ocaml-oasis)
564cf93f
JL
3760 ("js-build-tools" ,ocaml4.02-js-build-tools)
3761 ("ppx-jane" ,ocaml4.02-ppx-jane)
84470902
JL
3762 ("opam" ,opam)))
3763 (propagated-inputs
564cf93f 3764 `(("async-extra" ,ocaml4.02-async-extra)))
84470902 3765 (build-system ocaml-build-system)
564cf93f
JL
3766 (arguments
3767 (ensure-keyword-arguments janestreet-arguments
3768 `(#:ocaml ,ocaml-4.02
3769 #:findlib ,ocaml4.02-findlib)))
84470902
JL
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)))
9059d856
JL
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)
564cf93f
JL
3788 (native-inputs
3789 `(("cppo" ,ocaml-cppo)
3790 ("ocamlbuild" ,ocamlbuild)))
9059d856
JL
3791 (home-page "https://github.com/OCamlPro/ocplib-endian")
3792 (synopsis "Optimised functions to read and write int16/32/64 from strings
3793and bigarrays")
3794 (description "Optimised functions to read and write int16/32/64 from strings
3795and bigarrays, based on new primitives added in version 4.01. It works on
3796strings, bytes and bigstring (Bigarrys of chars), and provides submodules for
3797big- and little-endian, with their unsafe counter-parts.")
3798 (license license:lgpl2.1)))
0090b895 3799
564cf93f
JL
3800(define-public ocaml4.02-ocplib-endian
3801 (package-with-ocaml4.02 ocaml-ocplib-endian))
3802
3803(define-public ocaml4.02-cstruct
0090b895 3804 (package
564cf93f 3805 (name "ocaml4.02-cstruct")
0090b895
JL
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
564cf93f
JL
3817 `(#:ocaml ,ocaml-4.02
3818 #:findlib ,ocaml4.02-findlib
3819 #:configure-flags
0090b895
JL
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
564cf93f
JL
3832 `(("ounit" ,ocaml4.02-ounit)
3833 ("ppx-tools" ,ocaml4.02-ppx-tools)
3834 ("camlp4" ,camlp4-4.02)))
0090b895 3835 (propagated-inputs
564cf93f
JL
3836 `(("ocplib-endian" ,ocaml4.02-ocplib-endian)
3837 ("lwt" ,ocaml4.02-lwt)
3838 ("async" ,ocaml4.02-async)
3839 ("sexplib" ,ocaml4.02-sexplib)))
0090b895
JL
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
3843to access C-like structures directly from OCaml. It supports both reading and
3844writing to these structures, and they are accessed via the Bigarray module.")
3845 (license license:isc)))
61bafd44 3846
564cf93f 3847(define-public ocaml4.02-hex
61bafd44 3848 (package
564cf93f 3849 (name "ocaml4.02-hex")
61bafd44
JL
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)
564cf93f
JL
3860 (arguments
3861 `(#:ocaml ,ocaml-4.02
3862 #:findlib ,ocaml4.02-findlib))
3863 (propagated-inputs
3864 `(("cstruct" ,ocaml4.02-cstruct)))
61bafd44
JL
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)))
d163d97d 3869
564cf93f 3870(define-public ocaml4.02-ezjsonm
bf7bc0d6 3871 (package
564cf93f 3872 (name "ocaml4.02-ezjsonm")
bf7bc0d6
JL
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
564cf93f 3884 `(("alcotest" ,ocaml4.02-alcotest)))
bf7bc0d6 3885 (propagated-inputs
564cf93f
JL
3886 `(("hex" ,ocaml4.02-hex)
3887 ("jsonm" ,ocaml4.02-jsonm)
3888 ("lwt" ,ocaml4.02-lwt)
3889 ("sexplib" ,ocaml4.02-sexplib)))
bf7bc0d6 3890 (arguments
564cf93f
JL
3891 `(#:configure-flags (list "--enable-lwt")
3892 #:ocaml ,ocaml-4.02
3893 #:findlib ,ocaml4.02-findlib))
bf7bc0d6
JL
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
3897and output functions that go to and from [string] values than jsonm. This avoids
3898the need to write signal code, which is useful for quick scripts that manipulate
3899JSON.")
3900 (license license:isc)))
3901
564cf93f 3902(define-public ocaml4.02-uri
3dabefee 3903 (package
564cf93f 3904 (name "ocaml4.02-uri")
3dabefee
JL
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)
564cf93f
JL
3915 (arguments
3916 `(#:ocaml ,ocaml-4.02
3917 #:findlib ,ocaml4.02-findlib))
3dabefee 3918 (native-inputs
564cf93f 3919 `(("ounit" ,ocaml4.02-ounit)))
3dabefee 3920 (propagated-inputs
564cf93f
JL
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)))
3dabefee
JL
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
6134aeb9
JL
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
3951Format module of the OCaml standard library.")
3952 (license license:bsd-3)))
3953
564cf93f
JL
3954(define-public ocaml4.02-easy-format
3955 (package-with-ocaml4.02 ocaml-easy-format))
3956
b5c0217c
JL
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
564cf93f
JL
3971 `(#:ocaml ,ocaml-4.02
3972 #:findlib ,ocaml4.02-findlib
3973 #:use-make? #t
b5c0217c
JL
3974 #:make-flags
3975 (list (string-append "BUILDFLAGS=\"-cflags -I,"
3976 (assoc-ref %build-inputs "camlp4")
3977 "/lib/ocaml/site-lib/camlp4/Camlp4Parsers\""))))
564cf93f
JL
3978 (native-inputs `(("camlp4" ,camlp4-4.02)))
3979 (propagated-inputs `(("camlp4" ,camlp4-4.02)))
b5c0217c
JL
3980 (home-page "https://github.com/diml/optcomp")
3981 (synopsis "Optional compilation for OCaml")
3982 (description "Optcomp provides an optional compilation facility with
3983cpp-like directives.")
3984 (license license:bsd-3)))
3985
9c5dbbf0
JL
3986(define-public ocaml-piqilib
3987 (package
3988 (name "ocaml-piqilib")
564cf93f 3989 (version "0.6.14")
9c5dbbf0
JL
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
564cf93f 3996 "1ssccnwqzfyf7syfq2fv4zyhwayxwd75rhq9y28mvq1w6qbww4l7"))
9c5dbbf0
JL
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")))
564cf93f
JL
4012 (invoke "./configure" "--prefix" out "--ocaml-libdir"
4013 (string-append out "/lib/ocaml/site-lib")))
4014 #t))
9c5dbbf0
JL
4015 (add-after 'build 'build-ocaml
4016 (lambda* (#:key outputs #:allow-other-keys)
564cf93f
JL
4017 (invoke "make" "ocaml")
4018 #t))
9c5dbbf0
JL
4019 (add-after 'install 'install-ocaml
4020 (lambda* (#:key outputs #:allow-other-keys)
564cf93f
JL
4021 (invoke "make" "ocaml-install")
4022 #t))
9c5dbbf0
JL
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)
9c5dbbf0
JL
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
4043tool and piqi-ocaml.")
4044 (license license:asl2.0)))
4045
564cf93f
JL
4046(define-public ocaml4.02-piqilib
4047 (package-with-ocaml4.02 ocaml-piqilib))
4048
88b1533c
JL
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
564cf93f
JL
4068 `(("ocamlbuild" ,ocamlbuild)
4069 ("opam" ,opam)))
88b1533c
JL
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
4076unique identifiers (UUIDs) version 3, 5 (named based with MD5, SHA-1 hashing)
4077and 4 (random based) according to RFC 4122.")
4078 (license license:isc)))
4079
564cf93f
JL
4080(define-public ocaml4.02-uuidm
4081 (package-with-ocaml4.02 ocaml-uuidm))
4082
8a238180
JL
4083(define-public ocaml-graph
4084 (package
4085 (name "ocaml-graph")
564cf93f 4086 (version "1.8.8")
8a238180
JL
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
564cf93f 4093 "0m9g16wrrr86gw4fz2fazrh8nkqms0n863w7ndcvrmyafgxvxsnr"))))
8a238180
JL
4094 (build-system ocaml-build-system)
4095 (arguments
4096 `(#:install-target "install-findlib"
564cf93f 4097 #:tests? #f
8a238180
JL
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)))
8737666a 4105 (properties `((upstream-name . "ocamlgraph")))
8a238180
JL
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
564cf93f
JL
4111(define-public ocaml4.02-graph
4112 (package-with-ocaml4.02 ocaml-graph))
4113
fc3d70ae
JL
4114(define-public ocaml-piqi
4115 (package
4116 (name "ocaml-piqi")
564cf93f 4117 (version "0.7.6")
fc3d70ae
JL
4118 (source (origin
4119 (method url-fetch)
4120 (uri (string-append "https://github.com/alavrik/piqi-ocaml/"
4121 "archive/v" version ".tar.gz"))
597beb8a 4122 (file-name (string-append name "-" version ".tar.gz"))
fc3d70ae
JL
4123 (sha256
4124 (base32
564cf93f 4125 "0da0v2v28aj65b0cwpvvmcqyrfvz94pp3j5zgfdr1jrl5s37c21g"))))
fc3d70ae
JL
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)
564cf93f 4137 ("camlp4" ,camlp4)
fc3d70ae
JL
4138 ("protobuf" ,protobuf))) ; for tests
4139 (propagated-inputs
564cf93f
JL
4140 `(("num" ,ocaml-num)
4141 ("piqilib" ,ocaml-piqilib)))
4142 (properties
4143 `((ocaml4.02-variant . ,(delay ocaml4.02-piqi))))
fc3d70ae
JL
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.
4147It provides a uniform interface for serializing OCaml data structures to JSON,
4148XML and Protocol Buffers formats.")
4149 (license license:asl2.0)))
4150
564cf93f
JL
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
cd1562ef
JL
4158(define-public bap
4159 (package
4160 (name "bap")
564cf93f 4161 (version "1.3.0")
cd1562ef
JL
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
564cf93f 4168 "0v95v9mp7mg8fj25ry0w7566zd9xp6cs8nnqj4l38q54fb1hfav9"))
cd1562ef
JL
4169 (file-name (string-append name "-" version ".tar.gz"))))
4170 (build-system ocaml-build-system)
4171 (native-inputs
564cf93f 4172 `(("oasis" ,ocaml4.02-oasis)
67b5785e 4173 ("clang" ,clang-3.8)
564cf93f 4174 ("ounit" ,ocaml4.02-ounit)))
cd1562ef 4175 (propagated-inputs
564cf93f
JL
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)
67b5785e 4180 ("llvm" ,llvm-3.8)
cd1562ef
JL
4181 ("gmp" ,gmp)
4182 ("clang-runtime" ,clang-runtime)
564cf93f
JL
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)
cd1562ef 4188 ("frontc" ,ocaml-frontc)
564cf93f
JL
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)))
67b5785e 4196 (inputs `(("llvm" ,llvm-3.8)))
cd1562ef 4197 (arguments
564cf93f
JL
4198 `(#:ocaml ,ocaml-4.02
4199 #:findlib ,ocaml4.02-findlib
4200 #:use-make? #t
cd1562ef
JL
4201 #:phases
4202 (modify-phases %standard-phases
4203 (replace 'configure
564cf93f
JL
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")))))))
cd1562ef
JL
4218 (synopsis "Binary Analysis Platform")
4219 (description "Binary Analysis Platform is a framework for writing program
4220analysis tools, that target binary files. The framework consists of a plethora
4221of libraries, plugins, and frontends. The libraries provide code reusability,
4222the plugins facilitate extensibility, and the frontends serve as entry points.")
4223 (license license:expat)))
4224
408091d5
JL
4225(define-public ocaml-camomile
4226 (package
4227 (name "ocaml-camomile")
564cf93f 4228 (version "1.0.1")
408091d5
JL
4229 (home-page "https://github.com/yoriyuki/Camomile")
4230 (source (origin
4231 (method url-fetch)
564cf93f
JL
4232 (uri (string-append home-page "/releases/download/" version
4233 "/camomile-" version ".tbz"))
408091d5
JL
4234 (sha256
4235 (base32
564cf93f 4236 "01ssjrqz41jvrqh27jxnh9cx7ywi9b5sgsykd00i7z9nrcwhlfy2"))))
426e629e 4237 (build-system dune-build-system)
564cf93f 4238 (native-inputs
426e629e 4239 `(("camlp4" ,camlp4)))
408091d5 4240 (arguments
426e629e 4241 `(#:build-flags (list "--profile" "realease")
564cf93f 4242 #:tests? #f))
408091d5
JL
4243 (synopsis "Comprehensive Unicode library")
4244 (description "Camomile is a Unicode library for OCaml. Camomile provides
4245Unicode character type, UTF-8, UTF-16, UTF-32 strings, conversion to/from about
4246200 encodings, collation and locale-sensitive case mappings, and more. The
4247library 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
564cf93f
JL
4251(define-public ocaml4.02-camomile
4252 (package-with-ocaml4.02 ocaml-camomile))
4253
c00233ac
PK
4254(define-public ocaml-jbuilder
4255 (package
4256 (name "ocaml-jbuilder")
0e43721f 4257 (version "1.0+beta16")
c00233ac
PK
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
564cf93f 4266 "1cy07pwvbrlysszs938yd74yyvvbgkffpb82qrjph77zf0h2gdi7"))))
c00233ac
PK
4267 (build-system ocaml-build-system)
4268 (arguments
564cf93f
JL
4269 `(#:ocaml ,ocaml-4.02
4270 #:findlib ,ocaml4.02-findlib
4271 #:phases
c00233ac
PK
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
564cf93f 4279 `(("menhir" ,ocaml4.02-menhir)))
c00233ac
PK
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
4285only. It focuses on providing the user with a consistent experience and takes
4286care of most of the low-level details of OCaml compilation. All you have to do
4287is provide a description of your project and Jbuilder will do the rest.")
4288 (license license:asl2.0)))
4289
cd4abd29
PK
4290(define-public ocaml-zed
4291 (package
4292 (name "ocaml-zed")
c959a774 4293 (version "1.6")
cd4abd29
PK
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
c959a774 4301 "19m5vrj60vg1b63qfsv0aabdlzgn40cqmx65s3wafqi4fs9xp6jn"))))
cd4abd29
PK
4302 (build-system ocaml-build-system)
4303 (arguments
4304 `(#:phases
4305 (modify-phases %standard-phases
4306 (delete 'configure)
4307 (replace 'build
c6aaa7be 4308 (lambda _ (invoke "jbuilder" "build")))
cd4abd29
PK
4309 (delete 'check)
4310 (replace 'install
4311 (lambda* (#:key outputs #:allow-other-keys)
4312 (let ((out (assoc-ref outputs "out")))
c6aaa7be 4313 (invoke "jbuilder" "install" "--prefix" out)))))))
cd4abd29
PK
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
4322to write text editors, edition widgets, readlines, etc. You just have to
4323connect an engine to your inputs and rendering functions to get an editor.")
4324 (license license:bsd-3)))
4325
564cf93f
JL
4326(define-public ocaml4.02-zed
4327 (package-with-ocaml4.02 ocaml-zed))
4328
e88ff71c
PK
4329(define-public ocaml-lambda-term
4330 (package
4331 (name "ocaml-lambda-term")
564cf93f 4332 (version "1.13")
e88ff71c
PK
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
564cf93f 4340 (base32 "1hy5ryagqclgdm9lzh1qil5mrynlypv7mn6qm858hdcnmz9zzn0l"))))
34d5314e 4341 (build-system dune-build-system)
e88ff71c 4342 (arguments
34d5314e 4343 `(#:build-flags (list "--profile" "release")
564cf93f 4344 #:tests? #f))
e88ff71c
PK
4345 (propagated-inputs
4346 `(("lwt" ,ocaml-lwt)
564cf93f 4347 ("lwt-log" ,ocaml-lwt-log)
e88ff71c
PK
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
4352terminal. It provides an abstraction for keys, mouse events, colors, as well as
4353a set of widgets to write curses-like applications. The main objective of
4354Lambda-Term is to provide a higher level functional interface to terminal
4355manipulation than, for example, ncurses, by providing a native OCaml interface
4356instead of bindings to a C library.")
4357 (license license:bsd-3)))
4358
564cf93f
JL
4359(define-public ocaml4.02-lambda-term
4360 (package-with-ocaml4.02 ocaml-lambda-term))
4361
90ab26fa
PK
4362(define-public ocaml-utop
4363 (package
4364 (name "ocaml-utop")
564cf93f 4365 (version "2.2.0")
90ab26fa
PK
4366 (source (origin
4367 (method url-fetch)
564cf93f 4368 (uri (string-append "https://github.com/ocaml-community/utop/archive/"
90ab26fa
PK
4369 version ".tar.gz"))
4370 (file-name (string-append name "-" version ".tar.gz"))
4371 (sha256
4372 (base32
564cf93f 4373 "1414snwmqaxs1x8wbpjf6fn3jsl01hq0phrr7639xmb5vh15mgd4"))))
90ab26fa
PK
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)
48b11025
RW
4385 (invoke "jbuilder" "install"
4386 "--prefix" out
4387 "--libdir" libdir)))))))
90ab26fa
PK
4388 (native-inputs
4389 `(("ocaml" ,ocaml)
4390 ("cppo" ,ocaml-cppo)
4391 ("jbuilder" ,ocaml-jbuilder)))
4392 (propagated-inputs
bff6739d 4393 `(("ocaml-findlib" ,ocaml-findlib)
90ab26fa
PK
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
4402terminal or in Emacs. It supports line editing, history, real-time and context
4403sensitive completion, colors, and more.")
4404 (license license:bsd-3)))
4405
edac5354
PK
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))))
564cf93f
JL
4427 (native-inputs
4428 `(("ocamlbuild" ,ocamlbuild)))
edac5354 4429 (inputs
bff6739d 4430 `(("topkg" ,ocaml-topkg)
c695fb76 4431 ("opam" ,opam)))
edac5354
PK
4432 (synopsis "Various signed and unsigned integer types for OCaml")
4433 (description "The ocaml-integers library provides a number of 8-, 16-, 32-
4434and 64-bit signed and unsigned integer types, together with aliases such as
4435long and size_t whose sizes depend on the host platform.")
4436 (license license:expat)))
4437
69d08bb1
PK
4438(define-public ocaml-ctypes
4439 (package
4440 (name "ocaml-ctypes")
564cf93f 4441 (version "0.14.0")
69d08bb1
PK
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
564cf93f 4449 "0zrsd42q2nciyg9375g2kydqax6ay299rhyfgms59qiw7d9ylyp9"))))
69d08bb1
PK
4450 (build-system ocaml-build-system)
4451 (arguments
564cf93f
JL
4452 `(#:tests? #f; require an old lwt
4453 #:make-flags
69d08bb1
PK
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)
c695fb76 4466 ("opam" ,opam)))
69d08bb1
PK
4467 (synopsis "Library for binding to C libraries using pure OCaml")
4468 (description "Ctypes is a library for binding to C libraries using pure
4469OCaml. The primary aim is to make writing C extensions as straightforward as
4470possible. The core of ctypes is a set of combinators for describing the
4471structure of C types -- numeric types, arrays, pointers, structs, unions and
4472functions. You can use these combinators to describe the types of the
4473functions that you want to call, then bind directly to those functions -- all
4474without writing or generating any C!")
4475 (license license:expat)))
4476
c98c8237
PK
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
bff6739d 4493 `(#:build-flags (list "build" "--tests" "true")
c98c8237
PK
4494 #:phases
4495 (modify-phases %standard-phases
4496 (delete 'configure))))
4497 (inputs
4498 `(("topkg" ,ocaml-topkg)
c695fb76 4499 ("opam" ,opam)))
c98c8237 4500 (native-inputs
564cf93f
JL
4501 `(("astring" ,ocaml-astring)
4502 ("ocamlbuild" ,ocamlbuild)))
c98c8237
PK
4503 (synopsis "OCamlbuild plugin for C stubs")
4504 (description "Ocb-stubblr is about ten lines of code that you need to
4505repeat over, over, over and over again if you are using ocamlbuild to build
4506OCaml projects that contain C stubs.")
4507 (license license:isc)))
4508
a9e9fd15
PK
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
564cf93f
JL
4530 `(("ocamlbuild" ,ocamlbuild)
4531 ("opam" ,opam)
a9e9fd15
PK
4532 ("pkg-config" ,pkg-config)))
4533 (inputs
bff6739d 4534 `(("topkg" ,ocaml-topkg)
a9e9fd15
PK
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
4541cross-platform SDL C library.")
4542 (license license:isc)))
4543
5895696e
GH
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")
912f4400 4571 #t))
5895696e
GH
4572 (replace 'check
4573 (lambda _
4574 (invoke "make" "tests")
912f4400 4575 #t))
5895696e
GH
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"))))
912f4400
JL
4583 #t))
4584 (replace 'install
4585 (lambda _
4586 (invoke "make" "install")
4587 #t)))))
5895696e
GH
4588 (synopsis "Proof-checker for the λΠ-calculus modulo theory, an extension of
4589the λ-calculus")
4590 (description "Dedukti is a proof-checker for the λΠ-calculus modulo
4591theory. The λΠ-calculus is an extension of the simply typed λ-calculus with
4592dependent types. The λΠ-calculus modulo theory is itself an extension of the
4593λΠ-calculus where the context contains variable declaration as well as rewrite
4594rules. This system is not designed to develop proofs, but to check proofs
4595developed in other systems. In particular, it enjoys a minimalistic syntax.")
4596 (license license:cecill-c)))
2939fe7b 4597
db1eb632
LC
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
4627Dedukti 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
4651syntax checking on dedukti files.")
4652 (license license:cecill-b))))
4653
308d72bf
GH
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
4682in-line tests in ocaml code. It is part of Jane Street's PPX rewriters
4683collection.")
4684 (license license:expat)))
4685
2939fe7b
GH
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
4707compatibility")
4708 (description "Biniou (pronounced \"be new\" is a binary data format
4709designed for speed, safety, ease of use and backward compatibility as
4710protocols evolve. Biniou is vastly equivalent to JSON in terms of
4711functionality but allows implementations several times faster (4 times faster
4712than yojson), with 25-35% space savings.")
4713 (license license:bsd-3)))
2e951707
GH
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)
912f4400
JL
4731 (arguments
4732 `(#:test-target "."))
2e951707
GH
4733 (inputs
4734 `(("ocaml-biniou" ,ocaml-biniou)
912f4400
JL
4735 ("ocaml-easy-format" ,ocaml-easy-format)))
4736 (native-inputs
4737 `(("ocaml-cppo" ,ocaml-cppo)))
2e951707
GH
4738 (synopsis "Low-level JSON library for OCaml")
4739 (description "Yojson is an optimized parsing and printing library for the
4740JSON format. It addresses a few shortcomings of json-wheel including 2x
4741speedup, polymorphic variants and optional syntax for tuples and variants.
4742@code{ydump} is a pretty printing command-line program provided with the
4743yojson package. The program @code{atdgen} can be used to derive OCaml-JSON
4744serializers and deserializers from type definitions.")
4745 (license license:bsd-3)))
1d209d06
GH
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
4771applications. @code{craml} is freely inspired by the
4772Mercurial's @code{https://www.selenic.com/blog/?p=663, unified test
4773format}. @code{craml} is released as a single binary (called @code{craml}).")
4774 (license license:isc)))
59a07504 4775
64d25f0b
GH
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
4802features for OCaml. Emacs and Vim support is provided out-of-the-box.
4803External contributors added support for Visual Studio Code, Sublime Text and
4804Atom.")
4805 (license license:expat)))
4806
59a07504
LC
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
4828the 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
4886of array-based systems. This is a syntactically restricted class of
4887parametrized transition systems with states represented as arrays indexed by
4888an arbitrary number of processes. Cache coherence protocols and mutual
4889exclusion algorithms are typical examples of such systems.")
4890 (license license:asl2.0)))
5fa01e8a
GH
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
4911base converters")
4912 (description "Part of Jane Street's Core library The Core suite of
4913libraries is an industrial strength alternative to OCaml's standard library
4914that was developed by Jane Street, the largest industrial user of OCaml.")
4915(license license:expat)))
7726124a
GH
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
4938strings or other medium.
4939
4940The library is focused on performances but still provide full generic
4941parsers that can be used with strings, bigstrings, lexing buffers,
4942character streams or any other sources effortlessly.
4943
4944It provides three different class of parsers:
4945@itemize
4946@item
4947the normal parsers, producing [Sexp.t] or [Sexp.t list] values
4948@item
4949the parsers with positions, building compact position sequences so
4950that one can recover original positions in order to report properly
4951located errors at little cost
4952@item
4953the Concrete Syntax Tree parsers, produce values of type
4954@code{Parsexp.Cst.t} which record the concrete layout of the s-expression
4955syntax, including comments
4956@end itemize
4957
4958This library is portable and doesn't provide IO functions. To read
4959s-expressions from files or other external sources, you should use
4960parsexp_io.")
4961 (license license:expat)))
7cca1fd4
GH
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)
7e12b4c2 4979 (propagated-inputs
7cca1fd4
GH
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
4987functionality for parsing and pretty-printing s-expressions.")
4988 (license license:expat)))
22074259
GH
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)
7e12b4c2 5006 (propagated-inputs
22074259
GH
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
5019library. It provides all standard functionalities one would expect
5020from a language standard library. It uses consistent conventions
5021across all of its module.
5022
5023Base aims to be usable in any context. As a result system dependent
5024features such as I/O are not offered by Base. They are instead
5025provided by companion libraries such as
5026@url{https://github.com/janestreet/stdio, ocaml-stdio}.")
5027 (license license:expat)))
ac06a773
GH
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
5049so they don't expose everything at toplevel. For instance, @code{Ast_helper}
5050is now @code{Ocaml_common.Ast_helper}.")
5051 (license license:expat)))
b5bab81c
GH
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)
7e12b4c2
JL
5069 (propagated-inputs
5070 `(("ocaml-base" ,ocaml-base)
5071 ("ocaml-sexplib0" ,ocaml-sexplib0)))
b5bab81c
GH
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
5077re-exports the input/output functions of the OCaml standard libraries using
5078a more consistent API.")
5079 (license license:expat)))
3f623d00
GH
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
51e52f47 5100 (properties `((upstream-name . "ppx_derivers")))
3f623d00
GH
5101 (synopsis "Shared @code{@@deriving} plugin registry")
5102 (description
5103 "Ppx_derivers is a tiny package whose sole purpose is to allow
5104ppx_deriving and ppx_type_conv to inter-operate gracefully when linked
5105as part of the same ocaml-migrate-parsetree driver.")
5106 (license license:bsd-3)))
4d390cad
GH
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)
7e12b4c2 5124 (propagated-inputs
4d390cad
GH
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)))
4d390cad
GH
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
7e12b4c2 5139 (let* ((findlib-path (assoc-ref inputs "findlib"))
4d390cad
GH
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
5157independent of the version of OCaml;
5158@item a library for library for ppx rewriters in general, and type-driven code
5159generators in particular;
5160@item
5161a feature-full driver for OCaml AST transformers;
5162@item a quotation mechanism allowing to write values representing the
5163OCaml AST in the OCaml syntax;
5164@item a generator of open recursion classes from type definitions.
5165@end itemize")
5166 (license license:expat)))
c16c8bb6
JL
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
5190and definitions. Ppx_compare is a ppx rewriter that derives comparison functions
5191from type representations. The scaffolded functions are usually much faster
5192than ocaml's Pervasives.compare. Scaffolding functions also gives you more
5193flexibility by allowing you to override them for a specific type and more safety
5194by making sure that you only compare comparable values.")
5195 (license license:asl2.0)))
143685fd
JL
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
5221record fields, to get and set record fields, iterate and fold over all fields
5222of a record and create new record values.")
5223 (license license:asl2.0)))
d9f8433e
JL
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
5249standard library.")
5250 (license license:asl2.0)))
7b685486
JL
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
5274first class values representing record fields, and additional routines, to get
5275and set record fields, iterate and fold over all fields of a record and create
5276new record values.")
5277 (license license:asl2.0)))
c7cf165e
JL
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
5301definitions.")
5302 (license license:asl2.0)))
7523674c
JL
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
5330variant types.")
5331 (license license:asl2.0)))
e6f08ec9
JL
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
5355string conversion.")
5356 (license license:asl2.0)))
a0584d6c
JL
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
5383OCaml-values in a type-safe binary protocol. It is extremely efficient,
5384typically supporting type-safe marshalling and unmarshalling of even highly
5385structured values at speeds sufficient to saturate a gigabit connection. The
5386protocol is also heavily optimized for size, making it ideal for long-term
5387storage of large amounts of data.")
5388 (license (list
5389 license:asl2.0
5390 license:bsd-3))))
49b01fa3
JL
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)))
6692f652
JL
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
5435hash functions from type exrpessions and definitions.")
5436 (license license:asl2.0)))
db67f569
JL
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
5462for the list of all values of a type (for a type which only has finitely
5463many values).")
5464 (license license:asl2.0)))
b42afab2
JL
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)))
164b06da
JL
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)))
a58118ca
JL
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)))
e9328150
JL
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
5563ocaml values.")
5564 (license license:asl2.0)))
44a2ceca
JL
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
5589in OCaml. This is mainly motivated by writing error and debugging messages,
5590where one needs to construct a s-expression based on various element of the
5591context such as function arguments.")
5592 (license license:asl2.0)))
6a114001
JL
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)))
3f4ecf66
JL
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
5645else expression.")
5646 (license license:asl2.0)))
79967eea
JL
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
5669used to handle optional compilations of pieces of code depending of the word
5670size, the version of the compiler, ...")
5671 (license license:asl2.0)))
1365ae47
JL
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,
5694match expressions, and if expressions.")
5695 (license license:asl2.0)))
6018802d
JL
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
5719position.")
5720 (license license:asl2.0)))
7ec9a45d
JL
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
5746useful errors on failure.")
5747 (license license:asl2.0)))
4e4e5fb1
JL
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
5783to 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
5785output-generating code, interleaved with @code{%expect} extension expressions
5786to denote the expected output.")
5787 (license license:asl2.0)))
f4304c1d
JL
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
5815packages.")
5816 (license license:asl2.0)))
48ad1181
JL
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
5842from type definitions.")
5843 (license license:asl2.0)))
d13b9c5f
JL
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
5873Note that Base doesn't need ppx to build, it is only used as a
5874verification tool.")
5875 (license license:asl2.0)))
7bd4b85e
JL
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
5904functions from type definitions.")
5905 (license license:asl2.0)))
255f1cae
JL
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
5947driver including all standard Jane Street ppx rewriters.")
5948 (license license:asl2.0)))
5995e6d1
JL
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")
e88fd8be
CB
5970 (description "This package provides a splittable
5971@acronym{PRNG,pseudo-random number generator} functions like a PRNG that can
5972be used as a stream of random values; it can also be split to produce a
5973second, independent stream of random values.
5995e6d1
JL
5974
5975This library implements a splittable pseudo-random number generator that sacrifices
5976cryptographic-quality randomness in favor of performance.")
5977 (license license:asl2.0)))
dc361a25
JL
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
5997various Jane Street packages.")
5998 (license license:asl2.0)))
3e3d5ffc
JL
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
6022scripts that test features available on the system, in order to generate config.h
6023files for instance.
6024
6025Configurator 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)))
9e81db80
JL
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
6063It has three main goals:
6064
6065@itemize
6066@item provide missing features of Unix.create_process such as providing a
6067working directory,
6068@item provide better errors when a system call fails in the
6069sub-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
6072claimed that nowadays fork is as fast as vfork, however in practice
6073fork takes time proportional to the process memory while vfork is
6074constant time. In application using a lot of memory, vfork can be
1d5d0447
CB
6075thousands of times faster than fork.
6076@end itemize")
9e81db80 6077 (license license:asl2.0)))
514b5420
JL
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
6110standard 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)))
8baa5c8b
JL
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
6156Core_kernel is the system-independent part of Core. It is aimed for cases when
6157the 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))))