unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Marius Bakke <mbakke@fastmail.com>
To: Julien Lepiller <julien@lepiller.eu>, guix-devel@gnu.org
Subject: Re: [PATCH 09/10] gnu: Add ocaml-js-build-tools.
Date: Wed, 18 Jan 2017 23:21:07 +0100	[thread overview]
Message-ID: <87shog6mcs.fsf@kirby.i-did-not-set--mail-host-address--so-tickle-me> (raw)
In-Reply-To: <20170118202802.5073-10-julien@lepiller.eu>

[-- Attachment #1: Type: text/plain, Size: 6304 bytes --]

Julien Lepiller <julien@lepiller.eu> 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 #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

  reply	other threads:[~2017-01-18 22:21 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-18 20:27 [PATCH 00/10] ocaml patches Julien Lepiller
2017-01-18 20:27 ` [PATCH 01/10] gnu: Add ocaml-base64 Julien Lepiller
2017-01-18 20:27 ` [PATCH 02/10] gnu: Add ocamlify Julien Lepiller
2017-01-18 20:27 ` [PATCH 03/10] gnu: Add omake Julien Lepiller
2017-01-18 22:00   ` Marius Bakke
2017-01-18 20:27 ` [PATCH 04/10] gnu: Add ocaml-batteries Julien Lepiller
2017-01-18 20:27 ` [PATCH 05/10] gnu: Add ocaml-pcre Julien Lepiller
2017-01-18 20:27 ` [PATCH 06/10] gnu: Add ocaml-expect Julien Lepiller
2017-01-18 20:27 ` [PATCH 07/10] gnu: Add ocaml-fileutils Julien Lepiller
2017-01-18 20:28 ` [PATCH 08/10] gnu: Add ocaml-oasis Julien Lepiller
2017-01-18 22:14   ` Marius Bakke
2017-01-18 20:28 ` [PATCH 09/10] gnu: Add ocaml-js-build-tools Julien Lepiller
2017-01-18 22:21   ` Marius Bakke [this message]
2017-01-20 13:28     ` Ludovic Courtès
2017-01-18 20:28 ` [PATCH 10/10] gnu: Add ocaml-bin-prot Julien Lepiller
2017-01-18 22:27 ` [PATCH 00/10] ocaml patches Marius Bakke
2017-01-19  8:56   ` Julien Lepiller
  -- strict thread matches above, loose matches on Subject: below --
2017-01-27 22:12 [PATCH 00/10] ocaml patches v2 Julien Lepiller
2017-01-27 22:12 ` [PATCH 09/10] gnu: Add ocaml-js-build-tools Julien Lepiller
2017-01-30  9:19   ` Ludovic Courtès
2017-01-30  9:22   ` Ludovic Courtès
2017-01-30 21:08     ` Julien Lepiller
2017-01-30 22:23       ` Ludovic Courtès
2017-01-30 22:48         ` Julien Lepiller
2017-01-31  9:22           ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87shog6mcs.fsf@kirby.i-did-not-set--mail-host-address--so-tickle-me \
    --to=mbakke@fastmail.com \
    --cc=guix-devel@gnu.org \
    --cc=julien@lepiller.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).