* [bug#28546] Add some ocaml packages
@ 2017-09-21 20:46 Julien Lepiller
2017-09-22 4:09 ` Eric Bavier
0 siblings, 1 reply; 5+ messages in thread
From: Julien Lepiller @ 2017-09-21 20:46 UTC (permalink / raw)
To: 28546
[-- Attachment #1: Type: text/plain, Size: 370 bytes --]
Hi, here are 10 new ocaml packages.
It adds bap, a binary static analyzer, that I worked so hard to add the
dependencies of, and camomile, a dependency of utop, the next thing I
want in guix.
After this, there will be a small series of patches to add utop, and I
will be done with the ocaml packages. Then I'll try to update our ocaml
packages and the compiler itself.
[-- Attachment #2: 0001-gnu-Add-ocaml-ezjsonm.patch --]
[-- Type: text/x-patch, Size: 1982 bytes --]
From d177cda39184fd1a1a879feb93f133eecd3bbcc4 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:32:27 +0200
Subject: [PATCH 01/10] gnu: Add ocaml-ezjsonm.
* gnu/packages/ocaml.scm (ocaml-ezjsonm): New variable.
---
gnu/packages/ocaml.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 700c5698e..d765a085a 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3197,6 +3197,36 @@ writing to these structures, and they are accessed via the Bigarray module.")
(description "Hex is a minimal library providing hexadecimal converters.")
(license license:isc)))
+(define-public ocaml-ezjsonm
+ (package
+ (name "ocaml-ezjsonm")
+ (version "0.4.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/mirage/ezjsonm/archive/"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1kag0z2xlk4rw73a240dmkxh9rj6psxxcxkm7d7z0rrj6hzjajgq"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system ocaml-build-system)
+ (native-inputs
+ `(("alcotest" ,ocaml-alcotest)))
+ (propagated-inputs
+ `(("hex" ,ocaml-hex)
+ ("jsonm" ,ocaml-jsonm)
+ ("lwt" ,ocaml-lwt)
+ ("sexplib" ,ocaml-sexplib)))
+ (arguments
+ `(#:configure-flags (list "--enable-lwt")))
+ (home-page "https://github.com/mirage/ezjsonm/")
+ (synopsis "Easy interface on top of the Jsonm library")
+ (description "Ezjsonm provides more convenient (but far less flexible) input
+and output functions that go to and from [string] values than jsonm. This avoids
+the need to write signal code, which is useful for quick scripts that manipulate
+JSON.")
+ (license license:isc)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #3: 0002-gnu-Add-ocaml-uri.patch --]
[-- Type: text/x-patch, Size: 1717 bytes --]
From 395199079f38b96299dbc02b14a945236ef7d6fe Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:33:33 +0200
Subject: [PATCH 02/10] gnu: Add ocaml-uri.
* gnu/packages/ocaml.scm (ocaml-uri): New variable.
---
gnu/packages/ocaml.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index d765a085a..c2932634a 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3227,6 +3227,32 @@ the need to write signal code, which is useful for quick scripts that manipulate
JSON.")
(license license:isc)))
+(define-public ocaml-uri
+ (package
+ (name "ocaml-uri")
+ (version "1.9.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/mirage/ocaml-uri/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "02bzrag79prx261rxf9mlak749pwf4flpfl8p012x1xznv9m0clc"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system ocaml-build-system)
+ (native-inputs
+ `(("ounit" ,ocaml-ounit)))
+ (propagated-inputs
+ `(("ppx-sexp-conv" ,ocaml-ppx-sexp-conv)
+ ("re" ,ocaml-re)
+ ("ppx-deriving" ,ocaml-ppx-deriving)
+ ("sexplib" ,ocaml-sexplib)
+ ("stringext" ,ocaml-stringext)))
+ (home-page "https://github.com/mirage/ocaml-uri")
+ (synopsis "RFC3986 URI/URL parsing library")
+ (description "OCaml-uri is a library for parsing URI/URL in the RFC3986 format.")
+ (license license:isc)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #4: 0003-gnu-Add-ocaml-easy-format.patch --]
[-- Type: text/x-patch, Size: 1637 bytes --]
From cce3c981b31586a0cf334f4f21f650649212e505 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:34:27 +0200
Subject: [PATCH 03/10] gnu: Add ocaml-easy-format.
* gnu/packages/ocaml.scm (ocaml-easy-format): New variable.
---
gnu/packages/ocaml.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index c2932634a..b07a8ba7d 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3253,6 +3253,29 @@ JSON.")
(description "OCaml-uri is a library for parsing URI/URL in the RFC3986 format.")
(license license:isc)))
+(define-public ocaml-easy-format
+ (package
+ (name "ocaml-easy-format")
+ (version "1.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/mjambon/easy-format/"
+ "archive/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "1zcz682y9figa84k7lgdjcab5qbzk3yy14ygfqp2dhhrvjygm252"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (home-page "https://github.com/mjambon/easy-format")
+ (synopsis "Interface to the Format module")
+ (description "Easy-format is a high-level and functional interface to the
+Format module of the OCaml standard library.")
+ (license license:bsd-3)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #5: 0004-gnu-Add-ocaml-optcomp.patch --]
[-- Type: text/x-patch, Size: 1793 bytes --]
From 8a8f1bedad93fe403df7d374515340f7f2462b2a Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:35:17 +0200
Subject: [PATCH 04/10] gnu: Add ocaml-optcomp.
* gnu/packages/ocaml.scm (ocaml-optcomp): New variable.
---
gnu/packages/ocaml.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index b07a8ba7d..910c892d6 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3276,6 +3276,33 @@ JSON.")
Format module of the OCaml standard library.")
(license license:bsd-3)))
+(define-public ocaml-optcomp
+ (package
+ (name "ocaml-optcomp")
+ (version "1.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/diml/optcomp/archive/"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0hhhb2gisah1h22zlg5iszbgqxdd7x85cwd57bd4mfkx9l7dh8jh"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:use-make? #t
+ #:make-flags
+ (list (string-append "BUILDFLAGS=\"-cflags -I,"
+ (assoc-ref %build-inputs "camlp4")
+ "/lib/ocaml/site-lib/camlp4/Camlp4Parsers\""))))
+ (native-inputs `(("camlp4" ,camlp4)))
+ (propagated-inputs `(("camlp4" ,camlp4)))
+ (home-page "https://github.com/diml/optcomp")
+ (synopsis "Optional compilation with cpp-like directives")
+ (description "Optcomp provides an optional compilation facility with
+cpp-like directives.")
+ (license license:bsd-3)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #6: 0005-gnu-Add-ocaml-piqilib.patch --]
[-- Type: text/x-patch, Size: 3059 bytes --]
From 3887a8aa6b8610f4ccfece291d7c8bc12a3966bf Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:44:57 +0200
Subject: [PATCH 05/10] gnu: Add ocaml-piqilib.
* gnu/packages/ocaml.scm (ocaml-piqilib): New variable.
---
gnu/packages/ocaml.scm | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 910c892d6..86fe1a9e4 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3303,6 +3303,59 @@ Format module of the OCaml standard library.")
cpp-like directives.")
(license license:bsd-3)))
+(define-public ocaml-piqilib
+ (package
+ (name "ocaml-piqilib")
+ (version "0.6.13")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/alavrik/piqi/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1whqr2bb3gds2zmrzqnv8vqka9928w4lx6mi6g244kmbwb2h8d8l"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (patches (search-patches "ocaml-piqilib-fix-makefile.patch"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "make/OCamlMakefile"
+ (("/bin/sh") (which "bash")))
+ (zero? (system* "./configure" "--prefix" out "--ocaml-libdir"
+ (string-append out "/lib/ocaml/site-lib"))))))
+ (add-after 'build 'build-ocaml
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "make" "ocaml"))))
+ (add-after 'install 'install-ocaml
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "make" "ocaml-install"))))
+ (add-after 'install-ocaml '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/piqilib")))
+ (mkdir-p stubs)
+ (symlink (string-append lib "/dllpiqilib_stubs.so")
+ (string-append stubs "/dllpiqilib_stubs.so"))))))))
+ (native-inputs
+ `(("which" ,which)
+ ("camlp4" ,camlp4)))
+ (propagated-inputs
+ `(("xmlm" ,ocaml-xmlm)
+ ("ulex" ,ocaml-ulex)
+ ("optcomp" ,ocaml-optcomp)
+ ("easy-format" ,ocaml-easy-format)
+ ("base64" ,ocaml-base64)))
+ (home-page "http://piqi.org")
+ (synopsis "Data serialization and conversion library")
+ (description "Piqilib is the common library used by the piqi command-line
+tool and piqi-ocaml.")
+ (license license:asl2.0)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #7: 0006-gnu-Add-ocaml-uuidm.patch --]
[-- Type: text/x-patch, Size: 1811 bytes --]
From 4afbe64878f1b047ba936015e005f7d48a847afa Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:45:47 +0200
Subject: [PATCH 06/10] gnu: Add ocaml-uuidm.
* gnu/packages/ocaml.scm (ocaml-uuidm): New variable.
---
gnu/packages/ocaml.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 86fe1a9e4..039033dc0 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3356,6 +3356,36 @@ cpp-like directives.")
tool and piqi-ocaml.")
(license license:asl2.0)))
+(define-public ocaml-uuidm
+ (package
+ (name "ocaml-uuidm")
+ (version "0.9.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://erratique.ch/software/uuidm/"
+ "releases/uuidm-" version ".tbz"))
+ (sha256
+ (base32
+ "0hz4fdx0x16k0pw9995vkz5d1hmzz6b16wck9li399rcbfnv5jlc"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:build-flags
+ (list "build" "--tests" "true" "--with-cmdliner" "true")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (native-inputs
+ `(("opam" ,opam)))
+ (propagated-inputs
+ `(("cmdliner" ,ocaml-cmdliner)
+ ("topkg" ,ocaml-topkg)))
+ (home-page "http://erratique.ch/software/uuidm")
+ (synopsis "Universally unique identifiers (UUIDs) for OCaml")
+ (description "Uuidm is an OCaml module implementing 128 bits universally
+unique identifiers version 3, 5 (named based with MD5, SHA-1 hashing) and 4
+(random based) according to RFC 4122.")
+ (license license:isc)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #8: 0007-gnu-Add-ocamlgraph.patch --]
[-- Type: text/x-patch, Size: 1895 bytes --]
From 3756da5e60dae4a109c18e552c6d07233ddfb5b9 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:46:37 +0200
Subject: [PATCH 07/10] gnu: Add ocamlgraph.
* gnu/packages/ocaml.scm (ocamlgraph): New variable.
---
gnu/packages/ocaml.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 039033dc0..364ccd99a 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3386,6 +3386,34 @@ unique identifiers version 3, 5 (named based with MD5, SHA-1 hashing) and 4
(random based) according to RFC 4122.")
(license license:isc)))
+(define-public ocamlgraph
+ (package
+ (name "ocamlgraph")
+ (version "1.8.7")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://ocamlgraph.lri.fr/download/"
+ "ocamlgraph-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1845r537swjil2fcj7lgbibc2zybfwqqasrd2s7bncajs83cl1nz"))
+ (patches (search-patches "ocamlgraph-honor-source-date-epoch.patch"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:install-target "install-findlib"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-/bin/sh
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "configure"
+ (("-/bin/sh") (string-append "-" (assoc-ref inputs "bash")
+ "/bin/sh"))))))))
+ (inputs `(("lablgtk" ,lablgtk)))
+ (home-page "http://ocamlgraph.lri.fr/")
+ (synopsis "A generic graph library for OCaml")
+ (description "A generic graph library for OCaml.")
+ (license license:lgpl2.1)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #9: 0008-gnu-Add-ocaml-piqi.patch --]
[-- Type: text/x-patch, Size: 2087 bytes --]
From aa994f7c4ca830f6b3834fd100d7395fcb83dbf5 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:47:40 +0200
Subject: [PATCH 08/10] gnu: Add ocaml-piqi.
* gnu/packages/ocaml.scm (ocaml-piqi): New variable.
---
gnu/packages/ocaml.scm | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 364ccd99a..7f65ce859 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3414,6 +3414,41 @@ unique identifiers version 3, 5 (named based with MD5, SHA-1 hashing) and 4
(description "A generic graph library for OCaml.")
(license license:lgpl2.1)))
+(define-public ocaml-piqi
+ (package
+ (name "ocaml-piqi")
+ (version "0.7.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/alavrik/piqi-ocaml/"
+ "archive/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "0ngz6y8i98i5v2ma8nk6mc83pdsmf2z0ks7m3xi6clfg3zqbddrv"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:make-flags
+ (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'patch-/bin/sh
+ (lambda _
+ (substitute* "make/OCamlMakefile"
+ (("/bin/sh") (which "sh")))
+ #t)))))
+ (native-inputs
+ `(("which" ,which)
+ ("protobuf" ,protobuf))) ; for tests
+ (propagated-inputs
+ `(("piqilib" ,ocaml-piqilib)))
+ (home-page "https://github.com/alavrik/piqi-ocaml")
+ (synopsis "Protocol serialization system for OCaml")
+ (description "Piqi is a multi-format data serialization system for OCaml.
+It provides a uniform interface for serializing OCaml data structures to JSON,
+XML and Protocol Buffers formats.")
+ (license license:asl2.0)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #10: 0009-gnu-Add-ocaml-bap.patch --]
[-- Type: text/x-patch, Size: 4064 bytes --]
From 2e4a7549a148e56d5d4fe7a869b56e1524dafcb6 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:49:29 +0200
Subject: [PATCH 09/10] gnu: Add ocaml-bap.
* gnu/packages/ocaml.scm (ocaml-bap): New variable.
---
gnu/packages/ocaml.scm | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 78 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 7f65ce859..2e7001c4c 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3449,6 +3449,84 @@ It provides a uniform interface for serializing OCaml data structures to JSON,
XML and Protocol Buffers formats.")
(license license:asl2.0)))
+(define-public ocaml-bap
+ (package
+ (name "ocaml-bap")
+ (version "1.1.0")
+ (home-page "https://github.com/BinaryAnalysisPlatform/bap")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append home-page "/archive/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "1ms95m4j1qrmy7zqmsn2izh7gq68lnmssl7chyhk977kd3sxj66m"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system ocaml-build-system)
+ (native-inputs
+ `(("oasis" ,ocaml-oasis)
+ ("clang" ,clang)
+ ("ounit" ,ocaml-ounit)))
+ (propagated-inputs
+ `(("core-kernel" ,ocaml-core-kernel)
+ ("ppx-driver" ,ocaml-ppx-driver)
+ ("uri" ,ocaml-uri)
+ ("llvm" ,llvm)
+ ("gmp" ,gmp)
+ ("clang-runtime" ,clang-runtime)
+ ("fileutils" ,ocaml-fileutils)
+ ("cmdliner" ,ocaml-cmdliner)
+ ("zarith" ,ocaml-zarith)
+ ("uuidm" ,ocaml-uuidm)
+ ("camlzip" ,camlzip)
+ ("frontc" ,ocaml-frontc)
+ ("ezjsonm" ,ocaml-ezjsonm)
+ ("ocurl" ,ocaml-ocurl)
+ ("piqi" ,ocaml-piqi)
+ ("ocamlgraph" ,ocamlgraph)
+ ("bitstring" ,ocaml-bitstring)
+ ("ppx-jane" ,ocaml-ppx-jane)
+ ("re" ,ocaml-re)))
+ (inputs `(("llvm" ,llvm)))
+ (arguments
+ `(#:use-make? #t
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "./configure" "--prefix"
+ (assoc-ref outputs "out")
+ "--libdir"
+ (string-append
+ (assoc-ref outputs "out")
+ "/lib/ocaml/site-lib")
+ "--with-llvm-version=3.8"
+ "--with-llvm-config=llvm-config"
+ "--enable-everything"))))
+ (add-before 'install 'fix-ocamlpath
+ (lambda* (#:key outputs #:allow-other-keys)
+ (setenv "OCAMLPATH"
+ (string-append
+ (getenv "OCAMLPATH") ":"
+ (assoc-ref outputs "out")
+ "/lib/ocaml/site-lib"))
+ (setenv "PATH"
+ (string-append (getenv "PATH") ":"
+ (assoc-ref outputs "out") "/bin"))))
+ (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/bap-plugin-llvm")))
+ (mkdir-p stubs)
+ (symlink (string-append lib "/dllllvm_plugin_stubs.so")
+ (string-append stubs "/dllllvm_plugin_stubs.so"))))))))
+ (synopsis "Binary Analysis Platform")
+ (description "Binary Analysis Platform is a framework for writing program
+analysis tools, that target binary files. The framework consists of a plethora
+of libraries, plugins, and frontends. The libraries provide code reusability,
+the plugins facilitate extensibility, and the frontends serve as entry points.")
+ (license license:expat)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #11: 0010-gnu-Add-ocaml-camomile.patch --]
[-- Type: text/x-patch, Size: 2131 bytes --]
From 553a30b6fd292a7b69a271e61e7a64a1ad9bcbf5 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:51:14 +0200
Subject: [PATCH 10/10] gnu: Add ocaml-camomile.
* gnu/packages/ocaml.scm (ocaml-camomile): New variable.
---
gnu/packages/ocaml.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 2e7001c4c..31dde1952 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3527,6 +3527,36 @@ of libraries, plugins, and frontends. The libraries provide code reusability,
the plugins facilitate extensibility, and the frontends serve as entry points.")
(license license:expat)))
+(define-public ocaml-camomile
+ (package
+ (name "ocaml-camomile")
+ (version "0.8.5")
+ (home-page "https://github.com/yoriyuki/Camomile")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append home-page "/releases/download/rel-" version
+ "/camomile-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "003ikpvpaliy5hblhckfmln34zqz0mk3y2m1fqvbjngh3h2np045"))))
+ (build-system ocaml-build-system)
+ (native-inputs `(("camlp4" ,camlp4)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-bin/sh
+ (lambda* (#:key #:allow-other-keys)
+ (substitute* "configure"
+ (("CONFIG_SHELL-/bin/sh")
+ (string-append "CONFIG_SHELL-" (which "bash")))))))))
+ (synopsis "Comprehensive Unicode library")
+ (description "Camomile is a Unicode library for OCaml. Camomile provides
+Unicode character type, UTF-8, UTF-16, UTF-32 strings, conversion to/from about
+200 encodings, collation and locale-sensitive case mappings, and more. The
+library is currently designed for Unicode Standard 3.2.")
+ ;; with an exception for linked libraries to use a different license
+ (license license:lgpl2.0+)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [bug#28546] Add some ocaml packages
2017-09-21 20:46 [bug#28546] Add some ocaml packages Julien Lepiller
@ 2017-09-22 4:09 ` Eric Bavier
2017-09-22 19:04 ` Julien Lepiller
0 siblings, 1 reply; 5+ messages in thread
From: Eric Bavier @ 2017-09-22 4:09 UTC (permalink / raw)
To: Julien Lepiller; +Cc: 28546
Hi Julien,
Thanks for the patches. Just a few comments below:
On Thu, 21 Sep 2017 22:46:51 +0200
Julien Lepiller <julien@lepiller.eu> wrote:
> From d177cda39184fd1a1a879feb93f133eecd3bbcc4 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Thu, 21 Sep 2017 20:32:27 +0200
> Subject: [PATCH 01/10] gnu: Add ocaml-ezjsonm.
>
> * gnu/packages/ocaml.scm (ocaml-ezjsonm): New variable.
> ---
> gnu/packages/ocaml.scm | 30 ++++++++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
>
> diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
> index 700c5698e..d765a085a 100644
> --- a/gnu/packages/ocaml.scm
> +++ b/gnu/packages/ocaml.scm
> @@ -3197,6 +3197,36 @@ writing to these structures, and they are accessed via the Bigarray module.")
> (description "Hex is a minimal library providing hexadecimal converters.")
> (license license:isc)))
>
> +(define-public ocaml-ezjsonm
> + (package
> + (name "ocaml-ezjsonm")
> + (version "0.4.3")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append "https://github.com/mirage/ezjsonm/archive/"
> + version ".tar.gz"))
In a few of the later patches, you declared 'home-page' before 'source'
so that it could be used in the uri. That seams reasonable to me. Did
you want to do that in all these patches?
> + (home-page "https://github.com/mirage/ezjsonm/")
> + (synopsis "Easy interface on top of the Jsonm library")
How about some more widely meaningful, like: "Read and write JSON
data"? IDK, see section 6.7.5 in the manual.
> From 395199079f38b96299dbc02b14a945236ef7d6fe Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Thu, 21 Sep 2017 20:33:33 +0200
> Subject: [PATCH 02/10] gnu: Add ocaml-uri.
>
> * gnu/packages/ocaml.scm (ocaml-uri): New variable.
> ---
> + (synopsis "RFC3986 URI/URL parsing library")
Similarly, I think we can leave out reference to the RFC in the
synopsis, since its in the description already. "URI/URL parsing
library" seems enough.
> From 8a8f1bedad93fe403df7d374515340f7f2462b2a Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Thu, 21 Sep 2017 20:35:17 +0200
> Subject: [PATCH 04/10] gnu: Add ocaml-optcomp.
>
> * gnu/packages/ocaml.scm (ocaml-optcomp): New variable.
> ---
> +(define-public ocaml-optcomp
> + (package
> + (name "ocaml-optcomp")
Since this is a tool/application in its own right, rather than a
library, I think this package could be named "optcomp". This would be
in line with other packages like "starman", "scons", "behave",
"snakemake", etc.
> + (version "1.6")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append "https://github.com/diml/optcomp/archive/"
> + version ".tar.gz"))
> + (sha256
> + (base32
> + "0hhhb2gisah1h22zlg5iszbgqxdd7x85cwd57bd4mfkx9l7dh8jh"))
> + (file-name (string-append name "-" version ".tar.gz"))))
> + (build-system ocaml-build-system)
> + (arguments
> + `(#:use-make? #t
> + #:make-flags
^
Remove the tab and align with spaces to '#:' on previous line.
> + (native-inputs `(("camlp4" ,camlp4)))
> + (propagated-inputs `(("camlp4" ,camlp4)))
> + (home-page "https://github.com/diml/optcomp")
> + (synopsis "Optional compilation with cpp-like directives")
Maybe: "Optional compilation for Ocaml"?
> From 3887a8aa6b8610f4ccfece291d7c8bc12a3966bf Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Thu, 21 Sep 2017 20:44:57 +0200
> Subject: [PATCH 05/10] gnu: Add ocaml-piqilib.
>
> * gnu/packages/ocaml.scm (ocaml-piqilib): New variable.
> ---
> gnu/packages/ocaml.scm | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 53 insertions(+)
>
> diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
> index 910c892d6..86fe1a9e4 100644
> --- a/gnu/packages/ocaml.scm
> +++ b/gnu/packages/ocaml.scm
> @@ -3303,6 +3303,59 @@ Format module of the OCaml standard library.")
> cpp-like directives.")
> (license license:bsd-3)))
>
> +(define-public ocaml-piqilib
> + (package
> + (name "ocaml-piqilib")
> + (version "0.6.13")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append "https://github.com/alavrik/piqi/archive/v"
> + version ".tar.gz"))
> + (sha256
> + (base32
> + "1whqr2bb3gds2zmrzqnv8vqka9928w4lx6mi6g244kmbwb2h8d8l"))
> + (file-name (string-append name "-" version ".tar.gz"))
> + (patches (search-patches "ocaml-piqilib-fix-makefile.patch"))))
^
This patch is missing.
> + (build-system ocaml-build-system)
> + (arguments
> + `(#:phases
> + (modify-phases %standard-phases
> + (replace 'configure
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let ((out (assoc-ref outputs "out")))
> + (substitute* "make/OCamlMakefile"
> + (("/bin/sh") (which "bash")))
Does setting the "SHELL" environment variable work instead?
> + (zero? (system* "./configure" "--prefix" out "--ocaml-libdir"
> + (string-append out "/lib/ocaml/site-lib"))))))
Is passing '#:configure-flags' not enough?
> + (add-after 'build 'build-ocaml
> + (lambda* (#:key outputs #:allow-other-keys)
> + (zero? (system* "make" "ocaml"))))
> + (add-after 'install 'install-ocaml
> + (lambda* (#:key outputs #:allow-other-keys)
> + (zero? (system* "make" "ocaml-install"))))
> + (add-after 'install-ocaml '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/piqilib")))
> + (mkdir-p stubs)
> + (symlink (string-append lib "/dllpiqilib_stubs.so")
> + (string-append stubs "/dllpiqilib_stubs.so"))))))))
Is there some sort of configuration flag that can be used to install
these library into the right place?
Is this package to avoid having to build the entire piqi tool?
> From 4afbe64878f1b047ba936015e005f7d48a847afa Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Thu, 21 Sep 2017 20:45:47 +0200
> Subject: [PATCH 06/10] gnu: Add ocaml-uuidm.
>
> * gnu/packages/ocaml.scm (ocaml-uuidm): New variable.
> ---
> +(define-public ocaml-uuidm
> + (package
...
> + (synopsis "Universally unique identifiers (UUIDs) for OCaml")
I think we'd rather leave the acronym out of the synopsis, and place it
in the description instead.
> + (description "Uuidm is an OCaml module implementing 128 bits universally
> +unique identifiers version 3, 5 (named based with MD5, SHA-1 hashing) and 4
> +(random based) according to RFC 4122.")
> From 3756da5e60dae4a109c18e552c6d07233ddfb5b9 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Thu, 21 Sep 2017 20:46:37 +0200
> Subject: [PATCH 07/10] gnu: Add ocamlgraph.
>
> * gnu/packages/ocaml.scm (ocamlgraph): New variable.
> ---
> +(define-public ocamlgraph
> + (package
> + (name "ocamlgraph")
I think we can name this packages "ocaml-graph". Similar to python
modules whose names begins with "python".
> + (version "1.8.7")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append "http://ocamlgraph.lri.fr/download/"
> + "ocamlgraph-" version ".tar.gz"))
> + (sha256
> + (base32
> + "1845r537swjil2fcj7lgbibc2zybfwqqasrd2s7bncajs83cl1nz"))
> + (patches (search-patches "ocamlgraph-honor-source-date-epoch.patch"))))
^
This patch is missing.
> + (build-system ocaml-build-system)
> + (arguments
> + `(#:install-target "install-findlib"
> + #:phases
> + (modify-phases %standard-phases
> + (add-before 'configure 'fix-/bin/sh
> + (lambda* (#:key inputs #:allow-other-keys)
> + (substitute* "configure"
> + (("-/bin/sh") (string-append "-" (assoc-ref inputs "bash")
> + "/bin/sh"))))))))
> + (inputs `(("lablgtk" ,lablgtk)))
> + (home-page "http://ocamlgraph.lri.fr/")
> + (synopsis "A generic graph library for OCaml")
Synopses should not start with 'A'. 'guix lint' will warn about this.
> + (description "A generic graph library for OCaml.")
Rather: "OCamlgraph is a generic graph library for OCaml."
> From aa994f7c4ca830f6b3834fd100d7395fcb83dbf5 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Thu, 21 Sep 2017 20:47:40 +0200
> Subject: [PATCH 08/10] gnu: Add ocaml-piqi.
>
> * gnu/packages/ocaml.scm (ocaml-piqi): New variable.
> ---
> +(define-public ocaml-piqi
> + (package
> + (name "ocaml-piqi")
> + (version "0.7.5")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append "https://github.com/alavrik/piqi-ocaml/"
> + "archive/v" version ".tar.gz"))
> + (sha256
> + (base32
> + "0ngz6y8i98i5v2ma8nk6mc83pdsmf2z0ks7m3xi6clfg3zqbddrv"))))
> + (build-system ocaml-build-system)
> + (arguments
> + `(#:make-flags
> + (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
Too bad this is so different from GNU's DESTDIR semantics...
> + #:phases
> + (modify-phases %standard-phases
> + (delete 'configure)
> + (add-before 'build 'patch-/bin/sh
> + (lambda _
> + (substitute* "make/OCamlMakefile"
> + (("/bin/sh") (which "sh")))
Again, I wonder if setting "SHELL" in the environment would suffice.
It would be less heavy-handed.
> From 2e4a7549a148e56d5d4fe7a869b56e1524dafcb6 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Thu, 21 Sep 2017 20:49:29 +0200
> Subject: [PATCH 09/10] gnu: Add ocaml-bap.
>
> * gnu/packages/ocaml.scm (ocaml-bap): New variable.
> ---
> gnu/packages/ocaml.scm | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 78 insertions(+)
>
> diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
> index 7f65ce859..2e7001c4c 100644
> --- a/gnu/packages/ocaml.scm
> +++ b/gnu/packages/ocaml.scm
> @@ -3449,6 +3449,84 @@ It provides a uniform interface for serializing OCaml data structures to JSON,
> XML and Protocol Buffers formats.")
> (license license:asl2.0)))
>
> +(define-public ocaml-bap
> + (package
> + (name "ocaml-bap")
This package should be simply named "bap".
> + (version "1.1.0")
> + (home-page "https://github.com/BinaryAnalysisPlatform/bap")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append home-page "/archive/v" version ".tar.gz"))
> + (sha256
> + (base32
> + "1ms95m4j1qrmy7zqmsn2izh7gq68lnmssl7chyhk977kd3sxj66m"))
> + (file-name (string-append name "-" version ".tar.gz"))))
> + (build-system ocaml-build-system)
> + (native-inputs
> + `(("oasis" ,ocaml-oasis)
> + ("clang" ,clang)
> + ("ounit" ,ocaml-ounit)))
> + (propagated-inputs
> + `(("core-kernel" ,ocaml-core-kernel)
> + ("ppx-driver" ,ocaml-ppx-driver)
> + ("uri" ,ocaml-uri)
> + ("llvm" ,llvm)
> + ("gmp" ,gmp)
> + ("clang-runtime" ,clang-runtime)
> + ("fileutils" ,ocaml-fileutils)
> + ("cmdliner" ,ocaml-cmdliner)
> + ("zarith" ,ocaml-zarith)
> + ("uuidm" ,ocaml-uuidm)
> + ("camlzip" ,camlzip)
> + ("frontc" ,ocaml-frontc)
> + ("ezjsonm" ,ocaml-ezjsonm)
> + ("ocurl" ,ocaml-ocurl)
> + ("piqi" ,ocaml-piqi)
> + ("ocamlgraph" ,ocamlgraph)
> + ("bitstring" ,ocaml-bitstring)
> + ("ppx-jane" ,ocaml-ppx-jane)
> + ("re" ,ocaml-re)))
> + (inputs `(("llvm" ,llvm)))
> + (arguments
> + `(#:use-make? #t
> + #:phases
> + (modify-phases %standard-phases
> + (replace 'configure
> + (lambda* (#:key outputs #:allow-other-keys)
> + (zero? (system* "./configure" "--prefix"
> + (assoc-ref outputs "out")
> + "--libdir"
> + (string-append
> + (assoc-ref outputs "out")
> + "/lib/ocaml/site-lib")
> + "--with-llvm-version=3.8"
> + "--with-llvm-config=llvm-config"
> + "--enable-everything"))))
Could you put these flags in '#:configure-flags' instead?
> + (add-before 'install 'fix-ocamlpath
A short comment on why this phase is needed might be useful.
> + (lambda* (#:key outputs #:allow-other-keys)
> + (setenv "OCAMLPATH"
> + (string-append
> + (getenv "OCAMLPATH") ":"
> + (assoc-ref outputs "out")
> + "/lib/ocaml/site-lib"))
> + (setenv "PATH"
> + (string-append (getenv "PATH") ":"
> + (assoc-ref outputs "out") "/bin"))))
> From 553a30b6fd292a7b69a271e61e7a64a1ad9bcbf5 Mon Sep 17 00:00:00 2001
> From: Julien Lepiller <julien@lepiller.eu>
> Date: Thu, 21 Sep 2017 20:51:14 +0200
> Subject: [PATCH 10/10] gnu: Add ocaml-camomile.
>
> * gnu/packages/ocaml.scm (ocaml-camomile): New variable.
> ---
> gnu/packages/ocaml.scm | 30 ++++++++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
>
> diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
> index 2e7001c4c..31dde1952 100644
> --- a/gnu/packages/ocaml.scm
> +++ b/gnu/packages/ocaml.scm
> @@ -3527,6 +3527,36 @@ of libraries, plugins, and frontends. The libraries provide code reusability,
> the plugins facilitate extensibility, and the frontends serve as entry points.")
> (license license:expat)))
>
> +(define-public ocaml-camomile
> + (package
> + (name "ocaml-camomile")
> + (version "0.8.5")
> + (home-page "https://github.com/yoriyuki/Camomile")
> + (source (origin
> + (method url-fetch)
> + (uri (string-append home-page "/releases/download/rel-" version
> + "/camomile-" version ".tar.bz2"))
> + (sha256
> + (base32
> + "003ikpvpaliy5hblhckfmln34zqz0mk3y2m1fqvbjngh3h2np045"))))
> + (build-system ocaml-build-system)
> + (native-inputs `(("camlp4" ,camlp4)))
> + (arguments
> + `(#:phases
> + (modify-phases %standard-phases
> + (add-before 'configure 'fix-bin/sh
> + (lambda* (#:key #:allow-other-keys)
> + (substitute* "configure"
> + (("CONFIG_SHELL-/bin/sh")
> + (string-append "CONFIG_SHELL-" (which "bash")))))))))
Maybe our ocaml-build-system should be defining SHELL and CONFIG_SHELL
in the flags passed to configure, like gnu-build-system does. Or does
that not work for some ocaml projects?
Otherwise looks good to me.
Sorry for long reply and all the questions,
`~Eric
^ permalink raw reply [flat|nested] 5+ messages in thread
* [bug#28546] Add some ocaml packages
2017-09-22 4:09 ` Eric Bavier
@ 2017-09-22 19:04 ` Julien Lepiller
2017-09-26 8:21 ` Ludovic Courtès
0 siblings, 1 reply; 5+ messages in thread
From: Julien Lepiller @ 2017-09-22 19:04 UTC (permalink / raw)
To: 28546
[-- Attachment #1: Type: text/plain, Size: 4978 bytes --]
Le Thu, 21 Sep 2017 23:09:28 -0500,
Eric Bavier <ericbavier@centurylink.net> a écrit :
> Hi Julien,
>
> Thanks for the patches. Just a few comments below:
Thank you for this very detailed review :)
I think I addressed all your comments in the attached new patches, and
I will answer your other questions below:
>
> On Thu, 21 Sep 2017 22:46:51 +0200
> Julien Lepiller <julien@lepiller.eu> wrote:
>
> In a few of the later patches, you declared 'home-page' before
> 'source' so that it could be used in the uri. That seams reasonable
> to me. Did you want to do that in all these patches?
It seems this is not the way it is done elsewhere, and I was asked to
stick with this style.
> > "1whqr2bb3gds2zmrzqnv8vqka9928w4lx6mi6g244kmbwb2h8d8l"))
> > + (file-name (string-append name "-" version
> > ".tar.gz"))
> > + (patches (search-patches
> > "ocaml-piqilib-fix-makefile.patch"))))
> ^
> This patch is missing.
Indeed, I use GUIX_PACKAGE_PATH, so it was actually fetching the
package and the patch from that other directory... I should remember to
unset this variable before testing a patch.
>
> > + (build-system ocaml-build-system)
> > + (arguments
> > + `(#:phases
> > + (modify-phases %standard-phases
> > + (replace 'configure
> > + (lambda* (#:key outputs #:allow-other-keys)
> > + (let ((out (assoc-ref outputs "out")))
> > + (substitute* "make/OCamlMakefile"
> > + (("/bin/sh") (which "bash")))
>
> Does setting the "SHELL" environment variable work instead?
Yes it does, thank you for spotting this. It also works for most of the
other packages.
>
> > + (zero? (system* "./configure" "--prefix" out
> > "--ocaml-libdir"
> > + (string-append out
> > "/lib/ocaml/site-lib"))))))
>
> Is passing '#:configure-flags' not enough?
The configure script of OCaml packages is usually not an autotools one.
The all have a different set of options they require. Our
ocaml-build-system passes "-prefix" out and then configure-flags.
Setting configure-flags only would therefore fail, because the
"-prefix" option would not be recognized (one dash, when it expects
two). The ocaml-build-system is made that way because it seems most
configure scripts for ocaml packages require only one dash.
>
> > + (add-after 'build 'build-ocaml
> > + (lambda* (#:key outputs #:allow-other-keys)
> > + (zero? (system* "make" "ocaml"))))
> > + (add-after 'install 'install-ocaml
> > + (lambda* (#:key outputs #:allow-other-keys)
> > + (zero? (system* "make" "ocaml-install"))))
> > + (add-after 'install-ocaml '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/piqilib")))
> > + (mkdir-p stubs)
> > + (symlink (string-append lib "/dllpiqilib_stubs.so")
> > + (string-append stubs
> > "/dllpiqilib_stubs.so"))))))))
>
> Is there some sort of configuration flag that can be used to install
> these library into the right place?
Unfortunately, I didn't find any.
>
> Is this package to avoid having to build the entire piqi tool?
This package doesn't come from the same source as piqi-ocaml. I don't
know exactly how it works, though, because I added it only as a
dependency.
> > + (inputs `(("llvm" ,llvm)))
> > + (arguments
> > + `(#:use-make? #t
> > + #:phases
> > + (modify-phases %standard-phases
> > + (replace 'configure
> > + (lambda* (#:key outputs #:allow-other-keys)
> > + (zero? (system* "./configure" "--prefix"
> > + (assoc-ref outputs "out")
> > + "--libdir"
> > + (string-append
> > + (assoc-ref outputs "out")
> > + "/lib/ocaml/site-lib")
> > + "--with-llvm-version=3.8"
> > + "--with-llvm-config=llvm-config"
> > + "--enable-everything"))))
>
> Could you put these flags in '#:configure-flags' instead?
Again, --prefix vs -prefix
>
> Maybe our ocaml-build-system should be defining SHELL and CONFIG_SHELL
> in the flags passed to configure, like gnu-build-system does. Or does
> that not work for some ocaml projects?
Since most configure scripts are not autotools one, they don't
recognize variables passed as arguments.
>
>
> Otherwise looks good to me.
>
> Sorry for long reply and all the questions,
> `~Eric
[-- Attachment #2: 0001-gnu-Add-ocaml-ezjsonm.patch --]
[-- Type: text/x-patch, Size: 1964 bytes --]
From 5344f2cb8f8661fbc5c8ddb039ce9e2578790e71 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:32:27 +0200
Subject: [PATCH 01/10] gnu: Add ocaml-ezjsonm.
* gnu/packages/ocaml.scm (ocaml-ezjsonm): New variable.
---
gnu/packages/ocaml.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 700c5698e..f3ebb2854 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3197,6 +3197,36 @@ writing to these structures, and they are accessed via the Bigarray module.")
(description "Hex is a minimal library providing hexadecimal converters.")
(license license:isc)))
+(define-public ocaml-ezjsonm
+ (package
+ (name "ocaml-ezjsonm")
+ (version "0.4.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/mirage/ezjsonm/archive/"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1kag0z2xlk4rw73a240dmkxh9rj6psxxcxkm7d7z0rrj6hzjajgq"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system ocaml-build-system)
+ (native-inputs
+ `(("alcotest" ,ocaml-alcotest)))
+ (propagated-inputs
+ `(("hex" ,ocaml-hex)
+ ("jsonm" ,ocaml-jsonm)
+ ("lwt" ,ocaml-lwt)
+ ("sexplib" ,ocaml-sexplib)))
+ (arguments
+ `(#:configure-flags (list "--enable-lwt")))
+ (home-page "https://github.com/mirage/ezjsonm/")
+ (synopsis "Read and write JSON data")
+ (description "Ezjsonm provides more convenient (but far less flexible) input
+and output functions that go to and from [string] values than jsonm. This avoids
+the need to write signal code, which is useful for quick scripts that manipulate
+JSON.")
+ (license license:isc)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #3: 0002-gnu-Add-ocaml-uri.patch --]
[-- Type: text/x-patch, Size: 1717 bytes --]
From bde4818c65208765febb9407b6c7e524a171a3d8 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:33:33 +0200
Subject: [PATCH 02/10] gnu: Add ocaml-uri.
* gnu/packages/ocaml.scm (ocaml-uri): New variable.
---
gnu/packages/ocaml.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index f3ebb2854..b4b4f2333 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3227,6 +3227,32 @@ the need to write signal code, which is useful for quick scripts that manipulate
JSON.")
(license license:isc)))
+(define-public ocaml-uri
+ (package
+ (name "ocaml-uri")
+ (version "1.9.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/mirage/ocaml-uri/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "02bzrag79prx261rxf9mlak749pwf4flpfl8p012x1xznv9m0clc"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system ocaml-build-system)
+ (native-inputs
+ `(("ounit" ,ocaml-ounit)))
+ (propagated-inputs
+ `(("ppx-sexp-conv" ,ocaml-ppx-sexp-conv)
+ ("re" ,ocaml-re)
+ ("ppx-deriving" ,ocaml-ppx-deriving)
+ ("sexplib" ,ocaml-sexplib)
+ ("stringext" ,ocaml-stringext)))
+ (home-page "https://github.com/mirage/ocaml-uri")
+ (synopsis "RFC3986 URI/URL parsing library")
+ (description "OCaml-uri is a library for parsing URI/URL in the RFC3986 format.")
+ (license license:isc)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #4: 0003-gnu-Add-ocaml-easy-format.patch --]
[-- Type: text/x-patch, Size: 1637 bytes --]
From e99d48de514e98bf9c1e862f35df406eda9c4a60 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:34:27 +0200
Subject: [PATCH 03/10] gnu: Add ocaml-easy-format.
* gnu/packages/ocaml.scm (ocaml-easy-format): New variable.
---
gnu/packages/ocaml.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index b4b4f2333..35a5a10e4 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3253,6 +3253,29 @@ JSON.")
(description "OCaml-uri is a library for parsing URI/URL in the RFC3986 format.")
(license license:isc)))
+(define-public ocaml-easy-format
+ (package
+ (name "ocaml-easy-format")
+ (version "1.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/mjambon/easy-format/"
+ "archive/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "1zcz682y9figa84k7lgdjcab5qbzk3yy14ygfqp2dhhrvjygm252"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (home-page "https://github.com/mjambon/easy-format")
+ (synopsis "Interface to the Format module")
+ (description "Easy-format is a high-level and functional interface to the
+Format module of the OCaml standard library.")
+ (license license:bsd-3)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #5: 0004-gnu-Add-ocaml-optcomp.patch --]
[-- Type: text/x-patch, Size: 1769 bytes --]
From ba5861d55b9749978aa7191798afc87417c67c59 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:35:17 +0200
Subject: [PATCH 04/10] gnu: Add ocaml-optcomp.
* gnu/packages/ocaml.scm (ocaml-optcomp): New variable.
---
gnu/packages/ocaml.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 35a5a10e4..4cb66bd2b 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3276,6 +3276,33 @@ JSON.")
Format module of the OCaml standard library.")
(license license:bsd-3)))
+(define-public optcomp
+ (package
+ (name "optcomp")
+ (version "1.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/diml/optcomp/archive/"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0hhhb2gisah1h22zlg5iszbgqxdd7x85cwd57bd4mfkx9l7dh8jh"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:use-make? #t
+ #:make-flags
+ (list (string-append "BUILDFLAGS=\"-cflags -I,"
+ (assoc-ref %build-inputs "camlp4")
+ "/lib/ocaml/site-lib/camlp4/Camlp4Parsers\""))))
+ (native-inputs `(("camlp4" ,camlp4)))
+ (propagated-inputs `(("camlp4" ,camlp4)))
+ (home-page "https://github.com/diml/optcomp")
+ (synopsis "Optional compilation for OCaml")
+ (description "Optcomp provides an optional compilation facility with
+cpp-like directives.")
+ (license license:bsd-3)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #6: 0005-gnu-Add-ocaml-piqilib.patch --]
[-- Type: text/x-patch, Size: 4879 bytes --]
From 3647f7d8e330e1f6fbb60596739a21ccd1bd85f3 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:44:57 +0200
Subject: [PATCH 05/10] gnu: Add ocaml-piqilib.
* gnu/packages/ocaml.scm (ocaml-piqilib): New variable.
---
gnu/packages/ocaml.scm | 53 ++++++++++++++++++++++
.../patches/ocaml-piqilib-fix-makefile.patch | 47 +++++++++++++++++++
2 files changed, 100 insertions(+)
create mode 100644 gnu/packages/patches/ocaml-piqilib-fix-makefile.patch
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 4cb66bd2b..00665959a 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3303,6 +3303,59 @@ Format module of the OCaml standard library.")
cpp-like directives.")
(license license:bsd-3)))
+(define-public ocaml-piqilib
+ (package
+ (name "ocaml-piqilib")
+ (version "0.6.13")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/alavrik/piqi/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1whqr2bb3gds2zmrzqnv8vqka9928w4lx6mi6g244kmbwb2h8d8l"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (patches (search-patches "ocaml-piqilib-fix-makefile.patch"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "make/OCamlMakefile"
+ (("/bin/sh") (which "bash")))
+ (zero? (system* "./configure" "--prefix" out "--ocaml-libdir"
+ (string-append out "/lib/ocaml/site-lib"))))))
+ (add-after 'build 'build-ocaml
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "make" "ocaml"))))
+ (add-after 'install 'install-ocaml
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "make" "ocaml-install"))))
+ (add-after 'install-ocaml '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/piqilib")))
+ (mkdir-p stubs)
+ (symlink (string-append lib "/dllpiqilib_stubs.so")
+ (string-append stubs "/dllpiqilib_stubs.so"))))))))
+ (native-inputs
+ `(("which" ,which)
+ ("camlp4" ,camlp4)))
+ (propagated-inputs
+ `(("xmlm" ,ocaml-xmlm)
+ ("ulex" ,ocaml-ulex)
+ ("optcomp" ,optcomp)
+ ("easy-format" ,ocaml-easy-format)
+ ("base64" ,ocaml-base64)))
+ (home-page "http://piqi.org")
+ (synopsis "Data serialization and conversion library")
+ (description "Piqilib is the common library used by the piqi command-line
+tool and piqi-ocaml.")
+ (license license:asl2.0)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
diff --git a/gnu/packages/patches/ocaml-piqilib-fix-makefile.patch b/gnu/packages/patches/ocaml-piqilib-fix-makefile.patch
new file mode 100644
index 000000000..a21b21983
--- /dev/null
+++ b/gnu/packages/patches/ocaml-piqilib-fix-makefile.patch
@@ -0,0 +1,47 @@
+From 336e69d6882a1b8d725c43f1c2e340ef4464bac5 Mon Sep 17 00:00:00 2001
+From: Julien Lepiller <julien@lepiller.eu>
+Date: Sat, 31 Dec 2016 11:21:14 +0100
+Subject: [PATCH] fix OCAMLPATH in makefile
+
+---
+ Makefile | 2 +-
+ make/Makefile.ocaml | 3 ++-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 4db87da..9315887 100644
+--- a/Makefile
++++ b/Makefile
+@@ -23,7 +23,7 @@ OCAMLFIND_DESTDIR := $(shell cygpath -w $(OCAMLFIND_DESTDIR))
+ endif
+ export OCAMLFIND_DESTDIR
+
+-OCAMLPATH := $(PIQI_ROOT)/deps
++OCAMLPATH := $(OCAMLPATH):$(PIQI_ROOT)/deps
+ ifeq ($(SYSTEM),$(filter $(SYSTEM),mingw mingw64))
+ OCAMLPATH := $(shell cygpath -w $(OCAMLPATH))
+ endif
+diff --git a/make/Makefile.ocaml b/make/Makefile.ocaml
+index 2b6324d..b82c041 100644
+--- a/make/Makefile.ocaml
++++ b/make/Makefile.ocaml
+@@ -1,7 +1,7 @@
+ OCAMLMAKEFILE := $(PIQI_ROOT)/make/OCamlMakefile
+
+
+-OCAMLPATH := $(PIQI_BUILD)/lib/ocaml
++OCAMLPATH := $(OCAMLPATH):$(PIQI_BUILD)/lib/ocaml
+ ifeq ($(SYSTEM),$(filter $(SYSTEM),mingw mingw64))
+ OCAMLPATH := $(shell cygpath -w $(OCAMLPATH))
+ endif
+@@ -23,6 +23,7 @@ post_target::
+
+
+ .ml.mli: $(EXTRADEPS)
++ echo $(OCAMLPATH)
+ $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \
+ if [ -z "$$pp" ]; then \
+ $(ECHO) $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \
+--
+2.11.0
+
--
2.14.1
[-- Attachment #7: 0006-gnu-Add-ocaml-uuidm.patch --]
[-- Type: text/x-patch, Size: 1811 bytes --]
From c0a16c103b6fd2336183e6e3677af5ba61bcbf64 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:45:47 +0200
Subject: [PATCH 06/10] gnu: Add ocaml-uuidm.
* gnu/packages/ocaml.scm (ocaml-uuidm): New variable.
---
gnu/packages/ocaml.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 00665959a..d8b43a2bc 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3356,6 +3356,36 @@ cpp-like directives.")
tool and piqi-ocaml.")
(license license:asl2.0)))
+(define-public ocaml-uuidm
+ (package
+ (name "ocaml-uuidm")
+ (version "0.9.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://erratique.ch/software/uuidm/"
+ "releases/uuidm-" version ".tbz"))
+ (sha256
+ (base32
+ "0hz4fdx0x16k0pw9995vkz5d1hmzz6b16wck9li399rcbfnv5jlc"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:build-flags
+ (list "build" "--tests" "true" "--with-cmdliner" "true")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (native-inputs
+ `(("opam" ,opam)))
+ (propagated-inputs
+ `(("cmdliner" ,ocaml-cmdliner)
+ ("topkg" ,ocaml-topkg)))
+ (home-page "http://erratique.ch/software/uuidm")
+ (synopsis "Universally unique identifiers for OCaml")
+ (description "Uuidm is an OCaml module implementing 128 bits universally
+unique identifiers (UUIDs) version 3, 5 (named based with MD5, SHA-1 hashing)
+and 4 (random based) according to RFC 4122.")
+ (license license:isc)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #8: 0007-gnu-Add-ocaml-graph.patch --]
[-- Type: text/x-patch, Size: 3276 bytes --]
From 11841bf1700fada87a4a747130543ce8de4930f5 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:46:37 +0200
Subject: [PATCH 07/10] gnu: Add ocaml-graph.
* gnu/packages/ocaml.scm (ocaml-graph): New variable.
---
gnu/packages/ocaml.scm | 27 +++++++++++++++++
.../ocaml-graph-honor-source-date-epoch.patch | 34 ++++++++++++++++++++++
2 files changed, 61 insertions(+)
create mode 100644 gnu/packages/patches/ocaml-graph-honor-source-date-epoch.patch
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index d8b43a2bc..1d4c95730 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3386,6 +3386,33 @@ unique identifiers (UUIDs) version 3, 5 (named based with MD5, SHA-1 hashing)
and 4 (random based) according to RFC 4122.")
(license license:isc)))
+(define-public ocaml-graph
+ (package
+ (name "ocaml-graph")
+ (version "1.8.7")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://ocamlgraph.lri.fr/download/"
+ "ocamlgraph-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1845r537swjil2fcj7lgbibc2zybfwqqasrd2s7bncajs83cl1nz"))
+ (patches (search-patches "ocaml-graph-honor-source-date-epoch.patch"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:install-target "install-findlib"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'set-shell
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "CONFIG_SHELL" (string-append (assoc-ref inputs "bash")
+ "/bin/sh")))))))
+ (inputs `(("lablgtk" ,lablgtk)))
+ (home-page "http://ocamlgraph.lri.fr/")
+ (synopsis "Graph library for OCaml")
+ (description "OCamlgraph is a generic graph library for OCaml.")
+ (license license:lgpl2.1)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
diff --git a/gnu/packages/patches/ocaml-graph-honor-source-date-epoch.patch b/gnu/packages/patches/ocaml-graph-honor-source-date-epoch.patch
new file mode 100644
index 000000000..9f8713e3d
--- /dev/null
+++ b/gnu/packages/patches/ocaml-graph-honor-source-date-epoch.patch
@@ -0,0 +1,34 @@
+From 354ef78aac0b887fae3c10b28eb2b0d83f66bdfe Mon Sep 17 00:00:00 2001
+From: Julien Lepiller <julien@lepiller.eu>
+Date: Mon, 2 Jan 2017 17:05:24 +0100
+Subject: [PATCH] Honor SOURCE_DATE_EPOCH
+
+---
+ Makefile.in | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index a32b4b8..ef4c174 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -113,11 +113,16 @@ graph.cmx: $(CMI) $(CMX)
+ $(OCAMLOPT) $(INCLUDES) -pack -o $@ $^
+
+ VERSION=1.8.7
++ifdef SOURCE_DATE_EPOCH
++BUILD_DATE=$(shell date -u -d "@$(SOURCE_DATE_EPOCH)" 2>/dev/null || date -u -r "$(SOURCE_DATE_EPOCH)" 2>/dev/null || date)
++else
++BUILD_DATE=$(shell date)
++endif
+
+ src/version.ml: Makefile
+ rm -f $@
+ echo "let version = \""$(VERSION)"\"" > $@
+- echo "let date = \""`date`"\"" >> $@
++ echo "let date = \""$(BUILD_DATE)"\"" >> $@
+
+ # gtk2 graph editor
+ ###################
+--
+2.11.0
+
--
2.14.1
[-- Attachment #9: 0008-gnu-Add-ocaml-piqi.patch --]
[-- Type: text/x-patch, Size: 2287 bytes --]
From 28c4c8ce2d5f8b0975b96a578ebbd05002db7774 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:47:40 +0200
Subject: [PATCH 08/10] gnu: Add ocaml-piqi.
* gnu/packages/ocaml.scm (ocaml-piqi): New variable.
---
gnu/packages/ocaml.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 1d4c95730..27ec8354b 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -47,6 +47,7 @@
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages tex)
#:use-module (gnu packages texinfo)
@@ -3413,6 +3414,38 @@ and 4 (random based) according to RFC 4122.")
(description "OCamlgraph is a generic graph library for OCaml.")
(license license:lgpl2.1)))
+(define-public ocaml-piqi
+ (package
+ (name "ocaml-piqi")
+ (version "0.7.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/alavrik/piqi-ocaml/"
+ "archive/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "0ngz6y8i98i5v2ma8nk6mc83pdsmf2z0ks7m3xi6clfg3zqbddrv"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:make-flags
+ (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
+ (string-append "SHELL=" (assoc-ref %build-inputs "bash")
+ "/bin/sh"))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (native-inputs
+ `(("which" ,which)
+ ("protobuf" ,protobuf))) ; for tests
+ (propagated-inputs
+ `(("piqilib" ,ocaml-piqilib)))
+ (home-page "https://github.com/alavrik/piqi-ocaml")
+ (synopsis "Protocol serialization system for OCaml")
+ (description "Piqi is a multi-format data serialization system for OCaml.
+It provides a uniform interface for serializing OCaml data structures to JSON,
+XML and Protocol Buffers formats.")
+ (license license:asl2.0)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #10: 0009-gnu-Add-bap.patch --]
[-- Type: text/x-patch, Size: 3856 bytes --]
From 9859961c3ab90b8bc5d94689c9bb6e0f657f88c4 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:49:29 +0200
Subject: [PATCH 09/10] gnu: Add bap.
* gnu/packages/ocaml.scm (bap): New variable.
---
gnu/packages/ocaml.scm | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 27ec8354b..61ebbd937 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -41,6 +41,7 @@
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libevent)
+ #:use-module (gnu packages llvm)
#:use-module (gnu packages m4)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
@@ -3446,6 +3447,74 @@ It provides a uniform interface for serializing OCaml data structures to JSON,
XML and Protocol Buffers formats.")
(license license:asl2.0)))
+(define-public bap
+ (package
+ (name "bap")
+ (version "1.1.0")
+ (home-page "https://github.com/BinaryAnalysisPlatform/bap")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append home-page "/archive/v" version ".tar.gz"))
+ (sha256
+ (base32
+ "1ms95m4j1qrmy7zqmsn2izh7gq68lnmssl7chyhk977kd3sxj66m"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system ocaml-build-system)
+ (native-inputs
+ `(("oasis" ,ocaml-oasis)
+ ("clang" ,clang)
+ ("ounit" ,ocaml-ounit)))
+ (propagated-inputs
+ `(("core-kernel" ,ocaml-core-kernel)
+ ("ppx-driver" ,ocaml-ppx-driver)
+ ("uri" ,ocaml-uri)
+ ("llvm" ,llvm)
+ ("gmp" ,gmp)
+ ("clang-runtime" ,clang-runtime)
+ ("fileutils" ,ocaml-fileutils)
+ ("cmdliner" ,ocaml-cmdliner)
+ ("zarith" ,ocaml-zarith)
+ ("uuidm" ,ocaml-uuidm)
+ ("camlzip" ,camlzip)
+ ("frontc" ,ocaml-frontc)
+ ("ezjsonm" ,ocaml-ezjsonm)
+ ("ocurl" ,ocaml-ocurl)
+ ("piqi" ,ocaml-piqi)
+ ("ocamlgraph" ,ocaml-graph)
+ ("bitstring" ,ocaml-bitstring)
+ ("ppx-jane" ,ocaml-ppx-jane)
+ ("re" ,ocaml-re)))
+ (inputs `(("llvm" ,llvm)))
+ (arguments
+ `(#:use-make? #t
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (zero? (system* "./configure" "--prefix"
+ (assoc-ref outputs "out")
+ "--libdir"
+ (string-append
+ (assoc-ref outputs "out")
+ "/lib/ocaml/site-lib")
+ "--with-llvm-version=3.8"
+ "--with-llvm-config=llvm-config"
+ "--enable-everything"))))
+ (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/bap-plugin-llvm")))
+ (mkdir-p stubs)
+ (symlink (string-append lib "/dllllvm_plugin_stubs.so")
+ (string-append stubs "/dllllvm_plugin_stubs.so"))))))))
+ (synopsis "Binary Analysis Platform")
+ (description "Binary Analysis Platform is a framework for writing program
+analysis tools, that target binary files. The framework consists of a plethora
+of libraries, plugins, and frontends. The libraries provide code reusability,
+the plugins facilitate extensibility, and the frontends serve as entry points.")
+ (license license:expat)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
[-- Attachment #11: 0010-gnu-Add-ocaml-camomile.patch --]
[-- Type: text/x-patch, Size: 2009 bytes --]
From 0a638c17bda12cc16def3c94946f9a065e014949 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Thu, 21 Sep 2017 20:51:14 +0200
Subject: [PATCH 10/10] gnu: Add ocaml-camomile.
* gnu/packages/ocaml.scm (ocaml-camomile): New variable.
---
gnu/packages/ocaml.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 61ebbd937..61cad7c48 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3515,6 +3515,34 @@ of libraries, plugins, and frontends. The libraries provide code reusability,
the plugins facilitate extensibility, and the frontends serve as entry points.")
(license license:expat)))
+(define-public ocaml-camomile
+ (package
+ (name "ocaml-camomile")
+ (version "0.8.5")
+ (home-page "https://github.com/yoriyuki/Camomile")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append home-page "/releases/download/rel-" version
+ "/camomile-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "003ikpvpaliy5hblhckfmln34zqz0mk3y2m1fqvbjngh3h2np045"))))
+ (build-system ocaml-build-system)
+ (native-inputs `(("camlp4" ,camlp4)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-bin/sh
+ (lambda _
+ (setenv "CONFIG_SHELL" (which "bash")))))))
+ (synopsis "Comprehensive Unicode library")
+ (description "Camomile is a Unicode library for OCaml. Camomile provides
+Unicode character type, UTF-8, UTF-16, UTF-32 strings, conversion to/from about
+200 encodings, collation and locale-sensitive case mappings, and more. The
+library is currently designed for Unicode Standard 3.2.")
+ ;; with an exception for linked libraries to use a different license
+ (license license:lgpl2.0+)))
+
(define-public coq-flocq
(package
(name "coq-flocq")
--
2.14.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [bug#28546] Add some ocaml packages
2017-09-22 19:04 ` Julien Lepiller
@ 2017-09-26 8:21 ` Ludovic Courtès
2017-09-27 19:28 ` bug#28546: " Julien Lepiller
0 siblings, 1 reply; 5+ messages in thread
From: Ludovic Courtès @ 2017-09-26 8:21 UTC (permalink / raw)
To: Julien Lepiller; +Cc: 28546
Hello Julien,
Julien Lepiller <julien@lepiller.eu> skribis:
> Le Thu, 21 Sep 2017 23:09:28 -0500,
> Eric Bavier <ericbavier@centurylink.net> a écrit :
[...]
>> Otherwise looks good to me.
If you addressed Eric’s concerns and it works for you, you can probably
go ahead and push this series.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#28546: Add some ocaml packages
2017-09-26 8:21 ` Ludovic Courtès
@ 2017-09-27 19:28 ` Julien Lepiller
0 siblings, 0 replies; 5+ messages in thread
From: Julien Lepiller @ 2017-09-27 19:28 UTC (permalink / raw)
To: 28546-done
Le Tue, 26 Sep 2017 10:21:06 +0200,
ludo@gnu.org (Ludovic Courtès) a écrit :
> Hello Julien,
>
> Julien Lepiller <julien@lepiller.eu> skribis:
>
> > Le Thu, 21 Sep 2017 23:09:28 -0500,
> > Eric Bavier <ericbavier@centurylink.net> a écrit :
>
> [...]
>
> >> Otherwise looks good to me.
>
> If you addressed Eric’s concerns and it works for you, you can
> probably go ahead and push this series.
>
> Thanks,
> Ludo’.
OK, pushed as bf7bc0d6bb8e549f1b05dae3fe4f325311db8310 -
408091d5a58801f88f8a5269387ce5efa701508b.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-09-27 19:30 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-21 20:46 [bug#28546] Add some ocaml packages Julien Lepiller
2017-09-22 4:09 ` Eric Bavier
2017-09-22 19:04 ` Julien Lepiller
2017-09-26 8:21 ` Ludovic Courtès
2017-09-27 19:28 ` bug#28546: " Julien Lepiller
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).