guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 09/10] gnu: Add ocaml-js-build-tools.


From: Julien Lepiller
Subject: [PATCH 09/10] gnu: Add ocaml-js-build-tools.
Date: Wed, 18 Jan 2017 21:28:01 +0100

* gnu/packages/ocaml.scm (ocaml-js-build-tools): New variable.
* gnu/packages/patches/ocaml-janestreet-fix-libdir.patch: New file.
* gnu/local.mk (dist_patch_DATA): New patch.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/ocaml.scm                             | 49 ++++++++++++++++++++++
 .../patches/ocaml-janestreet-fix-libdir.patch      | 36 ++++++++++++++++
 3 files changed, 86 insertions(+)
 create mode 100644 gnu/packages/patches/ocaml-janestreet-fix-libdir.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 5b919dd86..7b210c7b3 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -778,6 +778,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/ocaml-CVE-2015-8869.patch               \
   %D%/packages/patches/ocaml-Add-a-.file-directive.patch       \
   %D%/packages/patches/ocaml-findlib-make-install.patch        \
+  %D%/packages/patches/ocaml-janestreet-fix-libdir.patch \
   %D%/packages/patches/ocaml-omake-fix-non-determinism.patch   \
   %D%/packages/patches/ola-readdir-r.patch                     \
   %D%/packages/patches/openexr-missing-samples.patch           \
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 35e0d081e..120095118 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -66,6 +66,35 @@
                  (number->string file-number) "/" name "-" version
                  ".tar.gz"))
 
+;; Janestreet packages are found in a similar way and all need the same patch
+(define (janestreet-origin name version hash)
+  (origin (method url-fetch)
+          (uri (string-append "https://ocaml.janestreet.com/ocaml-core/";
+                              (version-major+minor version) "/files/"
+                              name "-" version ".tar.gz"))
+          (sha256 (base32 hash))
+          (patches (search-patches "ocaml-janestreet-fix-libdir.patch"))
+          (modules '((guix build utils)))
+          (snippet `(substitute* "install.ml"
+                                 (((string-append "lib/" ,name))
+                                  (string-append "lib/ocaml/site-lib/" 
,name))))))
+
+;; They also require almost the same set of arguments
+(define janestreet-arguments
+ `(#:use-make? #t
+   #:make-flags
+   (list (string-append "CONFIGUREFLAGS=--prefix "
+                        (assoc-ref %outputs "out")
+                        " --enable-tests")
+         (string-append "LIBDIR="
+                        (assoc-ref %outputs "out")
+                        "/lib/ocaml/site-lib")
+         ;; for ocaml-bin-prot, otherwise ignored
+         (string-append "OCAML_TOPLEVEL_PATH="
+                        (assoc-ref %build-inputs "findlib")
+                        "/lib/ocaml/site-lib"))
+   #:phases (modify-phases %standard-phases (delete 'configure))))
+
 (define-public ocaml
   (package
     (name "ocaml")
@@ -1927,3 +1956,23 @@ file (POSIX like) and filename.")
 system in your OCaml projects.  It helps to create standard entry points in 
your
 build system and allows external tools to analyse your project easily.")
     (license license:lgpl2.1))) ; with an exception
+
+(define-public ocaml-js-build-tools
+  (package
+    (name "ocaml-js-build-tools")
+    (version "113.33.06")
+    (source (janestreet-origin "js-build-tools" version
+              "0r8z4fz8iy5y6hkdlkpwf6rk4qigcr3dzyv35585xgg2ahf12zy6"))
+    (native-inputs
+     `(("oasis" ,ocaml-oasis)
+       ("opam" ,opam)))
+    (build-system ocaml-build-system)
+    (arguments janestreet-arguments)
+    (home-page "https://github.com/janestreet/js-build-tools";)
+    (synopsis "Collection of tools to help building Jane Street Packages")
+    (description "This packages contains tools to help building Jane Street
+Packages. However most of it is general purpose.  It contains:
+
+- an oasis2opam-install tool to produce a .install file from the oasis build 
log
+- an js_build_tools ocamlbuild plugin with various goodies")
+    (license license:asl2.0)))
diff --git a/gnu/packages/patches/ocaml-janestreet-fix-libdir.patch 
b/gnu/packages/patches/ocaml-janestreet-fix-libdir.patch
new file mode 100644
index 000000000..07cabe3c4
--- /dev/null
+++ b/gnu/packages/patches/ocaml-janestreet-fix-libdir.patch
@@ -0,0 +1,36 @@
+diff -aur package.pristine/Makefile package.new/Makefile
+--- package.pristine/Makefile  2016-02-06 01:55:14.650150309 +0100
++++ package.new/Makefile       2016-02-06 01:57:56.012174364 +0100
+@@ -29,26 +29,26 @@
+       ocaml -I js-utils js-utils/gen_install.ml
+
+ install: $(NAME).install
+-      opam-installer -i --prefix $(PREFIX) $(NAME).install
++      opam-installer -i --prefix $(PREFIX) --libdir $(LIBDIR) $(NAME).install
+
+ uninstall: $(NAME).install
+-      opam-installer -u --prefix $(PREFIX) $(NAME).install
++      opam-installer -u --prefix $(PREFIX) --libdir $(LIBDIR) $(NAME).install
+
+ reinstall: $(NAME).install
+-      opam-installer -u --prefix $(PREFIX) $(NAME).install &> /dev/null || 
true
+-      opam-installer -i --prefix $(PREFIX) $(NAME).install
++      opam-installer -u --prefix $(PREFIX) --libdir $(LIBDIR) $(NAME).install 
&> /dev/null || true
++      opam-installer -i --prefix $(PREFIX) --libdir $(LIBDIR) $(NAME).install
+
+ bin.tar.gz: $(NAME).install
+       rm -rf _install
+       mkdir _install
+-      opam-installer -i --prefix _install $(NAME).install
++      opam-installer -i --prefix _install --libdir $(LIBDIR) $(NAME).install
+       tar czf bin.tar.gz -C _install .
+       rm -rf _install
+
+ bin.lzo: $(NAME).install
+       rm -rf _install
+       mkdir _install
+-      opam-installer -i --prefix _install $(NAME).install
++      opam-installer -i --prefix _install --libdir $(LIBDIR) $(NAME).install
+       cd _install && lzop -1 -P -o ../bin.lzo `find . -type f`
+       rm -rf _install
+
-- 
2.11.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]