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