gnu: Add ocaml-cstruct.

* gnu/packages/ocaml.scm (ocaml-cstruct): New variable.
This commit is contained in:
Julien Lepiller 2017-05-28 15:33:28 +02:00
parent 9059d856d2
commit 0090b89564
No known key found for this signature in database
GPG key ID: 43111F4520086A0C

View file

@ -3088,3 +3088,45 @@ and bigarrays, based on new primitives added in version 4.01. It works on
strings, bytes and bigstring (Bigarrys of chars), and provides submodules for strings, bytes and bigstring (Bigarrys of chars), and provides submodules for
big- and little-endian, with their unsafe counter-parts.") big- and little-endian, with their unsafe counter-parts.")
(license license:lgpl2.1))) (license license:lgpl2.1)))
(define-public ocaml-cstruct
(package
(name "ocaml-cstruct")
(version "2.3.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/mirage/ocaml-cstruct/"
"archive/v" version ".tar.gz"))
(sha256
(base32
"15qpdc8421shq4pprdas9jznpva45229wkfqbwcxw9khaiiz7949"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system ocaml-build-system)
(arguments
`(#:configure-flags
(list "--enable-lwt" "--enable-async")
#:phases
(modify-phases %standard-phases
(add-after 'install 'link-stubs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(stubs (string-append out "/lib/ocaml/site-lib/stubslibs"))
(lib (string-append out "/lib/ocaml/site-lib/cstruct")))
(mkdir-p stubs)
(symlink (string-append lib "/dllcstruct_stubs.so")
(string-append stubs "/dllcstruct_stubs.so"))))))))
(native-inputs
`(("ounit" ,ocaml-ounit)
("ppx-tools" ,ocaml-ppx-tools)
("camlp4" ,camlp4)))
(propagated-inputs
`(("ocplib-endian" ,ocaml-ocplib-endian)
("lwt" ,ocaml-lwt)
("async" ,ocaml-async)
("sexplib" ,ocaml-sexplib)))
(home-page "https://github.com/mirage/ocaml-cstruct")
(synopsis "Access C structures via a camlp4 extension")
(description "Cstruct is a library and syntax extension to make it easier
to access C-like structures directly from OCaml. It supports both reading and
writing to these structures, and they are accessed via the Bigarray module.")
(license license:isc)))