guix-devel
[Top][All Lists]
Advanced

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

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


From: Marius Bakke
Subject: Re: [PATCH 09/10] gnu: Add ocaml-js-build-tools.
Date: Wed, 18 Jan 2017 23:21:07 +0100
User-agent: Notmuch/0.23.5 (https://notmuchmail.org) Emacs/25.1.1 (x86_64-unknown-linux-gnu)

Julien Lepiller <address@hidden> writes:

> * 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:

The second sentence is difficult to parse. Maybe ", but can also be used
for other purposes."

> +
> +- an oasis2opam-install tool to produce a .install file from the oasis build 
> log
> +- an js_build_tools ocamlbuild plugin with various goodies")

Please use @enumerate here too.

Hopefully someone else can chime in on the helper functions above, if it
works I'd say they are fine. LGTM!

> +    (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

Attachment: signature.asc
Description: PGP signature


reply via email to

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